Chapter1
从一道入门题说起面试中的常见误区
strStr: 编程基础题,第一轮面试中。考察会不会写程序。 90%挂掉
常见错误1:我知道一个算法叫KMP,可以在O(N+M)的时间复杂度完成。但是除非你可以很快写出来。 解决方法 :两重循环匹配即可。只是为了看看你会不会写。
跟面试官交流,我还知道***,要不要再写 面试官可能会问你能不能优化你的算法
常见错误2:随便定义变量名
if有一句话也要有大括号(java) 二元运算符应该加空格(面试官会从coding style里看出你有没有写很长时间)
解决 :(找个词出来)--src,dest... 常见错误3:边界检查和异常处理 解决方法 :传递函数为空?溢出?
一旦访问下标,就要想是否在循环区间里。溢出-->修改循环区间。
常见错误4:循环条件+1,-1:。 解决方法 :用具体数值带进去
coding style
- 边界检查和异常处理
- 循环条件
面试中的常见误区
- 做过的题(easy)肯定能过?
- 算法想出来了就能过?
- 写出来,写得好看,bug free
- 代码写出来就能过?
面试官眼中的求职者--你可能是他未来的同事--你会影响他的performance
- 你的代码看起来舒服吗 *他需要多少时间review你的代码
- 你的coding习惯好吗(i+j)
- 他不会未来疲于帮你DEBUG,你不会动不动就搞出SEV
- 你的沟通能力好么
- 你defensive吗。面试官会给你障碍,给你加限制条件怎么做,再加一个限制条件怎么做。如果你表现的很不爽他就会很不爽。他是在考验你的能力。
- 谦虚
- 合作愉快,心平气和
- Ta和你交流费劲吗
面试考察的基本功
- 程序风格: 缩进,括号,变量名
- Coding习惯: 异常检查,边界处理 *
- 沟通: 让面试官时刻明白你的意图
你真的会面试吗
- 你做题之前先在白纸上写一遍吗
- 刷了200多题,你吃透了几题
- 是不是三天之后就能一次ac不用修改多次
- 题目不会怎么办
- 跟面试官交流:我做过类似的题思路是这样的但感觉可能不太对,尝试b也感觉可能不太对...
- 看你是不是一个容易放弃的人
- 先问google再问人
- 是不是觉得面试官在为难你
如何准备面试算法
- 你是一个聪明的,驱动能力高(self-drive),学习能力强的人
算法其实很简单
- 总结归类相似题目(如何写hash表)
- 找出适合同一类题目的模板程序
- 很快写完不会出错
- 写程序大概5-10分钟,最多15分钟。因为还要给他解释
排列组合模板
- Subsets
- 树状结构理解递归