时长:约40分钟
首先针对项目进行提问,然后只问了少量的iOS开发知识,剩下的时间全程拷打计网和数据结构、算法,无手撕。
1. 自我介绍:5分钟
1.1 为什么学习iOS?
2. 项目介绍
2.1 你的项目中用到了数据库,那你知道数据库的底层实现是什么样的?
2.2 使用过ffmpeg,你使用ffmpeg的流程是什么样子的?
2.3 I帧、P帧、B帧是什么?解码时如何解码?
2.4 你说项目中涉及到多进程、多线程通信,是如何实现的?
3. iOS基础知识
3.1 Swift中,是如何进行内存管理的?
3.2 知道runtime吗?讲一下runtime?
4. 八股:计网和数据结构与算法
4.1 你知道哪些常见的数据结构?
4.2 链表有哪些类型?
4.3 什么是哈希冲突?
4.4 说一下排序算法中冒泡排序如何实现?
4.5 快速排序如何实现?
4.6 堆排序知道吗?如何实现?(麻了已经)
4.7 TCP协议与UDP协议的区别
4.8 TCP三次握手和四次挥手的过程
4.9 TCP滑动窗口、拥塞控制如何实现?
4.10 HTTP1.0、HTTP1.1、HTTP2.0知道吗?他们相比之前的版本有哪些优化?
5. 反问
5.1 您在iOS部门下是负责哪一个业务的?
答:负责影石App的通信模块,也就是App和影石相机之间的通信。影石iOS部门分为两部分业务,一部分是视频剪辑(类似剪映),一部分是App通信(怪不得一直问我计网!)
5.2 (继续灵魂拷问)2023年了,业界普遍认为客户端开发走到了下半段发展路程。尤其是iOS开发,在现在被前端业务蚕食的情况下,您认为iOS未来的发展是什么样的?
答:确实iOS行业的发展没有那么快了。但是我认为还是要看公司的需求。像我们公司的iOS开发人员确实比较少,也不乏一些大公司,他们的iOS开发人员也在逐渐减少。尤其是对于新人,新人从事iOS开发,大环境可能没有那么的友好。
5.3 对于Flutter和React Native这种跨端技术,您认为他们未来会取代iOS开发和安卓开发吗?
答:(坚定)不会。Flutter和RN这种技术首先他现在还不够成熟,其次也只有一些小公司在使用,而且他们的使用范围和能力也非常有限,目前只局限于一些非常简单小型的App,他们不像我们iOS一样,经过了几十年的技术积累现在已经相当成熟。