Skip to content

面试题索引 ​

路线文档列出的经典面试题,作为考点提示,详细解答见对应知识点页面。

本页沿用原路线文档的阶段划分,与站内学习路线的对应关系:阶段 1 ↔ S1 编程语言基础、阶段 2 ↔ S2 计算机基础、阶段 3 ↔ S3 企业开发基础、阶段 4 ↔ S4 企业开发进阶、阶段 6 ↔ S6 Java 高级与架构、阶段 7 ↔ S7 求职与转岗。阶段名以学习路线总览为准,两处叫法可能不同。

本页由 scripts/gen_site_data.py 生成,共 92 条,最后更新 2026-10-09。

阶段 1:编程语言基础 ​

Java 编程基础(45 天) ​

  • 为什么重写 equals 还要重写 hashcode?
  • == 和 equals 比较的区别
  • 为啥有时会出现 4.0 - 3.6 = 0.40000001 这种现象?
  • final 关键字的作用
  • 介绍 Java 的集合类
  • ArrayList 和 LinkedList 的区别
  • Java 基础面试题
  • Java 集合面试题

Java 8 及新版本特性(3 天) ​

  • Java 8 有哪些新特性?
  • Lambda 表达式的原理是什么?
  • Stream API 和传统的循环有什么区别?
  • HashMap 在 JDK 1.7 和 1.8 的区别?
  • Optional 类有什么作用,如何使用?

阶段 2:巩固基础 ​

操作系统 ​

  • 什么是死锁?死锁产生的条件?
  • 线程有哪几种状态?
  • 有哪些进程调度算法?
  • 什么是缓冲区溢出?

计算机网络 ​

  • 计算机网络各层有哪些协议?
  • TCP 和 UDP 协议的区别?
  • TCP 为什么需要三次握手和四次挥手?
  • HTTP 和 HTTPS 协议的区别?

阶段 3:企业开发基础 ​

MySQL 数据库(7 天) ​

  • MySQL 索引的最左原则
  • InnoDB 和 MyIsam 引擎的区别?
  • 有哪些优化数据库性能的方法?
  • 如何定位慢查询?
  • MySQL 支持行锁还是表锁?分别有哪些优缺点?

开发框架(60 天) ​

Git(3 天) ​

  • 如何解决提交冲突?
  • 提交不小心出现误操作,如何撤销?
  • 什么是 Git Flow,它有什么好处?

Linux(10 天) ​

  • 如何查看某个进程的运行状态?
  • 如何在 Linux 上查看 2 G 的大文件?
  • Linux 软链接和硬链接的区别

阶段 4:企业开发进阶 ​

设计模式(21 天) ​

  • 单例模式有哪些实现方式?有哪些优缺点?请手写其中一种
  • 你用过哪些设计模式,为什么用它?
  • 工厂模式和抽象工厂模式的区别?
  • 代理模式的应用场景有哪些?
  • 策略模式如何消除 if-else?

Redis(14 天) ​

  • Redis 为什么快?
  • Redis 有哪些常用的数据结构?
  • Redis RDB 和 AOF 持久化的区别,如何选择?
  • 如何解决缓存击穿、缓存穿透、雪崩问题?
  • 如何用 Redis 实现点赞功能,怎么设计 Key / Value?

消息队列(14 天) ​

Nginx(14 天) ​

Netty 网络编程(21 天) ​

  • Netty 有哪些优点?
  • 什么是 NIO?
  • 介绍 Netty 的零拷贝机制

微服务(60 天) ​

容器(7 天) ​

阶段 6:Java 高级 ​

并发编程(21 天) ​

  • volatile 关键字的作用
  • 使用线程池有哪些好处?
  • 线程池参数如何设置?
  • 什么是线程安全问题,如何解决?
  • 介绍 synchronized 的锁升级机制
  • CopyOnWriteArrayList 适用于哪种场景?

JVM(30 天) ​

  • 介绍 JVM 的内存模型?
  • JVM 内存为什么要分代?
  • 介绍一次完整的 GC 流程
  • 介绍双亲委派模型,为什么需要它?

阶段 7:Java 求职 > 资源 ​

个人学习项目:AI 生成内容均经人工复核,第三方资源仅作索引