面试总结
这次找工作通过100offer来拍卖自己,共收到15个面试邀请,拒绝了4家公司的邀请,接受面邀的11家公司里边9家公司的hr联系了我,确认了面试时间和地点。100offer的效率确实非常高,而且会有专门的招聘体验师来指导一些面试的技巧和介绍一些目标公司的情况,这里给他们点个赞。
最终去面试的9家公司:
- 面包旅行 python高级开发工程师
- tataUFO Sr Data Engineer
- 乐视 Python工程师
- 今日头条 python高级工程师
- 新浪微博 服务端开发工程师
- 滴滴打车 Linux服务器开发工程师
- 美餐网 go工程师
- 奇虎360 高级软件开发工程师-Python语言
- OneAPM蓝海讯通 Python工程师
拒掉面邀的4家公司:
- 51Talk Python工程师
- 美菜网 Python工程师
- 暴风魔镜 后台工程师(偏爬虫)
- 新窝网 python工程师
发来面邀,但是没有hr联系的,大点的公司还是效率比较低下的:
- 美团 Python工程师
- 阿里云 Python工程师
下面我选了几家我认为面试水平比较高的、注重基础和系统设计的公司,分享一下面试过程。
滴滴打车
滴滴给人的感觉是真的想招一个可以培养的人,不是招过来就为了干活儿。这要求你基础和学习能力很好,并不会特别看重你之前的项目经历和未来要做的项目是不是一致,因为一个能把之前的项目做的很好的人,在其他项目上也会干的不错。关键是工程师的思考、做事的方式是不是很match。
职位
Linux服务器开发工程师
一面
面试官看起来年纪不大但是有不少白头发,很和蔼。面试开始,先让我做了自我介绍,言简意赅的介绍了我是那年毕业的、在哪家公司待过之类的。后来问的问题大概有:
- 数据库的4个事务隔离级别是什么?它们之间的区别是什么?是如何实现的?MySQL的默认级别是什么?
- Redis的事务是真事务么?同一时刻能执行多个事务么?
- Redis Server的网络并发模型是什么?实现原理
- Redis 的持久化方式有哪些?实现原理
- Python 的装饰器是什么?如何写?如何实现的?(因为从我简历看出我之前写python,所以问了python的一个题)
白纸写代码,语言不限,面试官说给你15分钟,就出去了
计算两个有序集合的差集,例如 [1, 4, 7, 9] - [5, 7, 11, 14] => [1, 4, 9]
二面
一面答的还不错,事务隔离级别的实现没答上来,直接说不太清楚,面试官告诉我说是通过锁来实现的,这个要好好研究一下。Redis的问题看看《Redis源码剖析》那本书后边都有讲到。二面的面试官过来之后问和一面的面试官聊完感觉怎么样,我回答说有些东西掌握的不是很透彻(指mysql事务隔离级别)。二面问了很多问题,持续时间达近两个小时。
- 按照简历聊,问了我之前和现在的离职原因
- 我实现的爬虫系统的架构设计和具体细节,例如网页如何去重、消息队列的选型、遇到过什么问题等
- Ajax的抓取是如何实现的,还聊到他之前在百度的时候也接触过一些爬虫,百度已经实现了Ajax的自动抓取
- 你如何评价自己
系统设计题,某个第三方数据接入系统,有多个第三方系统,且每个系统之间的数据格式、系统状况等都不相同,每次获取数据都要收费。两点要求:
- 可扩展性
- 尽量降低成本
开放问题,滴滴给司机分单可以怎样实现,要求在3秒内完成订单的分配。三个实体:司机、订单、到乘客的距离
最后要问一个算法题,题目描述的不是特别清楚,估计是不太记得了,后来没做。想了一会,说你写个快排吧。所以最后一个题也是白纸写代码:快排。
滴滴分单的问题我想了一会,想抽象成图来做,但是并不能满足性能上的需求,没给出比较好的解决方案。问他如何解决,他说可以用空间索引来解决这个问题。还说MongoDB的什么东西就是用空间索引来实现的。所以有必要了解一下LBS算法相关的知识。
三面
三面在隔了一天的下午3点半继续,到了之后面试官还在回来的路上,估计是部门主管比较忙。等了一会儿到了,等的过程当中回想了之前的项目经历。面试官坐下之后,先让我自我介绍一下,言简意赅的说完之后,面试官按照简历上的项目经验问了我项目的情况。问了我感觉挑战最大的项目是哪个?多长时间开发了那个系统之类的。后来就是聊聊天,自己的技术职业规划,对于新的工作机会更看重什么。然后让我问了一一些问题。聊完之后让我走了,说后续会有hr联系我。我之前在网上看说如果三面过了,会有四面hr面,三面让我回去了,还以为挂了。结果傍晚的时候HR就给我打电话,聊了期望薪资和滴滴现在的福利体系。滴滴的效率很高。
结果
拿到Offer
今日头条
上午10点15分到了今日头条就看到员工们从楼下取早饭上来,看来是公司统一准备的,福利很好。这次是我第二次去头条面试了,去年面试过爬虫的职位,3个小时面下来结果被刷了。这次是python高工,估计是web相关的职位。被刷的风险也很大,因为没怎么做过web开发。
职位
python高级工程师
一面
面试官进来,第一个题就是白纸写代码,题目如下:
一个不规则多边形 [P1, P2, P3, ..., Pn],Pi为各个顶点的坐标,
求这个不规则多边形周长的k等分点,写代码实现。
我写了大概15分钟就让前台叫告诉面试官写完了。这个题答的不错。然后面试官问了:
- 爬虫系统的架构、具体实现、消息队列的选型等
- MySQL的存储引擎,InnoDB的索引的实现算法、具体在硬盘上怎么存的,索引B+Tree的叶子节点存储的具体数据是什么
- Redis的持久化方案
- Redis的并发模型,原理
- Redis的hash是如何实现的,rehash的策略
待续。。。