面试中的 coding 准备 ## 1. 一些基本结论(一般而言) - coding 是面试通过的必要条件,也即coding不过,一般不过,coding过了,会增色很多; - 尤其是不仅能提供很好的解法,而且还有很好的coding软件工程素养,比如输入空值判断(入参校验)、边界判断,注释,变量函数类的命名,会给面试官留下很好的印象; - coding 的难度同面试者与岗位的匹配度成反比,也即越匹配,coding会越简单,越不匹配,会相对难些; - 比如面试官会在题库中准备一道相对难的题目,一道相对简单的题目; - 面试中的 coding 是一个互动的过程, - 第一步,了解题目,输入是什么,输出是什么; - 第二步,勾兑解法,暴力的解法,时间空间度复杂更优的解法,直到得到一个面试官肯定的解法,然后开始coding,切忌闷头就开始写代码; - 第三步,如果没有特别好的思路,一般都可以询问面试官能否提示下思路,毕竟coding理应考察的编程素养,而不是背过该题; ## 2. 如何刷题 - 按题型系统性刷题(这些类型在leetcode里边都有一些代表性题目) - 字符串/数组 - 链表 - 二叉树 - 堆/优先队列 - 动态规划 - dfs - 高频题目一定要刷过一遍(几乎没有面试官能原创地想出一道新题); - 我在面试中遇到的高频题目: - 数组的全部子集,leetcode 78,这道题目快手出过,字节也出过; - leetcode 62. Unique Paths,也出过多次; - 53. 最大子数组和 - 一个取巧的办法 - 对一些经典的高频题目,把代码打印出来,每次面试前花一个小时过一遍,这样只需要两三次,这些题的解法都在脑海里了; ## 3. 类型题归类 - 区间(interval) - 253. Meeting Rooms II