Ff7467196fc5bede6354ea96e5a12653
2018 iOS 社招面试经验:我是如何拿到阿里、滴滴、美团等六家 offer 的?

在过去的一个月里,我用了半个月时间准备,半个月时间面试,总共面了7家公司,拿到了6家offer,分别是阿里、滴滴、美团、京东金融、猫眼、链家。 趁年前大家还没开始跳槽,整理一些经验分享一下。

首先,自我介绍一下,我不是大神,背景不是很牛逼,工作经历也不长。北航15年毕业,非计算机专业,15年年初从零开始自学的编程,到今天刚刚三年。15年6月进入第一家公司,之前自学的是 Android,入职后的第二周,机缘巧合转岗做 iOS。算起来,iOS 从零基础到进入大公司,用了两年半的时间。跟张星宇等大神比起来,我的成长速度不值一提,介绍这些只是想跟大家说,现在大公司 iOS 空位很多,如果你有两年以上(没有水分的)开发经验,抓住机遇,好好准备,跳大公司问题不大。

复习书单

准备面试,最开始一定要系统地梳理一遍知识,有许多书都要重新看一遍。因为都是自己看过两遍三遍的书,这次我看的速度很快,却也时常看到一两处让自己恍然大悟的文字。当你编程经验提升之后,再看一遍之前的书,会学到许多新知识。这个阶段,戒急躁,要以梳理知识为目的,不要以面试为目的。

我列一下我的书单,你可以整理一下自己的复习书单,每个人看过的书不同,书单自然也不一样,重看自己的书单就好,时间允许才能去看新书。

  • 《Effective Objective-C 2.0》,大公司项目主要用 OC 开发,这本书必看,推荐指数5颗星。
  • 《Objective-C编程之道:iOS设计模式解析》,面试时问的设计模式问题不多,这本书足够了,推荐指数5颗星。
  • 《剑指Offer》,大公司都会问算法题,大都问两三道题,滴滴比较狠,4轮面试下来问了4道算法和1道逻辑题。这本书如果之前没看过的话,不建议全刷,看前半本就行,掌握思路就好。推荐指数5颗星。
  • 《程序员的自我修养》,这本书非常非常赞👍,奈何我准备面试时才买,只来得及看第一章,有种打通任督二脉的感觉。如果你和我一样不是计算机毕业,对操作系统还不是很了解,在面试前一定要把第一章看完。推荐指数5颗星。
  • 《iOS Core Animation Advanced Techniques》,很多人对 CoreAnimation 有误解,认为它只是一些动画接口,没有跨平台的适用型,不值得深入学习。其实 CoreAnimation 做的事情绝不仅仅是动画,几乎所有渲染相关的事情都和它有关,书中也讲了许多性能优化的方案。推荐指数5颗星。
  • 《Advanced Swift》, Swift 毕竟是趋势,但是大公司面试问的不多,这本书比较难读,之前没看过的同学,不推荐面试前刷它。推荐指数4颗星。
  • 《图解HTTP》,面试问网络的问题不多,无非是三次握手四次挥手,以及HTTPS密钥传输流程,初略刷一遍这本书就行,当然大神可以直接刷《HTTP权威指南》。推荐指数3颗星。另外听说《图解TCP/IP》很不错,我还没看过。

还有一些文章很不错,我也列一下

  • RunLoop, Y 神的这篇 RunLoop 无人能及,这篇文章出世之后,讲不了 RunLoop 都不好意思说自己是 iOS 工程师。
  • 多线程,这是我前同事 亚非 整理的多线程知识,很赞,可以对照着系统梳理一下。
  • 事件传递, 讲事件传递的博客很多,这篇讲得挺详细的。
  • 组件化,现在大公司都刚刚做完组件化,面试也是必问的题,业界基本就两个方案,把 bang、Casa 和 蘑菇街 的文章都仔细读一下,面试能讲清楚各自的实现方案以及主要问题就行。
  • Alamofire源码解读,配合这篇文章,看源码要轻松一些。
  • sunny的面试题,这套题虽然是15年的,现在面试问的还是这些,没多少变化,另外 github 上有人给这套题出了答案。
  • Peak的面试题,面试题大多类似,不用刷太多篇。

准备简历

简历最好两页,最多不超过三页。项目最多写三个,可以不用描述项目是做什么业务的,但一定要列出来技术点,不同项目的技术点不要重复。写简历的学问很多,我也不是非常清楚,我的简历仅供参考。

准备面试

因为我在原公司做过两年的面试官,比较清楚面试官拿到我的简历后会问什么问题,我准备面试的方式很简单,列出来所有可能会问到的问题,都预先写好自己满意的答案,自己预演几次,熟悉了所有问题和答案,然后放空自我,从容地去面试。

这个方法很有效,拿着简历自己面试自己,很容易发现问题。当然,如果感觉自己的水平有限,你也可以让朋友拿着简历向你提问题。当你列出了所有可能遇到的问题,都准备好了自己满意的答案,你就找到了自信。每一轮面试结束,你都可以根据这次面试,完善你的答案。

另外,准备一个简短的自我介绍,还有一些问面试官的问题。每轮面试结束,你都有机会问面试官一两个问题,如果问题问得好,面试也是加分的。

还有,要练一下手写算法题,这样面试时不会手生。

各家公司的面试流程和风格

即使是同一家公司,不同部门面试的风格或流程也可能不一样,下边这些仅供参考。

1.阿里

阿里主要结合简历问项目经历,穿插着问一些技术点,特别问了一下网络安全、本地存储安全和逆向,答不上也ok,答上了加分。另外也会问大前端框架,比如 RN 和 Weex,以及你对大前端的看法,你可以随便说,但是心里要清楚,阿里是走大前端路线的。

因为我在北京,而面的是杭州的部门,所以流程可能不太相同:

  • 一面电话面试,主要问项目经历,通过之后,会有一个视频面试,在线敲一道算法题
  • 二面、三面:都是视频面试,面试官是部门领导,主要聊之前工作经历,以后的规划,平时如何学习。也会问一两个没有确定答案的技术问题,可能是综合评估一下你各方面的能力
  • hr面

阿里有一点很感动我,我通过阿里二面时,已经拿到了滴滴到 Offer,而且 Offer 时间非常紧,还有一天时间就作废了,跟阿里表明情况后,阿里竟然临时把原本安排在下周一的三面以及后续的 hr 面合在一起,安排在当天下午,那时面试官还在美国出差,算时差应该是占用了睡眠时间。面完之后,hr 当天和我确定 Offer。阿里如此大的公司,能有如此的效率和动态性,以及对人才(给自己贴个金🤪)的重视,非常佩服。

2.滴滴

先做一套笔试题,大概七八页,时间45分钟,其中不少简答题,还有一道算法题一道逻辑题。你空着的题目,因为时间原因,面试官可能不会问你,所以不要想先空着,一会儿直接跟面试官讲,面试官可能不给你讲的机会。答题时不用写得太详细,每道题把答案分点列出个大概,把关键词都写上就行。

这套笔试题是滴滴精心准备的,iOS 知识覆盖很全面,而且很深入,滴滴主要通过这套题来考察你,你简历上写的项目只是大概问问。滴滴是会用算法淘汰人的,面滴滴之前要好好准备一下算法,别指望面试官提示你,即使面试官给你提示,也是在心里减分的。另外滴滴有一套热修复框架,面试中多次问到热修复相关的问题,答不上也ok(面试者中应该没几个能答上来),但是如果你能答上来,而且答得非常有水平,会加很多分。

  • 一面,先笔试,再面试,面试主要是过一遍笔试题
  • 二面,根据笔试题深入问下去,看看有没有一两个点你非常了解
top Created with Sketch.