iOS高级开发面试题整理程序员iOS面试

裁员寒冬的iOS面试经验

2018-12-28  本文已影响84人  宋唐不送糖

贫道刚入职斗鱼深圳4个月,本以为能安然过个好年,突然来的裁员消息重重给了一锤。进城外来务工人员的悲哀,无奈只好硬着头皮找工作,总结一些面试题供广大道友借鉴。也祝愿大家都能进到喜欢的位置。


1、报unrecognized selector sent to instance的Crash之前系统会怎么处理(消息转发机制)?

自己的文章

2、OC的NSError和Swift的Error对象有什么区别?

内部链接

3、哈希表是什么,OC中哪里有用到?

哈希算法详解(腾讯面试官的问题,应用我回答字典,不知道为啥不对)

4、分类的底层实现?

自己的文章

5、数据库使用事务的优缺点?

优点:1、LZ遇到的场景是上百条数据插入数据库时,不使用事务会导致每次操作都要连接数据库,完成操作时间大概在8s。使用事务后操作时间在ms级别。2、当你需要对多个表进行相关性操作时,使用BeginTrans()开启事务,然后操作,如果中间哪个表更新出错了,或者数据有问题,你可以用RollBack()方法在取消之前的相关性操作,如果没有错,那就使用Commit()方法提交你的修改。另外,在这个过程中,所有你改动的内容只对你自己有效,别人不能知道你改了什么,也不能对你正在改的表做修改,直到你提交之后,别人才能修改这些表,检索出你修改过的内容。
缺点:并发问题 解决方案

6、FMDB的原理?

作者有三个篇幅

7、如何保证线程安全?

最简单的方式肯定就是加锁。(面试官还问其他方式,只好找了下资料有系统CAS的方式)
无锁保证线程安全

8、APNS?

流程图

根据图片我们可以概括一下:
1、应用程序注册APNS消息推送。
2、iOS从APNS Server获取devicetoken,应用程序接收device token。
3、应用程序将device token发送给程序的PUSH服务端程序。
4、服务端程序向APNS服务发送消息。
5、APNS服务将消息发送给iPhone应用程序。

9、沙盒目录?

链接

10、Xcode进行编译时会发生什么?

链接

11、单例几种创建方式?

链接

12、UIWebview和WKWebview对比?

文章底部链接不错

13、MD5算法可逆吗?

MD5不可逆的原因是由于它是一种散列函数(也叫哈希函数,哈希函数又称散列函数,杂凑函数,他是一个单向密码体制,即从明文到密文的不可逆映射,只有加密过程没有解密过程,哈希函数可以将任意长度的输入经过变化后得到固定长度的输出,这个固定长度的输出称为原消息的散列或消息映射。 理想的哈希函数可以针对不同的输入得到不同的输出,如果存在两个不同的消息得到了相同的哈希值,那我们称这是一个碰撞),使用的是hash算法,在计算过程中原文的部分信息是丢失了的。一个MD5理论上是可以对应多个原文的,因为MD5是有限多个而原文是无限多个的。MD5码128位2进制数,最多有2^128种可能但是字符串的数量显然是有无数种可能的。

14、ADS和RSA加密?

建议自行搜索资料弄懂对称加密和非对称加密算法,看下原理。

15、Websocket?

链接

16、排序算法?

百度百科重点了解时间复杂度、空间复杂度和原理。

17、autorelease底层原理?

原理

18、SDWebimage缓存图片导致内存一直增加用什么机制处理?

淘汰策略:根据图片使用的次数进行加权,权重高的放在队列前面,将权重低的图片优先剔除出内存。(此策略思路可用在礼物队列方案)

19、打包生成的ipa包里的符号表?

符号表dSYM

20、反编译工具?

常用工具

21、Mach-O文件?

Mach-O结构

上一篇下一篇

猜你喜欢

热点阅读