zoukankan      html  css  js  c++  java
  • Java知识结构——面试相关总结

    前言


    由于疫情的原因金三银四也不是那么好找工作了,虽然没打算换工作,不过每年这个时候出去面试一下也是不错的,确认一下自己当前的技术水平,顺便了解一下当前业内流行的技术。当然,要是有好的工作机会,跳槽也无妨..话不多说,总结一下Java的知识点,以后复习起来也容易些

    一、Java基础

    • 面向对象的概念
    • ArrayList,LinkedList
    • String为什么final,它的equals方法怎么重写的,String.internal,字符串常量池相关
    • HashMap底层实现及在jdk1.7,1.8的区别,HashMap 的长度为什么是 2 的幂次方、HashMap 多线程操作导致死循环问题、HashMap 的线程安全实现有哪些、ConcurrentHashMap 的底层实现
    • fail-fast 和 fail-safe
    • Integer 缓存池(自动装拆箱)
    • JDK 动态代理和 GClib 动态代理、JDK 动态代理具体实现原理、CGLib 动态代理、两者对比。
    • 设计模式:单例模式、工厂模式、代理模式、策略模式等

    二、多线程

    • 悲观锁、乐观锁
    • 分布式锁的实现(redis,zookeeper)
    • Threadlocal 内存泄漏问题
    • Synchronized是悲观锁,CAS是乐观锁
    • CAS 带来的 ABA 问题。CAS 带来的循环时间长开销大问题。CAS 带来的只能保证一个共享变量的原子操作问题。CAS 是如何保证原子操作的。
    • volatile关键字,指令重排序的问题
    • 可重入锁,偏向锁,自旋锁
    • ThreadPoolExecutor线程池创建参数
    • 线程池的5种状态:
      • 1.Running: 接受新task, 处理等待的task
      • 2.ShutDown: 不接受新task,但处理等待的task;
      • 3.Stop: 不接受新task, 不处理等待的task, 尝试打断正在执行的task;
      • 4.Tidying:但所有task都被终止, worCount == 0的时候(workCount是指有效的线程数);
      • 5.Terminated: 执行完terminated()方法;
    • 多线程间通信的几种方式:
      • 使用 volatile 关键字。
      • 锁机制
      • final 关键字
      • ThreadLocal 类
      • JUC 包中的相关 lock 类

    三、框架

    • Spring IOC AOP,如何解决循环依赖
    • Spring中FactoryBean,BeanFactory与ApplicationContext
    • Spring中的bean是否线程安全?(不安全)
    • bean的生命周期,加载过程
    • Springboot启动流程
    • SpringMVC工作流程
    • Mybatis核心对象及流程,缓存机制,与Hibernate对比
    • hibernate的对象状态
    • SpringCloud隔离,限流,熔断,降级

    四、数据库

    • MySQL、Oracle、索引、存储过程、查询优化,默认事务隔离级别:可重复读
    • MySQL索引分为hash和B+,哈希表的特点就是可以快速的精确查询,但是不支持范围查询,B+树范围查询效率更高,B+树中一个节点为一页或页的倍数最为合适
    • InnoDb 和 MyISAM 有什么区别,这两个引擎实现 BTree 索引方式的区别
    • 索引的最左匹配原则,索引失效的几种情况,聚簇索引与非聚簇索引
    • 事务特性,隔离级别。分布式事务的解决方案
    • 慢Sql定位及优化,分库分表等

    五、中间件

    • Redis数据类型,消息队列,Lua脚本,Redis哨兵模式,持久化RDB和AOF。一致性hash
    • Redis作为缓存时的数据一致性,缓存的三个问题及解决方案:缓存雪崩,缓存击穿,缓存穿透
    • Kafka,RocketMQ,重复消费,顺序消息,事务消息,高可用,消息丢失,挤压场景,整个消息发送消费的流程
    • Zookeeper:zookpeer 选举算法。Paxos 算法。Raft 算法。ZAB 协议

    六、JVM

    • JVM内存模型
      • 程序计数器(记录当前线程)
      • Java栈(虚拟机栈)
      • 本地方法栈
      • 方法区
      • 直接内存
    • JVM 垃圾回收
      • 垃圾判断标准
      • 引用计数法
      • 可达性分析算法(根索法)
    • 垃圾回收算法
      • 标记清除
      • 复制算法(新生代From、To)
      • 标记整理(老年代)
      • 分代回收
    • 垃圾收集器
      • Serial 垃圾收集器(单线程、复制算法) (新生代)
      • ParNew 垃圾收集器(Serial+多线程) (新生代)
      • Parallel Scavenge 收集器(多线程复制算法、高效) (新生代)
      • Serial Old 收集器(单线程标记整理算法 ) (老年代)
      • Parallel Old 收集器(多线程标记整理算法)(老年代)
      • CMS 收集器(多线程标记清除算法) (老年代)
      • G1垃圾回收器
    • Minor GC 和 Full GC,Full GC 触发条件

    七、计算机网络

    • OSI七层模型
    • HTTP请求流程
    • GET/POST区别
    • UDP/TCP区别
    • TCP三次握手及衍生问题:
      • 什么是TIME-WAIT
      • 为什么一定是三次握手不是两次
      • 流量控制,滑动窗口,拥塞控制,慢启动,拥塞避免,快重传,快恢复
    • HTTP 1.0、1.1、2.0
    • HTTPS的流程
    • SSL是什么
    • TCP/IP四层协议
    • DNS,ARP协议原理
    • DOS攻击如何解决
    • DNS欺骗如何解决,ARP欺骗等
    • XSS、CSRF、iFrame安全问题
    • Session的实现机制,分布式环境下的注意事项
    • 如何判断远程机器上某个端口是否开启
    • nginx+tomcat,服务端如何获取客户端请求IP

    八、算法

    • 数据结构:队列,数组,栈,链表,树,散列,堆,图
    • 二叉树遍历方式:前序,中序,后序遍历,层次遍历
    • 最短路径算法:dijkstra 迪杰斯特拉算法(时间复杂度O(n²)),floyd 弗洛依德算法(时间复杂度O(n³))
    • 图:深度优先搜索(DFS),广度优先搜索(BFS)
    • 八种数组排序:

    九、Linux

    • 常用命令ls,netstat -anp,top,ifconfig,df -h,ps -ef
    • JVM调优命令jstat,jmap,jstack
    • 进程调度算法
      • 先来先服务FCFS
      • 短作业优先SPN
      • 最短剩余时间优先SRT
      • 高响应比优先HRRN
      • 时间片轮转
      • 优先权
      • 多级反馈队列
    • 用户态与内核态转换

    遇到的主要问题基本是这些,还没有面试过大厂,不知道大厂面试会问一些什么其他问题,以后有机会面试了再记录下来。

  • 相关阅读:
    20155339 Exp9 Web安全基础
    20155339 Exp8 Web基础
    20155339 Exp7 网络欺诈防范
    20155339 Exp6 信息搜集与漏洞扫描
    20155339 Exp5 MSF基础应用
    20155339 Exp4 恶意代码分析
    20155339 Exp3 免杀原理与实践
    20155339平措卓玛 Exp2 后门原理与实践
    20155339平措卓玛 Exp1 PC平台逆向破解(5)M
    20155339 第16周课堂实践加分作业
  • 原文地址:https://www.cnblogs.com/gtblog/p/12761922.html
Copyright © 2011-2022 走看看