时长:1小时8分钟
问的问题非常多而且详细,真的有点扛不住这么个拷打法啊
1. 自我介绍:约5分钟
2. 项目问答
2.1 你觉得哪个项目的复杂性比较高?具体讲一下过程。(约7分钟)
3. 手撕
3.1 大数加法,输入两个字符串(很大的数),输出两个数的加法值(字符串)
使用逐位相加的方法,注意进位和反转问题即可。
3.2 如果是负数会怎么实现?或者说减法该如何实现?
还是使用逐位相减的办法,只不过注意需要借位。
4. 算法与数据结构
4.1 常用的排序算法有哪些?分别介绍一下他们的时间和空间复杂度。
冒泡、插入、选择排序,归并排序、快速排序、堆排序。
4.2 上面哪些排序算法是稳定的?哪些是不稳定的?
冒泡、插入、归并稳定,选择、快排、堆排不稳定。
4.3 知道贪心算法吗?他的具体步骤是什么样子的?
5. 计算机网络
5.1 HTTPS的加密过程中,哪些是对称加密,哪些是非对称加密?
客户端通过CA私钥加密,客户端公钥解密,是非对称;通过两个随机数和premaster key生成会话密钥是对称加密。
5.2 HTTP和HTTPS分别默认监听的端口号是?
HTTP监听80,HTTPS监听443.
5.3 了解过端口映射吗?说一下端口映射的方法。
6. 操作系统
6.1 内存分页和分段是什么样的?分别介绍一下?
6.2 分段机制有什么缺点?
内存碎片化,难以利用其他空余内存。
7. iOS基础
7.1 我看你介绍的时候有用过第三方库,有接触过哪些第三方库的源码呢?
SnapKit的源码,介绍了一些其中的结构和约束形成过程。
7.2 你使用过cocoapods,如何使用cocoapods实现组件化管理或者多个工程的管理呢?(没接触过组件化)
8. 反问
8.1 这边iOS的具体业务是什么?
8.2 开发过程中使用Swift多一些还是OC更多?
OC会多一些,新的一些组件会使用Swift。
8.3 您对于iOS的未来发展有什么看法?特别是前端和跨端的介入,对于iOS会有什么样的影响?
iOS的市场是非常广阔的,只要iOS的基数在,iOS就会有市场。前端开发确实会增多,和iOS进行一些互操作,但是iOS的发展空间就会增大。技术不应该限制在纯iOS上,技术的发展和框架都是相通的,应该增加技术的广度,不要过分担心iOS的发展和未来。