面试官比较温和,都是以闲聊的形式提问,自己太菜了
自我介绍3分钟,拷打开始......
1.串行队列、并行队列,同步异步
2.串行异步输出,并行异步输出
3.线程与队列(GCD)
4.多线程的多读多写操作
5.了解过什么锁
6.讲讲互斥锁的代码实现(只调用过 Linux 下 C函数的 API)
7.互斥锁,“互斥”的由来,为什么叫互斥
8.什么是死锁、开发中有无遇到死锁情况
9.主线程与主队列
10.主线程的同步执行
11.给段Swift代码,给一个字典,从0循环到99,异步给字典写值,程序是否正确
12.谈一谈闭包
13.循环引用和内存泄漏
14.为什么 __weak 可以避免循环引用
15.block底层
16.三次握手
17.大文件的下载,多线程下载,怎么保证各个分区的数据无误没有数据遗漏,总体数据无误(TCP的校验位)
18.MD5
19.数组与链表,数组扩容,扩容策略(这里和面试官谈到了 C++ STL中 Vector 容器的扩容机制)
20.一个数组10个元素,强行访问第11个元素
21.口述:判断链表是否有环
22.口述:链表倒数第K个结点插入数据( 要求时间复杂度为O(n) )
23.tableviewcell的复用机制,复用的cell是否还会初始化
24.谈谈runtime
25.结合runtime,谈一谈tableviewcell点击事件的响应者链
25.runtime的消息转发机制
26.isa指针
27.手撕:字符串反转(原地反转,要求空间复杂度为O(1) )
28.场景题:一个岛屿,一夫一妻制,有着重男轻女的思潮,如果生了男孩就不生了,如果生了女孩,就继续生,直到生出男孩为止,问n代后,男女比例?(概率论独立事件)
29.接着上面的问题,谈一谈如今男性基数比女性基数大的原因
菜哭了
反问:
1.问业务
2.问不足之处
3.问前景