千锋教育-做有情怀、有良心、有品质的IT职业教育机构

位置:首页 > 职场攻略

十个iOS面试问题 面试者轻松自如

时间:2015-10-17 14:20:53  |  来源:广州千锋  |  作者:广州千锋

  成功进入企业往往除了技术技能学历之外,还有一个很重要的环节,那就是面试,不管对于招聘和应聘来说,面试是必不可少的,特别对于开发者来说,技术问题往往也是面试官常问的问题,这是对一个应聘者是否达到公司的技能和技术积累要求的一个前提,也是一个开发者对自身技术与表达能力的一个检验。对于iOS开发来说,因为技术本身还比较新,企业对于这方面的开发者需求也比较大,所以面试时的要求可能并不是很高,一般会Cocoa和OC的基本知识也就认为可以了,当然你有项目经验和过硬的技术好,这对你的面试成功是加分的,而且你的薪资水平也会提升档次。但是对于一个希望拥有技术力基础的企业的iOS开发来说,两到三个顶尖的熟练技术人员,带领一些还较为初级的开发者,共同完成项目应该是比较常见的构成,所以面试的之前不要过于想的有多难多么苛刻。

1414945T34EZ-32209.jpg

  Cocoa特别是CocoaTouch的开发,上手可以说十分容易,但是背后隐藏的细节和原理却很丰富。一方面对于基础不够熟练和清晰(比如从一个AppDelegate开始用代码构建ViewController,或者清晰地说明栈和堆之类的概念),另一方面对于进阶的开发知之甚少(比如多线程、网络异步处理或者Core开头的各种框架等等)。这些内容十分重要,但是可能现在一般的iOS开发者或多或少都在这些问题上存在薄弱。在这里我整理了一份面向于较高层级的iOS开发者的面试题目的问题清单,列出了十个应聘Leader级别的CocoaCocoaTouch开发工程师所应该掌握和理解的技术。这份列表没有提供标准答案,因为这些问题本身就没有标准答案。随每个人对这些内容的认识的不同和理解的差异,可以有不一样的答案。但是基本地,如果面对的是一名资深的Cocoa开发者,至少期望能得到的答案都是“接触过”,并且能结合自己的经验说个七七八八,达到互相能明白意图和方法的地步。能够在其中两三个领域有不错的见解和具体的阐述的话,那是好。这种对于知识覆盖面和深度的考察很能真实反映出开发者的技术水平。如果清单里的很大部分内容都是完全没接触过和没听过的话,那可能距离资深Cocoa开发这样一个阶段还尚有距离了。

  那么,面试开始。

  1.你使用过Objective-C的运行时编程(Runtime Programming)么如果使用过,你用它做了什么你还能记得你所使用的相关的头文件或者某些方法的名称吗

  2.你实现过多线程的Core Data么NSPersistentStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要在线程中创建或者传递你是用什么样的策略来实现的

  3.Core开头的系列的内容。是否使用过CoreAnimation和CoreGraphics。UI框架和CA,CG框架的联系是什么分别用CA和CG做过些什么动画或者图像上的内容。(有需要的话还可以涉及Quartz的一些内容)

  4.是否使用过CoreText或者CoreImage等如果使用过,请谈谈你使用CoreText或者CoreImage的体验。

  5.NSNotification和KVO的区别和用法是什么什么时候应该使用通知,什么时候应该使用KVO,它们的实现上有什么区别吗如果用protocol和delegate(或者delegate的Array)来实现类似的功能可能吗如果可能,会有什么潜在的问题如果不能,为什么(虽然protocol和delegate这种东西面试已经面烂了…)

  6.你用过NSOperationQueue么如果用过或者了解的话,你为什么要使用NSOperationQueue,实现了什么请描述它和GCD的区别和类似的地方(提示:可以从两者的实现机制和适用范围来描述)。

  7.既然提到GCD,那么问一下在使用GCD以及block时要注意些什么它们两是一回事儿么block在ARC中和传统的MRC中的行为和用法有没有什么区别,需要注意些什么

  8.您是否做过异步的网络处理和通讯方面的工作如果有,能具体介绍一些实现策略么

  9.对于Objective-C,你认为它大的优点和大的不足是什么对于不足之处,现在有没有可用的方法绕过这些不足来实现需求。如果可以的话,你有没有考虑或者实践过重新实现OC的一些功能,如果有,具体会如何做

  10.你实现过一个框架或者库以供别人使用么如果有,请谈一谈构建框架或者库时候的经验;如果没有,请设想和设计框架的public的API,并指出大概需要如何做、需要注意一些什么方面,来使别人容易地使用你的框架。

  以上10个问题对于初级或者刚接触iOS的开发者来说,肯定是过于难了。想要答出全部问题,可能需要至少两到三年的CocoaCocoaTouch开发经验。而如果想要有所见地的回答,可能需要长的时间和经验。这些问题对于技术的积累会是一个很好的考察,因为如果没有对这些问题中涉及的内容有过实际使用和体会的话,是很难较完整和回答这些问题的。同时,因为这些问题并不像ABCD的客观题有标准答案,表现的是应聘者的理解,所以提问者也必须具备必要的材料或者知识,以应对可能的讨论。

  在为团队寻求别的开发工程师或者Leader类的职位时,这些问题的回答会是对应聘者技术深度和广度的一个有效的考察。同样地,如果你的团队在CocoaCocoaTouch上比较偏重,但是技术团队的No.1的工程师却不能很好地回答这些问题的话,可能也会是需要检讨技术层的一个信号。

上一篇:一个资深程序员独到生动的建议
下一篇:程序员面试:掌握哪些技巧能过关斩将

新开班New

  • 广州地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 北京天丰利校区:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术广场服务楼2层、南区服务楼2层
    咨询电话:400-654-7778 010-82790226-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训、好程序员特训营
  • 深圳西部硅谷校区:深圳市宝安区宝安大道5010号西部硅谷B座A605-619
    深圳科技园校区:广东省深圳市南山区高新技术产业园R3栋B5楼
    深圳大学城校区:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    咨询电话:0755-86681178/9-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训、PHP培训、JavaEE培训、好程序员特训营
  • 上海地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-65025129-602
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训、好程序员特训营
  • 郑州地址:郑州市金水区纬五路21号河南教育综合楼(经纬中学楼)6/7/8层
    咨询电话:0371-55911950 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 大连地址:大连市高新园区软件园路2号B8座
    咨询电话:0411-39026086 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 武汉地址:武汉市东新区光谷大道77号金融港B26栋9楼
    咨询电话:027-59905902 027-59905908 027-59905909
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 成都旅游校区:成都市一环路西二段17号四川旅游青羊校区内
    成都华立校区:成都一环路西二段17号华立大厦3楼
    咨询电话:028-83178771 028-61967740
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 西安地址:西安市二环南路西段60号永安大厦4层
    西安科技园校区:西安市雁塔区高新六路52号立人科技园C座西区4层
    咨询电话:029-85260160 029-85261030 029-85260960
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 杭州地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 了解千锋动态
    关注千锋教育服务号

  • 扫码匿名提建议
    直达CEO信箱