summaryrefslogtreecommitdiff
path: root/面经/面试中coding的准备.md
blob: bd4e568667827f4a22db246285a46d7bd13f060d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

面试中的 coding 准备

## 1. 一些基本结论(一般而言)

- coding 是面试通过的必要条件,也即coding不过,一般不过,coding过了,会增色很多;
    - 尤其是不仅能提供很好的解法,而且还有很好的coding软件工程素养,比如输入空值判断(入参校验)、边界判断,注释,变量函数类的命名,会给面试官留下很好的印象;
- coding 的难度同面试者与岗位的匹配度成反比,也即越匹配,coding会越简单,越不匹配,会相对难些;
    - 比如面试官会在题库中准备一道相对难的题目,一道相对简单的题目;
- 面试中的 coding 是一个互动的过程,
    - 第一步,了解题目,输入是什么,输出是什么;
    - 第二步,勾兑解法,暴力的解法,时间空间度复杂更优的解法,直到得到一个面试官肯定的解法,然后开始coding,切忌闷头就开始写代码;
    - 第三步,如果没有特别好的思路,一般都可以询问面试官能否提示下思路,毕竟coding理应考察的编程素养,而不是背过该题;

## 2. 如何刷题

- 按题型系统性刷题(这些类型在leetcode里边都有一些代表性题目)
    - 字符串/数组
    - 链表
    - 二叉树
    - 堆/优先队列
    - 动态规划
    - dfs

- 高频题目一定要刷过一遍(几乎没有面试官能原创地想出一道新题);
    - 我在面试中遇到的高频题目:
        - 数组的全部子集,leetcode 78,这道题目快手出过,字节也出过;
        - leetcode 62. Unique Paths,也出过多次;

- 一个取巧的办法
    - 对一些经典的高频题目,把代码打印出来,每次面试前花一个小时过一遍,这样只需要两三次,这些题的解法都在脑海里了;