`
445822357
  • 浏览: 736363 次
文章分类
社区版块
存档分类
最新评论

ios高级工程师开发面试题

 
阅读更多

不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的好机会。对于iOS和Mac开发来说,因为本事还算比较新,企业对于这方面的开发者需求也比较大,所以面试时的要求可能并不是很高,一般能知道一些Cocoa和OC的基本知识也就认为可以了。但是对于一个希望拥有技术力基础的企业的iOS或者Mac开发来说,两到三个顶尖的熟练技术人员,带领一些还较为初级的开发者,共同完成项目应该是比较常见的构成。

Cocoa特别是CocoaTouch的开发,上手可以说十分容易,但是背后隐藏的细节和原理却很丰富。一方面对于基础不够熟练和清晰(比如从一个AppDelegate开始用代码构建ViewController,或者清晰地说明栈和堆之类的概念),另一方面对于更进阶的开发知之甚少(比如多线程、网络异步处理或者Core开头的各种框架等等)。这些内容十分重要,但是可能现在一般的iOS开发者或多或少都在这些问题上存在薄弱。在这里我整理了一份面向于较高层级的iOS开发者的面试题目的问题清单,列出了十个应聘Leader级别的高级Cocoa/CocoaTouch开发工程师所应该掌握和理解的技术。这份列表没有提供标准答案,因为这些问题本身就没有标准答案。随每个人对这些内容的认识的不同和理解的差异,可以有不一样的答案。但是最基本地,如果面对的是一名资深的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,实现了什么?请描述它和G.C.D的区别和类似的地方(提示:可以从两者的实现机制和适用范围来描述)。


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


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


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


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


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


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

分享到:
评论

相关推荐

    2020iOS高级工程师面试题.docx

    2020年的iOS高级工程师面试题,主要收集大家上半年在面试中问到的技术点,如果大家面试需要,可以下载来看

    iOS 工程师面试题

    对于刚参加工作的iOS开发者在公司面试之前温习一下以前所学的知识,那是极好滴。

    2020IOS面试题及答案整理.docx

    2020年iOS高级工程师面试题,主要收集2020上半年面试各大厂遇到的问题,喜欢的收藏并且点个赞哈

    iOS 高级开发工程师面试进阶

    本课程以帮助学员面试 iOS 开发高级工程师为目标,从 runtime、runloop、消息转流程、UI 绘制原理、常考算法题和设计模式等角度,对面试中常被考的知识点做讲解和总结,希望大家更快拿到高薪 offer。

    高级java工程师笔试题-Javainterviewquestions:Java面试题

    高级java工程师笔试题目录 编程语言/框架/平台 安卓 AngularJS 角 主干JS C++ C C# 。网 Clojure CSS Cucumber 姜戈 码头工人 EmberJS 二郎 高朗 图Ql HTML 离子 IOS Java JavaScript jQuery 前端构建工具 ...

    高级java工程师笔试题-Inteerview-Questions:面试问题

    高级java工程师笔试题精彩访谈 技术面试问题列表的精选列表。 如果你想贡献,请阅读 或 。 查看我的或 . 目录 编程语言/框架/平台 安卓 . AngularJS 主干JS C++ C C♯ 。网 Clojure CSS 姜戈 EmberJS 二郎 高朗 HTML...

    高级java工程师笔试题-New-Interview-question:新面试题

    高级java工程师笔试题精彩访谈 技术面试问题列表的精选列表。 如果你想贡献,请阅读 或 。 查看我的或 . 目录 编程语言/框架/平台 安卓 . AngularJS 角 主干JS C++ C C# 。网 Clojure CSS Cucumber 姜戈 码头工人 ...

    高级java工程师笔试题-InterviewPrep:面试准备链接

    高级java工程师笔试题面试准备 面试准备链接 目录 编程语言/框架/平台 安卓 . AngularJS 角 主干JS C++ C C# 。网 Clojure CSS Cucumber 姜戈 码头工人 EmberJS 二郎 高朗 图Ql HTML 离子 IOS Java JavaScript ...

    高级java工程师笔试题-Interview-Questions:面试问题

    高级java工程师笔试题精彩访谈 技术面试问题列表的精选列表。 如果你想贡献,请阅读 或 。 单击此按钮有助于为 Awesome 项目提供资金 自豪地支持真棒项目 目录 编程语言/框架/平台 安卓 . AngularJS 角 主干JS C++ C...

    高级java工程师笔试题-awesome-interview-questions:真棒面试问题

    高级java工程师笔试题精彩访谈 技术面试问题列表的精选列表。 如果你想贡献,请阅读 或 。 查看我的或 . 目录 编程语言/框架/平台 安卓 . AngularJS 主干JS C++ C C♯ 。网 Clojure CSS 姜戈 EmberJS 二郎 高朗 HTML...

    高级java工程师笔试题-questions:查询

    高级java工程师笔试题精彩访谈 技术面试问题列表的精选列表。 如果你想贡献,请阅读 或 。 查看我的或 . 目录 编程语言/框架/平台 安卓 . AngularJS 主干JS C++ C C♯ 。网 Clojure CSS 姜戈 EmberJS 二郎 高朗 HTML...

    高级java工程师笔试题-Resources:资源

    高级java工程师笔试题精彩访谈 技术面试问题列表的精选列表。 如果你想贡献,请阅读 或 。 单击此按钮有助于为 Awesome 项目提供资金 目录 编程语言/框架/平台 安卓 . AngularJS 角 主干JS C++ C C# 。网 Clojure ...

    高级java工程师笔试题-InterviewCode:面试代码

    高级java工程师笔试题精彩访谈 技术面试问题列表的精选列表。 如果你想贡献,请阅读 或 。 查看我的或 . 目录 编程语言/框架/平台 安卓 . AngularJS 主干JS C++ C C♯ 。网 Clojure CSS 姜戈 EmberJS 二郎 高朗 HTML...

    高级java工程师笔试题-eopen:打开

    高级java工程师笔试题技术面试技巧 技术面试问题列表的精选列表。 如果你想贡献,请阅读。 简历模板 为软件工程师准备的简历(Curriculum Vitae)模板。 . 是 CV(简历)的 LaTeX 模板。 目录 编程语言/框架/平台 C ...

    高级java工程师笔试题-awesome:惊人的

    高级java工程师笔试题 精彩访谈 技术面试问题列表的精选列表。 如果你想贡献,请阅读 或 。 目录 编程语言/框架/平台 安卓 . AngularJS 角 主干JS C++ C C# 。网 Clojure CSS Cucumber 姜戈 码头工人 EmberJS 二郎 ...

    高级java工程师笔试题-interview-questions:面试问题

    高级java工程师笔试题精彩访谈 技术面试问题列表的精选列表。 如果你想贡献,请阅读 或 。 查看我的或 . 目录 编程语言/框架/平台 安卓 . AngularJS 角 主干JS C++ C C♯ 。网 Clojure CSS Cucumber 姜戈 EmberJS ...

    高级java工程师笔试题-All-Language-Interview-Question-:所有编程语言面试问答详解

    高级java工程师笔试题全语言-面试-问题- 所有编程语言面试问答详解 作者 拉玛尼·希特什 iOS 开发者 Gmail:- 精彩访谈 请阅读 或 如果您想贡献。 目录 编程语言/框架/平台 安卓 AngularJS 角 主干JS C++ C C# 。网...

Global site tag (gtag.js) - Google Analytics