部门:美团金服
岗位:移动端开发工程师
面试前寒暄
晚上七点的面试,迟到了几分钟,我说我刚下班赶回来,迟到了不好意思啊。面试官说你们那么早就下班了啊,我们这边可没那么早下班哦。我苦笑说既然选择了这行,我是有心理准备的哈哈。聊了几分钟当前实习的内容和上一次实习的内容。
1、为什么选移动端呢?你自己是偏向后端还是移动端?
我最近也有听说很多关于客户端不好的传言,比如客三消什么的,但我自己没有那么悲观喇,难道三年后
AppStroe
里的应用就没有了吗,我觉得不可能,其实我对客户端的发展前景还是比较乐观的。并且我上次实习也是用QT写桌面级的客户端,觉得挺有意思,虽然还没接触过安卓和IOS,但也有兴趣去学。这里我故意避开第二问不谈,因为确实是送命题,不知道怎么答才好。。
2、你还有投过其他公司的移动端吗?
投过,我还投了字节的移动端,但是字节笔试太难了,就没通过。面试官听完笑了笑。
3、看你简历写了十大排序,你说说这些排序的应用场景?
我掰着指头一个一个地说,结果只说出来六个,尴尬。还被追问什么是基数排序?什么是桶排序?我刚好忘了,只能说不知道。
现在已经把简历上精通十大排序这句话去掉了,谢谢面试官排雷。
4、HTTP头部结构是怎样的?HTTP1.0、1.1、2.0都有什么区别?
5、HTTP有什么缺点?
不安全,因为是明文传输,如果想要安全的话,就得加密。
追问:加密完就安全了吗?
仅仅加密还不够,HTTP安全要满足四个特性,除了加密以外还要保证数据传输的完整性(摘要算法),要有身份认证(CA证书)和不可否认(当时没答出来)。
6、你说一下TCP三次握手过程?
我感觉应该是前面没答好,所以来了个简单题给我打打气。
7、IP协议在OSI七层的哪一层?它的作用是什么?它是怎么把数据发送到目的地的?
8、I/O多路复用有什么用?
主要是为了解决服务器端并发的问题,如果没有多路复用的话,就只能通过多进程或多线程阻塞等待事件,效率较低。使用I/O多路复用相当于委托内核来检测就绪的事件,效率会高一些。
9、说一下git你常用的命令?
我简单说了一些基本操作:add,commit,push,pull等。
追问:如果我commit后,想要修改commit的内容,如何操作?如何撤销commit?git分为三个区域,是哪三个?git add 后会进入哪个区域?
直接给我干懵了,我赶紧说太久没用了,记不清了。
简历:
熟练使用git
10、说说一个C++程序从编写到运行的过程?
预编译->编译->汇编->链接。
追问:说说编译的过程,具体一些。
我答不上来,面试官又问我看没看过《编译原理》这本书,我说没看过。好家伙都干到汇编去了。后来查了下百度,编译具体过程如下:
- 词法分析阶段,该阶段会对构成源程序的字符串进行扫描和分解,识别出一个个的单词;
- 语法分析阶段,该阶段用于分析句子的语法结构;
- 语义分析与中间代码产生阶段;
- 代码优化阶段;
- 目标代码生成程序阶段。
11、算法题:判断一棵二叉树是否是搜索二叉树。
12、算法题:反转链表(从第k个节点后开始反转)。
两个算法题我写了25分钟,才把核心代码写出来。我这编码能力是越来越差了啊。。
总结
大厂就是大厂啊,客户端都问得那么难,感觉已经卷不动了,麻了。
面试官:精通?弄不死你我
太真实了,已经被怼怕了😂
大佬加油!!(ง •_•)ง
顶不住了,感觉我的秋招快结束了,已经厌倦了这种八股文的面试模式,也不想去死记硬背了。最近在看HTTP相关的书,觉得慢慢地看其实还挺有意思的,八股真的给我背吐了。
八股文确实。。TW的offer也挺香吧