面试面经
1
健change's同学⾯经
⾯试分享
N. ⾃我介绍
O. 我⾯试了哪些公司
P. 我的⾯试准备⼯作
Q. 简历准备
S. 图⽚准备
T. ⾯试内容
V. ⾯试技巧
W. 内推⾯试
X. ⼤⼚⾯试
NL. 总结
我今年30,喜欢和家⼈待在⼀起,喜欢的⻝物是可乐和⽕锅。我还喜欢摄影,打篮球。在摄影⾥记录美丽的⻛
景,缅怀流⾦岁⽉,在打篮球的过程中释放⾃我,都是让我特别愉悦的事。过去的30年的岁⽉⾥,我计算机系⼤
专毕业,⾃考了本科。刚毕业时,我做过⼀份⽉薪3k,运维相关的⼯作。由于⾃⼰当时负责部署java相关的项⽬,
我对java产⽣了⼀些兴趣,开始在业余时间看视频⾃学。学到⼀定基础后,我向上司提出了负责⼀些编码⼯作的要
求,上司看我勤奋好学,给予了我参与⼀些项⽬开发的机会。于是我开始了⾃⼰的java开发⽣涯。最开始,我做了
⼀些基于struct,spring,springmvc的后台管理项⽬,积累了⼀定经验后,我跳到了⼀家做跨境电商物流的公
司。
后来的时间,每隔⼀两年,我都会跳槽⼀次,但都不是很顺利。就这样,不知不觉我已经在这个⾏业⾥耕耘了6
年。2020年12⽉初,⼀个⻛和⽇丽的⽇⼦,公司突然倒闭了,没有任何赔偿。我咨询过律师,他们说就算赢了你
也拿不到赔偿,因为公司没钱了。没钱了?我想起了公司服务器被攻击的那⼀天,我不分昼夜的奋⼒抢救公司的数
据,连续41⼩时的时间⾥,只睡了2⼩时。第三天的清晨,疲惫的我⾛出公司,那时我想,终于可以好好休息了。
⾯试分
享
1. ⾃我介绍
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
2
当时公司企业微信被解散的图:
地球不会因为任何⼈停⽌运转。我必须振作起来重新找⼯作。幸运的是,我这段时间⼀直有学架构课,基础还算不
错。于是我开始准备⾯试了,花了⼀个⽉复习儒猿的专栏课,加上有架构班定制化的简历,⾯试指导,内推资源的
加成,在⽼师的帮助下,我拿到满意的offer,甚⾄还通过了⼀些⼤⼚的⾯试。⾯试通过后,我意⽓⻛发,在篮球
场上畅酣淋漓的打了⼀场。
DataStory (2轮技术+1轮Hr,通过)
乐摇摇 (2轮技术+1轮Hr,通过)
4399 (2轮技术+1轮Hr,通过)
Bigo (3轮技术,通过)
唯品会
(3轮技术+1轮Hr,通过)
⻁⽛ (3轮技术+1轮Hr,待定)
荔枝 (3轮技术+1轮Hr,通过)
⾯试前,我主动找⽼师聊⼀下⾃⼰⽬前的情况,把最近的⼀些项⽬经历和⼯作经验都跟⽼师⼤概反馈⼀下,⽼师根
据我的情况提供⼀个完整的复习计划,我按照⽼师的复习计划按部就班的执⾏。
因为我的⽬标是⼤⼚,⽽不是⼀些⼩公司。⾯试不能急,要提前准备,包括知识复习和简历准备,这些都需要时
间。好在机会是留给有准备的⼈的。
先说说我的当时的⼀些情况和学习⽅法:
那时我⼊架构班有⼀段时间了,每天会抽出2个多⼩时来学习,早上6点多起床学,晚上也会⽤零碎的时间学,11点
前⼊睡。以前我基本在晚上学习,但效率不⾼,看视频听课的时候,容易打瞌睡,很多视频也⽩看。后来调整作息
早睡,早上学习。效率⾼了很多。
2. 我⾯试了哪些公司
3. 我的⾯试准备⼯作
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
3
平时上班不忙的时候,我会打开儒猿技术窝公众号,看⼀些图⽂专栏,整理整理架构课⾥⾯的笔记,或者练习架构
课⾥⾯的项⽬代码。
这次⾯试,我⼤概准备了1个⽉的时间,因为我⼀直有在学架构课和专栏课,所以⼀点也不慌,这1个⽉的时间,只
是做下知识复习和回顾。
我原本是打算在年后跳槽的,所以在11⽉中旬的时候已经在准备复习了,但没想到在12⽉初,公司突然倒闭,这也
让我下定决⼼去努⼒⼀把。
我的学习⽅法:
1. 6点多早起学习。主要还是受到群⾥⾯的闲⼈和治慧⼤佬的早起学习习惯的影响,他们作息规律,然后我开始从
早睡到早起慢慢过渡过来,这样学习效果还是很不错的。
2. 学习内容都是来源于:架构课+⽯杉的架构笔记+儒猿公众号专栏
3. 学习的过程不⼀味地追进度。学完⾃⼰要消化,融⼊成⾃⼰的知识体系才算真正的学到。为了做到这点,可以
做笔记总结,画流程图总结,不懂的就多看⼏次,就会懂。
4. 碎⽚时间也很宝贵,可以利⽤起来学习,如周末
外出、空闲的时间可以带上平板看视频,⼯作任务完成了,也
可以摸摸⻥,整理笔记和练习代码。以前没买平板前,我也是把⾃⼰的电脑背出去,有时间就打开电脑来看视频学
习。
5. 同事遇到的问题或者技术交流群提出的⼀些问题,⾃⼰可以多参与讨论,多思考。参与讨论的过程,可以学到
更多知识,印象也会加深。
主要复习的内容:专栏课内容+架构课内容+公司的项⽬
专栏课:⾯试突击123+JVM专栏课+MYSQL专栏课+ROCKETMQ专栏课
复习⾯试突击1 (免费⽩嫖)内容,包括下⾯的重点:
MQ部分必看:
1.体验⼀下⾯试官对于消息队列的7个连环炮
2. MQ的作⽤
3. MQ保证消息队列的⾼可⽤
4. MQ保证消息不被重复消费
5. MQ如何保证消息的顺序性
6. MQ如何处理消息丢失的问题
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
7. MQ消息持续积压⼏⼩时怎么处理
Redis部分必看:
1. Redis线程模型
2. Redis数据类型以及⽤的场景
3. Redis过期策略
4. Redis持久化RDB/AOF
5. Redis集群模式架构思想/gossip通信协议/hash slot算法/部署经验
6. Redis⾼可⽤架构
7. ⾼并发场景下的缓存⼀致性问题
Redis脑图:
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
4
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
5
6
分库分表必看:
1. 体验⼀下⾯试官对于分库分表这个事⼉的⼀个连环炮
2. 垂直拆分/⽔平拆分
3. 动态扩容/不停机迁移
4. 分库分表后的全局ID⽅案
熔断技术必看:
1. 资源隔离/熔断/降级的作⽤
2. 线程池/信号量两种隔离级别技术理解
3. 熔断技术的执⾏步骤和流程
复习⾯试突击2内容,包括下⾯的重点:
Springcloud部分必看:
1. Springcloud底层架构原理
2. Springcloud与Dubbo的对⽐
3. Springcloud的组件
注册中⼼部分必看:
1. Eureka
注册中⼼基础原理
2. Zookeeper注册中⼼基础原理
3. Euerka注册中⼼参数调优
分布式事务部分必看:
1. 怎么设计分布式事务技术⽅案
2. TCC事务、最终⼀致性事务的技术选型
3. RocketMQ对分布式事务⽀持的底层实现原理
复习⾯试突击3内容,包括下⾯的重点:
并发编程部分必看:
1. HashMap底层结构/JDK1.8 HashMap的优化/hash算法/寻址算法
2. HashMap如何解决hash碰撞/如何扩容
3. Volatile/synchronized底层原理(原⼦性、可⻅性、顺序性)
4. CAS底层原理/CAS会引发的问题
5. AQS底层原理/AQS核⼼的执⾏流程
6. 线程池的底层⼯作原理
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
7
7. 线程池的核⼼配置参数
8. 8.ConcurrentHashMap底层原理
⽹络部分必看:
1. TCP/IP四层⽹络模型
2. 浏览器请求的全过程是怎么样的
3. HTTPS的⼯作原理
Zookeeper部分必看:
1. ZooKeeper可以做什么?
2. ZooKeeper集群的三种⻆⾊:Leader、Follower、Observer
3. ZooKeeper最核⼼的⼀个机制:Watcher监听回调
4. ZAB的核⼼思想介绍:主从同步机制和崩溃恢复机制
5. ZooKeeper到底是强⼀致性还是最终⼀致性
JVM专栏课内容,包括下⾯的重点:
1. 类加载
机制/类加载过程
2. 双亲委派机制/以及他的作⽤
3. JVM内存区域(堆、栈等其他)
4. 堆内存划分
5. 新⽣代、⽼年代垃圾回收机制以及原理
6. 常⽤的垃圾回收器(ParNew、CMS、G1)
7. 触发垃圾回收的时机和条件
8. JVM调优参数模板
9. JVM分析命令(jstat、jmap、jstack等)
10. JVM分析⼯具(MAT等)
JVM总结的图:
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
8
Rocketmq专栏课内容,包括下⾯的重点:
1. Rocke
tmq架构原理
2. Rocketmq场景优化
3. Rocketmq底层原理/消息持久化/raft协议
4. Rocketmq事务机制
5. Rocketmq消息0丢失
6. Rocketmq重复消息/死信队列
Mysql专栏课内容,包括下⾯的重点:
1. Mysql架构设计(SQL接⼝、查询解析器、查询优化器、存储引擎、执⾏器)
2. Mysql⽇志相关(undo log、redo log、binlog)
3. Innodb存储引擎(buffer pool结构、free链表作⽤、flush链表作⽤、lru链表作⽤)
4. Mysql数据⻚/数据⾏/表空间/数据区
5. Mysql事务隔离级别/MVCC机制原理
6. 索引原理/索引规则/索引优化
7. Explain执⾏计划分析
MYSQL脑图:
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
9
10
架构课内容:
⼤型电商系统v1.0项⽬实战⾥⾯的设计模式部分必看:
复习⼏个⽐较重要的设计模式:
策略模式/迭代器模式/⼯⼚模式/代理模式/构造器模式/适配器模式
基于微服务架构的⼤型分布式电商系统部分必看:
主要复习微服务Spring Cloud那块:
1. Eureka服务注册与发现的原理/⼼跳检测/注册表抓取/⾃我保护机制
2. Eureka注册表多级缓存机制/参数调优
3. Ribbon负载均衡⼯作原理/负载均衡算法IRule
4. Hystrix资源隔离、限流、熔断、降级
5. Hystrix的线程池隔离技术/信号量隔离技术
6. Hystrix执⾏时的8⼤流程步骤以及内部原理
分布式事务实践模块部分必看:
1. 事务的基础知识:ACID以及⼏种隔离级别
2. 事务的基础知识:Spring的事务⽀持以及传播特性
3. XA规范以及2PC分布式事务理论介绍
4. 2PC分布式事务⽅案的缺陷以及问题/3PC分布式事务⽅案的理论知识讲解
5. 理解CAP与BASE的基础知识
6. 理解TCC分布式事务技术⽅案以及原理/TCC分布式事务执⾏流程
7. 可靠消息最终⼀致性⽅案/整体架构以及核⼼流程设计
分布式系统架构实战部分必看:
1. 保证分布式系统的接⼝幂等性的⼏种常⻅⽅案
2. Redisson分布式锁原理
3. Redisson可重⼊锁/lua脚本加锁逻辑/watchdog维持加锁/锁的互斥阻塞/释放锁
4. Redisson公平锁原理
5. MultiLock原理/RedLock源码算法实现
6. Zookeeper Curator框架介绍以及分布式锁⽀持
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
11
7. Zookeeper分布式锁可重⼊锁源码剖析
8. Zookeeper分布式锁可重⼊读写锁源码剖析
JDK源码剖析系列部分必看:
集合部分:
1. ArrayList基本原理以及优缺点
2. ArrayList数组扩容以及元素拷⻉
3. LinkedList基本原理以及优缺点
4. LinkedList双向链表数据结构
5. HashMap数组、链表、红⿊树的数据结构
6. HashMap优化后的降低冲突概率的hash算法
7. HashMap put操作原理以及hash寻址算法
8. HashMap JDK 1.8引⼊红⿊树优化hash冲突
9. HashMap JDK 1.8的⾼性能rehash算法
10. LinkedHashMap底层原理/有顺序的map数据结构
11. TreeMap/HashSet/LinkedHashSet/TreeS
et底层结构以及原理
12. Iterator迭代器应对多线程并发修改的fail fast机制
并发编程部分:
1. CPU多级缓存模型
2. 总线加锁机制和MESI缓存⼀致性协议
3. Java内存模型
4. volatile是如何保证可⻅性/顺序性
5. volatile的底层实现原理:lock指令以及内存屏障
6. synchronized底层原理(jvm指令以及monitor锁)
7. 可⻅性涉及的底层硬件概念:寄存器、⾼速缓存、写缓冲器
8. 深⼊探秘有序性:Java程序运⾏过程中发⽣指令重排的⼏个地⽅
9. synchronized锁同时对原⼦性、可⻅性以及有序性的保证
10. 采⽤写缓冲器和⽆效队列优化MESI协议的实现性能
11. AtomicInteger中的CAS⽆锁化原理
12. AtomicInteger源码剖析:仅限JDK内部使⽤的Unsafe类
13. AtomicInteger源码剖析:底层CPU指令是如何实现CAS语义的
14. Atomic原⼦类体系的CAS语义存在的三⼤缺点分析/CAS的引发问题的解决⽅案
15. AQS的原理(异步队列同步器)/以及AQS重要的参数
16. AQS默认的⾮公平加锁策略的运作原理
17. AQS队列唤醒阻塞线程的过程
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
12
18. ReentractLock如何设置公平锁策略
19. ThreadLocal源码剖析:线程本地副本的实现原理
20. JDK 1.7 HashMap并发环境下死循环之环形链表
21. JDK 1.7 HashMap并发环境下死循环之死循环与丢数据
22. ConcurrentHashMap底层原理:初始化流程
23. ConcurrentHashMap底层原理:未分段数组的CAS加锁
24. ConcurrentHashMap底层原理:链表和红⿊树解决hash冲突问题
25. JDK 1.8对ConcurrentHashMap做出的锁细粒度优化
26. CopyOnWriteArrayList:线程安全的List数据结构/基于写时复制机制
27. CopyOnWriteArrayList核⼼思想:弱⼀致性提升读并发
28. 线程安全的有界队列:LinkedBlockingQueue
29. 基于数组实现的有界队列:ArrayBlockingQueue
30. 线程池的核⼼成员变量有哪些/以及作⽤
31. 线程池的源码执⾏流程
32. 线程池的⼏个种类/区别/以及使⽤场景
⼤⽩话⽹络课程部分必看:
1. 数据链路层:以太⽹协议、mac地址、⽹卡以及路由器
2. ⽹络层:IP协议、⼦⽹划分以及⼦⽹掩码
3. 传输层:TCP协议、Socket编程是什么
4. 应⽤层
:HTTP协议是什么
5. HTTPS协议加密通信的实现原理
6. 全世界⼏万台DNS服务器如何⼤接⼒完成IP地址的查询
7. ARP⼴播获取路由器mac地址以及ARP缓存机制
公司的项⽬准备:
1. 梳理⾃⼰做过⽐较复杂的或者最有挑战性的功能或者项⽬
2. 把上⾯的功能或者项⽬画⼀下核⼼的流程图
3. 把上⾯的功能或者项⽬⼀些功能点列⼀下,还有表结构串联起来
4. 做完这些功能和项⽬难点在哪,从⾥⾯学到什么东⻄,⾃⼰回顾⼀下
5. 梳理项⽬的时候,参考闲⼈⼤佬之前在群⾥分享的内容,⽐如架构班学员如何梳理项⽬,按照他们的思路去梳
理项⽬。
以上内容基本都是我⾯试前的准备,基本是我挑选过的⼀些重点知识。 有些课程之前看过,复习的时候过过笔记
就⾏了,但⼤多时候,我会有重新看视频或者重新看专栏课的⽂章。
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
13
当你复习完知识后,你⼼⾥⾯就有数了,哪些知识点⽐较扎实,⽐较熟悉。项⽬⾥⽤过哪些技术,线上问题怎么排
查等等,这些都是很好的简历素材。
举⼏个例⼦:
JVM专栏课⾥⾯的知识你都理解透彻了,那么你的简历就可以写:
熟悉JVM底层⼯作原理和垃圾回收机制,熟悉使⽤jstat、jmap、mat进⾏JVM调优
MYSQL专栏课⾥⾯的知识你都理解透彻了,那么的简历就可以写:
Mysql熟悉Innodb引擎、MVCC机制,能根据explain执⾏计划优化SQL
你有读过Redission、zk分布式锁、SpringCloud的源码,那么你的简历就可以写:
对开源技术有⼀定研究,对Spring Cloud、Redisson 、zk分布式锁等开源框架深⼊阅读过源码
上⾯的简历填充就是很好的技巧了,可以丰富你简历⾥⾯的个⼈总结和技术专业技能这些栏⽬了。
项⽬经验的话,那么你就要突出项⽬的技术亮点,技术难点,技术栈,你负责的模块的细节,这些都要根据你实际
的项⽬开发
经验来写了,毕竟每个⼈的项⽬经验都不⼀样。
很重要的⼀点是,我简历的内容,如专业技能和项⽬经历这些都是找⽼师帮我定制优化的,他给我提出⼀些专业技
能和项⽬经历的优化建议,还有怎么丰富简历的内容,反复1-2次的调整与修改,我的简历就会“焕然⼀新”了。
1. 画出最近项⽬的系统架构图,先⽤processon画⼀次,再⼿撸画多⼏次。
2. 画出项⽬⾥⾯⽐较复杂的功能或者⽐较难的功能的流程图,先⽤processon画⼀次,再⼿撸画多⼏次。
3. 重要的技术流程图也⼿画了,例如Eureka注册表的多级缓存、AQS核⼼流程图、可靠消息最终⼀致性⽅案流程
图、Redis线程模型流程图等等。
准备这些图有什么⽤呢?⼿撸给⾯试官看的。
根据⾃⼰的⾯试印象回忆,先归纳⼀下经常问的⼀些热点问题:
4. 简历准备
5. 图⽚准备
6. ⾯试内容
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
14
1. 线上某个程序CPU 100%,⼀般是什么原因导致的?怎么排查?讲讲排查步骤?
问题分析:
主要考你JVM的基础知识和⼀些JVM故障的排查命令。
这些问题很简单,你看完JVM专栏课就知道对应的排查命令了,例如ps java进程的pid、Top -Hp、利⽤Jstack
分析。这种CPU 100%出现的原因有很多,例如代码哪⾥没写好出现了死循环、⼀些连接池再调⽤之后,没有合理
关闭等等。
但你只是回答出这些内容,我觉得⾯试官觉得你只能拿到70分,刚好达到及格线。如果你想拿到90分+的话,必须
继续分析出现这种问题的根本原因是啥?
那你就可以继续带出JVM的堆内存相关知识点,例如新⽣代、⽼年代有没有合理的分配,java启动参数有没有合理
指定⼤⼩,垃圾回收器有没有合理指定,出现问题的时候要合理的输出⽇志,线上可以⽤过jstat、jmap等命令定
位出新⽣代、⽼年代的回收次数和哪些对象占⽤⽐较⼤。
⼀步⼀步这样分析的话,让⾯试官知道你已经⾮常掌握到这块的知识了。
2. 有些sql执⾏很慢,怎么分析?要怎么优化?
问题分析:
主要考你s
ql的分析能⼒和优化能⼒。
⾸先要打开mysql的慢查询⽇志,慢查询⽇志会统计出系统执⾏sql后出现的⼀些慢sql汇总,然后就拿出慢sql来分
析了,看看对应的sql查询条件有没有⾛索引,如果没⾛索引就新建对应的索引就可以了。
但你只是回答出这些内容,我觉得⾯试官觉得你只能拿到65分,刚好达到及格线。如果你想拿到90分+的话,必须
告诉⾯试官后⾯怎么避免出现这种慢sql的问题,还有怎么深度调优?
其实你看了Mysql专栏,都已经知道答案了。
⾸先可以从innodb存储引擎⾥⾯的buffer pool⼊⼿,调优对应的buffer pool数量参数,然后继续把索引的结构
B+树和原理讲解⼀次,避免查询的sql频繁的进⾏回表操作,还有主键的值是否是有序的,不建议是⽤uuid,如果
使⽤uuid作为主键的后果是啥。然后继续讲⼀下使⽤索引的规则,⼏种索引的类型,怎样命中索引,怎么避免频繁
回表。Explain分析sql语句的时候,type命中了哪个类型是最快的,type类型分了哪⼏类等等,如果你能继续带上
分库分表的场景,那就锦上添花了。
⼀步⼀步这样分析的话,让⾯试官觉得你对mysql很熟悉了。
3. 分布式锁你⽤过哪些?使⽤的时候要注意什么地⽅?
问题分析:
主要考察你对redis、redission、zk锁这块的知识点
可以先从redis原⽣的分布式锁讲起,讲⼀下他的优缺点
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
15
然后再讲redission实现分布式锁的原理和机制:
(1)加锁:在redis⾥设置hash数据结构,⽣存周期是30000毫秒
(2)维持加锁:代码⾥⼀直加锁,redis⾥的key会⼀直保持存活,后台每隔10秒的定时任务(watchdog)不断
的检查,只要客户端还在加锁,就刷新key的⽣存周期为30000毫秒
(3)可重⼊锁:同⼀个线程可以多次加锁,就是在hash数据结构中将加锁次数累加1
(4)锁互斥:不同客户端,或者不同线程,尝试加锁陷⼊死循环等待
然后再讲⼀下zk锁,zk与redis做分布式锁的区别和优缺点
zk锁的znode结构和核⼼的watch监听器机制
这⾥顺便把zk锁的如何防⽌⽺群效应的思想也讲⼀下
zk的zab协议的⼤概⽅案也讲⼀下
已经回答的很不错了
4. 如何保证幂等性?
这个问题rocketmq专栏课和架构课已经讲的很详细了,这⾥就不说了
5. 讲下sy
nchronized的锁升级
这个问题我答不出来,主要是synchronized的锁升级没复习到这块,其实架构课⾥⾯都有讲,然后跟⾯试官卖
惨,说没啥印象了,因为前⾯的synchronized原理已经回答的差不多了。
⾯试后,我就⻢上的回顾了这块的知识了,⾯试不懂的问题,⾃⼰要记录下来,然后复习⼀下。
(1)锁消除
锁消除是JIT编译器对synchronized锁做的优化,在编译的时候,JIT会通过逃逸分析技术,来分析synchronized
锁对象,是不是只可能被⼀个线程来加锁,没有其他的线程来竞争加锁,这个时候编译就不⽤加⼊monitorenter
和monitorexit的指令。
(2)锁粗化
(3)偏向锁
(4)轻量级锁
(5)适应性锁
6. 讲下可靠消息最终⼀致性⽅案
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
16
这个基本是⼿撸画图给⾯试官看的,边画边讲解,详细的内容可以看看rocketmq专栏课和分布式事务的架构课内
容
7. Eureka注册中⼼和Nacos注册中⼼和Zookeeper注册中⼼的区别
讲⼀下Eureka注册中⼼是如何保证AP的/Eureka注册表的多级缓存机制。
讲⼀下Zookeeper是如何保证CP的。
讲⼀下nacos是怎样⽀持AP/CP的,顺便讲⼀下nacos集成了配置中⼼的功能。
这⾥说⼀下,我对nacos不是很熟悉,但知道他的⼤概特性,讲nacos的时候顺便也带⼀下现在⽐较流⾏的Spring
Cloud Alibaba那套,⾯试前也复习了⼀下nacos的思想,应付⾯试官毫⽆压⼒。
根据⾃⼰的⾯试印象回忆,讲⼀下⼀些开放性题⽬:
1. 讲⼀下你⾃⼰做的最复杂或者最难的功能。
这个要根据⾃⼰的项⽬经验和业务模块来讲,我的建议最好是挑最近的公司的项⽬来准备,因为最近公司的项⽬根
据⽬前时间来说你是最熟悉的。
你⾃⼰要准备项⽬⾥⾯的1-2个⽐较复杂的功能,要理解⾥⾯的细节,最好⾃⼰⼿画⼀下流程图,因为问这种问题
的⾯试官,往往会抠你项⽬的细节,如果你不知道项⽬的细节的话,你会被⾯试官问的不知道如何回答,这时候就
会很尴尬。
2. 如果要你⾃⼰设计⼀个rpc框架,你要考虑哪些点?
这个主要考察你对框架设计的总体能⼒,例如框架的可⽤性,可扩展性,可读性,可伸缩性
然后也讲讲市⾯上⼀些⽐较流量的rpc框架,不同rpc框架他们之间的区别,以及他们是怎么保持上⾯的⼏个性的
3. 如何保证系统的⾼可⽤、⾼并发?
这种问题就最好回答了,看过专栏课、架构课后,这些问题其实没啥压⼒。
可以从最上层开始慢慢的剖析,如服务器⽤了Lvs + nginx + keepalive的负载均衡架构,LVS服务器,作为负载
均衡调度器,请求到来了以后,直接基于linux内核内部的⼀些底层机制进⾏请求转发,转发给后端的Web服务器
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
池⼦⾥的⼀台服务器,本质上就是在进⾏负载均衡,⽽且因为LVS主要是基于linxu内核级的⼀些底层机制做请求转
发,所以说效率极⾼,单机抗每秒⼏⼗万甚⾄上百万吞吐量绝对不是问题。
然后就带出MQ异步、MQ削峰、防⽌消息堆积,幂等性处理、多级缓存、Redis Cluster、防⽌缓存雪崩、防⽌缓
存穿透、防⽌缓存击穿、熔断降级技术、分布式锁、分布式调度、分库分表等。
7. ⾯试技巧
⾯试前先找⽯杉⽼师聊聊:
现在架构班对学员有就业指导服务,⽽且是⽼师1对1的就业指导,⽼师会先了解你的学习情况、学习进度和个⼈的
情况,然后会帮你指定这段时间的学习计划,我就是按照⽼师的学习计划来复习的,完了之后⽼师也会指导你如何
修改简历,帮你优化简历的⼀些细节,提⾼简历匹配率,这个就业指导服务对我帮助很⼤,效果很明显,少⾛了很
多弯路。
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
关于招聘⽹站:
找Java的基本就⽤拉钩和BOSS的,如果你想找猎头的话,那就在猎聘⽹公开简历也⾏。
投简历的时机:
⼯作⽇周⼀到周三投,选择早上的上班时间,如10:00-10:30之间,
简历被查看的成功率达80%+。
提前⼀天收藏好想投递的公司。
17
18
投简历的公司:
第⼀周⾯试的公司,基本都是⽤来练⼿的,热身的。
但第⼀周的公司最好不要投你想去的公司,不要⽤你想去的公司去练⼿。
选择性投递⼩公司,toC端的,⾏业最好是互联⽹、电商、直播等。
第⼀周⾯个⼤概4,5家,你会从中找到⼀些⾯试的感觉,⽽且你的⾃我介绍的内容每⼀次讲都会越讲越好,因为
你会从中知道讲哪些内容会好,⽽且会调整⾃我介绍内容的⼀些顺序。
第⼆周就可以投你想去的公司了
⾯试准备的物品:
简历必须要带了,
⾃备笔跟A4纸,⾯1家公司准备3张A4纸,2家就5-6张,
A4纸有什么⽤?等下你就知道了
⾯试开始前:
准备好⼿机的录⾳功能,或者⼿表的录⾳功能,
⾯试官⾛进来就按开始,
录⾳是为了更好的进⾏复盘,你可以听回你⾃⼰的⾯试过程,
哪⾥有不⾜的,就可以不断的改进和优化。
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
⾃我介绍怎么说:
这⾥要先说⼀个事情,之前⾯了⼀家公司,我⾃我介绍讲了⼤概有20分钟,完了后,⾯试官问我,你每次都是这
样讲的吗?你知道你⾃⼰讲了多久吗?我说是,他很不爽的看着我。
⾃从那次后,我每次讲⾃我介绍前都会很礼貌的说⼀句,如果我⾃我介绍讲的太⻓,你可以随时打断来问我。
⾃我介绍的时候,要控制好⾃⼰节奏的好时机,引导⾯试官往⾃⼰擅⻓的技术的领域去聊,把⾃⼰在开发过程中参
与的架构设计、架构选型、掌握的开源技术等各⽅⾯内容告诉给⾯试官,⾯试官就知道你⼤概做过⼀些什么事情
了。
介绍完后,你接着可以⽤之前准备的A4纸,跟⾯试官说,要不我直接画⼀下以前公司的系统架构图吧,边画边讲
每⼀层直接的关系以及作⽤,这样⾯试官就会被你按照⾃⼰的节奏带进去了,这个效果是很棒的。
19
20
⾯试官提问:
1. 问你索引的原理,你就可以⽤之前准备的A4纸⼿撸B+树和数据⻚和索引⻚的结构给⾯试官看,有看过mysql专
栏的话,基本没难度的。
2. 问你Eureka服务发现与感知为什么这么慢,怎么调优,你就可以⼿撸Eureka的多级缓存机制以及各模块的时间
的图,然后逐个功能点讲解怎么优化参数了。
3. 不管⾯试官提问啥,你都可以再纸上⾯边讲边画图给⾯试官看,我都是这样做的,效果很好。
⾯试完:
⾯试完后,你可以听回你⾃⼰的⾯试录⾳。
⾯试过程中你遇到不懂的问题,⾯试完你会印象很深刻的,那么建议你要⻢上记录下来,然后回到家复习⼀下知识
点,结合⾯试录⾳和不懂的问题进⾏复盘。
⾯试结果:
⾯试⼀般通过了第⼀轮后,后⾯⼏轮都不难的,⾃⼰的⾃信⼼要⼗⾜。
⼀般⾯试完后,1-2天内会有结果反馈,如果HR有加你微信那就更好了。
如果⼀直没反馈,你可以主动联系HR去问结果,不管是通过还是不通过,总⽐你⼀直等待结果要好。
因为不通过了,不⽤失望,失败很正常,反⽽你就更加有信⼼和毅⼒去拿下其他⼤⼚的offer了。
第⼀周⾯试的公司,都是⾃⼰投的,⽤来练⼿的。
第⼆周⾯试的公司,都是⼀些⼤⼚,例如唯品会,⻁⽛,荔枝。
这些⼤⼚都是⾛内推的,都是靠⾃⼰的资源或者是架构班⾥⾯的⼴州的同学的资源⾛内推的
准备⾯试前,要告诉⽼师,⽼师会拉你进去你该地区的跳槽交流群,⾥⾯有各个同学的公司资源。
有⼀个⼩插曲,第⼀周再⽤拉钩投简历的时候,拉钩有个投了⼜投的功能,不⼩⼼点错了。导致把简历投到荔枝
FM那了,但是⼀直没电话通知。
第⼆周,我经过闲⼈⼤佬的内推帮助下,把我的简历直接推给他的前领导,才发现原来我的简历在拉钩被淘汰掉
了,最后⽤⼈部⻔重新把我的简历捞回来,直接约⾯试。
8. 内推⾯试
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
9. ⼤⼚⾯试
唯品会:
先说⼀下我的第⼀学历是⼤专,后⾯拿到了⾃考本科。
⼀般⼤⼚都是对学历有要求的,⼏年前找朋友内推唯品会,他看了我的简历说不是全⽇制本科,会卡简历,最后没
⾛内推,那时我还没学习,技术⽐较差,所以⾃⼰也放弃了。
这次我⾯试唯品会的时候,简历上没写⾃考本科,直接⾛内推,然后就约上了⾯试。
3轮技术完了后,最后⻅HR,HR问我的学历的时候,我坦⽩说我的第⼀学历是⼤专,本科是⾃考的,是⾃⼰后⾯
报读的,但学信⽹可以查,都是正常的报考流程。HR没说什么,就正常记录,因为技术都过关了,不在乎本科是
⾃考还是全⽇制了,最后我顺利拿到了唯品会的offer。信⼼⼤增。
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
21
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
22
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
荔枝:
荔枝⼀开始要⽹上做题,限时30分钟完成⼏条题⽬,题⽬不难的。
去到现场是3轮技术⾯,1轮HR⾯,前2轮技术⾯试主要是问我笔试时做题题⽬的⼀些问题,还有⼀些并发编程、
Redis锁相关、数据库MVCC相关、还有项⽬中遇到的问题等。第三轮技术主要是问⼀些软实⼒、综合素质等问
23
题,例如产品改需求,只剩下⼏天时间就要上线了,要怎么应对等。只要做好充分准备,⾯试都不难,最后还是会
如愿(儒猿)拿到offer。
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
24
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
10. 总结
想要有⾜够的技术深度和⼴度,没办法⾛捷径,只能靠保持平和的⼼态⽇复⼀⽇的学习,不断的去沉淀积累。想要
去⼤公司,要多准备多复习,平时学习,认真梳理好笔记,做好知识储备,⾯试前,多画⼀些核⼼流程图,理顺⾃
25
⼰的思路。⾯试时⾯对各种问题就可以驾熟就轻,即使是画图也是信⼿拈来。
⼀开始我跟⼤家⼀样,抱着怀疑的⼼态来报班学习,可当我跟着专栏课+架构课,⼀步⼀个脚印的来,我感受到⾃
⼰每天不断在进步,⼼⾥就有了⼗⾜的底⽓,不知不觉我也就到达了⾃⼰的⽬的地。最后,我拿到了⼏个⽐较满意
的offer。
⼈⽣没有⽩⾛的路,每⼀步都算数。希望2021年⼤家都能拿到满意的offer,⼀起学起来!
儒猿技术窝
https://apppukyptrl1086.pc.xiaoe-tech.com/page/401572
26