2016谷歌软件工程师面经

面试求职要点

为了方便大家,我首先把需要注意的点列在这里

  1. 内推比网投实用多了,特别是FLAG这样的大公司
  2. 听完问题,先向面试官提问直到弄清楚问题中所有描述不清楚的点
  3. 向面试官要样例输入输出
  4. 思考一两分钟差不多就应该有大概的思路,然后向面试官阐述你的算法,得到肯定就可以开始编码
  5. 如果一时之间想不到解决方法,不要傻站在那里,可以问面试官要提示(会降低你的评价,但总好过没答出来)
  6. 写完代码先自己在心里跑一遍,可以发现自己代码中的bug(理论上也可以增加评价,或者不会给自己扣分)
  7. 不要上来就写出最优解法,特别是你已经见过题目的情况下。最好的做法是先写一个中等的解法,然后尽量和面试官讨论慢慢改进

面经

1. make a guess

1. 井字过三关

隐藏的坑(follow up)

  1. 棋盘的大小
  2. 参加的玩家数量

Testcase

当你写完了代码,面试官有可能要你自己准备一些test case用以测试你程序的正确性,以及看你对测试的理解是否足够。

在这里我给出一个思路,把二维棋盘拉成一维,标上坐标,然后产生随机数模拟每个游戏玩家下子的过程。

一般来说单元测试要测试正常输入,exception,以及尽量保证代码100%覆盖。

3:broken stack

4: 同色块周长