面试面经

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
上一篇:InDesign 2022创建动态电子书和电子杂志


下一篇:修改EPUB电子书的格式和样式