iOS面试:腾讯、头条等面试题参考
序言
疫情基本控制,同时面试也渐渐开始了,以下iOS面试题仅供参考,毕竟面试是不可控的,但懂得越多,自然机会越大!
腾讯面试题
一面
1、介绍一下实习的项目,任务分工,做了哪些工作?介绍实习内容
2、网络相关的:项目里面使用到什么网络库,用过ASIHTTP库吗
3、断点续传怎么实现?需要设置什么?
4、在杭州HTTP请求服务器响应快,可能离服务器距离近,而在深圳访问就很慢很慢,会是什么原因?如果用户投诉,怎么分析这个问题?
5、HTTP请求的哪些方法用过?什么时候选择get、post、put?
6、TCP建立连接的过程,断开连接的过程,为什么是四次握手?
7、项目里面的数据存储都用了哪些?知道iOS里面有哪些数据存储方法?什么时候该用哪些方法存储?
8、MVVM如何实现绑定
9、block和通知的区别,分别适用什么场景
10、算法。连续问了好几个,都是数组,层层递进的,但是我忘了,只记得最后是找出数组
11、中重复的数字
12、进程和线程的区别
13、程序在运行时操作系统除了分配内存空间还有什么
14、进程间通信的方式
15、如何检测应用是否卡顿
16、发布出去的版本,怎么收集crash日志?不使用bugly等第三方平台或者这些第三方平台是怎么收集crash日志的?
17、在block里面使用_property会造成循环引用吗?怎么解决?除了使用self->_property,可以使用valueforkey来访问吗 在block里面可以修改它的值吗setvalueforkey?可以修改它的值,可以用valueforkey来解决,显式的的使用self,block外先持有self的弱引用。
二面
1、OC中对象的结构
2、多态
3、Ping是什么协议
4、知道MTU吗
5、ARC和MRC的本质区别是什么?
6、NSThread,GCD,NSOperation相关的。开启一条线程的方法?线程可以取消吗?
7、子线程中调用connection方法,为什么不回调?因为没有加入runloop,执行完任务就销毁了,所以没有回调。
8、MVC和MVVM的区别
9、了解哪些设计模式
10、存一个通讯录,包括增删改查,用什么数据结构
11、autorelease变量什么时候释放?手动添加的是大括号结束的时候释放,系统自动释放是在
12、当前runloop循环结束的时候
13、那子线程中的autorelease变量什么时候释放?
14、子线程里面,需要加autoreleasepool吗
15、GCD和NSOperation的区别?
16、项目里面遇到过死锁吗?怎么解决?数据库访问本来就是线程安全的,不会造成死锁啊。什么是死锁?
17、Viewcontroller的生命周期?
18、在init方法里面,设置背景颜色,会生效吗 会生效。为什么会?
19、WWDC公布了哪些新特性?对苹果系列的最新特性有关注吗
20、看过哪些源码,讲讲思路
21、两个链表找第一个相同结点
22、字符串旋转
23、找链表的倒数第k个结点
24、把一个链表比某个值大的放在左边,比它小的放在右边
25、二叉树的中序遍历,非递归
【温馨提醒:有需要iOS面试题,可加iOS技术群:937194184,或扫码文章末尾二维码进群获取】
——点击加入:iOS开发群
头条面试题
一面
1、自我介绍
2、项目相关
3、怎么自定义导航跳转
4、谈谈runtime的理解
5、KVC的用途
6、使用method swizzling要注意什么?(进行版本迭代的时候需要进行一些检验,防止系统库的函数发生了变化)
7、谈对引用计数的理解
8、谈谈runloop的理解
9、runloop有哪些状态
10、autoreleasepool的使用场景
11、TableView优化,怎么减少卡顿
12、copy assign retain weak关键词
13、JSON转Model
14、代码布局
15、多屏幕适配
16、HTTP请求头和响应头
17、Cookie
18、NSCache
19、自己设计一个缓存器
20、怎么实现LRU
21、SDWebImage
22、二叉树先序遍历(递归和非递归)
二面
1、MVC的一些缺点
2、讲一讲其它架构
3、你知道哪些编码方式
4、算法字符串翻转
5、多线程的方式和它们的区别
6、队列和线程的关系
7、一道线程安全的题
8、有哪些锁
9、属性的关键字
10、assign可以用于OC对象吗
11、copy和strong的区别
12、weak如何实现自动赋nil
13、为什么不可变对象要用copy
14、assing可以使用在对象中吗
15、Pod update和pod install的区别
16、layoutIfNeeded和setNeedsLayout的区别
17、抓包工具抓取HTTPS的原理
18、isEquel和hash的关系
19、bitmap的结构
20、可变数组的实现原理
21、如何hook一个对象的方法,而不影响其它对象
22、如何避免if else
23、自旋锁和互斥锁的区别
三面
1、介绍项目,主要介绍自己强项一点的地方
2、数组cop后里面的元素会复制一份新的吗
3、数组的浅拷贝与深拷贝
4、TCP为什么是三次握手和四次挥手
头条一直都是视频面,而且是一条龙服务。总体来说感觉不错,反正主要就是需要基础足够扎实;
快手面试题
一面
-
iOS反射机制
-
iOS的timer和CADisplay的区别
-
二叉树,二叉平衡树,AVL,红黑树,B树的区别
-
二叉树公共节点
-
随机数生成,真随机数和伪随机数
-
不用第三者,怎么交换两个数
-
1000个瓶子,里面有1瓶毒药,只有10只老鼠,老鼠吃了之后一星期会死亡,怎么测试。
二面
-
UI的渲染步骤,视图打包流程,cpu和gpu工作,为什么要双缓冲区
-
图片怎么显示的,以及图片缓冲区
-
NSObject结构体里面有什么,大小为什么是16字节
-
KVO怎么实现,_会不会触发,成员变量会不会触发,kvc+成员变量会不会触发,不用setter怎么触发kvo
-
操作系统内存布局,有什么区
-
一个OC对象的内存布局
-
滑动优化怎么搞
-
什么是runtime,什么是runloop,有几种mode
-
NSObject的内存布局
-
isa指针和super指针
-
元类是什么
-
所有OC对象都继承与NSObject吗,id是什么
-
SDWebImage的清除缓存策略
-
block是什么
-
LRU算法怎么实现
-
Swift和OC的方法调用
-
两个链表的公共结点
-
链表中环开始的地方,原理说出来
-
项目里面最体现你技术的点。
三面
1.什么是hash
2.hash的具体实现,程h序里面一个对象怎么通过hash定位到具体的内存区。
3.hash数组扩容
4.一个天平,4个砝码,能秤出多少种重量。
其他面试资料(部分展示)
【温馨提醒:有需要iOS面试题,可加iOS技术群:937194184,或扫码文章末尾二维码进群获取】