2021年Java面试热门知识点解析

需积分: 8 2 下载量 188 浏览量 更新于2024-07-09 收藏 4.34MB PDF 举报
"2021 Java 面试真题-(1).pdf" 包含了Java程序员在面试过程中可能遇到的各种技术问题,涵盖了大厂如字节跳动、阿里、腾讯、网易游戏等的面试流程,以及针对不同公司的具体面试题目。这份资料主要关注Java进阶知识,Spring AOP原理,HashMap和ConcurrentHashMap的内部结构,线程池的设置,GC(Garbage Collection)机制,MySQL事务与隔离级别,SQL优化,缓存问题,Redis的数据结构与使用,以及Spring Bean容器的生命周期等核心概念。 1. **大厂面试流程**:通常包括技术面、HR面等多个环节,涉及到专业技能、项目经验、团队协作能力等多方面评估。 2. **Spring AOP**:Spring的面向切面编程,用于处理系统中的横切关注点,如日志、事务管理等,其底层原理包括动态代理和编译期织入。 3. **HashMap和ConcurrentHashMap**:HashMap是非线程安全的,采用数组+链表/红黑树实现;ConcurrentHashMap是线程安全的,使用分段锁策略提高并发性能。 4. **线程池大小设置**:基于系统CPU核数、任务性质和系统负载来确定,一般推荐为CPU核数+1或根据业务需求调整。 5. **IO密集型任务与CPU核数关系**:IO密集型任务线程数量通常建议设置为CPU核数的2倍,因为IO操作时线程会被挂起,更多线程可以利用等待时间执行其他任务。 6. **G1垃圾收集器**:G1是一种并行、并发、分代的垃圾收集器,具有低暂停时间目标,采用region划分内存空间,预测式停顿。 7. **排查OOM问题**:通过JVM内存分析工具、堆dump分析、监控系统资源使用等手段定位内存泄漏或分配不当的原因。 8. **MySQL事务隔离级别**:包括读未提交、读已提交、可重复读和串行化,MySQL默认隔离级别为可重复读。 9. **可重复读解决的问题**:防止脏读和不可重复读,但在幻读问题上存在差异。 10. **SQL优化**:考虑索引使用、避免全表扫描、减少子查询、优化JOIN操作等。 11. **缓存问题**:缓存穿透(请求的数据不存在)、缓存击穿(大量请求同一缓存过期时间)和缓存雪崩(缓存服务同时失效),解决办法包括布隆过滤器、热点数据预加载、限流等。 12. **LRU(Least Recently Used)**:最近最少使用淘汰算法,常用于缓存管理,实现方式有哈希表+双向链表等。 13. **堆内存**:Java对象主要存储区域,可通过-Xms和-Xmx设置初始和最大堆大小。 14. **栈和队列应用场景**:栈用于函数调用、表达式求值等,队列用于任务调度、消息传递等。 15. **InnoDB成为MySQL默认引擎**:因为它支持事务处理、行级锁定和外键约束,适合并发环境下处理大量数据。 16. **B+树索引**:B+树索引是数据库常用的索引结构,适用于范围查询和顺序访问,叶子节点之间通过指针链接。 17. **B+树叶子节点链表**:通常是双向链表,方便双向遍历。 18. **MVCC(多版本并发控制)**:用于实现无锁并发读,通过UNDO LOG和READ VIEW实现事务的隔离。 19. **UNDO LOG**:记录事务回滚所需的信息,用于回滚操作。 20. **查询慢SQL原因**:分析SQL执行计划、检查索引使用、监控系统资源等。 21. **索引失效情况**:全表扫描、like模糊匹配开头、使用NOT IN或!=操作符、隐式类型转换等。 22. **Redis数据结构**:包括字符串、哈希、列表、集合、有序集合,以及压缩列表和跳跃表等。 23. **Redis存储限制**:一个实例的KEY数量受限于内存,其他数据结构的元素数量也有限制,具体取决于内存和配置。 24. **压缩列表和跳跃表**:压缩列表节省内存,适用于小数据量,跳跃表提供高效查找,适合大数据量场景。 25. **小数据量用压缩列表**:因其内存占用低,对CPU资源消耗较少。 26. **Redis主从同步**:通过RDB或AOF日志实现数据复制,保证数据一致性。 27. **RDB和AOF持久化优缺点**:RDB恢复速度快,但可能会丢失部分数据;AOF持久化更完整,但恢复速度相对较慢。 28. **Spring AOP理解**:涉及切面、通知、连接点、切入点表达式等概念,提供声明式事务管理等功能。 29. **Spring Bean生命周期**:包括初始化、实例化、属性注入、初始化回调、销毁回调等阶段。 30. **RabbitMQ消息不丢失**:通过确认模式、持久化、发布/订阅模式和事务机制保证。 以上知识点覆盖了Java开发中的核心技术和面试常见问题,对准备Java面试的开发者具有很高的参考价值。