ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

面试面经

2021-05-12 19:29:16  阅读:179  来源: 互联网

标签:儒猿 面经 apppukyptrl1086 401572 面试 tech https xiaoe


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

标签:儒猿,面经,apppukyptrl1086,401572,面试,tech,https,xiaoe
来源: https://blog.csdn.net/wangzhipeng47/article/details/116719133

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有