天天看点

iOS高级工程师该掌握哪些知识?

作为一个6年的iOS开发者,经历了从UI到底层的探索,也经历了很多大公司的面试。

不自觉的要去归纳大厂对iOS高级工程师有哪些能力上的要求。

1.数据结构与算法

其实基本没有逃脱严蔚敏那本《数据结构与算法》的范畴。我刚毕业时有次被阿里的面试官问到kmp算法,我心想这是啥高级算法,当场回答不会。后来去复习的时候,才发现其实这其实是在自己大学课本里面的算法。大学里面没有去搭理这个算法,以至于错失一次毕业就进大厂的机会。

具体来说,我按面试频率高低来排个序:

* 排序算法(快排、希尔、归并、堆排)

* 二叉树 (AVL树、红黑树、B树、B+树、)

* 链表、双向链表

* hash表(冲突解决算法)

* 动态规划(这是严蔚敏那本书里面没有的)

* 字符串查找 (kmp)

* 图论 (A*start寻路用在游戏中)(见《算法导论》)

这里推荐小码哥的视频教程集 《恋上算法与数据结构》,讲的非常独到细致。

2.操作系统相关原理

* 内存管理(内核进程、用户进程布局、页表局部性原理)

* 多线程(处理机调度原理、自旋锁、普通锁、读写锁\NSLOCK\信号量区别与联系)

* 栈帧回溯 (为性能优化和崩溃捕获服务)

* 崩溃捕获 (为线上诊断服务)

3. iOS底层原理。

* runtime 原理(类\分类信息C++结构、消息查找与转发过程、方法拦截)

* runloop 原理 (卡顿检测、timer实现原理、异步执行原理)

由于第一部分数据结构与算法是通识部分,且并不是每个厂都考(还因为我自己也不精通),因此本专栏主要针对iOS密切相关的iOS底层原理和操作系统相关原理展开讨论。

继续阅读