Java 面试题
这里按专题整理 Java 面试中常见的问题。现已上线 Java 基础面试题与 Java 集合面试题,后续将沿用同一结构补充并发、JVM、Spring 与 MySQL 等专题。
题目范围参考 犬小哈 Java 面试题,正文依据 Java 官方资料独立整理,不包含原站广告、课程或社群推广内容。
3 个专题 · 59 道题
Java 基础面试题21 题
Java 语言、对象模型、异常、I/O 与常用基础 API 高频题
- 01String 为什么设计成 final 不可变的?
- 02String、StringBuilder 和 StringBuffer 的区别?
- 03String str = new String("abc") 创建了几个对象?
- 04接口和抽象类的区别是什么?怎么选择?
- 05while (true) 和 for (;;) 哪个性能更好?
- 06什么是反射机制?为什么反射慢?
- 07什么是泛型?为什么要使用它?
- 08如何理解 Java 中的多态?
- 09为什么 Java 不支持多继承?
- 10final、finally、finalize 的区别?
- 11finally 中代码一定会被执行吗?
- 12BigDecimal 和 Long 哪个表示金额更合适,怎么选择?
- 13AIO、BIO 和 NIO 的区别?
- 14什么是 SPI,和 API 有什么区别?
- 15为什么不能用浮点数表示金额?
- 16深拷贝和浅拷贝的区别?
- 17什么是序列化与反序列化?
- 18为什么重写 equals 时一定要重写 hashCode?
- 19什么是 UUID,能保证唯一性吗?
- 20Java 中异常分哪两类,有什么区别?
- 21为什么不能用 BigDecimal 的 equals 方法做等值比较?
Java 集合面试题14 题
Java 集合框架、HashMap 与并发容器高频题
- 01ArrayList、LinkedList 与 Vector 的区别?
- 02HashMap、Hashtable 和 ConcurrentHashMap 的区别?
- 03Java 中的集合类有哪些?如何分类的?
- 04说说 HashMap 的扩容机制?如何扩容的?
- 05为什么 HashMap 的默认负载因子要设置成 0.75?
- 06为什么在 JDK 8 中 HashMap 要转成红黑树?
- 07HashMap 用在并发场景中会出现什么问题?
- 08HashMap 的 remove 方法是如何实现的?
- 09HashMap 在 get 和 put 时,底层流程是怎样的?
- 10HashMap 的 hash 方法是如何实现的?
- 11Set 如何保证元素不重复的?
- 12什么是 fail-fast?什么是 fail-safe?
- 13ConcurrentHashMap 是如何保证线程安全的?
- 14ConcurrentHashMap 为什么在 JDK 8 中废弃分段锁?
MySQL 面试题24 题
MySQL 索引、事务、锁、日志与 SQL 优化高频题
- 01char 和 varchar 的区别?
- 02InnoDB 和 MyISAM 有什么区别?
- 03MySQL 深度分页如何优化?
- 04什么是回表查询?如何避免?
- 05自增主键用完了怎么办?
- 06为什么不推荐使用外键?
- 07唯一索引和主键索引的区别?
- 08count(1)、count(*) 与 count(列名) 的区别?
- 09InnoDB 中索引类型有哪些?
- 10truncate、delete、drop 的区别?
- 11慢查询怎么排查?
- 12脏读、幻读、不可重复读是什么?
- 13什么是数据库死锁,怎么解决?
- 14用了索引还是很慢,可能是什么原因?
- 15如何进行 SQL 调优?
- 16binlog、redolog 和 undolog 的区别?
- 17设计索引时应遵循哪些原则?
- 18为什么不建议使用存储过程?
- 19为什么互联网大厂不推荐使用多表 JOIN?
- 20什么是数据库范式,为什么要反范式化设计?
- 21什么是最左前缀匹配?为什么要遵守?
- 22乐观锁与悲观锁怎么实现?
- 23谈谈 InnoDB 中的表级锁、页级锁、行级锁?
- 24InnoDB 加索引,这个时候会锁表吗?