前言:面试
金秋九月,互联网招聘高潮已经来临!相信做为面试官的你,估计开始准备招聘要求或者已经在招聘了!这一篇文章主要想和各位面试官交流一下:咱们应该制定一份什么样的招聘要求,才是比较合适的?(* ̄︶ ̄)算法
iOS面试须要注意编程
1:面试态度设计模式
咱们在招聘的时候,面试官常常会犯一个问题:各类碾压求职者!数组
我不知道你招聘这一天发生了什么事情,心情好很差?可是我但愿当你去面试的求职者的时候,保持愉悦,给予面试者应该的 -- 善意!安全
你面试表明你的公司,你的言谈举止都直接影响外界对贵公司的感觉性能优化
同时做为一个管理者的你,成功和愉悦的面试过程也应该是你此刻最但愿的!网络
可能如今他还只是求职者,可是兴许过段时间就是你工位旁边的同事!此刻的善意对你后面愉悦的工做的环境大有裨益!数据结构
做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个个人iOS交流群:638302184,无论你是小白仍是大牛欢迎入驻,分享BAT,阿里面试题、面试经验,讨论技术, 你们一块儿交流学习成长!
若是他没法成为你的同事,大可没必要为此纠结,茫茫人海,你此刻的善意,将来在某一刻一定可以兑换!多线程
固然也会有让你不高兴的求职者,那么就让他去吧!茫茫人海,江湖再见,兴许还能微笑而过!
2:面试题注意事项
咱们不少iOS面试官在招聘的时候,不少都是直接在网上找一份iOS面试题就开始面试了!(😄偷懒😄)而我以为这是一个很错误的作法。网上不少面试题的确不错,可是这样招聘过来的iOS开发人员不必定是很是优秀的,多是背的面试题,也多是贵公司的面试题泄漏,致使iOS求职者表现很是好!
1:面试题能够网上获取,可是我但愿面试官认真对待,但愿可以结合大家的公司实际开发,落地到面试题 (这样也就避免人家吐槽,面试造🚀,开发拧🔩)
2:面试题能够适当变更。根据求职者的简历状况,来变更面试题!有的简历不错的,能够适当调难一些。恰好在你的招聘及格线的求职者能够适当下降要求(毕竟要去不同,后面薪资以及培养方向也会不同)
3:根据贵公司的情况也考虑:要不要笔试!笔试无好坏,只是一轮刷选,可以帮你适当刷掉一部分不符合你要求的iOS开发人员!可是贵公司招聘状况很不理想,我以为能够反思:是否是笔试太难,笔试题目过多...
3:面试流程
我我的比较反感的是:招聘岗位不多,却叫去不少面试者面试!这个是一种比较严重不尊重求职的一种行为!其实也是对你的一种损失 联系过多面试者来面试,这样的作法你既浪费了求职者的时间,同时也会形成面试成本飙升
但愿面试官拿到简历,请你快速刷选出你合适中意的简历,而后分批安排面试! 对你中意的iOS 高级求职者!我但愿可以多几回面试流程。一个真正的iOS高级开发对于公司来讲很是重要,但愿经过几个流程由不一样的岗位 leader 写出评分,综合考虑, 切记盲目 同时这样正规的流程也能让求职者感觉到贵公司的重视,以及入职之后的对于工做的重视!
iOS 高级面试内容
可能众多面试官仍是比较关心面试内容,我这里从
iOS基础
Runtime相关
网络&多线程
数据结构&算法
架构设计
性能优化
等这些方面,给各位面试官准备了一些题,但愿可以帮助到你
iOS基础
1:讲讲你对noatomic & nonatomic的理解
2:被 weak 修饰的对象在被释放的时候会发生什么?是如何实现的?知道sideTable 么?里面的结构能够画出来么?
3:block 用什么修饰?strong 能够?
4:block 为何可以捕获外界变量? __block作了什么事?
5:谈谈你对事件的传递链和响应链的理解 (这个面试题,若是求职者可以回答一些实际开发相关的处理,不仅是简单的概念,予以加分)
6:谈谈 KVC 以及 KVO 的理解?
7:RunLoop 的做用是什么?它的内部工做机制了解么?
8:苹果是如何实现 autoreleasepool的?
9:谈谈你对 FRP (函数响应式) 的理解,延伸一下 RxSwift 或者 RAC!
10:平时开发有没有玩过 Instrument ?
分析:这里的内容很是有意思,对于一个iOS高级开发人员,我以为还有颇有必要掌握的!尤为开发3-5年,若是没有掌握这些内容我以为是不合格的
在一些合适的地方能够进行延伸!
第二题,第一问是关于 weak 这个面试是很是经典的,只要是个iOS开发都能回答一点。可是后面部分就须要他的学习能力了!
第三题和第四题,侧击一下 MRC 一个资深4-5年开发经验或多或少都应该要知道一些 MRC 相关的知识!顺即可以摸摸求职者的探索能力
第五题和第六题:我以为若是求职者回答了一些实际开发相关以及文档能力的应该予以加分
第七题、第八题、第九题以及第十题都是能够拓展更多的内容!
Runtime
1:什么是 isa,isa 的做用是什么?
2:一个实例对象的isa 指向什么?类对象指向什么?元类isa 指向什么?
3:objc 中类方法和实例方法有什么本质区别和联系?
4:load 和 initialize 的去呗?
5:_objc_msgForward 函数是作什么的?直接调用会发生什么问题?
6:简述下 Objective-C 中调用方法的过程
7:可否想向编译后获得的类中增长实例变量?可否向运行时建立的类中添加实例变量?为何?
8:谈谈你对切面编程的理解
分析:Runtime 这个模块iOS面试不管初中高都会面试。我以为这个模块不光只是仅仅问问关于知识点内容,我更新想要听到求职者在这里面的爬坑探索辛历路程!
网络&多线程
1:HTTP的缺陷是什么?
2:谈谈三次握手,四次挥手!为何是三次握手,四次挥手?
3:socket 链接和 Http 链接的区别
4:HTTPS,安全层除了SSL还有,最新的? 参数握手时首先客户端要发什么额外参数
5:HTTPS是什么?握手过程,SSL原理,非对称加密了解多少
6:何时POP网路,有了 Alamofire 封装网络 URLSession为何还要用Moya ?
7:如何实现 dispatch_once
8:可否写一个读写锁?谈谈具体的分析
9:何时会出现死锁?如何避免?
10:有哪几种锁?各自的原理?它们之间的区别是什么?最好能够结合使用场景来讲
分析:这个模块多是通常开发人员的盲区。由于通常开发真心不必去操心这么多!面试官大家能够挑去拷问就OK,面试过程当中不能对答如流也是正常!固然若是可以回答上来应该加分!
数据结构
1.数据结构的存储通常经常使用的有几种?各有什么特色?
2.集合结构 线性结构 树形结构 图形结构
3.单向链表 双向链表 循环链表
4.数组和链表区别
5.堆、栈和队列
6.输入一棵二叉树的根结点,求该树的深度?
7.输入一课二叉树的根结点,判断该树是否是平衡二叉树?
算法
1.时间复杂度
2.空间复杂度
3.经常使用的排序算法
4.字符串反转
5.链表反转(头差法)
6.有序数组合并
7.查找第一个只出现一次的字符(Hash查找)
8.查找两个子视图的共同父视图
9.无序数组中的中位数(快排思想)
10.给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
分析:这个模块是绝大部分开发人员的软肋!这个模块是最能测试求职者思惟能力的!可是我不建议面试官直接让求职者手写 在那样的面试紧张环境,手写数据结构或者一些算法代码,是很是有挑战的!思惟到我以为差很少!
架构设计
1:设计模式是为了解决什么问题的?
2:看过哪些第三方框架的源码,它们是怎么设计的?
3:能够说几个重构的技巧么?你以为重构适合何时来作?
4:开发中经常使用架构设计模式你怎么选型?
5:你是如何组件化解耦的?
分析:架构设计这一层对于一个iOS中高级开发人员来讲。这一块那是他必需要去思考和感觉总结的!若是这位求职者开发4-5年了,一直都在作应用层界面开发,那么想必他将来的职业晋升是已经落后了的!面试官不妨在这一个模块单独设计成一面,就和求职者一块儿交流讨论。毕竟这些思惟的设计,也许可以给面试官带来一些不同的东西!😊
性能优化
1:tableView 有什么好的性能优化方案?
2: 界面卡顿和检测你都是怎么处理?
3:谈谈你对离屏渲染的理解?
4:如何下降APP包的大小
5:平常如何检查内存泄露?
6:APP启动时间应从哪些方面优化?
分析:如今APP性能优化以及成为iOS中高级开发人员必需要去关系的东西!这一块我我的建议结合实际开发去和求职者交流。而不是仅仅停留在知识点问答,由于没有实际开发能力的性能优化都只是纸上谈兵!
总结
一个优秀的iOS中高级开发 = iOS技术 + 学习能力 + 态度 其中态度和学习能力也是我在面试别人过程当中很是看重的!哪怕你技术目前不好,可是你有谦虚诚恳的态度,优秀的学习能力。我也愿意带你!
很是感谢你阅读到了这里!前面都是本人的建议,具体你的实施仍是须要你根据状况调整!预祝你收获一个优秀的同事!
做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个个人iOS交流群:638302184,无论你是小白仍是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 你们一块儿交流学习成长!