美团机器学习岗面经

美团

  今年由于阿里拥抱变化,缩招的消息似乎影响了整个就业的形势。举个例子,据我了解某个实验室去年数个BAT的offer,今年好像只有一两个。当然大的趋势我们无法改变,只有自己拥抱变化才行。在这个形势之下能有一份自己满意的工作的确很不容易,楼主经历了不断地挫折和失败之后很庆幸自己获得了美团的offer,本着分享的精神和大家分享我的面试经历。希望能给后人造福。当然本人能力有限,找工作一半运气,其中观点对与错各位看官自行分辨。

实习

如果能去实习最好。毕竟在公司干过的人自然要比其他人靠谱很多。但是由于客观条件限制,很多人没办法去实习。这个也很无奈,当然,没有机会就要试着创造机会,一切事在人为。

内推

  内推,顾名思义就是内部推荐。公司会允许员工通过内部渠道向公司推荐人才,然后公司进行面试(一般是电话面试)。实践证明,内推作为校招前的一个应聘渠道是大家应该极力争取的。因为内推一般是免笔试的,直接电话面试,这就省去了很多辛苦。而且最后可能薪资也不一样。其实内推已经成为公司提早挖人才的途径了。楼主后知后觉,没有参与到美团的内推中,不过周围小伙伴有通过内推进入的,还是很好的。

1,提高自己的嗅觉,多去关注内推信息,多加几个群,微信号等等,多和别人交流,获得招聘信息。
2,如果有师兄师姐在目标公司就职,一定要联系他们,无论是内推机会还是求职建议,师兄师姐肯定比陌生人靠谱。
3,内推虽然免笔试,但是并不意味着内推要求低。正如前面所说的,内推的目的是挖人才的,不是来收割的。
4,电话面试可能有几轮,都要好好准备。由于你只能听到对方的声音,如果不适应的话可能会有些紧张,不过他也看不到你在干嘛,所以你也可以利用这个优势,你懂得~
其实以上这几点对很多公司都适用。

面试

  在线笔试通过之后,在面试之前会有短信通知面试时间的。今年是在南二环那边的爱威尔酒店。楼主感觉酒店的环境一般般,一楼等待的地方很暗,而且有些地方一层灰,好久没有人的样子。貌似是美团外包给51job的人来安排的面试流程。面试在三楼,由于数据挖掘的面试官比较少,楼主一面被分到后端开发的面试官面试了。

一面
  面试官很年轻,说话也很nice,不是那种不苟言笑的人。就算你答不出来他也会给你一些鼓励或者提示。
考察的范围很广,但是深度不深。

1,计算机网络方面:都是网上常见的题,只要之前准备过就没问题。TCP/IP协议分层;每层协议;常见协议的端口号;TCP三次握手的过程;三次握手的原因;浏览器输入一个网址访问某个网站,这个过程都发生了什么。等等。
2,概率方面,三个门,一个有奖品,两个没奖品的问题,这个问题也是比较经典的问题,网上有,大家可以百度,( http://zhidao.baidu.com/link?url  ... Bz3DcdtX3iQxvbyjmr_)。
  还有一个生男生女的问题,说一个村子重男轻女,生孩子都是生到有男孩为止,问最后男女比例,这个网上也有( http://zhidao.baidu.com/link?url  ... c7kEfjelssvbxC3I9sW)。楼主用最笨的方法做的,后来面试官跟我说了一个简单的方法。
3,算法问题:全排列问题,这个是算法里很经典的问题了,用递归去做(可以参考: http://blog.csdn.net/e3399/article/details/7543861 ),动态规划问题,问我懂不懂,我给他讲了一个最常见的动态规划问题,他就放过我了:)
4,操作系统:进程的死锁,4种条件;分页;楼主这类问题答的不好。。。。
5,其他就是大概聊聊你的项目,毕竟岗位是机器学习,所以项目的匹配度还是要有一些的,包括你的论文都会成为你的加分项。
面完了就会让你等一下通知。

二面
面试官也很年轻,但是比一面的人少了和蔼,人还是不错的,只是说话比较直

上来就写算法题,你写的过程中他会看你的简历。
1,用一个数组实现三个栈。我说不明白啥意思。。。他给我换了一道
2,链表逆序。。正中我下怀~
3,谈你的项目。我觉得这个过程中你一定要让人家明白你做的是什么东西,想解决什么问题,用了什么方法。有的时候可能面试官并不能理解特别专业的术语,你可以用比较简单的方式去解释,尽量让你的所做的项目能够尽快被他理解。
4,智力题,140克的盐,给你一个天平,一个2g砝码,一个7克砝码,只称三次,称出50g的盐。楼主想了半天,没找到3次的解,后来他提示了一下找出来了。感兴趣可以自己做一下。
5,又是写代码,题目我又见过,真不好意思:)给你一个数N,问1-N这N个整数里面,每个位上一共出现多少次数字1. 这个是编程之美上的原题。当时看的时候觉得好复杂,最后我也没写出来,当然,面试的技巧就是,无论这道题你会还是不会,尽量把你的思考过程说出来,一方面防止冷场,另一方面可以让他知道你的思考过程。最后面试官让我不用最优的,我就写了个最笨的。

三面
  三面没有问技术,问的问题主要是,项目,遇到的困难,最有成就的事情,有什么收获,会让你举例子说明。 我就只能涛涛不绝的讲。问了一个预估的题目,让你估计早餐市场的规模。最后会让你问问题,我问了一个美团最近亏损的新闻,问了美团的盈利模式。大概就是这样。

  然后第二天晚上收到的offer。

  简单总结一下,首先基础要扎实,基本的东西要明白,项目和论文要有,尤其是对机器学习与数据挖掘岗位,感觉会关注你的论文情况。当然论文的方向不一定和他们所做的业务是一样的,只是用来证明你有解决机器学习这类问题的能力。

  题目要刷,leetcode什么的要做一做的。剑指offer,编程之美都值得看看。



面试二

先自我介绍之后,就是编程算法题了
1.输出一个字符串的下一个字典序
如ABDC 输出ACBD(不会。。)
2. 输出一个字符串的最长回文(没写完整,时间拖太久。。,他直接说下一个了,应该要用两个辅助栈)
3.n个苹果放入m个盘子中有多少种方法(不能用排列组合,算法实现)(动态规划)
问题:
1. 两个集合如何求并集,交集
2. 两个集合如何求相似度,维度不一定相同
3. 如何找出N个数的中位数,内存不够怎么办
4. Top k问题
5. 你最熟悉的两个机器学习的算法,我说了LR和SVM。然后让我讲SVM,需要推公式,我。。推。如何分类非线性问题,答核函数,知道xx核函数吗(径向基核,好吧,就是高斯核),没听过(只知道多项式核,高斯核),核函数的优缺点(优点避免高维运算,缺点不知道。。),SVM的优缺点,balabala
6. 给你1000w篇文档或html,如何判断是否为体育类的新闻,需要给出系统的方法(分词+人工判定+词库+SVM训练),你觉得整个过程中有哪些需要注意的地方,我提到了过拟合,面试官:有哪些防止过拟合的方法,答:添加正则化项,交叉验证,树的话可以剪枝,问:还有呢,我。。。
7. HashMap如何实现,解决碰撞还有哪些方法,TreeMap呢,红黑树的原理,平均时间复杂度,最差的时间复杂度?O(lgn)?那边比较耗时间?答更新的时候需要左旋右旋?
8. 知道map-reduce吗,shuffle是做什么用的?如何用map-reduce对浮点数排序(只做一次map-reduce)?
9. 用什么数据结构实现深度优先搜索?广度优先搜索?层次遍历?我:层次遍历和广度优先搜索不是类似的吗,面试官:你确定?我。。
10. 问了下协同过滤和KNN模型,他说了几个术语我都没听明白,我只知道根据相似度做推荐。面试官说:貌似你的项目都是偏开发的嘛,我。。有没有手动实现过什么机器学习算法,我。。
11. 实现负载均衡的算法,轮询,一致性hash,最小连接数。。面试官:还有呢,我。。想不到了
面试官貌似比较纠结要不要让我过,考察的确实蛮深入,编程的写的不好,最后犹豫了一下还是把我挂了,这一面时间真的很长啊9:15-10.30,面试官各种追问,招架不住。


软件研发岗





一面


上来我问“要自我介绍不?”。面试官一上来说不用了,先写几段代码吧!然后,第一题:给你两个字符串str1,str2,找出str2在str1中的位置。我一看题目心中暗喜,这个好做,好歹都写过求两个字符串的最长公共子串,求一个字符串的重复子串,求一个字符串的最长回文串。这个题比这几个都简单,小case,啪啦啪啦一下子写好了。给面试官看,并给他介绍了下,第一题通过。


接着又问,“阿?!你还实习过啊,还搞的云计算啊。那你讲讲你实习把”。有备而来啊,我就啪啦啪啦一遍讲一遍画,在纸上把cloudstack的架构和原理,说了一通。并且还把我实习时,写过的shell脚本(cloudstack环境自动部署)拿出来给他看了下,还把其中用到的一个小的交互和他讲了下。面试官说,教父级的啊!我说还好,我在虚机上测试过多次,可以正常运行。再把实习做的事和他说了下,这方面算是认可了。又问了关于项目的,这方面难不倒我,哥都准备好了,兵来将挡,水来土掩,讲的清清楚楚。


紧接着又问了,计算机网络懂不?我说懂点,那我问你啊,在浏览器里输入美团网的URL,会经历哪些过程和设备啊?心里又窃喜啊,这类题目在那儿见过的,啪啦啪啦,从DNS、代理服务器、路由器、负载均衡、服务器,各种UDP、TCP等等讲了一通。他也很认同,轻松又创了一关。


然后,又问,操作系统懂不,我说懂点。那你说说进程和线程有什么区别啊,这个都是被面试官问烂了的问题,我还能不会吗?劈里啪啦的讲了一通。面试官点头嗯嗯。又问,进程、线程间通信方式有哪些各有什么特点啊,这个又是被问烂了的题目,自然轻松过关啊,看我这么有激情地说,套接字常用在远端进程通信,他突然打断了我“那本地可以用不?”这个当然可以啊,一般服务器和客服端调试不都这样吗,我说,不过,这有点小材大用啊。面试官连忙点头,嗯嗯!


“那,再给你出个问题哈”,我说“好的”。“你怎么统计南京市有多少辆出租车?”我靠,这个怎么整啊,我想都没想就蹦出一句,“找交管部门查呗!”。他说,“不能查!”。这个我得想想了,刚开始还是从计算公路上的车的流量来算,后来想想车都是移动的,这怎么整呢?结果灵机一动,这不是再考我样本估计总体的思想吗?然后,我就告诉面试官,我有两种方案,不过都是用样本去估计总体的思想。一个是按人口和车辆的比,一个是按面积和车辆的比,最后有补充了点儿,各地方的人口密度和车辆密度是不同的,所以选几个典型的样本区统计,求平均去估计总体。减少误差。这个思想也被认同了,好了,总算一面过了,和一面官的聊天还是挺哈皮的。结束时,他说,我这边你过了,去休息室准备二面。




二面


上来就让我介绍了项目,说到决策树相关的,介绍完了,还说这是你想出来的啊?我说看到数据结构和算法里的,借鉴过来的。紧接着出了个题吗,1000!末尾有多少个0,看了题目,有点晕啊,这怎么算呢,一点思路都木有。二面官人还蛮好的,一边说题目,一边说,你可以先算个10!,100!看看。顿时就有了思路,其实就是看因子里有2*5的个数,其实只需看因子5的个数就可以了,2的个数一般比5的个数多的,只需看5n%5==0,m=5n/5,算出5的倍数中因子5的个数就可以了。


接着出了一个三角矩阵的题目,每次只能向下和向右下走。刚开始还木有思路,最后竟然想到将矩阵转换为二叉树,对二叉树进行先序遍历。二面官说你还能想到这个啊。那你编程实现以下。我靠,这个还要建二叉树啊,不是很好弄啊。面试官说,那你写个二叉树求和最大时的路径吧。好吧,这又转到剑指offer上了,劈里啪啦就写好了。然后面试官看了下,不错,二面就结束了,二面结束已经将近1点了,还没吃午饭啊,又困又饿啊。下午3点还有腾讯的面试,这个可不想错过啊,上去和HR说了下,HR人还蛮好的,直接把我的简历拿到最上面。




三面


三面那个囧啊,嘴里塞了一嘴面包,HR喊的时候,直接就去了,忘了带水。见到三面官的时候,我还在嚼面包,想吐出来,又不知道往哪儿吐,想吞进去,又咽不下去,哎。。。那个囧态简直难以忘记啊!三面官看到此态,笑了,说你是不是要喝点水啊。我马上说是的啊,他向我指了一个地方,那儿有水。靠,救星啊,倒了两杯水,给面试官也倒了一杯。一起拿过去先把水给面试官了。三面官说,你先喝点水,不急,我看看你简历和资料。


就这样三面开始了,刚开始是闲扯啊,又讲实习的项目,讲了一半,他貌似看到以前面试的评语,说这个是不是以前说过的啊?我说,是的啊,他说,说过的就不用再说了。然后就让我回忆你有哪些优点了,我先把本科的一个故事给他讲了。然后他还在问,可能你平时没注意,你再想想还有什么事能表现你的一些优点的。我想啊想,又把研究生的一个故事给他讲了。然后还在问,还有不,你再想想。我就在想啊,这面试官真不错啊,人太好了,一直在挖掘人的长处啊。我每讲一个故事,他都在纸上做记录,满满地写了几张纸啊!感动啊!


故事讲完了,又问我,你一般在网上看技术文章不?我说看,他说在哪儿看啊。我说CSDN,博客园。他也在做记录,然后问,那你有博客账号不?我说有,他说,那你能给个链接不?我说,链接不记得了,那给个搜索关键词吧,我就给了。我还以为3面就这样聊聊就好了呢。没想到,又出了两道题,一个是写个乘法的宏定义,果然是没注意啊,要加3个括号#define multply(m,n) ((m)*(n)),这样才对啊。哎。。。我只加了一个,在面试官的提示下,才想到加3个。确实觉得面试官人不错啊,大美团确实不错啊。又问了,宏定义和内联函数有什么区别吗,分别在什么样的场景下应用啊。我答了内联函数在编译时,将调用处进行函数替换,避免调来调去压榨出栈的时间开销,以空间换时间,还有内联函数有类型检测,宏替换没有类型检测,内联函数只是向编译器申请,若内联函数体内有循环递归等,申请会失败,系统会当初普通函数处理。又问了如果设计一个string类,要注意什么问题。我答了,注意内存泄露啊。如果是继承,基类的析构函数要设计成虚函数。拷贝构造函数和赋值函数要注意异常安全,还有不能拷贝指针。然后就是3面结束了,等通知



一面


上来我问“要自我介绍不?”。面试官一上来说不用了,先写几段代码吧!然后,第一题:给你两个字符串str1,str2,找出str2在str1中的位置。我一看题目心中暗喜,这个好做,好歹都写过求两个字符串的最长公共子串,求一个字符串的重复子串,求一个字符串的最长回文串。这个题比这几个都简单,小case,啪啦啪啦一下子写好了。给面试官看,并给他介绍了下,第一题通过。


接着又问,“阿?!你还实习过啊,还搞的云计算啊。那你讲讲你实习把”。有备而来啊,我就啪啦啪啦一遍讲一遍画,在纸上把cloudstack的架构和原理,说了一通。并且还把我实习时,写过的shell脚本(cloudstack环境自动部署)拿出来给他看了下,还把其中用到的一个小的交互和他讲了下。面试官说,教父级的啊!我说还好,我在虚机上测试过多次,可以正常运行。再把实习做的事和他说了下,这方面算是认可了。又问了关于项目的,这方面难不倒我,哥都准备好了,兵来将挡,水来土掩,讲的清清楚楚。


紧接着又问了,计算机网络懂不?我说懂点,那我问你啊,在浏览器里输入美团网的URL,会经历哪些过程和设备啊?心里又窃喜啊,这类题目在那儿见过的,啪啦啪啦,从DNS、代理服务器、路由器、负载均衡、服务器,各种UDP、TCP等等讲了一通。他也很认同,轻松又创了一关。


然后,又问,操作系统懂不,我说懂点。那你说说进程和线程有什么区别啊,这个都是被面试官问烂了的问题,我还能不会吗?劈里啪啦的讲了一通。面试官点头嗯嗯。又问,进程、线程间通信方式有哪些各有什么特点啊,这个又是被问烂了的题目,自然轻松过关啊,看我这么有激情地说,套接字常用在远端进程通信,他突然打断了我“那本地可以用不?”这个当然可以啊,一般服务器和客服端调试不都这样吗,我说,不过,这有点小材大用啊。面试官连忙点头,嗯嗯!


“那,再给你出个问题哈”,我说“好的”。“你怎么统计南京市有多少辆出租车?”我靠,这个怎么整啊,我想都没想就蹦出一句,“找交管部门查呗!”。他说,“不能查!”。这个我得想想了,刚开始还是从计算公路上的车的流量来算,后来想想车都是移动的,这怎么整呢?结果灵机一动,这不是再考我样本估计总体的思想吗?然后,我就告诉面试官,我有两种方案,不过都是用样本去估计总体的思想。一个是按人口和车辆的比,一个是按面积和车辆的比,最后有补充了点儿,各地方的人口密度和车辆密度是不同的,所以选几个典型的样本区统计,求平均去估计总体。减少误差。这个思想也被认同了,好了,总算一面过了,和一面官的聊天还是挺哈皮的。结束时,他说,我这边你过了,去休息室准备二面。




二面


上来就让我介绍了项目,说到决策树相关的,介绍完了,还说这是你想出来的啊?我说看到数据结构和算法里的,借鉴过来的。紧接着出了个题吗,1000!末尾有多少个0,看了题目,有点晕啊,这怎么算呢,一点思路都木有。二面官人还蛮好的,一边说题目,一边说,你可以先算个10!,100!看看。顿时就有了思路,其实就是看因子里有2*5的个数,其实只需看因子5的个数就可以了,2的个数一般比5的个数多的,只需看5n%5==0,m=5n/5,算出5的倍数中因子5的个数就可以了。


接着出了一个三角矩阵的题目,每次只能向下和向右下走。刚开始还木有思路,最后竟然想到将矩阵转换为二叉树,对二叉树进行先序遍历。二面官说你还能想到这个啊。那你编程实现以下。我靠,这个还要建二叉树啊,不是很好弄啊。面试官说,那你写个二叉树求和最大时的路径吧。好吧,这又转到剑指offer上了,劈里啪啦就写好了。然后面试官看了下,不错,二面就结束了,二面结束已经将近1点了,还没吃午饭啊,又困又饿啊。下午3点还有腾讯的面试,这个可不想错过啊,上去和HR说了下,HR人还蛮好的,直接把我的简历拿到最上面。




三面


三面那个囧啊,嘴里塞了一嘴面包,HR喊的时候,直接就去了,忘了带水。见到三面官的时候,我还在嚼面包,想吐出来,又不知道往哪儿吐,想吞进去,又咽不下去,哎。。。那个囧态简直难以忘记啊!三面官看到此态,笑了,说你是不是要喝点水啊。我马上说是的啊,他向我指了一个地方,那儿有水。靠,救星啊,倒了两杯水,给面试官也倒了一杯。一起拿过去先把水给面试官了。三面官说,你先喝点水,不急,我看看你简历和资料。


就这样三面开始了,刚开始是闲扯啊,又讲实习的项目,讲了一半,他貌似看到以前面试的评语,说这个是不是以前说过的啊?我说,是的啊,他说,说过的就不用再说了。然后就让我回忆你有哪些优点了,我先把本科的一个故事给他讲了。然后他还在问,可能你平时没注意,你再想想还有什么事能表现你的一些优点的。我想啊想,又把研究生的一个故事给他讲了。然后还在问,还有不,你再想想。我就在想啊,这面试官真不错啊,人太好了,一直在挖掘人的长处啊。我每讲一个故事,他都在纸上做记录,满满地写了几张纸啊!感动啊!


故事讲完了,又问我,你一般在网上看技术文章不?我说看,他说在哪儿看啊。我说CSDN,博客园。他也在做记录,然后问,那你有博客账号不?我说有,他说,那你能给个链接不?我说,链接不记得了,那给个搜索关键词吧,我就给了。我还以为3面就这样聊聊就好了呢。没想到,又出了两道题,一个是写个乘法的宏定义,果然是没注意啊,要加3个括号#define multply(m,n) ((m)*(n)),这样才对啊。哎。。。我只加了一个,在面试官的提示下,才想到加3个。确实觉得面试官人不错啊,大美团确实不错啊。又问了,宏定义和内联函数有什么区别吗,分别在什么样的场景下应用啊。我答了内联函数在编译时,将调用处进行函数替换,避免调来调去压榨出栈的时间开销,以空间换时间,还有内联函数有类型检测,宏替换没有类型检测,内联函数只是向编译器申请,若内联函数体内有循环递归等,申请会失败,系统会当初普通函数处理。又问了如果设计一个string类,要注意什么问题。我答了,注意内存泄露啊。如果是继承,基类的析构函数要设计成虚函数。拷贝构造函数和赋值函数要注意异常安全,还有不能拷贝指针。然后就是3面结束了,等通知

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值