【转】Google 技术面试经验总结
3 min read
古人云:取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,则无所得矣。
面试流程
- 在线评定:一到两个算法题,通过分享 Google Docs 链接的方式来让你输入代码。
- 电话面试:共有两轮,一轮一个工程师打电话,也是通过分享链接的方式。
- 现场面试:邀请到 Google 办公室,面试一天,大概 4 轮,包含算法和系统设计。
技巧
-
练习在 Google Docs 或白板上写代码或者手写代码
-
练习在有时间限制的情况下编写代码
一轮大概有 45 分钟:
- 5 分钟:介绍自己或简历
- 5-10 分钟:思考题目
- 20-25 分钟:编写代码
- 5 分钟:测试
-
练习一边写代码一边跟面试官讲解思路
这样在思路不是很顺畅的时候可以得到提示,不能不说话。
-
练习人工测试代码
写完后把代码放在脑子里过一遍。
-
练习编写边界条件测试
- 预期的输入
- 空输入
- 空指针输入
- 异常输入
- 大输入
- 其他边界条件
例子: 反转链表(leetcode-206-反转链表)
- 常规情况: 带有 5 个元素的正常链表
- 边界条件:
- 1 个元素的链表
- 0 个元素的链表
- 空指针
- 长链表
- 特殊情况: 有环的链表
-
澄清面试官的问题
例子: 正则表达式匹配 (leetcode-10-正则表达式匹配)
应该问的问题:
- 输入只有字母吗?
- 输入包含点号和星号吗?
- 匹配字符串是格式良好的吗?
-
从简单的暴力实现开始
例子: 搜索二维矩阵 (leetcode-240-搜索二维矩阵II)
-
计算每一个算法的时间复杂度和空间复杂度
期待
- 代码的正确性
- 代码的质量
- 手写代码的话字迹要清晰