美团面试

一面

首先是自我介绍,简单问了一些项目相关的问题。

后面问了一些Java语言相关的问题,但是因为我很久没有用过Java了所以就大概说了下Java大概的一些语法类的东西。

后面问了一些数据结构的知识,解释数组、queue和链表,并解释数组 queue 链表分别如何实现和优缺点,并选取了一个具体的应用场景,让选择使用数组还是链表。那个实例我不记得了,但是是需要通过下标快速访问的,所以显然是用数组。下面放上一个相关资料

数组和链表区别

后面问了mysql的相关问题,知道哪些mysql语句,并实现一个查询某个酒店t1-t2时间内入住的客人数问题,首先设计Hotel、Room、Guest以及需要的多对多关系几张表,然后写它们都需要哪些字段,并写出查询语句。

之后问了几个网络相关的问题,比如网络几层结构以及tcp协议。网络有几层我当时忘记了,后来查了一下是7层,OSI模型。然后TCP协议是什么,我只答到了三次握手。。不过貌似主体就是这个吧~TCP协议

后面就是一个算法题了,给定一个长度为N(1<=N<=10000)的小写字母串,找到第一个只出现一次的字母,并输出字母和位置。这个题很简单扫一次记录每个字母出现的位置和次数然后扫一遍26个字母就可以了。

最后是一道智力题,一个圆形蛋糕里面有一个矩形洞,如何一刀把这个蛋糕平分。很简单,但是当时没想到。。连接圆心和矩形的中心就可以了。。推广到多边形的洞也一样,连接圆心和多边形重心即可。

二面

自我介绍时实验室工作相关问了很多问题,比如实际系统如何评估,实际系统和算法结果不一致时如何改进model,最终总结有两点,一是调高实际数据在训练数据中的比重,二是利用实际数据修正训练结果。

后面是一道算法题,螺旋打印一个n*n的正方形(比如螺旋打印一个3*3的正方形结果如下面所示) 面试官提示的很清楚,先把问题拆分,看如何打印一圈size为n的数字,然后之后打印size为n-2的数字即可,然后每圈确定起始数字和size之后便可以确定的打印出这圈了,一次长度为size-1的循环打印出一圈每个位置对应的数字即可。对于每圈,假设size是s,起始数字是start, 起始位置坐标是i, j,当前偏移是bias的话。整体代码变如下所示

1 2 3

8 9 4

7 6 5


螺旋打印


三面

首先是python基础基础知识 ,迭代器和生成器(yield)迭代器和生成器

如何实现xrange,这个在理解了迭代器和生成器基础上就可以很好地实现了。

后面问了python装饰器Decorator

利用python lambda函数实现把一个数组偶数乘以二奇数乘以三输出,当时忘了具体语法了。。语法有错误,也忘记了map,最简便的写法应该是,其中a是输入的数组

print map(lambda x: 3*x if x%2 else 2*x, a)

最后是一道算法题,有一个长度为L的数组,给出它们的价值分别是v1-L,如何切割绳子使得价值最大。是一个动态规划问题,按照第一刀切在哪里分类。通过记录每个长度的绳子切割所能获得的最大值来计算,时间复杂度是O(n^2),题目不难,在此不再贴代码。之后LeetCode遇到相似的算法题再放链接好了0.0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 7月23日获得了一次去美团面试 iOS 开发工程师的机会。做个记录。 一面: Block的底层原理,结构,内存以及...
    WayneWang阅读 4,876评论 17 25
  • 前言 学校组织的面试大赛,当时是被男朋友push着报了个名,没想到最终拿到了美团终面的通道0.0看来有机会还是应该...
    Gigi9阅读 304评论 0 1
  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 3,388评论 0 19
  • 第四章 初遇 这一天,甄心早早收拾好了一切,因为这是她工作的第一天,她可不想...
    嗜血怪阅读 235评论 0 0
  • 距离2017年,还剩2天的时间,在过去的2016年里,你减掉了2015年的肥肉吗?你阅读了2014年就计划要读的书...
    若依喜舍阅读 434评论 0 0