公众号后台回复“ 面试 ”,获取精品学习资料
扫描下方二维码了解详情,试听课程
《互联网 Java 工程师面试突击(第3季)》重磅升级,由原来的 70讲增至150讲 ,内容扩充一倍,升级部分内容请参见文末
说明:本文来源于中华石杉架构班学员 dasthinker 同学在 拿下 美团、京东两家互联网大厂技术专家offer 之后的面经总结
简单自我介绍
本 ⼈ 是 ⼯ 作多年的 ⼀ 枚「 ⽼ 码农」,对 ⽐ 群 ⾥ 的年轻朋友们,是有点「 ⽼」 哈,最近 ⼯ 作是在 ⼀ 家几百人规模的互联 ⽹ 公司 ⼯ 作。大家可能觉得,这个时期出来看机会,是往 ⽕ 坑 ⾥ 跳吗?
个 ⼈ 不这么认为,借此疫情的特殊时期,通过企业市场招聘情况也能帮你把握 ⼀ 下 ⼤ 致业务发展 ⽅ 向,这其实是好事。
当然了,招聘岗位有限,狼多 ⾁ 少,岗位竞争肯定 ⽐ 往年更加激烈的,所以需要珍惜每 ⼀ 个机会。
⽐ 如在新浪的 ⼀ 位朋友也很缺 ⼈ ,内部还在商讨,少量HC还没有正式放开...本次薪资涨幅还算满意,具体就不便透露了。在谈薪资 ⽅⾯ ,如果你能提前拿到其他公司Offer,且你之前Base还可以,那么还是容易谈的。
⾯ 试结果:
京东、美团 ⾯ 试已通过。具体定级对标P7上下这样 ⼦ 吧,个 ⼈ 理解是资深、专家岗,因为进去也基本都是 ⼲ 活的,带 ⼈ 与否看情况。
⾯ 试流程:
京东、美团多个部 ⻔ 都是并 ⾏⾯ 试的,这个没有正式谈薪前都是没问题的。
京东:三 / 四 ⾯ 技术 + HRBP美团:四 ⾯ 技术 + HRBP + 专职HR
个 ⼈ 感受美团HR专业性、与候选 ⼈ 沟通 ⽅⾯ 体验相对更好些,因招 ⼈ 旺季,HR也都很忙。
HR职责也会细分,联系协调 ⾯ 试的有专 ⻔ 的HR、技术 ⾯ 过会HRBP ⾯ 试,最后都通过确定职级,然后会有专职HR谈薪资。
⽽ 京东HR...,这 ⽅⾯ 相对美团吐槽也更多 ⼀ 点 ⼉ ,所以后 ⾯ 同学去引起注意即可,如果你是「不确定」的候选 ⼈ ,各种情况可能都会遇到, ⼤ 家知道就好。
京东⾯面试过程总结
⾯ 试 ⽅ 式:电话 ⾯ 试,他们都不露脸呀!好处是不 ⽤⼿ 撸代码了。
京东物流:三轮或四轮技术 ⾯
通常 ⼀ 或 ⼆⾯ 是研发同学(即未来跟你 ⼀ 起 ⼯ 作的同事)、 ⼆ 或三 ⾯ (架构师T7或T8,要给你定级的)、三或四 ⾯ (部 ⻔ 负责 ⼈ ,也会有技术 ⾯ )。你的定级是在最后两 ⾯ 综合来确定的。
【京东 ⼀ 或 ⼆⾯ 】因为 ⼀⾯ 或 ⼆⾯ 都是研发同学,基本都是常 ⻅ 的 ⼀ 些 ⾯ 试题,也不会很深,群 ⾥ 同学肯定都会。个 ⼈ 在部 ⻔ 内曾推 ⼴ 过 Apollo 配置中 ⼼ , ⾯ 试官也会让你说出实现原理。
京东内部应该是不使 ⽤ Dubbo 的,他们的RPC框架叫做「JSF」,内部实现机制 应该是跟 Dubbo 很像。所以京东 ⾯ 试官要问RPC,基本都问到 Dubbo 实现原理,内部扩展机制等等,肯定不会问 JSF 了,也没开源。
【京东架构师 ⾯ 】 项 ⽬ 问的很详细,说的我很累~ 基本每个项 ⽬ 具体实现 ⽅ 案、亮点都讲了 ⼀ 下,遇到的问题。
JVM & GC 1)你们JVM线上使⽤的什么垃圾回收算法?CMS、G1
详细说⼀下CMS垃圾回收算法回收过程?4个阶段
CMS中的remark阶段⽐较慢,怎么分析和解决?
- XX: +CMSScavengeBeforeRemark Remark前提前来⼀次YGC;增加CMS回收的线程数...
线上如何来分析GC问题?
JVM线上是如何调优的?
1.7和1.8中jvm内存结构的区别?
发⽣Full GC时会回收Metaspace空间内存吗?
这里推荐一下「儒猿技术窝JVM专栏」,有不少作者亲身经历的JVM调优实战案例。感兴趣 的朋友可以扫码看看,面试来说足够用了。
2、数据库
1)锁等待问题如何处理? ⼀ 个事务中调 ⽤ 了本地事务,还调 ⽤ 了RPC接 ⼝ ?
我说这 ⾥ 涉及了分布式事务了,他说不 ⽤ ,把RPC接 ⼝ 调 ⽤ 放在最后 ⾯ ...然 ⽽ 实际逻辑并不 ⼀ 定都这样的...他应该是想问出现死锁、间隙锁问题应该如何来处理,说了下死锁的解决思路,没有太get到点上。
3、缓存 & ⾼ 并发
1) ⾼ 并发下缓存与数据库 ⼀ 致性如何保证?
2) ⾼ 并发情况下扣减库存如何处理?如何优化?参考 ⽯ 杉架构笔记 ⾥ 的 ⽂ 章
3)当队列满了,核 ⼼ 线程空闲、扩展线程也空闲,谁从队列 ⾥ 获取?
4、JUC 1)为什么线程池 ⾥ 要先创建coreSize ⼤⼩ 的核 ⼼ 线程?2)线程池中的各个参数的含义解释 ⼀ 下?
5、框架 & 源码
1)SpringCloud和RPC具体都有哪些区别?
2)SpringCloud中遇到过哪些坑,具体降级了Eureka注册中 ⼼ 的坑。
3)最近 ⼀ 分钟上报的次数计算错误,bug
4) ⾃ 我保护机制,剔除Down掉服务器并不是90秒,也是个bug, ⾄ 少180秒以上。
6、算法题
1)编程珠玑 ⾥ 的 ⼀ 道题: ⼀ 个40亿的 ⽆ 序数字,请找出不存在的数字
2) ⼀ 个很 ⼤ 的List, ⾥⾯ 都是int类型,如何实现加和?因为电 ⾯ ,就说了 ⼀ 下思路
1、介绍下项 ⽬ 的亮点,有成就感的项 ⽬
2、JVM相关深 ⼊
1)深⼊探讨了CMS、GC Roots,跨代是如何进⾏GC的?有点发散,提到了GC Roots Tracing,Rset、Card Table
2)ParallelScavenge了解吗,什么算法?实际是复制算法【⽼年代可以搭配Serial Old或者Parallel Old】
3)为什么不能和CMS⼀起使⽤呢??后 来听说这个负责 ⼈ jvm源码他都看过,研究很深。
3、MySQL索引如何做优化的?
1)假设有 ⼀ 个表字段 ⼏⼗ 个,索引如何创建的?所有字段都能建吗?区分度、选择性、列基数
2)MySQL为什么是B + 树的结构,为什么不能是红 ⿊ 树呢?优化的是什么,优化的是磁盘IO,减少磁盘寻址。
4、MQ队列 ⽤ 了哪些?答:Kafka。那 ⾦ 融场景下,Kafka如何保证消息不丢失?答:ack = -1,Leader-->ISR写 ⼊ 所有的follower
5、Redis ⽤ 过哪些数据结构?zset底层是什么结构,hash和跳表,为什么是跳表,查找效率 ⾼ 。
6、其他
1) ⾃ 身优缺点?
2) ⼀ 句话总结下 ⾃⼰ ?
3)对待加班的看法?
接下来,重磅节选美团的两个部门的面试过程。
美团A部⻔⾯面试过程
⾯ 试 ⽅ 式: ⽜ 客 ⽹ 视频链接,因为可以 ⼿ 撸代码, ⼀ 般职级越 ⾼ ,技术 ⾯ 试轮次越多
3-1以下应该是三轮技术 ⾯, 3-1通常四轮技术 ⾯ , ⼀ 、 ⼆ 轮技术和项 ⽬ 负责 ⼈⾯ ,三、四轮是交叉 ⾯ 或部 ⻔
领导 ⾯ ,五 ⾯ 是HRBP,六 ⾯ 专职HR谈薪 ⽔ 收到offer后接受开始背调, ⼀ 般需要5个 ⼯ 作 ⽇ 背调结果给到公司,联系 ⼈ 及 ⼯ 作时间必须准确 ⽆ 误。
3-2以上据 ⾄ 少五轮技术 ⾯ ,没这待遇啊。 ⼤ 体这样,当然每个部 ⻔ 安排顺序不 ⼀ 定相同。因为是两个部 ⻔ 都做了 ⾯ 试, ⾯ 试官 ⻛ 格也不 ⼤⼀ 样。
美团A部门一面技术
1、JVM如何优化的?CMS算法执 ⾏ 流程?什么情况下发 ⽣ 的Full GC?
2、分布式事务讲 ⼀ 下?结合项 ⽬ 想讲的可靠消息 ⼀ 致性实现 ⽅ 案 + 最 ⼤ 努 ⼒ 送达通知 ⽅ 案,最后也提到了单应 ⽤ 多DB(JPA)、TCC事务以及适 ⽤ 场景。
3、ES是如何调优的?副本机制作 ⽤ ?写 ⼊ doc操作执 ⾏ 过程?
4、其他也都是基础问题,印象不是很深刻了。
【美团A部门二面技术】
1、将最近做的两个项 ⽬ 详细讲解 + 现场画出整体系统架构图并结合架构图讲解+ 设计模式类图
我是拿了 ⼀ 张纸,画出来然后对着电脑屏幕开讲,这 ⾯ 试画 ⻛ 可以想象 ⼀ 下哈, ⾯ 试官隔着屏幕看。
2、因聊的项 ⽬ 时间 ⽐ 较 ⻓ ,也因为电脑快没电了,所以接下来 ⼏ 道技术题他出完我很快回答出来了。
3、MySQL数据库底层实现结构?B+树结构,也讲了数据 ⻚ ,以及 ⻚⽬ 录相关的
4、Spring Bean循环依赖如何解决的?
5、MyBatis ⼆ 级缓存如何实现的?
6、有个项 ⽬⽤ 的分布式缓存是CouchBase,要求讲下CouchBase基本原理?
7、RabbitMQ如何保证 ⾼ 可 ⽤ 的?queue数据在节点之间如何同步的?死信队列
如何实现的?
技术回答的很快,最后丢 ⼀ 句「等HR电话」,我是有点懵逼,难道都该聊到hr
⾯ 了,这不才2 ⾯ 技术 ⾯ 么。
因为电脑 ⻢ 上没电了,没有多问,已经聊了 ⼀ 个半 ⼩ 时了。
后来才知道,是等HR电话通知我约下 ⼀ 个 ⾯ 试官啊。。。果然是好久没 ⾯ 试
了^_^
【美团A部门三面技术】
讲解了项 ⽬ 的从客户端到后端的具体流程。主要问了 ⼀ 些扩展技术 ⾯ , ⽐ 如Http2都有哪些改进的?Redis最新特性了解哪些?等等吧,总体也不是很难的。
【美团A部门四面技术】
1、 ⾃ 我介绍、介绍具体项 ⽬ 突出贡献
2、离职原因?业务 ⽅ 向如何考虑的?职业规划?
3、 ⾼ 并发与性能的关系?根据项 ⽬ 经验 ⾃ 有发挥吧,但尽量还是答案宏观 ⼀ 点。
4、缓存和数据库 ⼀ 致性如何保证的?谈到了分布式锁,那详细讲讲分布式锁实现?redis setnx、redisson、zookeeper
5、项 ⽬ 架构中如何做技术选型?
6、有什么要问我的吗?
【美团A部门五⾯】
1、为什么要离职,基于什么原因考虑的?
2、你的未来职业规划是什么样的?项 ⽬ 中的 ⻆⾊ 是什么样的?
3、你认为 ⾃⼰ 还有哪些需要提升的吗?
4、你在团队中的绩效如何?
5、有什么需要问我的吗?
美团B部⻔门⾯面试过程汇总
讲真,这个部门面试覆盖面够全面的,多数的中间件底层原理必问~
【美团B部门一⾯ 技术】
1、JVM中的CMS和G1垃圾回收算法具体区别?
2、问了两道线程池相关问题,觉得没啥问题了 此时,话锋 ⼀ 转,咱们聊聊中间件相关吧 【后来听说, ⼈ 家是有个 ⾯ 试 ⼩ 模板^+^ ,都是套路哦~】
接下来开始问中间件相关:
1、Dubbo
1.1 说 ⼀ 下Dubbo的具体执 ⾏ 流程,涉及哪些模块,作 ⽤ ?
1.2 使 ⽤ 过过Dubbo哪些特性,做过哪些扩展?Dubbo ⾥ 的泛化有了解过吗?
1.3 Dubbo中的注册中 ⼼ Zookeeper是如何注册上去的?
2、Zookeeper
2.1 Zookeeper节点有哪 ⼏ 种类型(临时、持久)?
2.2 如何注册的,如何选举的(选举算法?),
2.3 如何完成监听或者说是订阅的?
2.4 提到了分布式锁,在Curator框架中是如何实现的,watch机制本地数据结构啥样的?
3、Redis
3.1 都 ⽤ 过哪些数据类型?分别介绍下使 ⽤ 场景?
3.2 持久化机制,AOF、RDB具体区别有哪些?
3.3 Redis 主从同步机制是怎么样的, ⽐ 如slave启动之后同步过程?
3.4 Redis Cluster集群如何选主的?
3.5 Redis Cluster 跟哨兵模式有什么区别吗?
3.6 Sentinel 哨兵模式是如何选主的?这 ⾥ 说跟cluster差不多,追问了下,其实还是有些区别的, sdown odown 主观宕机、客观宕机 ⽅ 式不太 ⼀ 样
4、Kafka
4.1 ⽣ 产端是如何发送 ⼀ 条消息到Broker的?
4.2 具体可以调整哪些参数提升吞吐量?
4.3 消费端发 ⽣ rebalance的过程是怎样的? ⽐ 如有 ⼀ 个新的consumer加 ⼊
到了Group中是个什么流程?
5、 ⼿ 写算法
算法题: ⼀ 个链表,输 ⼊ k, ⽐ 如k=3,翻转前3个链表值 【你撸不出来,也得写
talk is cheap,show me your code】
【美团B部门二⾯技术】
1、 都是发散探讨性的题 ⽬⽐ 如 ⽤ 过CouchBase,那你觉得CouchBase有哪些不 ⾜ 的地 ⽅ ,哪些不够专注的?
谈到专注,我也提到了Redis不够专注,因为Redis5.0还提供了Stream作为持久化队列解决 ⽅ 案,Redis应该更专注分布式缓存这块,反 ⽽ 野 ⼼ 也很 ⼤ ,还要 ⽀ 持类似MQ的功能,并且也参考了Kafka设计思想,所以也不够专注。
2、 ⼿ 写多线程题 ⽬ :T1线程输出都是A,T2线程输出的都是B,T3线程输出的都是C要求三个线程启动后输出顺序:ABCABCABC
【还有其他一些发散性题目,就是跟你来探讨技术以及实现,由浅 ⼊ 深,看看你是如何思考的,为什么这么来设计?有没有什么更好的解决 ⽅ 案?】
【美团B部门三⾯ 技术】
部 ⻔ 总监 ⾯ ,主要聊项 ⽬ ,也聊到了Reactor模式。因为已确定去另外 ⼀ 个部 ⻔ ,没有安排交叉 ⾯ ,或者已经有过交叉 ⾯ 了,如果决定去这个部 ⻔ 也不 ⼀ 定会再重新安排了,
交叉 ⾯⾯ 试官也不是很好约 ⾯ 的,其主要作 ⽤ 就是把把关 ⽽ 已,其决定作 ⽤ 的还是本部 ⻔ 的 ⾯ 试。
面试前准备&⼩小技巧
1、⾯试前准备
儒猿技术群 ⾥ 之前也有 ⼩ 伙伴都做了 ⼤ 量值得借鉴的 ⾯ 经分享了,我也说一下我的面试准备。
我个 ⼈ 主要是通过 公众号儒猿技术窝 + 极客时间 + 架构课程 + 自身项 ⽬ 经验+ 石杉老师指导 为主要 ⽅ 针,这样基本不会偏离太 ⼤ 的 ⽅ 向,在这 ⾥ 再次感谢 ⽯ 杉 ⽼ 师。
基础知识必备:
数据结构与算法(如果不是面头条这种公司,掌握常用数据结构算法就够了)、Java基础、JVM、并发、 ⽹ 络&NIO、设计模式
中间件相关:
缓存(Redis为主)、消息队列(Kafka、RabbitMQ、RocketMQ)、数据库(MySQL)、搜索(ES)
分布式相关:
分布式理论(CAP、BASE)、分布式锁、分布式事务、分布式幂等框架&源码相关:Spring、MyBatis、SpringBoot、SpringCloud、RPC(如:Dubbo)、Netty等常 ⽤ 框架
架构&容器相关:
微服务架构(架构演进过程)、微服务拆分原则、容器化(了解Docker & Kubernetes)
项 ⽬ 经验:
项 ⽬ 整体架构(能画出来)、项 ⽬ 上下游关系(能将明 ⽩ )、项 ⽬ 实现细节、项 ⽬ 主要亮点
技术之外:
你有什么要问我的吗?、离职原因?、职业规划?项 ⽬ 管理? ⾃ 身优缺点?挫败感的事 ⼉ ? ⾃ 身哪些需要提 ⾼ 的?绩效怎么样?突出贡献?
这些技能要想深 ⼊ 不是短时间内突击就能完成的,需要 ⻓ 期做项 ⽬ 加上平时的有 ⽬ 的性的学习和积累。技术栈 ⽐ 较多,我个 ⼈ 建议在 ⾯ 试前提前准备阶段,通过思维导图的 ⽅ 式梳理,对抗遗忘曲线,推荐使 ⽤ ProcessOn ⼯ 具。
2、⾯试时⼩技巧
上 ⾯ 尽管罗列了很多技术栈,但是要尽量做到 ⼏ 个技术栈能更擅 ⻓⼀ 些, ⽐ 如对 JVM调优、并发、分布式等技术都有深 ⼊ 实践和研究,或者对某些框架源码深 ⼊ 研究,并做过 ⼆ 次开发之类的,都是有加分的。
因为 ⼤ 家不可能都是样样精通的,也最好别都样样稀松,所以关键夯实住 ⾃⼰ 擅 ⻓ 的,然后其他技术栈查缺补漏。
同时,在 ⾯ 试中开始 ⾃ 我介绍后,建议你要有意识的说出你擅 ⻓ 的领域、技术栈等。其 ⽬ 的也很简单,就是将 ⾯ 试官的思路往 ⾃⼰ 擅 ⻓ 的 ⽅ 向引导。不然呢,当 ⾃ 我介绍结束之后, ⾯ 试官基本就按照他的套路出牌了,或许你此时会有点被动的~
但是,有的 ⾯ 试官也不吃这 ⼀ 套,那你就准备应战就好了。某些技术你简历写了, ⾯ 试官正好问到了,但是其实你并不是很擅 ⻓ ,或者时间久没有了解的很深 ⼊ ,如果追着问,就有点尴尬了?
⼀ 般 ⾯ 试官都是结合你简历问的,很少 ⾯ 试官是只问他会的东东,如果真遇到这样的,也是有点尴尬,不 ⾯ 也罢!
小结&问题答疑
最后也提醒各位要换 ⼯ 作的 ⼩ 伙伴, ⼤ 家加油!
1、社招算法:算法虽然在社招里面占据的比重不大(大概10%),但作为基础,也是要准备的。我这次也不是很充分,算法还在平时的积累和练习。
2、思维导图:平时尽量画 ⼀ 画思维导图(processon),对抗技术知识的遗忘曲线。
3、技术应 ⽤ :这个是重点,将学到的技术应 ⽤ 到项 ⽬⾥ ,使你的项 ⽬ 看上去更有亮点,更有聊的价值。
4、临场应变:有些题 ⽬ 会发散,要提 ⾼ 临场随机应变的能 ⼒
5、技术积累:基础和经验相结合
举个例 ⼦ :有 ⼀ 家C轮公司的 ⾯ 试官 ⽼ 哥,很直接的说我仅出两道题,剩下你来
问我:
题 ⽬ 1、输 ⼊⼀ 个 ⽹ 址 ⽐ 如jd.com到底发 ⽣ 了什么?请你讲的越详细越好
题 ⽬ 2、后端服务如何做性能优化的?讲的越详细越好。
惊不惊喜意不意外啊。。。第 ⼀ 个题 ⽬ 可以考察: ⽹ 络、CDN、DNS解析、TCP 三次握 ⼿ /四次挥 ⼿ 、Http协议。第 ⼆ 个题 ⽬ 可以考察:DB、SQL(索引)、缓存、Tomcat、JVM上等性能优化等等?
说是两个问题可以扩展出很多个问题,所以要回答的全 ⾯ 且到位,也不是那么容易的对吧。当你提到某个技术优化的时候他会详细追问如何做的,这哪是两个问题啊。这家公司也是 ⾯ 过了的,也具备 ⼀ 定的发展潜 ⼒ ,个 ⼈ 也是 ⾮ 常看好的。
⼆⾯ 架构师 ⾯ :JUC问的很多,volatile、synchronized、aqs、cas、锁升级机
制、闭锁等等及各中间件原理,反正问的很全 ⾯ 。
以上就是我今天的面试经验分享哈,希望能跟正在找工作或者以后找工作的同学有帮助,大家有什么问题可以积极留言,或者定个flag,2020年是个不平凡的一年,转瞬间已经过去一半了,大家一起加油!
《Java工程师面试突击第三季》加餐部分大纲:( 注:1-66讲的大纲请扫描文末二维码,在课程详情页获取)