- 自我介绍。
- 介绍熟悉的项目,主要流程是什么,用到什么技术,学到了什么。
- 项目中遇到了哪些难点,怎么解决的。
- 线上排查生产问题,怎么排查的。(说了arthas,人说小公司可能没有要求,大公司不会让用这种工具的。也没有问原理)
- volatile的原理,项目中有没有使用过,它能做什么?怎么做到的。
- 线上服务用的什么垃圾收集器?G1,为什么要用G1?(忘了说最重要的一点,不会产生碎片问题)三色标记算法是什么。
- HTTP的发展史,从0.9讲到2.0,做了哪些改动。因为是提到了WebScoket,简单的说了说。
- TCP的三次握手和四次挥手。为什么要三次握手。
- Redis怎么用的?Redis的数据同步机制,分别有什么特点。线上用的是RedisCluster还是哨兵模式?哨兵模式简单介绍。分布式锁是怎么做的。Redssion的原理是什么?和自己手写有什么区别?
- 缓存击穿和缓存穿透是什么?怎么解决?
- 为什么要接入ES(ElasticSearch)。
- 分布式事务有哪些?基于本地消息表的分布式事务,你们是怎么实现的。
- 统计报表怎么做的?定时任务还是?
- MySQL,B+树是什么?怎么样的一个数据结构?它解决了什么问题。它和B树的区别是什么?执行计划看过没?它有哪些字段,分别代表了什么含义?MVCC是什么?什么是当前读,什么是快照读。当前读时,他的数据是通过什么关联历史数据的(问的就是每条记录会有一个版本和回滚指针,通过链表关联)
- 项目中用到了哪些设计模式?(策略、责任链、模板、代理、观察者),模板模式是什么?怎么用的。
- 手撸 Double—Check Lock 单例
自我评价:疏于总结,面的稀碎。
反思:认真面对每一次面试,认真总结自己遇到的问题。项目介绍应具有条理性,遇到的技术痛点、难点,讲出解决思路。