1.9、iOS面试题之其他
1.如何优化项目编译速度?
https://www.jianshu.com/p/c9e3fb3dfa53
CCache
在XCode -> Build Settings -> Build Active Architecture Only 改为YES
2.冷启动速度如何优化?
减少非系统库的依赖、合并非系统库,苹果最多支持6个非系统的动态库合并为一个;
定期清理项目里不使用的类和方法,检测工具可以使用AppCode
将不必须在 +load 方法中做的事情延迟到 +initialize 中,关于二者的区别可以参考这篇文章;
减少分类和分类里方法的数量;
尽量不要用 C++ 虚函数;
删减一些无用的静态变量。
3.后台如何保活?
https://blog.csdn.net/qq_38520096/article/details/102626210
第一种叫无声音乐保活(即在后台开启音频播放,只不过不需要播放出音量且不能影响其他音乐播发软件),第二种叫Background Task,但是这种方法在iOS 13以后只能申请短短的30秒钟时间,但是在iOS7-iOS13以前是可以申请到3分钟的保活时间的,当然我们也可以经过处理来申请到更多的保活时间。
使用NSTimer循环申请保活时间,但是建议不要无限申请保活时间,因为系统如果发现该应用一直在后台运行时,是可能会直接crash掉你的应用的 ,错误码0x8badf00d
4.如何做性能检测,并逐项提出优化建议?
5.APP埋点怎么做?
https://www.jianshu.com/p/21b9f99c574e
https://www.jianshu.com/p/3a50d1805655
6.容错处理你们一般是注意哪些?
7.项目开始容错处理没做?如何防止拦截潜在的崩溃?
8.APP动态化方案?自己实现一个会怎么做?
9.APP架构怎么理解?如何搭建和优化?
10.如果让你重构XX页面,你会怎么做?
11.webRTC的PLI是什么意思?原理是什么?
12.webSocket如何建立连接的?原理是什么?
https://www.jianshu.com/p/821b777555d3
WebSocket 是 HTML5 一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯,它建立在 TCP 之上,同 HTTP 一样通过 TCP 来传输数据,但是它和 HTTP 最大不同是:
WebSocket 是一种双向通信协议,在建立连接后,WebSocket 服务器和 Browser/Client Agent 都能主动的向对方发送或接收数据,就像 Socket 一样;
WebSocket 需要类似 TCP 的客户端和服务器端通过握手连接,连接成功后才能相互通信。
13.你们IM采用什么协议?
14.简述H264编码的优缺点
15.音频采样如何优化?
16.解码用的硬解还是软解?各自优缺点?
17.RTMP协议内容?RTSP协议是什么?
https://www.jianshu.com/p/c2284659452f
18.发布出去的版本,怎么收集crash日志?不使用bugly等第三方平台或者这些第三方平台是怎么收集crash日志的?
19.开发过程中遇到过什么困难,是如何解决的?
20.遇到一个问题完全不能理解的时候,是如何帮助自己理解的?举个例子?
21.本地数据如何加密?
22.对称加密和非对称加密优缺点?
https://www.jianshu.com/p/b078282653b3
23.简述哈希算法,有什么作用?
24.非对称加密有哪些算法?
25.如何破解和监听HTTPS?
26.如何判断手机是否越狱
27.如何防止被反编译