2017年5月iOS招人心得(附面试题)


简书博客已经暂停更新,想看更多技术博客请到:


2018.08.31更新:

笔者最新有关面试的两篇文章:

2018年 iOS 面试心得
出一套 iOS 高级面试题

2017.06.12更新:
要答案的朋友比我想象的要多,这些题的答案我并没有特意花时间整理好,因为给出答案并不在我的原计划之内,但是还请各位理解一下我个人的时间安排。
本文中的面试题在网上都比较容易搜的到,而且有些题目来自于ChenYilong/iOSInterviewQuestions

如果在时间和排期允许的情况下我一定会告知大家出一份答案的。谢谢理解!


配图来自:https://pixabay.com

就在上个月中旬,技术老大让我招两个1-2年的iOS开发,把简历的筛选和第一轮技术面试的任务交给了我。

从筛选第一份简历,准备面试题,到成功招到两个人一共花了两个星期多一点,总体来说还是比较顺利的。两位通过者都比较稳重踏实,而且对技术也比较有追求。这也可能和我筛选简历比较谨慎有关系,这次筛选简历所花费的精力是不比面试花费的少的。

虽然时间跨度不是很长,但是毕竟是第一次,所以有些感触,想总结出来分享给大家。这篇总结分为两个部分:

  • 第一部分是我当时准备的面试题
  • 第二部分是我的心得

我重点在本文的第二部分说一下这次面试别人的心得体会。而关于第一部分的面试题,文中不提供答案(因为不是本文的重点),有想讨论的欢迎在评论区留言。

第一部分:面试题


注意,下面这些题只是我准备的题库。在实际面试的时候我会根据面试者的水平抽出相应的题目来出的。

技术

基础

  1. 为什么说Objective-C是一门动态的语言?
  2. 讲一下MVC和MVVM,MVP?
  3. 为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?
  4. 属性的实质是什么?包括哪几个部分?属性默认的关键字都有哪些?@dynamic关键字和@synthesize关键字是用来做什么的?
  5. 属性的默认关键字是什么?
  6. NSString为什么要用copy关键字,如果用strong会有什么问题?(注意:这里没有说用strong就一定不行。使用copy和strong是看情况而定的)
  7. 如何令自己所写的对象具有拷贝功能?
  8. 可变集合类 和 不可变集合类的 copy 和 mutablecopy有什么区别?如果是集合是内容复制的话,集合里面的元素也是内容复制么?
  9. 为什么IBOutlet修饰的UIView也适用weak关键字?
  10. nonatomic和atomic的区别?atomic是绝对的线程安全么?为什么?如果不是,那应该如何实现?
  11. UICollectionView自定义layout如何实现?
  12. 用StoryBoard开发界面有什么弊端?如何避免?
  13. 进程和线程的区别?同步异步的区别?并行和并发的区别?
  14. 线程间通信?
  15. GCD的一些常用的函数?(group,barrier,信号量,线程同步)
  16. 如何使用队列来避免资源抢夺?
  17. 数据持久化的几个方案(fmdb用没用过)
  18. 说一下AppDelegate的几个方法?从后台到前台调用了哪些方法?第一次启动调用了哪些方法?从前台到后台调用了哪些方法?
  19. NSCache优于NSDictionary的几点?
  20. 知不知道Designated Initializer?使用它的时候有什么需要注意的问题?
  21. 实现description方法能取到什么效果?
  22. objc使用什么机制管理对象内存?

中级

Block

  1. block的实质是什么?一共有几种block?都是什么情况下生成的?
  2. 为什么在默认情况下无法修改被block捕获的变量? __block都做了什么?
  3. 模拟一下循环引用的一个情况?block实现界面反向传值如何实现?

Runtime

  1. objc在向一个对象发送消息时,发生了什么?
  2. 什么时候会报unrecognized selector错误?iOS有哪些机制来避免走到这一步?
  3. 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?
  4. runtime如何实现weak变量的自动置nil?
  5. 给类添加一个属性后,在类结构体里哪些元素会发生变化?

RunLoop

  1. runloop是来做什么的?runloop和线程有什么关系?主线程默认开启了runloop么?子线程呢?
  2. runloop的mode是用来做什么的?有几种mode?
  3. 为什么把NSTimer对象以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)添加到主运行循环以后,滑动scrollview的时候NSTimer却不动了?
  4. 苹果是如何实现Autorelease Pool的?

类结构

  1. isa指针?(对象的isa,类对象的isa,元类的isa都要说)
  2. 类方法和实例方法有什么区别?
  3. 介绍一下分类,能用分类做什么?内部是如何实现的?与该类原有方法的名称相同的时候,为什么原有方法会失效?
  4. 运行时能增加成员变量么?能增加属性么?如果能,如何增加?如果不能,为什么?
  5. objc中向一个nil对象发送消息将会发生什么?(返回值是对象,是标量,结构体)

高级

  1. UITableview的优化方法(缓存高度,异步绘制,减少层级,hide,避免离屏渲染)
  2. 有没有用过运行时,用它都能做什么?(交换方法,创建类,给新创建的类增加方法,改变isa指针)
  3. 看过哪些第三方框架的源码?都是如何实现的?(如果没有,问一下多图下载的设计)
  4. SDWebImage的缓存策略?
  5. AFN为什么添加一条常驻线程?
  6. KVO的使用?实现原理?(为什么要创建子类来实现)
  7. KVC的使用?实现原理?(KVC拿到key以后,是如何赋值的?知不知道集合操作符,能不能访问私有属性,能不能直接访问_ivar)

项目

  1. 有已经上线的项目么?
  2. 项目里哪个部分是你完成的?(找一个亮点问一下如何实现的)
  3. 开发过程中遇到过什么困难,是如何解决的?

学习

  1. 遇到一个问题完全不能理解的时候,是如何帮助自己理解的?举个例子?
  2. 有看书的习惯么?最近看的一本是什么书?有什么心得?
  3. 有没有使用一些笔记软件?会在多平台同步以及多渠道采集么?(如果没有,问一下是如何复习知识的)
  4. 有没有使用清单类,日历类的软件?(如果没有,问一下是如何安排,计划任务的)
  5. 平常看博客么?有没有自己写过?(如果写,有哪些收获?如果没有写,问一下不写的原因)

有关技术类的问题可以在评论区留言,我重点说一下这轮面试的心得和体会。

第二部分:心得


面试者千万不要答非所问

如果让我选一个让面试官觉得印象减分的点,答非所问应该是首当其冲的。

面试者一定要知道面试官问的点是什么。

  • 如果在知道面试官问的点,但是自己却不知道答案的时候,可以提出思路,思考过程。其实有几次面试者在我的引导下很容易就把答案说出来了,认清问题的点是解决问题的一半。
  • 如果没有理解好面试官问的问题,一定要事先和面试官确认好。

其实这也属于沟通能力的一点:如果不能保证和对方沟通内容的一致性,自己弄个filter把对方的话都曲解了,以后合作的时候又怎能保证沟通好呢?

面试者一定不要来得太早

这里说的来得太早,是来得太早并告知面试官自己已经来了。

因为在约定好的面试时间之前,往往面试官还有别的事情在做,如果他知道你来的很早,就可能会扰乱他的计划。有一位面试者早来了1个小时,结果把我们的面试计划打乱了,而且正好是我的第一次面试,所以真的是有点措手不及。

求职者和公司定下来的时间属于一个约定,约定是要遵守的。而且遵守约定同样也是对对方的尊重。如果入职之前都没能把握好,入职之后又如何能保证把握好呢?

实践与理论的脱节,让人很不安

能做出来项目,但是基础知识很薄弱

几乎每位面试者都能给我展示他做的一些app,虽然没有很难的功能,但也都算是有板有眼。可让我比较意外的是,虽然能做出有模有样的app,但当我问到很多基础的问题的时候却答不上来,比如属性和成员变量的区别,属性的默认关键字,Designated Initializer的概念等等。。

这不禁让我怀疑他们的代码的稳定性,更怀疑他们治学,做技术的态度。

虽说技术活需要实践的磨练,但和理论脱节的技术是钻不深的。可能有人会说我的面试题过于理论,实际中用不到。但有些时候,在实际开发中遇到的一些问题往往就是因为一些很基本的东西没有弄清导致的,相信你我都深有体会。

而且,我们都知道技术的提升是阶梯式的。什么是阶梯式的呢?就是可能我们会有比较长的时间才会有一个突破。但这个突破来的有多快,提升的有多高,是跟平时每个细小知识点的掌握程度是分不开的。

因为知识也是有复利效应的,准确地掌握越多的知识点,在以后的学习过程中,这些知识点相互之间想成的积极作用会越来越大:对新知识的理解更快,对问题的定位会更准,解决问题的方法也会越多。相反,如果你每个问题都得过且过,这些结果的复合作用就会导致你今后很难会有所突破了。

真的可能被简历骗到

上家的薪资很高,但是实际能力很不符

有一位面试者在简历里号称上一个工作拿了15k,但当我问到NSString属性使用strong还是copy作为关键字的时候他说是strong,而且用copy和strong的区别也不清楚,甚至连delegate都拿不准使用strong还是weak,我就有些奇怪了。

看技术博客和技术书籍的人还是很少的

只依赖于公司里的项目应该是不够的,毕竟不是每个公司里都有上乘的代码和技术

面试了大概20个人,但是真正有看过技术博客和技术书籍的真的不多,更别提Github了。不过其中一位面试通过者是有github账号的,并且有几个小项目,印象非常好,加了不少分。

我相信在这一行的未来,简历里面github账号和博客绝对会越来越受重视:

  • 一方面简历真的是应接不暇,而且同时千篇一律,很难找出亮点。
  • 另一方面,如果可以把自己的代码和成长展示给招聘公司,就会使得自己的能力在公司面前变得更加纯粹和透明,更有助于找到适合你自己的公司。

以上就是我上个月的面试心得,希望大家多交流,有说的不对的地方还请多指正。

本篇已经同步到个人博客:传送门


本文已在版权印备案,如需转载请访问版权印。48422928

获取授权

-------------------------------- 2018年7月17日更新 --------------------------------

注意注意!!!

笔者在近期开通了个人公众号,主要分享编程,读书笔记,思考类的文章。

  • 编程类文章:包括笔者以前发布的精选技术文章,以及后续发布的技术文章(以原创为主),并且逐渐脱离 iOS 的内容,将侧重点会转移到提高编程能力的方向上。
  • 读书笔记类文章:分享编程类思考类心理类职场类书籍的读书笔记。
  • 思考类文章:分享笔者平时在技术上生活上的思考。

因为公众号每天发布的消息数有限制,所以到目前为止还没有将所有过去的精选文章都发布在公众号上,后续会逐步发布的。

而且因为各大博客平台的各种限制,后面还会在公众号上发布一些短小精干,以小见大的干货文章哦~

扫下方的公众号二维码并点击关注,期待与您的共同成长~

公众号:程序员维他命
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,036评论 29 470
  • 1,认识运营 运营的工作是做什么的? 运营是打杂的,什么都会一点,什么都不精练。运营的就是发发公众号,写文章发微信...
    曾维清阅读 579评论 3 4
  • 接近一周多没有提笔了,一直不想为了写而写,一直想积累阅读量,写出更好的出来。最近来到了一个陌生的城市,这个城市很大...
    家书飞鸽阅读 281评论 0 2
  • 这是一个老师问小盆友的问题:如何在白纸上画雪? 幼儿园小艾老师让小盆友每人画一幅画,羊羊交给老师一张白纸。老师问羊...
    西泰阅读 1,439评论 3 4