登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

查看: 711|回复: 7

从事iOS研发5年的面经——希望对你们有帮助

[复制链接]

5

主题

9

帖子

980

金钱

代码手工艺人

Rank: 4

发表于 2018-5-29 14:45:47 | 显示全部楼层 |阅读模式




今天和大家分享一下,我从事iOS开发5年的面试心得。
大大小小参加过不下30+公司的面试,其中不乏BAT、TMD等一线互联网公司,总结一下,发现大厂招聘都有一个共性。
对技术的要求很全面,有些同学认为iOS掌握了基础的UI、网络、内存、多线程等等就够了,其实要想更好的应付iOS的面试,这些是远远不够的。比如对RunTime底层实现机制、RunLoop的用户态到核心态切换逻辑,设计模式、架构以及框架的考察,再比如,可能是让很多同学头疼的算法问题,然而算法问题是一线大厂的必考内容。所以我们需要学习和掌握的还有很多。
在这里和大家分享下我总结的iOS技术知识体系,大致可以分为以下几个部分:
一、UI视图
其中包括事件传递、视图响应、UI布局、绘制、Tableview重用机制的理解等基本技术点,也包括如离屏渲染、流式页面的性能优化、异步绘制、UI渲染机制等偏底层技术的考察。
二、Objective-C语言
其中包括如KVO、KVC、分类、扩展、关联对象等系统实现原理和机制,以及NSNotification、属性关键字等相关技术点的考察。
三、Runtime
可以说是中级以及以上工程师的必备技术要求,面试官往往会考察大家对对象、类对象、原类对象的理解、消息传递机制、消息转发流程、Method-Swizzling、ISA-swizzling、动态方法解析、动态添加方法等。
四、内存管理
可以说是高阶考点,也是难点,中高级及以上无法回避的问题。考察内容基本包括:weak自动置nil、ARC、MRC、自动释放池的实现原理、循环引用、引用计数管理思想等。
五、Block
iOS当中非常重要的OC语言特性,自然也是面试常考点。其中包括截获变量特性、__Block关键字、Block的本质、Block的内存管理和循环引用等。
六、多线程
面试高级考点。iOS常见的多线程技术NSOperation&NSOperationQueue 、NSThread、以及快用烂了的GCD;那么面试过程当中,往往会结合实际代码考察同学们对多线程技术的掌握深度,包括对于常见锁的考察,如NSLock、递归锁、自旋锁、条件锁等等。
七、RunLoop
相信很多同学知道RunLoop可以有事做事,没事休息?面试当中的考察可能要更深入些,RunLoop为什么会有事做事没事休息,系统是怎样实现的。哈哈,是不是有难度了,再比如怎样实现一个常驻线程、RunLoop和线程的关系是怎样的等等。
八、网络
其中包括HTTP相关的中间人攻击、HTTPS的连接建立流程、对称加密、非对称加密、DNS劫持、TCP的滑动窗口协议、可靠传输是怎样保证的,以及TCP的慢启动特点,Session/Cookie的区别等等,这些都是面试中高级岗位必考问题。
九、设计模式
其中包括常见的软件设计原则,责任链、适配器、桥接、命令、单例、策略模式等等,不要告诉我你只是看了几本书,面试官会让你结合实际业务场景,现场考察你对设计模式的运用和理解的。
十、架构/框架
其中包括常见的如怎样设计图片缓存框架、网络框架,客户端的整体架构怎样实现,常见的解耦方式有哪些,多数同学都知道OPENURL是一种解耦方案,那依赖注入这种方式可能iOS的同学会感到陌生,这也是面试官期许的答案。
十一、算法
其中包括BAT、TMD经常考察的有序数组归并、链表反转、字符串反转、大数相加算法思想等等,这部分变化就很多了。
十二、第三方
常见的AFNetworking、SDWebImageView、Reactive Cocoa、React Native等
大厂考察的深度也是令人眼前一亮的,下面列举几个高阶难点问题:
1. UI视图的事件传递机制是如何实现的?
2. UI绘制原理是怎样的?
3. 请利用TableView的重用机制实现一个字母索引条。
4. 什么是离屏渲染?
5. 什么是ARC? (可能有很多同学还不清楚ARC是编译器和Runtime的协作结果)
6. AutoReleasePool的实现机制。(总结一句话:是以栈为结点构成的双向链表结构。)
7. 循环引用相关的考察,NSTimer如果重复调用怎样解除循环引用?
8. __block关键字是否可以解决循环引用?
9. Block的本质是什么?
10. Block的截获变量的特性应该怎样解释,Block是怎样产生循环引用的?
1”);          [selfperformSelector selector(printLog)         withObject :nilafterDelay :0];NSLog(@”3”);});- (void)printLog{NSLog(@”2”);}




以上10道面试题,同学们看看自己能回答出多少个?其实我想说有的时候你的答案在你理解是正确的,在面试官看来可能很肤浅(原谅我这么直白)
答案:由于答案太多,我做了一个PDF文档,由于不能上传文件,需要答案可以加小编的qq交流群776598941,在里面获取文档,也欢迎招聘者,找工作的来,提供一个更大的平台

291

主题

668

帖子

1401

金钱

手工艺人

发表于 2018-5-29 14:45:49 | 显示全部楼层
我是来学习的

235

主题

590

帖子

1067

金钱

手工艺人

发表于 2018-5-29 14:45:53 | 显示全部楼层
感谢分享,楼主V5~

306

主题

683

帖子

2388

金钱

手工艺人

发表于 2018-5-29 14:46:14 | 显示全部楼层
学习...学习...

17

主题

7260

帖子

2018

金钱

手工艺人

发表于 2018-5-29 14:46:54 | 显示全部楼层
写的真的很不错

21

主题

7231

帖子

3202

金钱

手工艺人

发表于 2018-5-29 14:46:57 | 显示全部楼层
code4app好的代码demo真的很多,谢谢啦~

293

主题

653

帖子

2378

金钱

手工艺人

发表于 2018-5-29 14:47:22 | 显示全部楼层
mark,收藏了

2

主题

25

帖子

937

金钱

代码手工艺人

Rank: 4

发表于 2019-4-29 15:03:42 | 显示全部楼层
学习学习学习
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

每日头条

通过邮件订阅最新 Code4App 信息
上一条 /4 下一条

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表