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
    • 时间片轮转
    • 优先权
    • 多级反馈队列
  • 用户态与内核态转换

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

原文地址:https://www.cnblogs.com/gtblog/p/12761922.html