如何写代码(面试者)
- 与面试官沟通,完全理解题目意思(用自己的理解,复述一遍题目)
- 提出一个 brute force 的算法,提出它的缺点,并主动分析 trade off
- 提出一个更加优化的算法,并主动分析 trade off,并和面试官沟通确认算法正确性
- 分析题目,和面试官探讨一些边界情况,特殊情况该怎么处理。
- coding (注意代码规范,变量函数的命名等)
- 分析复杂度、构造 corner case 和 special case 的判断
- 关于时空复杂度的分析,测试用例的构造,优化的思路等等。
- 有扩展也可以主动提出(譬如你觉得 avl 或者红黑树能够更加优,但是来不及写)
算法题和智力题的认知(面试官)
重要的不是那个解题的答案,而是解题的思路和方法。解难题的过程更重要:
- 对知识的应用和理解 —— 用一些基础的数据结构和算法
- 解题思路和想法
- 有没有一些经验
- 如何讨论交流的 —— 当作伙伴一起解题、讨论
Leetcode 高频率题目
LeetCode 开了个会员,截了一些高频率题目分享给大家资源分享牛客网
逻辑与智力题目
- 边数是 3*4 的网格,从左下角的 A 点走到右上角的 B 点,一共有多少种不同的走法?
- 这类题目其实有很多变化,如果候选人很轻松完成了回答,面试官就可以适当加大难度,比如 3*4 的网格有一个点不能经过,那么会是什么结果?这类题目看似简单,实则分辨率很高,可以充分挖掘候选人的潜力。
A7 / (A3 * A4)