攒人品,滴滴一面二面三面面经(三面挂)
提前一天收到通知,要求9月26日前往滴滴参加面试,等待一个多小时之后,活动执行负责人跟我们宣布当天无法面试这么多人,于是改到了9月28日。在9月28日一早,我前往了北京西二旗的滴滴参加面试,在经过漫长的等待和蹭了一顿免费盒饭之后,终于通知我准备面试了。
一面
一面的面试官看起来很有意思,不拘小节的风格,看到我主要使用语言是Python表示比较有兴趣,看得出来面试官也是比较善用Python的,随口问了一句with语法你知道吗?开始没听懂,后来反应过来说要实现enter和exit就可以使用with语法,面试官表示满意。后来又问了一些Python的问题,比如async是什么,如何判断一个instance是否为某一个类,这些问题我回答基本正确,顺利通过。
接下来重头戏手撸代码的算法题来了。
第一题是二叉搜索树如何原地变成双向有序链表。我一开始理解错误,以为可以新建一个链表,急急忙忙写完之后面试官说这个题明显不能新建链表,要不然一个中序不就结束了,我也是觉得尴尬至极,后来在面试官的点拨之下,完成代码。
第二题是只能使用递归不可开辟额外空间完成栈内元素的翻转。这个题我了解大概的思路,可是在他的一再提示下还是没有思路,只能作罢,面试官很不满意。
第三题是两个递增数组合并成一个递减数组。面试官在考察完前两个题目之后,明显是想再给我一次机会,否则就之前的表现肯定就fail了,这个题难度比较低,属于放水,在此感谢面试官。
【总结】一共面试了70分钟,期间面试**很好,会跟我讨论问题的思路,我也会时不时的提出自己的问题,如果不是特别重大的问题,他也会耐心的跟我一起讨论和解释。
二面
二面几乎没有写代码,只是在最后几分钟问了一个代码题,难度也不大,多个有序数组如何找到他们的交集,并给出时间复杂度。
二面主要进行了以下的这些问题和讨论:
- 介绍了我自己的项目,提出疑问:为什么不使用开源框架、系统的耦合度问题等。
- 我的项目中用到的是NoSQL的mongodb,面试官问mongodb是如何做持久化的、它是否保证是数据一致性、是否会发生数据丢失现象,以及mongodb的索引是如何实现的,它与MySQL之类的SQL数据库有什么区别。最后一个问题是我给自己挖的坑~
- 介绍第二个项目,爬虫的基本介绍
- 面试官让我考虑一个场景的解决方案:已知一个乘客的地位位置,如果在O(1)的平均时间下找到距离最近的司机的列表,在讨论中他提到了区域划分粒度的问题,我就就势提出可以采用分级hash的策略。
- 在浏览器中输入网址回车到页面显示完全,这中间都发生了什么。DNS,HTTP报文->TCP报文,TCP报文->IP报文,keep-alive,ARP,TCP的拥塞控制,丢包之后的重传与恢复。问的还算是比较细致。
【总结】二面一共70分钟,面试官是一个比较随和安静的人,整个面试过程比较流畅,虽然一些问题我不知道,最后他表示对我有兴趣,希望我能过三面,然后我就被他一口毒奶~
三面
三面的面试官是一个比较严肃的Boss,主要是针对简历中的项目发问,比如问道mongodb跟sql数据库比有什么区别,有什么优势;如果防止网络爬虫被网站识别并封号,然后抓住我的简历中一个用词失误使劲问,最后我只好说我的意思跟这个词儿好像不是特别搭,是我用词不当了。整个面试过程整整30分钟,结束的时候对我说“挺好的,不错”,然后一分钟之后,活动执行人员告诉我“你的面试结束了”,然后我一脸懵逼的踏上了去地铁站的征程。。。
总结
- 自己的项目一定要特别清楚,所用到的技术的机制和与其他技术的对比一定要清楚,“我只是用过这个技术”可能会导致面试fail
- 面试官总体来说还是很友好的,一起讨论问题的氛围很重要,三面就一直是面试官不停发问,我疲于应对,没有形成良好互动。
- 【对自己说的】加油,offer一定会有的!