想去Google做AI?面试题在手,全程无忧!

感谢博客:https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/79901364




  • 412

这里写图片描述

作者 | 阿司匹林 
出品 | 人工智能头条(公众号ID:AI_Thinker)

凭借强大的技术实力和良好的工作氛围,Google 对求职者一直有着强大吸引力。

虽然 Google 在几年前就已经退出了中国大陆市场,但是在北京、上海等国内城市依然保留着办公地点,而且一直在对外发布招聘需求。特别是去年底,Google 宣布在北京成立 AI 中心,更是为中国的 AI 人才提供了又一个好去处。

为此,我们整理一份 Google 面试指南,并搜集了 20 道 Google AI 的面试问题,希望对感兴趣的读者能有所助益。

当然,如果你想申请国外的 Google 岗位,这份资料也同样适用。

▌Google 面试方式

首先,Google 为求职者提供两种面试方式,一种是电话面试或者通过 Google Hangout 进行面试,一种是现场面试,面试方式视情况而定。

电话面试

在电话面试或者 Google Hangout 面试中,面试官将会是你潜在的同事或者经理。

如果你面试的是软件工程岗位,那么面试时间将持续 30~60 分钟。在回答编程问题时,你需要一边在 Google Doc 里面写代码,一边告诉面试官你的思考过程。我们建议你使用免提耳机或者扬声器,以便腾出手来打字。

电话面试的内容包含数据结构和算法,你需要做好准备,用你最擅长的语言编写 20~30 行代码。

面试官会提一个开放式的问题,你可以让面试官将问题解释清楚。

你需要用算法来解释它。

用代码来实现算法(提示:不要担心不够完美,因为时间有限。先将你想到的写下来,然后再完善,确保考虑到了 corner case 和 edge case)。

优化代码,用案例来测试代码,然后找出所有的 bug。

如果你申请的是其他职位,那么电话面试时间大约为 30~45 分钟。

面采

面试官通常有 4 位,包括潜在的同事以及一些跨职能的员工,每位面试官拥有 30~45 分钟的时间。作为求职者,你有机会表现你在以下四个不同领域的优势:

一般认知能力:我们会问一些开放式的问题来了解你是如何处理和解决问题的。这些问题没有固定的正确答案,我们更看重解释思考过程的能力以及使用数据来指导决策的能力。

领导力:说明你是如何使用自己的沟通和决策技巧来调动他人的。比如,你是如何在某个组织中晋升到领导职位的?或者在不是正式领导的情况下,你是如何帮助团队取得成功的?

与职位相关的知识:我们感兴趣的是,你如何将你的个人优势与经验相结合,从而发挥影响力的。我们关注的不仅仅是你现在能做些什么,而是你未来在不同岗位上的发展潜力。

“谷歌范儿”(Googleyness):你在单独工作或者团队协作时的工作方式?你是如何帮助他人的?你是如何驾驭不确定性情况的?又如何走出舒适区,让自己成长的?

对于软件工程师候选人,我们希望了解你的编程技能和技术领域专业知识,包括编程工具、编程语言、以及数据结构和算法基本知识。在面试过程中免不了会有一些讨论,因为我们喜欢互相推动,学习不同的方法。因此,请你做好要深入讨论你提出的解决方案的准备。打破自己的边界,找到最优答案。

Google 的技术面采历来用的是白板,但为了节省时间,同时提供更加真实的编程环境,我们已经开始在一些站点提供 Chromebook,用于编程面试。这些电脑上安装了一个面试程序,你可以选择自己偏好的语言。

在整个面试过程中,你可以随时让面试官作出解释,确保自己完全理解面试官的问题。此外,你也可以“采访”我们,问一些与工作、团队、文化等相关的问题,帮助你决定这份工作是否适合自己。

▌Google 软件工程和技术职位面试

如果你选择的是软件工程相关的岗位,在面试前你最好先掌握以下几个方面的知识:

  • 编程实践:你可以在 CodeLab、Quora、Stack Overflow 等网站上找到一些编程示例。Cracking the Coding Interview 这本书也是一个不错的资源。在某些站点,你可以选择在 Chromebook 或者白板上编程(提前询问招聘人员,这样你可以先行练习)。一定要测试代码,确保代码易于阅读,而且没有 bug。不用过分关注细微的句法错误,比如在给定方法(start, end or start, length)时应该使用哪种 substring,选择一个,告诉你的面试官即可。

  • 编程:你应该熟练掌握至少一门编程语言,最好是 C++、Java、Python、Go 或者 C。你需要知道 API,面向对象的设计和编程,如何测试代码,以及 corner case 和 edge case。注意,我们关注的是你对概念的理解而不是记忆。

  • 算法:同时用自下而上的算法和自上而下的算法来处理问题。你需要了解算法的复杂性以及如何改进算法。Google 里常用的包括排序算法(加上搜索和二分法检索)、分治算法、动态编程/记忆、贪心算法、递归算法、链接到特定数据结构的算法。了解大 O 符号(Big O notation,比如运行时),并做好讨论 Dijkstra 和 A* 等复杂算法的准备。我们建议你在写代码之前讨论或概述你所想到的算法。

  • 排序:熟悉常用的排序函数以及了解它们对哪些输入数据有效。从运行时(runtime)和内存占用的角度思考效率问题。例如,在特殊情况下,插入排序(insertion-sort)或基数排序(radix-sort )比一般的快速排序/合并排序/堆排序(QuickSort/MergeSort/HeapSort)答案好得多。

  • 数据结构:你应该研究尽可能多的数据结构。最常用的数据结构有数组、链表、堆栈、队列、哈希集、哈希映射、哈希表、字典、树和二叉树、堆和图( arrays, linked lists, stacks, queues, hash-sets, hash-maps, hash-tables, dictionary, trees and binary trees, heaps and graphs)。你需要彻底了解数据结构,以及不同算法对不同数据结构的偏好。

  • 数学:有些面试官会问一些基本的离散数学问题,因为我们经常碰到各种计算问题、概率问题、以及其他的 Discrete Math 101 问题。面试前,你可以花时间复习下(或者自学)基本概率论和组合数学的基本知识。你需要熟悉 n-choose-k 等同类型的问题。

  • 图算法:考虑一个问题是否可以应用图算法,如距离,搜索,连接,循环检测等(distance, search, connectivity, cycle-detection)。熟悉三种基本方法——对象和指针,矩阵和邻接表——的利弊。了解基本的图遍历算法、广度优先搜索和深度优先搜索,以及它们的计算复杂性、优缺点、实现方法。

  • 递归:许多编码问题都涉及递归思考,而且可能还要对递归解决方案进行编码。针对那些能够用迭代解决的问题,你需要找到更简练、更优雅的递归方法。

▌Google AI 职位面试

如果你应聘的是 AI 相关的职位,那么你最好先对 Google 的 AI 有一个全面的了解。

首先,Google AI 文章数量最多的三个领域为:

机器智能 
机器感知 
自然语言处理

其次,下面的内容需要你重点阅读:

TensorFlow:一个大规模机器学习系统 
Google 使用的 AI 工具 
非官方的 Google 数据科学博客

在对 Google AI 有了比较全面的了解后,你就可以看一下这份由众多求职者分享的 Google AI 相关的面试问题了。

  1. 1/x 的导数是什么?
  2. 绘制 log(x+10) 函数的曲线。
  3. 如何设计一个 针对客户满意度的调查?
  4. 投掷一枚硬币 10 次,8次正面和 2 次反面。如何分析掷硬币的公平性?什么是 p-value?
  5. 你有 10 枚硬币,每枚硬币掷 10 次(共 100次),并观察结果,你会修改算法来测试硬掷硬币是否公平吗?
  6. 解释一个非正态分布以及如何应用它?
  7. 为什么要使用特征选择?如果两个预测因子高度相关,那么对逻辑回归中的系数有什么影响? 系数的置信区间是多少?
  8. K-Means算法和高斯混合模型:K-Means 算法和 EM 算法之间有什么区别?
  9. 高斯混合模型适用于什么情况?(正态分布)
  10. 如果标签在聚类项目中是已知的,那么如何评估模型的性能?
  11. 对一个 Google 应用程序做了更改之后,如何测试某个指标是提高了还是降低了?
  12. 描述数据分析的过程。
  13. 为什么不使用逻辑回归算法?为什么选择 GBM 算法?
  14. 推导 GMM 方程?
  15. 如何衡量用户对视频的喜好程度?
  16. 模拟一个二元正态分布?
  17. 推导一个分布的方差?
  18. 每年有多少人申请 Google 账户?
  19. 如何构建中位数的估计量?
  20. 如果回归模型中的两个系数估计值都具有统计显著性,那么你是否认为两者的测试依然重要?

最后,欢迎大家在评论区分享自己的答案以及面试经验。


  • 412

这里写图片描述

作者 | 阿司匹林 
出品 | 人工智能头条(公众号ID:AI_Thinker)

凭借强大的技术实力和良好的工作氛围,Google 对求职者一直有着强大吸引力。

虽然 Google 在几年前就已经退出了中国大陆市场,但是在北京、上海等国内城市依然保留着办公地点,而且一直在对外发布招聘需求。特别是去年底,Google 宣布在北京成立 AI 中心,更是为中国的 AI 人才提供了又一个好去处。

为此,我们整理一份 Google 面试指南,并搜集了 20 道 Google AI 的面试问题,希望对感兴趣的读者能有所助益。

当然,如果你想申请国外的 Google 岗位,这份资料也同样适用。

▌Google 面试方式

首先,Google 为求职者提供两种面试方式,一种是电话面试或者通过 Google Hangout 进行面试,一种是现场面试,面试方式视情况而定。

电话面试

在电话面试或者 Google Hangout 面试中,面试官将会是你潜在的同事或者经理。

如果你面试的是软件工程岗位,那么面试时间将持续 30~60 分钟。在回答编程问题时,你需要一边在 Google Doc 里面写代码,一边告诉面试官你的思考过程。我们建议你使用免提耳机或者扬声器,以便腾出手来打字。

电话面试的内容包含数据结构和算法,你需要做好准备,用你最擅长的语言编写 20~30 行代码。

面试官会提一个开放式的问题,你可以让面试官将问题解释清楚。

你需要用算法来解释它。

用代码来实现算法(提示:不要担心不够完美,因为时间有限。先将你想到的写下来,然后再完善,确保考虑到了 corner case 和 edge case)。

优化代码,用案例来测试代码,然后找出所有的 bug。

如果你申请的是其他职位,那么电话面试时间大约为 30~45 分钟。

面采

面试官通常有 4 位,包括潜在的同事以及一些跨职能的员工,每位面试官拥有 30~45 分钟的时间。作为求职者,你有机会表现你在以下四个不同领域的优势:

一般认知能力:我们会问一些开放式的问题来了解你是如何处理和解决问题的。这些问题没有固定的正确答案,我们更看重解释思考过程的能力以及使用数据来指导决策的能力。

领导力:说明你是如何使用自己的沟通和决策技巧来调动他人的。比如,你是如何在某个组织中晋升到领导职位的?或者在不是正式领导的情况下,你是如何帮助团队取得成功的?

与职位相关的知识:我们感兴趣的是,你如何将你的个人优势与经验相结合,从而发挥影响力的。我们关注的不仅仅是你现在能做些什么,而是你未来在不同岗位上的发展潜力。

“谷歌范儿”(Googleyness):你在单独工作或者团队协作时的工作方式?你是如何帮助他人的?你是如何驾驭不确定性情况的?又如何走出舒适区,让自己成长的?

对于软件工程师候选人,我们希望了解你的编程技能和技术领域专业知识,包括编程工具、编程语言、以及数据结构和算法基本知识。在面试过程中免不了会有一些讨论,因为我们喜欢互相推动,学习不同的方法。因此,请你做好要深入讨论你提出的解决方案的准备。打破自己的边界,找到最优答案。

Google 的技术面采历来用的是白板,但为了节省时间,同时提供更加真实的编程环境,我们已经开始在一些站点提供 Chromebook,用于编程面试。这些电脑上安装了一个面试程序,你可以选择自己偏好的语言。

在整个面试过程中,你可以随时让面试官作出解释,确保自己完全理解面试官的问题。此外,你也可以“采访”我们,问一些与工作、团队、文化等相关的问题,帮助你决定这份工作是否适合自己。

▌Google 软件工程和技术职位面试

如果你选择的是软件工程相关的岗位,在面试前你最好先掌握以下几个方面的知识:

  • 编程实践:你可以在 CodeLab、Quora、Stack Overflow 等网站上找到一些编程示例。Cracking the Coding Interview 这本书也是一个不错的资源。在某些站点,你可以选择在 Chromebook 或者白板上编程(提前询问招聘人员,这样你可以先行练习)。一定要测试代码,确保代码易于阅读,而且没有 bug。不用过分关注细微的句法错误,比如在给定方法(start, end or start, length)时应该使用哪种 substring,选择一个,告诉你的面试官即可。

  • 编程:你应该熟练掌握至少一门编程语言,最好是 C++、Java、Python、Go 或者 C。你需要知道 API,面向对象的设计和编程,如何测试代码,以及 corner case 和 edge case。注意,我们关注的是你对概念的理解而不是记忆。

  • 算法:同时用自下而上的算法和自上而下的算法来处理问题。你需要了解算法的复杂性以及如何改进算法。Google 里常用的包括排序算法(加上搜索和二分法检索)、分治算法、动态编程/记忆、贪心算法、递归算法、链接到特定数据结构的算法。了解大 O 符号(Big O notation,比如运行时),并做好讨论 Dijkstra 和 A* 等复杂算法的准备。我们建议你在写代码之前讨论或概述你所想到的算法。

  • 排序:熟悉常用的排序函数以及了解它们对哪些输入数据有效。从运行时(runtime)和内存占用的角度思考效率问题。例如,在特殊情况下,插入排序(insertion-sort)或基数排序(radix-sort )比一般的快速排序/合并排序/堆排序(QuickSort/MergeSort/HeapSort)答案好得多。

  • 数据结构:你应该研究尽可能多的数据结构。最常用的数据结构有数组、链表、堆栈、队列、哈希集、哈希映射、哈希表、字典、树和二叉树、堆和图( arrays, linked lists, stacks, queues, hash-sets, hash-maps, hash-tables, dictionary, trees and binary trees, heaps and graphs)。你需要彻底了解数据结构,以及不同算法对不同数据结构的偏好。

  • 数学:有些面试官会问一些基本的离散数学问题,因为我们经常碰到各种计算问题、概率问题、以及其他的 Discrete Math 101 问题。面试前,你可以花时间复习下(或者自学)基本概率论和组合数学的基本知识。你需要熟悉 n-choose-k 等同类型的问题。

  • 图算法:考虑一个问题是否可以应用图算法,如距离,搜索,连接,循环检测等(distance, search, connectivity, cycle-detection)。熟悉三种基本方法——对象和指针,矩阵和邻接表——的利弊。了解基本的图遍历算法、广度优先搜索和深度优先搜索,以及它们的计算复杂性、优缺点、实现方法。

  • 递归:许多编码问题都涉及递归思考,而且可能还要对递归解决方案进行编码。针对那些能够用迭代解决的问题,你需要找到更简练、更优雅的递归方法。

▌Google AI 职位面试

如果你应聘的是 AI 相关的职位,那么你最好先对 Google 的 AI 有一个全面的了解。

首先,Google AI 文章数量最多的三个领域为:

机器智能 
机器感知 
自然语言处理

其次,下面的内容需要你重点阅读:

TensorFlow:一个大规模机器学习系统 
Google 使用的 AI 工具 
非官方的 Google 数据科学博客

在对 Google AI 有了比较全面的了解后,你就可以看一下这份由众多求职者分享的 Google AI 相关的面试问题了。

  1. 1/x 的导数是什么?
  2. 绘制 log(x+10) 函数的曲线。
  3. 如何设计一个 针对客户满意度的调查?
  4. 投掷一枚硬币 10 次,8次正面和 2 次反面。如何分析掷硬币的公平性?什么是 p-value?
  5. 你有 10 枚硬币,每枚硬币掷 10 次(共 100次),并观察结果,你会修改算法来测试硬掷硬币是否公平吗?
  6. 解释一个非正态分布以及如何应用它?
  7. 为什么要使用特征选择?如果两个预测因子高度相关,那么对逻辑回归中的系数有什么影响? 系数的置信区间是多少?
  8. K-Means算法和高斯混合模型:K-Means 算法和 EM 算法之间有什么区别?
  9. 高斯混合模型适用于什么情况?(正态分布)
  10. 如果标签在聚类项目中是已知的,那么如何评估模型的性能?
  11. 对一个 Google 应用程序做了更改之后,如何测试某个指标是提高了还是降低了?
  12. 描述数据分析的过程。
  13. 为什么不使用逻辑回归算法?为什么选择 GBM 算法?
  14. 推导 GMM 方程?
  15. 如何衡量用户对视频的喜好程度?
  16. 模拟一个二元正态分布?
  17. 推导一个分布的方差?
  18. 每年有多少人申请 Google 账户?
  19. 如何构建中位数的估计量?
  20. 如果回归模型中的两个系数估计值都具有统计显著性,那么你是否认为两者的测试依然重要?

最后,欢迎大家在评论区分享自己的答案以及面试经验。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值