美团后端全流程面经总结
1. 笔试
美团笔试时间:2022.08.13 可以参考知乎的笔经
笔试总体难度适中,因为系统有正确与否的结果显示以及可以用打印来调试,压力并不大。我大部分时间在调第四题(三元组),因为有20%的点tle。我甚至还把python代码用java重写了一遍也没能通过。不过最后还是顺利通过了笔试,很快收到了面试的邀请。
美团的笔试只有算法题,这意味着不用单独去做特殊的准备,毕竟面试的时候也要准备算法题。相对需要注意的是其他公司的笔试里面会涉及到一些基础知识题。这类题内容包括java的一些语法题、面向对象相关概念的理解、数据结构、操作系统、计算机网络等知识点。根据应聘岗位不同也可能会涉及一些其他的题目,比如汇编语言相关或者大数据相关的题目。除了平时多复习准备大学课堂上会讲的内容外,这类题重要的点在于做好积累——笔试结束后一定要把自己拿不准或不会的知识点记录下来,因为在其他公司的笔试中很可能会遇到类似的题目。
需要特别注意的是,尽管各公司的笔试会考虑留学生,时间安排上尽量照顾来自全球各个时区的同学,但如果是在国外念书的小伙伴还是要做好凌晨笔试的准备。我曾经一天之内凌晨三点、早上八点连续笔试两家,对体力消耗还是比较大的,考完直接暴睡大半天。
总体而言,因为笔试的门槛一般不会很高,且如美团还有多次机会,所以就算有个别题目做不出来/个别算法题没法AC,并不需要有太大的压力。
2. 技术面试
面试距离现在时间比较久了,很多面试时候遇到的题目也记不清了,就在此把我秋招面各家公司里遇到的题目能回忆起来的都总结一下:
算法题
美团:
【输入】: nums = [1,4,3,7,4,5], k = 3
【定义】: score(i,j) = min(nums[i], nums[i+1], ..., nums[ j]) * (j - i + 1)
【约束】: i <= k <= j
【输出】: maxScore
其他公司:
- 用 java手写HashMap面试的时候没写好,挂了
- 在无限大的国际象棋棋盘上,有一个骑士 (knight) 棋子,棋子以“日”字行走(参考中国象棋中的马,但不蹩马腿)。求:骑士是否可以到达任意一个节点骑士到达指定节点的最小步数如果指定棋盘上若干格不能走,骑士到达指定节点的最少步数(或不可达)面试的时候只用bfs写出来了,但最后一问可能陷入无限循环。实际考察a*算法,对于一面来说有些难度。
编程语言相关
如果是java系的公司,面试官一般会提问一些与java基础相关的问题,比如
- volatile和synchronized,指令重排序
- spring AOP的理解
- java反射的机制
- HashMap的原理
- Java GC的原理
- 单例模式和工厂模式的实现
很多时候面试官问的问题都比较随机,所以建议相关的八股文都要准备。
如果是非Java系的公司或者是其他语言的岗位,也会问一些对应语言的问题,例如Python的PIL是什么,Python的GC原理,Golang的GC原理和GMP模型等
计算机基础
校招会重点考察这一部分,引用美团一面面试官的话:
校招的学生更多时候是一张白纸,所以我们不会过多考察业务上的问题,而是会聚焦在会在学校里学到的内容,比如操作系统、数据结构和计算机网络
- tcp的握手与挥手
- 浏览器输入url后会发生什么(这个题被问了好多次)
- 线程与进程
- 什么是死锁,如何避免死锁
- fork一个进程后发生了什么
- HTTP和Thrift的优劣
这方面的问题很多很杂,实际面试肯定还可能涉及更多内容,网上有很多知识点汇总的帖子,建议多过几遍查缺补漏
项目相关(重要)
我认为项目相关的问题是最重要的。上述的各种计算机基础和编程语言问题很多是从项目相关的问题中衍生出来的,而每个项目对应了哪些知识点是可以预料到的。
项目介绍最重要的原则——讲故事
讲不好故事,再厉害的技术难点也可能让面试官觉得不知所云;讲好了故事,有弱点和瑕疵的项目也可能给面试官留下很好的印象。
一个故事的结构包含起承转合,项目介绍的过程也要有起承转合:从需求出发,项目目标和个人贡献作为骨架,项目困难点和解决方案作为转折和高潮。如果项目中存在一些弱点或者不完善的地方,要想办法用故事情节加以掩护,或对可能的质疑与问题提前做好准备。故事的设计若非提前准备万全,只能以面代练:在面试过程中,这些故事会随着面试官的不断挑战而变得愈加完善。
其他问题
epoll的原理,redis的数据结构...
这些问题更多的和岗位实际业务相关,此时实习的重要性就体现出来。如果这些问题曾经在实习中碰到过,当问题摆到面前时,实习时的场景便会自然浮现,从而若能结合实习经历作答,就能给出很详细的答案。如果实习没有涉及,就只能依靠记忆讲解甚至背诵面试资料中的内容,不仅容易出错,还容易被面试官的追问问倒。
感想
虽然面试问题类型很多,但更多的时候面试官是从项目经历出发展开,而项目经历相关的问题是最好准备且最好预测的。随着面试的进行,项目经历的介绍会愈发完整清晰,所以把重点目标的公司面试安排的稍微靠后一些也有好处,能保证在面试时候充分吸取之前的经验。
第二,面试过程中要灵活善变。我曾在美团三面(大leader面)时因为被面试官点出项目弱点而十分被动。此时我找到时机,主动表达自己“在另一个项目上的贡献也很能体现自己的价值”,从而开始介绍疏漏更小的另一个项目,回避了一时间无法解决的问题。这当然是下策,但有时也能多少夺回一些面试的主动权。
第三,实习经历特别重要。一段大厂的实习不仅能为简历极大增色,还能切实提高开发能力和知识储备。面对面试遇到的问题,结合实习经历的答案显然比干背的答案要有力得多。实习面试的准备其实和校招面试比较类似,同样要稳住计算机编程基础的基本盘,再佐以几段从校内项目发展来的故事,只不过实习面试会相对简单一些。
3. HR面试
美团的HR面试相对而言比较常规,问题包括项目背景介绍、个人能力评估还有一些企业文化的内容。在项目背景介绍上,在讲故事的时候要考虑听众的知识背景,尽量少用技术术语而多用技术无关的、表现个人能力的话术。
在对个人能力的评估方面,我被问到了关于自己优劣势的问题,以及在某些特定场景下自己会怎么抉择的问题(e.g.,如果工作很多,工期又紧,该如何取舍)。这些都是相对常见的问题,准备起来并不难,不过关于“自身劣势”这类问题,最好还是提前准备以免临场的回答给自己挖坑。
关于企业文化,我做了一些简单的了解,并不求倒背如流,只为了让HR看出我对面试本身的重视程度。我相信如果能在其他问题的回答中也能或正面或侧面地体现出自己“符合企业文化”的特质,肯定是能多少加分的。
写在最后
秋招流程时间线很长,不确定因素也很多,对我体力和精神都是一种消磨。不过好在美团的offer在一个宁静的清晨到来,让我秋招的旅程告一段落。现在回顾整个历程,我觉得面对诸多抉择的节点,最重要的还是要明确自己想要什么,或者最少要明确自己不想要什么。这样在今后才能坦然面对自己曾经的选择。
#面经##秋招面经##美团##美团2023秋招信息汇总#