美团后端二面面经
今天下午进行了美团二面,将近90分钟,已收到了三面邀请
上来首先是自我介绍,然后问我最近看了哪些书(因为楼主是跨专业的那种)回答APUE、算法与数据结构
然后来了3道编程题,直接写代码,不用运行
用 数组 实现队列
我想的是用链表实现,但要求数组,只好记录尾端位置,每次出列将数组所有元素向前移一位,面试官不是很满意,说时间复杂度比较高,让改进,在面试官提示下,有了不移动,直接利用已出列的空间的思路,没实际写出来。
反转链表的非递归实现
这个比较简单,就不多说了
给定一个奇数个数的数组,找出其中出现次数过半的数字
直接用unordered_set
完成了,面试官的意思好像不是让我用这个,问我还有想法啊吗?回答可以参考基数排序的思路?
接下来问基础
因为楼主不会JAVA,只会C++和python,所以没问编程语言相关内容。
- 了解TCP连接吗?了解一些
- 讲讲挥手?
- 挥手中有一个状态TIME_WAIT,是关闭方的还是被关闭方的?
- 为什么要有这个状态
- 假如我输入一个网址,结果打不开,怎么排查问题?结合7层模型(楼主回答的是先看是否DNS出现故障,然后检测服务器是否启动了该进程,目标端口是否被占用等等)
- 加入我在打游戏时,电脑突然断电了,服务器会怎样?
- 讲讲软链接和硬链接的区别?
- 具体点,在INODE层面有什么区别?(面试时,没想起来)
- 了解过数据库吗?(了解)
- B树和B+树的区别
- 为什么不用hash索引,在什么情况下可以用hash索引?
- 哈希冲突怎么办(只记得一种加挂链表了)
- 静态链接库和动态链接库的区别(脑子短路,没回答到点子上)
- 了解过大小堆吗?大小堆的特点是什么,有哪些应用?
- 用什么存储?(vector)
- 为什么用vector存储?优点是什么?
然后有3道智力题?
- 500颗糖果,最多分成10堆,分好后就不能变了,如何保障可以用这些堆组成500以内的任意数量糖果?
- 给很多数字的一个数组,其中几乎所有的数都出现偶数次,只有一个数出现了奇数次,找出这个出现奇数次的数?
- 一副扑克54张,其中有10张正面朝上,你闭上眼睛将扑克分成两堆,如何确保两堆里正面朝上的扑克牌数量一样多?(没想出来)
最后就闲聊了,有问在APUE里,举一个你学到的东西,说了信号,然后问信号和中断的区别,接着问一面问了哪些问题,说TCP协议呀,IO复用呀,我做的垃圾爬虫项目呀,顺便就问了select和epoll的区别。
许愿3面能过,菜鸡太难了。