5f7e0c0b3c396966ea137b4cf79eea19
Java学习/面试自测指南!

开始之前,先说一下我非常推荐的一种学习方式:

带着问题学习或者准备面试。

另外,准备面试的小伙伴,一定要根据自身情况制定好复习计划! 并且,你最好还要时不时自测一下,对着一些面试常见的问题进行自问。

为了方便大家,我分析了百余份 2020 最新大厂面经,整理了面试中最最最常问的一些问题!小伙伴们可以对照着这篇文章学习或者准备面试。

网上也有一些类似的面试题总结的文章,大家以我这篇为准就好!毫不吹牛,Guide 哥整理,质量有保障!(_基于事实的自信 😎_)

另外,内容会继续完善,欢迎你在评论区说出你遇到的高频面试题!

以下所有问题的答案可以参考(大部分都能找到):JavaGuide(「Java 学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!)。

Java

基础

Java 基础这部分有一些太简单的问题就直接没有放上来。小伙伴们可以参考: Java 基础知识点总结

  1. Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?
  2. String 、 StringBufferStringBuilder 的区别是什么? String 为什么是不可变的?
  3. == 与 equals?hashCode 与 equals ?
  4. Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?
  5. 谈谈对 Java 注解的理解,解决了什么问题?
  6. Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?
  7. 内部类了解吗?匿名内部类了解吗?
  8. BIO,NIO,AIO 有什么区别?

Java 集合框架

  1. 说说 List,Set,Map 三者的区别?三者底层的数据结构?
  2. 有哪些集合是线程不安全的?怎么解决呢?
  3. 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
  4. HashMap 和 Hashtable 的区别?HashMap 和 HashSet 区别?HashMap 和 TreeMap 区别?
  5. HashMap 的底层实现
  6. HashMap 的长度为什么是 2 的幂次方
  7. ConcurrentHashMap 和 Hashtable 的区别?
  8. ConcurrentHashMap 线程安全的具体实现方式/底层具体实现

jvm

  1. jvm 内存结构
  2. jvm 调优参数
  3. 什么是类加载?何时类加载?类加载流程?
  4. 知道哪些类加载器。类加载器之间的关系?
  5. 类加载器的双亲委派了解么? 结合 Tomcat 说一下双亲委派(Tomcat 如何打破双亲委托机制?...)。
  6. 为什么需要双亲委派
  7. Java 内存模型
  8. 栈中存放什么数据,堆中呢?
  9. 大对象放在哪个内存区域
  10. 堆区如何分类
  11. 垃圾回收有哪些算法
  12. GC 的全流程
  13. GC 中老年代用什么回收方法?

多线程

  1. 线程和进程的区别。
  2. 什么是上下文切换?
  3. 什么是线程死锁?如何避免死锁?
  4. 乐观锁和悲观锁了解么?
  5. 说说 sleep() 方法和 wait() 方法区别和共同点?
  6. Java 线程池有哪些参数?阻塞队列有几种?拒绝策略有几种?新线程添加的流程?
  7. 实现 Runnable 接口和 Callable 接口的区别。
  8. 讲一下 JMM(Java 内存模型)。volatile 关键字解决了什么问题?说说 synchronized 关键字和 volatile 关键字的区别。
  9. AQS 原理了解么?AQS 组件有哪些?
  10. 用过 CountDownLatch 么?什么场景下用的?

网络

  1. OSI 与 TCP/IP 各层的结构与功能,都有哪些协议?为什么网络要分层?
  2. 计算机网络的一些常见状态码
  3. ping 所使用的协议
  4. TCP 的三次握手与四次挥手的内容? TCP 为什么连接是三次握手而断开是四次握手?
  5. TCP 与 UDP 的区别及使用场景
  6. TCP 是如何保证传输的可靠性?
  7. 一次完整的 HTTP 请求所经的步骤
  8. HTTP 协议了解么?HTTP 是基于 TCP 还是 UDP 的?
  9. HTTP 报文的内容简单说一下! HTTP 请求报文和响应报文中有哪些数据?
  10. HTTP 和 HTTPS 的区别了解么?
  11. HTTP 请求有哪些常见的状态码?
  12. HTTP 长连接和短连接了解么?
  13. Cookie 和 Session 的关系
  14. URI 和 URL 的区别是什么?

算法和数据结构

算法

  1. LRU 算法了解吗?你能实现一个吗?
  2. 写排序算法(快排、堆排)
  3. 使用数组实现一个栈
  4. 使用数组实现一个队列
  5. 实现一个链表、反转链表、
  6. ......

数据结构

  1. 数组 vs 链表
  2. 栈的应用场景
  3. 队列的分类、应用场景
  4. 红黑树的特点、红黑树 vs 二叉查找树
  5. 哈希表、哈希表应用场景
  6. 布隆过滤器了解吗?
  7. ......

系统设计

设计模式

  1. 何为设计模式?有哪些常见的设计模式?
  2. 单例模式了解么?说一下单例模式的使用场景。手写一个单例模式的实现。
  3. 观察者模式了解么?说一下观察者模式的使用场景。
  4. 工厂模式了解么?说一下工厂模式的使用场景。
  5. 责任链模式了解么?哪些开源项目(Netty、MyBatis ...)中用到了责任链模式?怎么用的?
  6. SOLID 原则了解么?简单谈谈自己对于单一职责原则和开闭原则的理解。
  7. 阅读 Spring 源码的时候什么设计模式最让你影响深刻?能简单讲讲吗?

常见框架

Spring

  1. 什么是 Spring 框架?
  2. 列举一些重要的 Spring 模块?
  3. 谈谈自己对于 Spring IoC 和 AOP 的理解
  4. Spring Bean 的生命周期说一下
  5. Spring 中的 bean 的作用域有哪些?
  6. 拦截器和过滤器了解么?
  7. Spring 动态代理默认用哪一种
  8. hibernate 和 mybatis 区别
  9. Spring Boot 和 Spring 的区别
  10. 说出使用 Spring Boot 的主要优点
top Created with Sketch.