前言
本文借鉴整理了iOS高级开发常见的面试题,而且分博客一一分析,但愿能和你们一块儿进步学习。html
欢迎你们关注个人 Github👏以及相关博客 Github.io 简书 博客园git
你们的鼓励是我前进的动力😄github
iOS基础题
- 分类和扩展有什么区别?能够分别用来作什么?分类有哪些局限性?分类的结构体里面有哪些成员? Category探索
- 讲一下atomic的实现机制;为何不能保证绝对的线程安全(最好能够结合场景来讲)?
- 被weak修饰的对象在被释放的时候会发生什么?是如何实现的?知道sideTable么?里面的结构能够画出来么?
- 关联对象有什么应用,系统如何管理关联对象?其被释放的时候须要手动将其指针置空么? AssociatedObject关联对象原理实现
- KVO的底层实现?如何取消系统默认的KVO并手动触发(给KVO的触发设定条件:改变的值符合某个条件时再触发KVO)? 刨根问底KVO原理
Autoreleasepool
所使用的数据结构是什么?AutoreleasePoolPage
结构体了解么?
- 讲一下对象,类对象,元类,跟元类结构体的组成以及他们是如何相关联的?为何对象方法没有保存的对象结构体里,而是保存在类对象的结构体里?
class_ro_t
和 class_rw_t
的区别?
- iOS 中内省的几个方法?
class
方法和objc_getClass
方法有什么区别?
- 在运行时建立类的方法
objc_allocateClassPair
的方法名尾部为何是pair(成对的意思)?
- 一个int变量被
__block
修饰与否的区别? \12. 为何在block外部使用__weak
修饰的同时须要在内部使用__strong
修饰?
- RunLoop的做用是什么?它的内部工做机制了解么?(最好结合线程和内存管理来讲)
- 哪些场景能够触发离屏渲染?(知道多少说多少)
iOS 实战题
- AppDelegate如何瘦身?
- 反射是什么?能够举出几个应用场景么?(知道多少说多少)
- 有哪些场景是NSOperation比GCD更容易实现的?(或是NSOperation优于GCD的几点,知道多少说多少)
- App 启动优化策略?最好结合启动流程来讲(main()函数的执行先后都分别说一下,知道多少说多少)
- App 无痕埋点的思路了解么?你认为理想的无痕埋点系统应该具有哪些特色?(知道多少说多少)
- 你知道有哪些状况会致使app崩溃,分别能够用什么方法拦截并化解?(知道多少说多少)
- 你知道有哪些状况会致使app卡顿,分别能够用什么方法来避免?(知道多少说多少)
网络题
- App 网络层有哪些优化策略?
- TCP为何要三次握手,四次挥手?
- 对称加密和非对称加密的区别?分别有哪些算法的实现?
- HTTPS的握手流程?为何密钥的传递须要使用非对称加密?双向认证了解么?
- HTTPS是如何实现验证身份和验证完整性的?
- 如何用Charles抓HTTPS的包?其中原理和流程是什么?
- 什么是中间人攻击?如何避免?
计算机系统题
- 了解编译的过程么?分为哪几个步骤?
- 静态连接了解么?静态库和动态库的区别?
- 内存的几大区域,各自的职能分别是什么?
- static和const有什么区别?
- 了解内联函数么?
- 何时会出现死锁?如何避免?
- 说一说你对线程安全的理解?
- 列举你知道的线程同步策略?
- 有哪几种锁?各自的原理?它们之间的区别是什么?最好能够结合使用场景来讲
设计模式题
- 除了单例,观察者设计模式之外,还知道哪些设计模式?分别介绍一下
- 最喜欢哪一个设计模式?为何?
- iOS SDK 里面有哪些设计模式的实践?
- **设计模式是为了解决什么问题的?
- **设计模式的成员构成以及工做机制是什么?
- **设计模式的优缺点是什么?
架构 & 设计题
- MVC和MVVM的区别?MVVM和MVP的区别?
- 面向对象的几个设计原则了解么?最好能够结合场景来讲。
- 能够说几个重构的技巧么?你以为重构适合何时来作?
- 你以为框架和设计模式的区别是什么?
- 看过哪些第三方框架的源码,它们是怎么设计的?设计好的地方在哪里,很差的地方在哪里,如何改进?(这道题的后三个问题的难度已经很高了,若是不是太N的公司不建议深究)
数据结构&算法题
- 链表和数组的区别是什么?插入和查询的时间复杂度分别是多少?
- 哈希表是如何实现的?如何解决地址冲突?
- 排序题:冒泡排序,选择排序,插入排序,快速排序(二路,三路)能写出那些?
- 链表题:如何检测链表中是否有环?如何删除链表中等于某个值的全部节点?
- 数组题:如何在有序数组中找出和等于给定值的两个元素?如何合并两个有序的数组以后保持有序?
- 二叉树题:如何反转二叉树?如何验证两个二叉树是彻底相等的?
引用
出一套 iOS 高级面试题面试