在博主认为,对于iOS面试以及进阶的最佳学习方法莫过于刷题+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思考,刷题只是次之,这又是一个层次了,这里暂时不提后面再谈。
博主总结了一系列大厂面试中常问的面试技术点,深入解析以及答案,将为最近准备面试的各开发者去大厂保驾护航,
何谓面试? 博主所理解的面试,它是一个过程,是不断沉淀、不断总结、善于传达自己的专业领域技术以及解决问题能力的过程。以下是博主总结的一些面试题,文中如有错误,恳请各位大佬指出!
数据结构
- 数据结构的存储一般常用的有几种?各有什么特点?
- 集合结构 线性结构 树形结构 图形结构
- 单向链表 双向链表 循环链表
- 数组和链表的区别
- 堆、栈和队列 分别是什么?
- 输入一棵二叉树的根结点,求该树的深度?
- 输入一课二叉树的根结点,判断该树是不是平衡二叉树?
作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:413038000,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!
以下资料在群文件可自行下载
算法
- 时间复杂度 / 空间复杂度
- 常用的排序算法有哪些?
- 字符串反转
- 链表反转(头插法)
- 如何查找第一个只出现一次的字符(Hash查找)
- 如何查找两个子视图的共同父视图?
- 无序数组中的中位数(快排思想)
- 如何给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
内存管理
- 什么情况使用weak关键字,相比assign有什么不同?
- 链如何让自己的类用copy修饰符?如何重写带copy关键字的setter?
- 深拷贝与浅拷贝分别是什么?
- @property的本质是什么?ivar、getter、setter是如何生成并添加到这个类中的?
- @protocol和category中如何使用@property
- 使用CADisplayLink、NSTimer有什么注意点?BAD_ACCESS在什么情况下出现?
- iOS内存分区情况
- iOS内存管理方式
- 循环引用
- ARC 的 retainCount 怎么存储的?
ARC
在编译时做了哪些工作?
消息传递的方式
网络
- 网络七层协议有哪些?
- Http 和 Https 的区别?Https为什么更加安全?
- HTTPS的连接建立流程
- 解释一下 三次握手 和 四次挥手
- TCP 和 UDP的区别
- Cookie和Session
- DNS是什么?
- DNS解析过程
多线程
- 进程与线程分别是什么意思?
- 什么是多线程?
- 多线程的优点和缺点有哪些?
- 多线程的 并行 和 并发 有什么区别?
- iOS中实现多线程的几种方案,各自有什么特点?
- 多个网络请求完成后如何执行下一步?
- 多个网络请求顺序执行后如何执行下一步?
- 如何理解多线程中的死锁?
- 如何去理解GCD执行原理?
动画
图像处理
数据安全及加密
Runtime
- Category 的实现原理?
- isa指针的理解,对象的isa指针指向哪里?isa指针有哪两种类型?
- Objective-C 如何实现多重继承?
- runtime 如何实现 weak 属性?
- 讲一下 OC 的消息机制
- runtime具体应用
- runtime如何通过selector找到对应的IMP地址?
- 简述下Objective-C中调用方法的过程
- load和initialize的区别
- 怎么理解Objective-C是动态运行时语言。
Runloop
- Runloop 和线程的关系?
- RunLoop的运行模式
- runloop内部逻辑?
- autoreleasePool 在何时被释放?
- GCD 在Runloop中的使用?
- AFNetworking 中如何运用 Runloop?
- PerformSelector 的实现原理?
- PerformSelector:afterDelay:这个方法在子线程中是否起作用?
- 事件响应的过程?
- 手势识别的过程?
- CADispalyTimer和Timer哪个更精确
项目架构
设计模式
组件化
调试技巧
性能优化
- 造成tableView卡顿的原因有哪些?
- 如何提升 tableview 的流畅度?
- APP启动时间应从哪些方面优化?
- 如何降低APP包的大小
- 如何检测离屏渲染与优化
- 怎么检测图层混合
- 日常如何检查内存泄漏?
- 如何优化
APP
的电量?
源码理解
代码管理
持续集成
Foundation
- nil、NIL、NSNULL 有什么区别?
- 如何实现一个线程安全的 NSMutableArray?
- atomic 修饰的属性是绝对安全的吗?为什么?
- 实现 isEqual 和 hash 方法时要注意什么?
- id 和 instanceType 有什么区别?
- self和super的区别
- @synthesize和@dynamic分别有什么作用?
- typeof 和 __typeof,typeof 的区别?
- 类族
- struct和class的区别
底层面试题
- 一个 NSObject 对象占用多少内存空间?
- 属性关键字
- 分类、扩展、代理(Delegate)
- KVO (Key-value observing)
- KVC(Key-value coding)
- 什么是架构师及UML建模
- 单例模式设计
- 设计模式-工厂模式
- 设计模式-工厂模式场景
iOS面试大总结
2020 联盟持续更新,精品小圈子每日都有新内容,干货浓度极高。
结实人脉、讨论技术 你想要的这里都有!
抢先入群,跑赢同龄人!(入群无需任何费用)
- (直接搜索群号:638302184,快速入群)
- 点击此处,与2000+iOS开发大牛一起交流学习
申请即送:
- BAT大厂面试题、独家面试工具包,
- 资料免费领取,包括 数据结构、底层进阶、图形视觉、音视频、架构设计、逆向安防、RxSwift、flutter,