iOS——最新高级面试题整理(阿里篇)

最近有朋友和同事在找工作,也问了一些相关的iOS技术问题,虽然今时不如往日,但是面试与面试之前的准备还是要做足的,即使我不用面试,但是我还是经常关注着一块的内容,就当回顾技术点和广度学习。最近有个朋友发了一串面试题给我,说是阿里的,听起来好高大上的样子,于是开始看了一下题目,看完后,顿时不知所措……

具体问题

  • 1.dSYM你是如何分析的?
  • 2.多线程有哪几种?你更倾向于哪一种?
  • 3.单例弊端?
  • 4.如何把异步线程转换成同步任务进行单元测试?
  • 5.介绍下App启动的完成过程?
  • 6.比如App启动过慢,你可能想到的因素有哪些?
  • 7.0x8badf00d表示是什么?
  • 8.怎么防止反编译?
  • 9.说说你遇到到的技术难点?
  • 10.说说你了解的第三方原理或底层知识?
  • 11.介绍下内存的几大区域?
  • 12.你是如何组件化解耦的?
  • 13.runtime如何通过selector找到对应的IMP地址
  • 14.runloop内部实现逻辑?
  • 15.你理解的多线程?
  • 16.GCD执行原理?
  • 17.怎么防止别人动态在你程序生成代码
  • 18.YYAsyncLayer如何异步绘制?
  • 19.优化你是从哪几方面着手?

看完之后我相信你知道我为什么,顿时不知所措。

其实很多东西我们都知道,或者能说出一二,又或者用过,研究过,
但是仔细回想一下,发现大部分问题的大部分答案或者内容都已经忘得差不多了

于是网上寻找并结合自己实际理解整理了一下

这是知乎上的部分答案:

阿里面试题

如果你想寻找各大互联网公司的面试题,请戳这里

各大互联网公司的面试题

1.dSYM你是如何分析的?

Xcode编译项目后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件——称为符号表文件

http://www.cnblogs.com/quansir/p/5539682.html
http://blog.csdn.net/openglnewbee/article/details/38824139

2.多线程有哪几种?你更倾向于哪一种?

http://www.cocoachina.com/ios/20150731/12819.html

3.单例弊端?

由于单例模式中没有抽象层,因此单例类的扩展有很大的困难。
单例类的职责过重,在一定程度上违背了“单一职责原则”。
因为单例类既充当了工厂角色,提供了工厂方法,同时又充当了产品角色,包含一些业务方法,将产品的创建和产品的本身的功能融合到一起。
现在很多面向对象语言(如Java、C#)的运行环境都提供了自动垃圾回收的技术,因此,如果实例化的共享对象长时间不被利用,
系统会认为它是垃圾,会自动销毁并回收资源,下次利用时又将重新实例化,这将导致共享的单例对象状态的丢失。

4.如何把异步线程转换成同步任务进行单元测试?

http://www.cnblogs.com/goodboy-heyang/p/5277910.html

5.介绍下App启动的完成过程?

https://icocos.github.io/2017/06/28/iOS%E2%80%94%E2%80%94App%E6%95%B4%E4%B8%AA%E5%90%AF%E5%8A%A8%E8%BF%87%E7%A8%8B%E5%88%86%E6%9E%90/

6.比如App启动过慢,你可能想到的因素有哪些?

https://www.zhihu.com/question/19823199
http://blog.csdn.net/Tencent_Bugly/article/details/77363817?locationNum=1&fps=1

7.0x8badf00d表示是什么?

异常代码 0x8badf00d 指示应用程序已终止的 iOS 因为看门狗超时发生。
应用程序时间太长,启动、 终止,或对系统事件作出响应。
一个常见的原因做在主线程上的同步联网。无论操作是线程 0 上: 
需要搬到后台线程,或处理方式不同,所以,它不会阻止在主线程。

http://www.cnblogs.com/smileEvday/p/Crash1.html
https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-APPINFO

8.怎么防止反编译?

http://blog.sina.com.cn/s/blog_134451adb0102wduz.html
http://blog.sina.com.cn/s/blog_12f70aa790102vfd9.html

9.说说你遇到到的技术难点?

http://blog.csdn.net/johnny_nass_hu/article/details/50854143
http://www.cnblogs.com/ywr-zf/p/5917772.html

10.说说你了解的第三方原理或底层知识?

https://github.com/Draveness/analyze

11.介绍下内存的几大区域?

http://www.jianshu.com/p/5054c6932bdb
https://www.baidu.com/link?url=CilnOv5mL3MVF50415d0SjkFgRpq_iNaZ44_Jiu1_1AQIi_qFqLMzvaRzqVoIUyI&wd=&eqid=f8f0a387000453cb0000000659f066f9
http://www.cnblogs.com/chenjiangxiaoyu/p/7723154.html

12.你是如何组件化解耦的?

http://blog.csdn.net/GGGHub/article/details/52713642
https://www.2cto.com/kf/201611/552444.html

13.runtime如何通过selector找到对应的IMP地址

http://blog.csdn.net/dp948080952/article/details/52437451

14.runloop内部实现逻辑?

http://www.jianshu.com/p/1154df5d866f
http://www.cocoachina.com/ios/20150601/11970.html

15.你理解的多线程?

http://www.jianshu.com/p/5e96759a941b

16.GCD执行原理?

http://www.jianshu.com/p/5840523fb3ea
http://www.cocoachina.com/bbs/read.php?tid-459704.html

17.怎么防止别人动态在你程序生成代码

http://ruixiazun.blog.163.com/blog/static/9068791820141173588694/

18.YYAsyncLayer如何异步绘制?

http://ios.jobbole.com/86878/
http://www.cnblogs.com/sunshine-anycall/p/7674021.html?utm_source=tuicool&utm_medium=referral

19.优化你是从哪几方面着手?

https://zhidao.baidu.com/question/181762176405714684.html
https://www.2cto.com/kf/201505/401059.html
https://zhidao.baidu.com/question/563610078113818364.html
http://cache.baiducontent.com/c?m=9d78d513d9981cee4fede5697b17c0171e43f0132ba4a4027ea4843995732c40506793ac56510775d6d27d1716df4f4b9cf12173471451b18cb98e5ddccb85585e9f573e671df65662d60edfbd5154c037e75efeae69f0ccf525e2a9c5d2af4322b944737e94b7cb040f4e8c29b2033090bb840d501a07ba9a683eac053673d83440c116a4bf2f2c1a8aa7db5b4e942dd3611397ad&p=8e6ac64ad4d000fa08e2977e085c8e&newp=8f7f8f15d9c041aa0db8cf2d0214c1231610db2151d4da136b82c825d7331b001c3bbfb42324150ed2c77f6507ad485cebf232773c0127a3dda5c91d9fb4c57479dd726f&user=baidu&fm=sc&query=iOS+%D3%C5%BB%AF%C4%E3%CA%C7%B4%D3%C4%C4%BC%B8%B7%BD%C3%E6%D7%C5%CA%D6%3F&qid=82c11955000459a8&p1=2

由于时间的原因,暂时先整理到这里,只是网上寻找了一些相关而且还不错的链接,

后期会专门抽时间整理这些问题

望谅解……
坚持原创技术分享,您的支持将鼓励我继续创作!