阅读理解iOS DeveloperiOS

2017-3面试题的一点记录

2017-03-06  本文已影响222人  806349745123

最近去面试了4家公司(1-3年iOS岗位),简单记录一下被问到的问题


1、SDWebImage的基本原理流程(涉及到图片的存储,下载管理和删除这几个方面的流程)

2、MJRefresh的原理(Runtime+KVO,contentoffset和contentInset)

3、UITableView的优化(我分别从cell和tableView两个角度回答)

4、已知2个view,如何找到他们的共同父view(模仿选择排序?)

5、NSTimer能否放到子线程,如何让NSTimer更准确(面试官说应该把timer放在单独子线程上,主线程可能会有阻塞导致计时不准,这里又可能会被问到线程和runloop的关系)

6、CALayer的渲染过程,离谱渲染的导致原因

7、NSUserdefaults原理(这个我不懂,问:如果让你自己写一个类似的功能,你打算怎么实现)

8、数据持久化(各种方法的优缺点)

9、CoreData、SQLite使用

10、weak关键字(把指针置为nil的过程)

11、内存管理机制,autorelease的原理(可以结合Runloop一起回答)

12、OC的消息转发机制(结合OC对象结构一起回答?)

13、Runloop的基本原理

14、Runtime的基本原理,Swizzle Method

15、SEL和Method的关系

16、HTTP的GET/POST请求的区别,三(四)次握手;HTTP/HTTPS的区别

17、TCP/UDP区别,使用场景

18、Scoket的原理和作用

19、instruments 工具的使用

20、各种基础数据结构、通用算法(排序居多,有的还会问到排序用到的数学原理)

21、多线程(会问到thread和runloop的关系,GCD和NSOpertaionQueue的关系(后者是前者的高级抽像))

22、.DSYM文件有什么用(存储了16进制的函数地址映射)

我们在分析Crash前需要将这些十六进制地址转化成方法名称和行数,改过程被称为符号化。

符号化Crash日志需要获取对应的应用二进制文件以及生成二进制文件时产生的 .dSYM 文件(符号表)。必需完全匹配才行。否则,日志将无法被完全符号化。

Xcode编译项目后,会得到同名的 dSYM 文件(符号表),dSYM 文件(符号表)是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件,位于 /Users/<用户名>/Library/Developer/Xcode/Archives 目录下,对于每一个发布版本我们都很有必要保存对应的 Archives 文件。
参考文章

23、类扩展和分类

上一篇下一篇

猜你喜欢

热点阅读