Java 高级工程师面试题总结-参考答案(已拿Offer)

Java 高级工程师面试题总结-参考答案(已拿Offer)_第1张图片

一、面试题基础总结

1、 JVM 结构原理、GC 工作机制详解
答:具体参照:JVM 结构、GC 工作机制详解 ,说到 GC,记住两点:1、GC 是负责回收所有无任何引用对象的内存空间。 注意:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身,2、GC 回收机制的两种算法,a、引用计数法 b、可达性分析算法( 这里的可达性,大家可以看基础 2 Java 对象的什么周期),至于更详细的 GC 算法介绍,大家可以参考:Java GC 机制算法
2、Java 对象的生命周期
答:创建阶段 、 应用阶段 、不可见阶段 、不可达阶段 、收集阶段 、终结阶段、 对象空间重新分配阶段等等,具体参照:Java 对象的生命周期
3、Map 或者 HashMap 的存储原理
答:HashMap 是由数组 + 链表的一个结构组成,具体参照:HashMap 的实现原理
4、当数据表中 A、B 字段做了组合索引,那么单独使用 A 或单独使用 B 会有索引效果吗?(使用 like 查询如何有索引效果)
答:看 A、B 两字段做组合索引的时候,谁在前面,谁在后面,如果 A 在前,那么单独使用 A 会有索引效果,单独使用 B 则没有,反之亦然。同理,使用 like 模糊查询时,如果只是使用前面 %,那么有索引效果,如果使用双 % 号匹配,那么则无索引效果
5、数据库存储日期格式时,如何考虑时区转换问题?
答:使用 TimeStamp , 原因参照:Java 编程中遇到的时区转换问题
6、Java Object 类中有哪些方法?
答:Object 有哪些方法
7、HTTP 协议,GET 和 POST 的区别
答:浅谈 HTTP 中 GET 和 POST 的区别

二、线程、设计模式、缓存方面

1、SimpleDataFormat 是非线程安全的,如何更好的使用而避免风险呢
答:关于 SimpleDateFormat 安全的时间格式化线程安全问题
2、如何看待设计模式,并简单说说你对观察者模式的理解
答:1、设计模式有神马用 2、观察者模式类图及实现
3、集群环境中,session 如何实现共享
答:
1、Java 集群之 session 共享
2、session 多服务器共享方案,还有一种方案就是使用一个固定的服务器专门保持 session,其他服务器共享
4、分布式、集群环境中,缓存如何刷新,如何保持同步?
答:
A、缓存如何刷新? 1、定时刷新 2、主动刷新覆盖 ,每个缓存框架都有自带的刷新机制,或者说缓存失效机制,就拿 Redis 和 Ehcache 举例, 他们都有自带的过期机制,另外主动刷新覆盖时,只需获取对应的 key 进行数据的覆盖即可
B、缓存如何保持同步? 这个 Redis 有自带的集群同步机制,即复制功能,具体参考:基于 Redis 分布式缓存实现 ,Ehcache 也有分布式缓存同步的配置,只需要配置不同服务器地址即可,参照:Ehcache 分布式缓存同步
5、一条 SQL 执行过长的时间,你如何优化,从哪些方面?
答:
1、查看 SQL 是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化)
2、涉及

你可能感兴趣的:(数据库架构,java,spring,sql,面试)