计算机基础
主要考察大学的计算机网络、操作系统、计算机组成原理的一些基础题目,另外还有一个大类数据结构与算法则更侧重编程能力。
面试官通常会问你对某个领域是否了解,然后由浅到深地问,还会让你举例。
1. TCP/IP模型。
2. 三次握手、四次挥手的过程、原理。
4. 解释一下你对多线程的认识。
5. 谈一下你对锁的了解。
6. 你了解哪些设计模式?谈一下应用场景。
6. 怎么优化性能,举一下例子。
7. 怎么做单元测试。
8. 谈一下你认识的一些架构,如MVC、MVVM、MVP等。
9. 谈一下大端、小端模式。
iOS基础
1. iOS有哪些多线程工具类。
2. 谈谈你对Webkit的认识。
3. iOS有哪些锁。
4. 怎么实现暗黑模式。
5. 怎么实现阿拉伯适配?
6. 怎么对iOS做单元测试、自动化测试。
7. 如何优化应用性能。
8. 动态库、静态库的区别。
9. 谈谈Runtime。
10. 谈谈Runloop。
11. Block实现原理。
12. iOS有哪些设计模式。
13. 解释一下Delegate、Block、Notification及使用场景。
14. Category/Extension的实现原理。
15. 解释iOS内存管理机制ARC模式,有哪些情景造成引用循环。
16. 谈一下你对Instrument的了解。
17. 你会用LLDB哪些命令。
18. Auto Release Pool实现原理。
Swift基础
1. 类和结构体的相同点和不同点?
2. 元组是什么?
3. 面向协议编程有什么优势?
算法题
主要考Leetcode上面的题目或者一些变形题,主要有以下几大类。
线性表
1. 对数组/链表进行排序/搜索/插入/删除。
2. 实现栈/队列,利用栈实现深度优先搜索、队列实现广度优先搜索。
3. 对二维数组进行深度优先/广度优先搜索,如岛屿问题、寻找两点最短路径。
二叉树
1. 二叉树的先序、中序、后序、层序遍历问题,其中先序、中序、后序属于深度优先搜索,层序遍历属于广度优先搜索。
2. 二叉树的翻转。
3. 排序二叉树的性质(左子节点比父节点小、右子节点比父节点大。中序遍历是对排序二叉树从小到大的遍历。)
图论
图论比较少考,不过我遇到过两次最短路径问题。
1. 无向图和有向图的临接表实现和矩阵实现。
2. 无向图和有向图的深度优先搜索和广度优先搜索。
3. 判断图是否有环。
4. 对有向图进行逆转。
5. 拓扑排序。
6. 计算无向图和有向图的连通分量。
7. 带权重的图,最小生成树,Kruskal算法,Prim算法。
8. 最短路径问题,Dijkstra算法。
字符串算法
1. 字符串搜索
2. 字符串排序
3. 字符串匹配
4. 字典树
网友评论