美团网

44人关注 关注 2401人分享

软件工程师 面试经验( 上海 ) - 美团网
发布时间: 2017-04-29 17:23:57 来源:职朋网友分享
面试过程:

当时校招看到美团就去报名了。
美团面试主要就是分为笔试和面试,笔试以后我恬不知耻地去霸面了(其实也不觉得有什么恬不知耻,权当考察去了)但其实笔试完没多久后我就接到了约面试时间的电话了。
美团是分批面的,基本是一次性面完(反正我是这样),总共三面,全都是技术面!!!(划重点)
要是有一面没有通过,直接说farewell好了。总得来说,前两面没什么压力,面试官基本是和颜悦色的,不会很严肃;但是闯到第三面的时候,你能明显感觉到差别,面试官基本面无表情,要做好心理准备,面试过程中碰到什么问题都不要消极处理,积极应对总有扭转看法的一刻。
面试过程:
美团的笔试题目,算法程序题居多,最后有安卓的、前端什么的题。美团的题目还是不难的,特别看到几道题目在lintcode上刷到过一模一样的,心里真的暗喜。
第一面:
随时随地Be Nice,一个看似貌不惊人的普通员工,下一秒就可能是你的面试官;反正那个领着我去面试的人,突然和我并排坐下就开始给我一面了,我还是小小吃惊了一下的。
反正一上来就要做自我介绍,这种算是面试基本功了。面试官就开始对我的经历问了几个简单的问题,然后就是问些很基础的问题,有问到,进程和线程的区别;进程间同步的方式,这两个都是很简单的问题。其中还有问到如何编程实现 a^n ,我就说用二分的思想。
说到思想,美团蛮注重思想的,第二第三面过程里如果有什么你一下子难实现的,你就讲清楚你是怎么个思路,不要消极对待就好。
然后就是随意提问的时间,问到了Java里面的各种语言机制,问到了计算机网络里面的三次四次握手,UDP和TCP区别,get和post区别等等,都没有深问。因为问的很杂很多,面试官不时地会停下来想接下来问什么。最后他让我旁边教室等一下,一面过了。
第二面:
基本上是没问什么操作系统和网络的题目,就直接出算法题了,有如何判断一个二叉树是另一棵二叉树的子树;像打印机一样,倒过来打印一棵树,比如一个树是这样的,输出4、5、6、2、3、1,这个就用层次遍历,存储遍历过的节点,在每一层的结尾存储该层的个数……
面试官检查验证代码超级仔细,甚至还打草稿一句句验算过去。所以面试过程中做题目的时候还是要更加专心一点,不然被他发现错误的时候我还是觉得蛮紧张的。
接着,他出了第二个问题,自己写一个Stack类,要实现push、pop操作。我说,我看过Stack的源码,是用List实现的,他说,用系统自带的没意思,用自己方法实现。于是,我仿照ArrayList的实现方法,内部用一个数组和一个int型的size成员变量实现。
第三面:
到第三面的时候,面试官基本是Boss级别的吧,各种问题啊,兴趣爱好未来规划啥的,感觉有点像了解你这个人的性格和美团契合。前面说了三面圈都是技术面嘛,最后还是要写代码的——
1)实现 char* upcase(const char* src, int len)。
2) 在类似6,7,8,1,2,3,4,5 的序列中用二分查找某个数。
第二题我做到过基本没问题,做题的时候算法选择高效的,美团的竞争蛮激烈的,要让面试官记住你嘛,真的不会做也把思路和面试官说说看。
他还会问问看过的书啊,问几个简单的问题,能答上来就没什么问题。基本上是一些工作要求里提到的名著或者就是教材里学到的东西,平时没问题就能答好,一时想不起来或者这个问题的确没有仔细考虑过,我就是正好有个问题真的不太记得了,诚实比撒谎更好。因为三面的面试官就是大佬级的人物,他知道的肯定比你多,装啊、撒谎啊、忽悠啊是绝对不可行的。我觉得面试官还是希望能我们能有积极解决问题的热情。
前期准备:
对美团注重算法早有耳闻,在打算面美团之前,我除了去找一些前人的经验之外,还是很早就开始准备刷题。而且我觉得这个还是很有必要对刷过的题进行复习的,像我面试的时候不管是笔试还是面试里都遇到了在lintcode 做过的原题。虽然是提前准备的,但时间也不是特别宽裕。我喜欢用lintcode就是因为它可以按照类别刷题,选择不同的tag,就会筛选出来这个类别的所有题目。大大省去找题目和自己分类的时间。比如,可以选择dp,出来的就是动态规划的所有题目。而且题库比较全,题目数量也很多。基本上涵盖了所有IT公司面试会面到的算法题,美团的offer拿到后我又接连面了几家,反正认真刷过的题都在脑子里,总能够在面试中通用。
总之,还是一句话,面美团算法是肯定要刷的,难以实现的就用逻辑清晰的思路来拯救你的面试;在技术都OK的前提下,面试官看重的更多的还是优秀的逻辑思维能力,善于从复杂系统表象中分析问题,对解决复杂问题充满激情。所以,千万不要对复杂的问题表现出消极情绪,积极解决至少让他看到你的诚意。

面试官问的面试题:

美团网软件工程师面试题

进程和线程的区别;进程间同步的方式;如何编程实现 a^n ;Java里面的各种语言机制;计算机网络里面的三次四次握手;UDP和TCP区别;get和post区别;如何判断一个二叉树是另一棵二叉树的子树;像打印机一样,倒过来打印一棵树,比如一个树是这样的,输出4、5、6、2、3、1,这个就用层次遍历,存储遍历过的节点,在每一层的结尾存储该层的个数;自己写一个Stack类,要用自己方法实现实现push、pop操作;1)实现 char* upcase(const char* src, int len)。
2) 在类似6,7,8,1,2,3,4,5 的序列中用二分查找某个数。

查看面试题参考答案>>

面试相关细节(职业圈独家调查):

你是通过何种渠道获得这次面试机会的?
答:校园招聘
整个面试花费了多长时间?(从接到面试消息到得到结果)
答:2天
面试形式包括哪些?
答:1对1面试 职业技能测试
你觉得这次面试的难度如何?
答:困难
你对这次面试的整体感觉怎么样?
答:一般
这次面试的结果如何?
答:面试成功且工作

赞一下(4) 踩一下

以上信息仅代表发布者自己的观点,由于在职时间、职位以及个体本身的影响,和公司整体情况可能会有偏差,仅供参考!

评论

xiongsilu123    2017-05-29

还需查看美团网 更多信息?

相关公司面试经验