iOS基础面试题部分
1. 为什么说Objective-C是一门动态的语言?
2. 讲一下MVC和MVVM,MVP?
3. 为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?
4. 属性的实质是什么?包括哪几个部分?
5. 属性默认的关键字都有哪些?@dynamic关键字和@synthesize关键字是用来做什么的?
6. NSString为什么要用copy关键字,如果用strong会有什么问题?(注意:这里没有说用strong就一定不行。使用copy和strong是看情况而定的)
7. 如何令自己所写的对象具有拷贝功能?
8. 可变集合类 和 不可变集合类的 copy 和 mutablecopy有什么区别?如果是集合是内容复制的话,集合里面的元素也是内容复制么?
9. 为什么IBOutlet修饰的UIView也适用weak关键字?
10. nonatomic和atomic的区别?atomic是绝对的线程安全么?为什么?如果不是,那应该如何实现?
11. UICollectionView自定义layout如何实现?
12. 用StoryBoard开发界面有什么弊端?如何避免?
13. 进程和线程的区别?同步异步的区别?并行和并发的区别?
14. 线程间通信?
15. GCD的一些常用的函数?(group,barrier,信号量,线程同步)
16. 如何使用队列来避免资源抢夺?
17. 数据持久化的几个方案(fmdb用没用过)
18. 说一下AppDelegate的几个方法?从后台到前台调用了哪些方法?第一次启动调用了哪些方法?从前台到后台调用了哪些方法?
19. NSCache优于NSDictionary的几点?
20. 知不知道Designated Initializer?使用它的时候有什么需要注意的问题?
21. 实现description方法能取到什么效果?
22. objc使用什么机制管理对象内存?
不用担心答案文章尾处,自行获取!
iOS中级面试题部分
Block
1. block的实质是什么?一共有几种block?都是什么情况下生成的?
2. 为什么在默认情况下无法修改被block捕获的变量? __block都做了什么?
3. 模拟一下循环引用的一个情况?block实现界面反向传值如何实现?
Runtime
1.Category 的实现原理?
2.isa指针的理解,对象的isa指针指向哪里?isa指针有哪两种类型?
3.Objective-C 如何实现多重继承?
4.runtime 如何实现 weak 属性?
5.讲一下 OC 的消息机制
6.runtime具体应用
7.runtime如何通过selector找到对应的IMP地址?
8.简述下Objective-C中调用方法的过程
9.load和initialize的区别
10.怎么理解Objective-C是动态运行时语言。
类结构
1. isa指针?(对象的isa,类对象的isa,元类的isa都要说)
3. 介绍一下分类,能用分类做什么?内部是如何实现的?它为什么会覆盖掉原来的方法?
4. 运行时能增加成员变量么?能增加属性么?如果能,如何增加?如果不能,为什么?
5. objc中向一个nil对象发送消息将会发生什么?(返回值是对象,是标量,结构体)
多线程
1.进程与线程
2.什么是多线程?
3.多线程的优点和缺点
4.多线程的 并行 和 并发 有什么区别?
5.iOS中实现多线程的几种方案,各自有什么特点?
6.多个网络请求完成后执行下一步
7.多个网络请求顺序执行后执行下一步
8.异步操作两组数据时, 执行完第一组之后, 才能执行第二组
9.多线程中的死锁?
10.GCD执行原理?
iOS高级面试题部分
底层
1. UITableview的优化方法(缓存高度,异步绘制,减少层级,hide,避免离屏渲染)
2. 有没有用过运行时,用它都能做什么?(交换方法,创建类,给新创建的类增加方法,改变isa指针)
3. 看过哪些第三方框架的源码?都是如何实现的?(如果没有,问一下多图下载的设计)
4. SDWebImage的缓存策略
5. AFN为什么添加一条常驻线程?
6. KVO的使用?实现原理?(为什么要创建子类来实现)
7. KVC的使用?实现原理?(KVC拿到key以后,是如何赋值的?知不知道集合操作符,能不能访问私有属性,能不能直接访问_ivar)
项目架构
1.MVC、MVP、MVVM模式
2.关于RAC你有怎样运用到解决不同API依赖关系
3.@weakify和我们宏定义的WeakSelf有什么区别?
*4.微服务架构设想
性能优化
1.造成tableView卡顿的原因有哪些?
2.如何提升 tableview 的流畅度?
3.APP启动时间应从哪些方面优化?
4.如何降低APP包的大小
5.如何检测离屏渲染与优化
6.日常如何检查内存泄露?
如何学习?
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
这里附上几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
iOS交流裙:1001906160,详细整理在群文件可以见;
小编文章面试请观看合集
- 直击2020——iOS 面试题大全(补充完整版)
- “新”携程,阿里,腾讯iOS面试常见问题合集(附答案)
- 新iOS面试题全集合(目前不断更新)
- 新iOS开发京东零售的面试题
- iOS开发,跳槽面试应该注意的Swift面试题
- iOS某些大厂以及小公司的面试题!
希望真心能够帮助到大家提升技术!技术进阶之路很漫长,一起共勉吧~