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
  • 树状结构理解递归