2017-3面试题的一点记录

最近去面试了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、数据持久化(各种方法的优缺点)

  • plist文件(属性列表)
  • preference(偏好设置)
  • NSKeyedArchiver(归档)
  • SQLite 3
  • CoreData

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、类扩展和分类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,220评论 30 472
  • 1,NSObject中description属性的意义,它可以重写吗?答案:每当 NSLog(@"")函数中出现 ...
    eightzg阅读 4,198评论 2 19
  • 1.OC的类可以多重继承吗?可以实现多个接口吗?要想实现类似多重继承如何实现?答:OC不可以实现多重继承。可以实现...
    欧辰_OSR阅读 2,048评论 0 30
  • OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性...
    克鲁德李阅读 458评论 0 0
  • OC的理解与特性OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性(...
    LIANMING_LI阅读 537评论 0 0