[iOS] 应届生该如何准备 iOS 面试

  每年都有大量的应届毕业生投入到iOS开发大军当中,我过去3年也面试过不少应届生,总体感觉出类拔萃者相当稀少,泯然众人者还是占多数,大部分人对iOS技术面试会是什么样没什么概念,更不知道该怎么去准备一场面试。其实毕业季学校都留给了每个人充足的自由时间去准备学习,对于,仅以过来人提些切实可行的建议帮助刚毕业的同学们,以下这些建议花三个月准备绰绰有余。

  相信自己的选择,全力以赴

  在开始准备面试前,一定要确信自己所选择的方向。这两年虽然iOS开发虽然有所降温,但市场对于优质人才的需求还是求贤若渴的状态,即使长远的来看,iOS开发也是一个可以深度发展持续提升的职业方向。一旦决定应聘iOS岗位,一定要全力以赴,切不可今天OC,Swift明天再抓一本java。再者,iOS整套的硬件软件开发体验,macbook,iPhone,Xcode,Develper API等等都是一流的。

  建议一:动手做一个简单App

  做过和没做过App之间有很大的差别,不用做复杂的app,可以是一个简单的demo,类似于计算器,日历,天气的app,这个app展示给面试官看的时候,可以表明以下信息:

  使用过Mac系统。

  有Xcode上手经验,知道如何调试App。

  能做基本的UI,清楚诸如UIWindow,UIView,UIButton这些基础的元素。

  发送过网络请求,大致知道HTTP的概念。

  有过本地的存储,可以是简单的NSUseDefault,了解持久化的概念。

  所以App可以功能很简单,不需要花心思在UI的设计上,只是用来说明你知道iOS App开发是怎么一回事。

  但这个建议实际上是加分项,很多面试官包括我本人都不强制要求应届生有iOS开发经验,毕竟在校期间更多的是吸收理论知识,但做过App会加印象分,更是一个积极的信号,代表你对iOS开发确实感兴趣。

  做一个真实的App,比在网上找一堆面试题,记住所谓的标准答案要靠谱的多。而且强行记住的答案很容易露馅,Objective C的runtime知识岂是几道面试题可以说得清楚地。

  建议二:完整的阅读一个github开源项目源码

  做过App表明你上过手,但是阅读过优秀的开源代码会让你更自信,更容易让面试官相信你确实是个技术向的人。

  这里推荐两个github上的项目,Objective-C和Swift各一个,选择任何一个深入阅读都可以,根据自己喜好即可。

  CodeHub - Objective C

  siesta - Swift

  阅读过后要确信自己能理解源码的思路,标准是脱离代码后,你能把这个App的实现思路,从UI展示,数据存储,网络请求,基本架构都能大致说清楚,最好能说下具体那一部分的代码让你印象深刻,让面试官能相信你确实仔细的读过。

  建议三:粗粒度梳理大学知识体系

  这部分和关键,无论大公司还是小作坊,对你在大学期间所学必定最感兴趣,也是会深入挖掘的部分。大学课程虽然众多,但和实际工作贴近的却只有几门,准备起来不用广撒网,可以针对性的复习,主要可分为以下几类:

  操作系统

  操作系统的知识是重中之重,以后新技术的学习,不论什么平台,几乎都是以这堂课的知识为基础,主要知识点包括:内存,磁盘,I/O,线程,进程,系统调度等,这些知识点相关的基础都要能明白。

  数据结构

  数据结构也很重要,算法可以选择性的适度复习,有经验的面试官是不会让你手写Quicksort的。基础的数据结构,List,Heap,Stack,Tree等都要知道,时间复杂度知道如何计算,graph相关的可以不用看,这一块偏复杂,面试官也不会问。

  计算机网络

  能说出OSI七层模型,和每一层的职责,了解tcp三次握手的流程,大致了解HTTP协议格式,明白post和get的区别,查看过request和response的具体样本等。

  C语言

  C语言的重要性是被严重低估的,即使是不少有过工作经验的朋友,没有系统的学习过C语言或者类似的偏底层语言,对于知识深度的拓展都收到限制,C语言更接近计算机原本的样貌,比如真正了解指针的概念后,你才能对对象的memory layout有清晰认识,进而对你学习内存管理起到事半功倍的效果。