面试简述
关于iOS面试常见问题总结:
1.算法:Leetcode,剑指offer系列
交换两个变量的值(如果不使用临时变量)
找出数组数中两数之和为sum的所有组合(最优时间复杂度)
char *字符串翻转
获取字符串中出现最多次数的字符(最优时间复杂度)
快速排序
2.GCD多线程系列,线程同步的方法,三个任务并发执行全部执行完之后在主线程执行另一个任务 https://www.jianshu.com/p/2d57c72016c6
3.Error **和BOOL *原理,值传递和指针传递和地址传递
4.MSMutableArray底层原理,超出分配的内存空间后是怎么处理的
5.链表和线表的优缺点,怎么结合两者的优点
6.msgsend底层原理,是怎么方法寻址的,isa指针,类和对象方法寻址区别https://www.jianshu.com/p/fab1a5c9a29a Class本质:https://www.jianshu.com/p/74db5638f34f
7.runtime动态获取属性,获取方法列表
8.KVO底层实现原理,kvo_person类为啥会指向父类,kvo_person类的isa和class都是Person吗 ,isa-swizzling技术 https://www.jianshu.com/p/5477cf91bb32
9.网络基础知识相关必问,https加密解密过程,七层协议,UDP和TCP优缺点,三次握手四次挥手,charls抓包原理https,http请求参数有哪些,http错误码404,500代表什么,端口
10.UIFoundation,CoreFoundation,CoreAnimation,CoreGrapics关系,CPU和GPU绘制过程怎么配合分工
11.CF转NS和NS转CF都有哪些修饰符__bridge __bridge_transfer __bridge_retain
12.__block修饰符原理,block底层
13.__attribute属性相关http://liumh.com/2018/08/18/ios-attribute-section/
14.iOS中的锁
15.事件传递过程,自己写一个UIView的分类实现获取事件响应的顶端View
16.动态库和静态库区别优缺点
17.工作中遇到最有挑战的事
18.runloop底层实现,都有什么Model https://www.jianshu.com/p/d260d18dd551
19.线程和进程的区别,进程会分配单独的执行内存空间,线程之间共享内存空间
20.队列和线程的关系,队列的作用,调度任务
21.项目中使用什么架构和设计模式
22.自我介绍
23.MRC下setName实现(要先retain)
24.UITableView卡顿优化
25.__weak的原理和底层
26.消息转发机制
27.讲讲你的项目
28.https://www.jianshu.com/p/2a97d143ceda
29.APP启动原理https://www.jianshu.com/p/4fe773d6da4c