最近有朋友和同事在找工作,也问了一些相关的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启动的完成过程?
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
由于时间的原因,暂时先整理到这里,只是网上寻找了一些相关而且还不错的链接,
后期会专门抽时间整理这些问题