前言
iOS开发者都想了解最新的面试情况,去做更充足的准备,下面看那些有你自己不会的东西,自己可以研究下,也可以收藏以免不时之需!
第一部分底层必问题:
- 什么情况使用weak关键字,相比assign有什么不同?
- 深拷贝与浅拷贝
- 简要说一下@autoreleasePool的数据结构?
- autoreleasePool 在何时被释放?
- 说一下iOS内存分区情况
- 如何解决循环引用?
- Runloop 和线程的关系?
- isa指针的理解,对象的isa指针指向哪里?
- Runtime 如何实现 weak 属性?
- load和initialize的区别
- ......
第二部分性能优化架构能力:
- 造成tableView卡顿的原因有哪些?
- 如何提升 tableview 的流畅度?
- APP启动时间应从哪些方面优化?
- 如何降低APP包的大小?
- 日常如何检查内存泄露?
- iOS有哪些常见的设计模式?
- 单例会有什么弊端?
- MVC、MVP、MVVM模式
- 编程中的六大设计原则?
- ......
第三部分多线程、网络能力:
- 什么是多线程?
- 多线程的优点和缺点?
- 多线程的 并行 和 并发 有什么区别?
- 如何保证线程安全?
- 多线程中的死锁?
- 线程之间是如何共享资源的?
- 进程之间如何共享资源?
- GCD执行原理?
- 网络的七层协议?
- Http 和 Https 的区别?Https为什么更加安全?
- 解释一下 三次握手 和 四次挥手?
- socket编程里面,select、poll、epoll的区别和特点?
- client和server之间TCP通信,双方使用到的socket函数以及过程?
- TLS的加密过程?
- TLS握手时的随机数有什么作用?
- ......
第四部分数据结构算法:
- 链表和数组的区别是什么?插入和查询的时间复杂度分别是多少?
- 哈希表是如何实现的?如何解决地址冲突?
- 排序题:冒泡排序,选择排序,插入排序,快速排序(二路,三路)能写出哪些?
- 链表题:如何检测链表中是否有环?如何删除链表中等于某个值的所有节点?
- 数组题:如何在有序数组中找出和等于给定值的两个元素?如何合并两个有序的数组之后保持有序?
- 二叉树题:如何反转二叉树?如何验证两个二叉树是完全相等的?
- 数据结构的存储一般常用的有几种?各有什么特点?
- 如何用栈实现队列?说一下思路。
- ......
总结整理的“iOS面试题技术点”分类,到这里就告一段落了!
资料下载:
"iOS简历模板+新iOS面试题+iOS提升视频"网址 :
docs.qq.com/doc/DVWlQam9Qd3B1cEF2
有什么需要讨论的地方欢迎大家指教。主要记录一下准备过程,和面试的一些总结,希望能帮助到正在面试或者将要面试的同学吧