美团网笔试面试总结
美团网笔试没有选择题和填空题,全部都是大题,一共6道。做错一道。
题目不够新颖,很多题目都是以前出现过的老题。
面试三轮,每轮都要手写代码,第一面差点被虐,第二面顺利通过,第三面联合创始人面,很放松搞定。
笔试做错的那道题:赛马问题。
题意如下:25匹马,每次最多5匹马比赛,问多少次能找出前三名的马。
当时答的是10次,汗颜,走出考场就发现答的不对了,现分析如下:
1. 首先赛跑5次,找出每次跑的前三名。记为1i,2i,3i,i从1-5。
2.将1i共5匹马一组进行赛跑,此时找出第一快的马。将第四快和第五快的马直接抛弃。
3.此时还剩3匹马,这个时候第二名和第三名只可能从步骤2当中剩余的两匹马和2当中跑得最快那匹马之后的两匹还有跑得第二快的之后的那匹。
4.将步骤3中的五匹马再次赛跑一次,决胜出第一名和第二名。和步骤2中的那匹一起成为前三快的马。
图示如下:
a1-a5
b1-b5
c1-c5
d1-d5
e1-e5
跑完5轮,假设只剩:
a1-a3
b1-b3
c1-c3
d1-d3
e1-e3
这个时候取出:a1,b1,c1,d1,e1进行赛跑。
假设a1跑得最快,b1第二快,c1第三快。
这个时候只可能出现:a2,a3,b2,b1,c1争夺2,3快的马。想想为什么?
假设是b3争夺,则b3 < b2 b3 < b1 b3 < a1 此时必然不是前三快。同理c2,c3都是。更不用提di 和 ei 了。
所以一共七轮足矣决出最快三匹马。
面试的时候还需要改进的地方:
其实Java和C++还是有些区别的,很多时候搞Java的面试你,尽量往自己擅长的方向上说,不然搞Java的不停问你会跪的。
最后问了一道简单算法题,五分钟搞定,但是出现了很简单的错误,考虑没全面。
心得:就算自己很快能搞定的题目,也要写好代码之后,再主动写一些测试用例试下,不要让面试官觉得你很草率,不严谨。