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执行原理?