《程序员面试金典(第6版)》
1.面试流程
介绍面试的一般流程及原因
2.面试揭秘
介绍了几个大互联网公司的面试流程及重点
3.特殊情况
针对不同读者的不同阅读建议
4.面试之前
如何写简历:篇幅精要、工作经历要深刻突出、项目经验要简明扼要
5.行为面试题
遇见过的挑战
遭遇过的滑铁卢
最享受什么
如何体现领导力
如何处理冲突
有哪些改进之处
有哪些缺点
你想问我什么
自我介绍
6.大O ⭐
7.技术面试题 ⭐
8.录用通知及其他注意事项
礼貌拒绝
被拒表示遗憾并询问何时可以重新申请及改进地方
入职后制定时间表,构建人脉
9.面试题目 ⭐⭐
9.1.散列表
9.2.ArrayList和可变长度数组
9.3.StringBuilder
9.4.链表
快行指针
9.5. 栈
9.6.队列
9.7.树
9.7.1.类型
二叉树:子节点不超过2
二叉搜索树:左子节点<父节点<右子节点
平衡二叉搜索树:左子节点和右子节点高度差不大于某个阈值
完整二叉树:节点按照左右依次填充的
满二叉树:每个节点都有0个或2个子节点
完美二叉树:四个叶子节点完全对称
9.7.2.遍历
中序遍历:左-父-右
前序遍历:父-左-右
后序遍历:左-右-父
9.8.二叉堆
9.9.单词查找树/前序树
9.10.图
邻接链表法
邻接矩阵法
深度优先搜索
广度优先搜索
双向搜索
9.11.位操作
10.题目解法 ⭐
11.进阶话题 ⭐
11.1.实用数学
- 整数1至N的和:1+2+3+…+n=n(n+1)/2
- 2的幂的和:2^0 + 2^1 + 2^2 + 2^3 +…+ 2^n = 2^n - 1
- 对数的底:
- 排列:排列n个不重复字符有n!种可能,从n个不重复字符中构建k长度的字符串有n!/(n-k)!中可能
- 组合:
- 归纳证明法
11.2.拓扑排序
11.3.Dijkstra算法
11.4.散列表的冲突解决方案
- 使用链表连接数据
- 使用二叉搜索树连接数据
- 使用线性探测进行开放寻址
- 平方探测和双重散列