共计 1403 个字符,预计需要花费 4 分钟才能阅读完成。
iOS 学习面试相关问题整理,希望能巩固自己的基础知识,当然也希望能帮助更多的开发者。
数据结构
1. 数据结构的存储一般常用的有几种?各有什么特点?
2. 集合结构 线性结构 树形结构 图形结构
3. 单向链表 双向链表 循环链表
4. 数组和链表区别
5. 堆、栈和队列
6. 输入一棵二叉树的根结点,求该树的深度?
7. 输入一课二叉树的根结点,判断该树是不是平衡二叉树?
算法
1. 时间复杂度
2. 空间复杂度
3. 常用的排序算法
4. 字符串反转
5. 链表反转(头差法)
6. 有序数组合并
7. 查找第一个只出现一次的字符(Hash 查找)
8. 查找两个子视图的共同父视图
9. 无序数组中的中位数 (快排思想)
10. 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
Foundation
1.nil、NIL、NSNULL 有什么区别?
2. 如何实现一个线程安全的 NSMutableArray?
3.atomic 修饰的属性是绝对安全的吗?为什么?
4. 实现 isEqual 和 hash 方法时要注意什么?
5.id 和 instanceType 有什么区别?
6.self 和 super 的区别
7.@synthesize 和 @dynamic 分别有什么作用?
8.typeof 和 typeof,typeof 的区别?
9. 类族
10.struct 和 class 的区别
UIKit
1.UIView 和 CALayer 是什么关系?
2.Bounds 和 Frame 的区别?
3.setNeedsDisplay 和 layoutIfNeeded 两者是什么关系?
4. 谈谈对 UIResponder 的理解
5.loadView 的作用?
6. 使用 drawRect 有什么影响?
7.keyWindow 和 delegate 的 window 有何区别
WebView
1. 说一下 JS 和 OC 互相调用的几种方式?
2. 在使用 WKWedView 时遇到过哪些问题?
内存管理
1. 什么情况使用 weak 关键字,相比 assign 有什么不同?
2. 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?
3.@property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的
4.@protocol 和 category 中如何使用 @property
5. 简要说一下 @autoreleasePool 的数据结构??
6.BAD_ACCESS 在什么情况下出现?
7. 使用 CADisplayLink、NSTimer 有什么注意点?
8.iOS 内存分区情况
9.iOS 内存管理方式
消息传递的方式
1.KVC 实现原理
2.KVO 的实现原理
3. 如何手动触发 KVO 方法
4. 通知和代理有什么区别
5.block 和 delegate 的区别
6. 为什么 Block 用 copy 关键字
网络
1. 网络七层协议
2.Http 和 Https 的区别?Https 为什么更加安全?
3.HTTPS 的连接建立流程
4. 解释一下 三次握手 和 四次挥手
5.TCP 和 UDP 的区别
6.Cookie 和 Session
7.DNS 是什么
8.DNS 解析过程
数据存储
1.iOS 开发中数据持久性有哪几种?
2.FMDB 数据结构变化升级
多线程
1. 进程与线程
2. 什么是多线程?
3. 多线程的优点和缺点
4. 多线程的 并行 和 并发 有什么区别?
5.iOS 中实现多线程的几种方案,各自有什么特点?
6. 多个网络请求完成后执行下一步
7. 多个网络请求顺序执行后执行下一步
8. 异步操作两组数据时, 执行完第一组之后, 才能执行第二组
9. 多线程中的死锁?
10.GCD 执行原理?