Google面试总结

2023-05-16


分享

Google面试总结来源: 王冠中的日志

 

终于把Google的面试给搞完了,感觉可以算是Tech Interview的顶峰了。这里主要写一下大概流程和内容,给大家以后interview一个参考。

G的full time面试一般3个,2个phone+1个onsite。到我这儿只有1个phone的,原因不太清楚,可能是他们急着招人,也可能是Waterloo Master的牌子,反正少一个我也乐的省心。从开始递简历开始到email接触到最后onsite完差不多快2个月。这个速度似乎在大公司里面算快得了,反正至今MS啊Amazon啊这些都还没理我……

 

先说说所有用到的知识点吧。Google的面试题总结起来2个词:宽!深!覆盖的知识面之广,基本把我知道的全给挖出来了。然后最后都会考到很难很难的点上,杀个几百万脑细胞。总的来说,我面试用到了以下所有的东西

Data Structure:

  • Linked List
  • Tree / Binary Search Tree
  • Vector / ArrayList
  • Queue & Stack
  • Heap
  • Stream (以前完全没用过这种东西啊!!!!)

Algorithm:

  • Output Sensitive Algorithm
  • Dynamic Programming
  • String Matching / Auto-Completion
  • Merge of Sorted Lists (2 or more)
  • Random Generation
  • Avg. and Wostcase Runtime / Space Analysis

Others:

  • Polymorphism
  • Design Patterns
  • Huffman Optimization (这个都快忘了)
  • Architechture Design
  • Exception and Handling (这个完全给跪了)

 

基本就这些了。有些东西真的是太久没见过,都忘了。还有些东西想都没想过。Onsite最后一个人一上来问说:Suppose I dereferenced a random pointer in C++ program, and then I got an error and back to OS, can you tell me what happened there? 我当时整个人都囧了,这NM简直是结合了Complier, Exception和OS等多个方面的问题,太综合了点吧!

总的来说,一般都会有好几个面试官,然后每个面试官喜欢出写跟自己这在做的工作相关的。第一个面试官是搞Speech-to-text的,然后就问了两个word auto complete的问题。然后着重问了些设计上的细节,比如说哪个地方用那种data structure; search的时候用什么algorithm。后面还有面试官直接说“我现在正在用一个神马神马东西,你帮我设计一个”之类的。当然,也可能跟resume有关。我resume上面写了好几个project,碰到类似部门的面试官就会先问我写这方面的问题。

以前看到过很多人说这种tech interview会让你手写code,然后R和YJ也告诉我会写一堆code。本来我蛮紧张的,怕给个难题写出来一堆bug。结果发现,会让你写code的肯定都是简单的题啊!总共写了4段code:

  • Find mininum element in a linked list
  • reverse a linked list
  • merge multiple sorted linked lists.
  • check if there is a cycle in a linked list

这4个的code大二的学生就会写了有没有!前三个我们学校大一就会学有没有!其实我觉得这种code就是考你个基本功,看你是不是会一种编程语言。真正考人的地方还是在后面设计和算法上面,重点还是看你的思考能力。面试官想看到的是,当给你一个你们见过的问题时,你会怎么处理。

 

下面说说面试流程。先说电话面试吧。网上都说电话面试的时候会先问点behaviour question,来缓解一下紧张的气氛。关于这点,我只能说:呵呵~。我电话面试就是:hi Wendell? OK, Let's start. Tell me some detail you did in this project...说好的behaviour question呢?这简直是直入正题,连寒暄都没有!

算上onsite的4个面试官和1个电话面试官,我见过5个面试官。有三个开头是tell me about a project you did (or this project on your resume)。所以说做一些这方面的准备还是很重要的。还好我对自己做得东西还算熟,加上像AI的project专业性比较强,可以没事儿吐几个貌似很高深的专业词汇,装装B还是可以的。建议大家以后面试的时候准备1,2个这种Project,被问到的几率还是蛮大的。

如果开篇没问这些,就是直接进入正题了。一般来说,都会问个问题,然后问你怎么解。如果是个简单的问题,会让你写code。如果是比较困难的问题,多半是不会写code的,而你也会花大多数时间解释。比较经典的流程是给个问题,然后问can you improve this。我现在听到这句话都想死有木有啊!!!因为除非你能给个formal proof说没有更好的算法了,不然面试官会一直问到死啊!当然,另外一点就是what is the runtime。其实这个一般不是很难,但有时候面试官会让你用固定的变量,比如我面试的时候把一个词典做成了prefix tree,然后面试官让我把retrive a subtree的runtime和词典里词的数量联系起来,当时分体的我个蛋疼。当然,还有些时候会让你分析space,还有些时候是worst case and average case……总而言之,建议大家多作这个的练习吧,肯定跑不掉的。

最后说一下,有些面试官会很贱的误导你!我最后一个面试,那个面试官特别拉风,右边脸颊和脖子上有纹身,然后右手背上纹了个“独”字,左手背上纹了个“孤”字。问了我一道random generation的东西,然后试着误导我,说:我给你个提示,你可以这样这样,你不觉得很有用吗?然后我看半天不知道怎么接下去,因为出来的东西都是不对的!最后他告诉我,其实这道题测的是看你会不会让这个random的几率不平均。我擦,还好我是学AI的,半只脚踩在stat上的,不然还真说不定被你匡进去了!

面试的最后,有时候会给你点问问题的时间。据说这个也是面试官看重的一部分。我的一般做法是,问问面试官什么team的,问问他们的产品,问问他们team和其他team的联系。我问过技术相关的地方,好些东西都有保密机制,问不出个啥,还容易尴尬,不如问些什么一星期开几次会啊,要给其他team合作时候怎么办啊之类的问题。

 

最后说说面试题目吧。其实Google的面试题是要求保密的,我也就不说太详细,也不放答案了,你们就当练习题做好了

  1. 给你个BST/Min-Heap,找第K小的数
  2. 前面说的4个linked list problem
  3. 用linked list编一个stack,除了push和pop,还有min(),返回stack里面最小的element
  4. 现在程序要merge n个sorted list,但list很长会花非常多的时间,那我怎样设计程序达到高效率
  5. 假设现在有很大量的数据,99%是8-bit integer,1%是64-bit integer,如何记录这个
  6. given a set of intergers,the range of the set is defined at [low,high] where low is the smallest nubmer in the set and high is the largest number in the set. randomly generate a number such that in (low,high) but not in the set.
  7. Given an array of integers, and a difference d, produce the longest arithmetic progression chain from the array with the given difference.

 

神啊,让Google给我个offer吧

 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google面试总结 的相关文章

  • 使用myheritage实现静态照片变成视频

    网址 https www myheritage com 首先 注册 可以使用google账号 其次 上传照片 接下来 生成动画 最后 下载视频
  • 谷歌技术"三宝"之BigTable

    谷歌技术 三宝 之BigTable 2006年的OSDI有 两篇google的论文 分别是BigTable和Chubby Chubby是一个分布式锁服务 基于Paxos算法 BigTable是一个用于管理结构化数据的分布式存储系统 构建在G
  • MySQL主从同步原理

    主从复制 是用来建立一个和主数据库完全一样的数据库环境 称为从数据库 主数据库一般是准实时的业务数据库 原理 数据库有个bin log二进制文件 记录了所有sql语句 我们的目标就是把主数据库的bin log文件的sql语句复制过来 让其在
  • Google也裁员啦!!

    国外媒体报道 在谷歌 要不就不下雨 要下就是倾盆大雨 google宣布首次裁员 裁减内部员工100个 合同工和劳务工都将裁掉 挪威 瑞典 奥斯汀 得克萨斯 等分部将全部关闭 分部员工全部回美国总部 谷歌还发表数篇博客 详细说明了即将关闭的多
  • Vue组件常用的六种通信方式

    Vue js 组件实例的作用域是相互独立的 不同组件之间的数据不能互相访问 组件有父级组件 子级组件 兄弟组件 如何选择组件之间的通信方式 针对常用的 props emit on vuex parent children attrs lis
  • 原来早就有java代码规范

    happy 最近几天 研究代码规范 想给给公司制定一个代码规范 公司很小 目前还没有代码规范 这个东西很烦人 也很难产生作用 小公司一般不采用吧 但现在为了提高代码质量 也就需要考虑了 今天 发现早在1997年 SUN公司就制定了java代
  • thinking 程序员思维习惯 .

    程序员 天职 gt 用计算机解决复杂 重复性 精确性问题 创造性 gt 养成一遇到问题 麻烦 应通过google相关的答案或 工具来解决 或写程序来解决的方法的思维习惯 case 导数程序 多库之间的同步 gt add UI 技术人员使用
  • 3个字节的空txt文本文件

    运行下面代码可以建立一个3个字节的空txt文本文件 想了解其原因的请参考文本文件的编码方式和unicode的具体资料 google上就有很多 System IO FileStream fs new System IO FileStream
  • 整合google,51ditu和mapbar的地图API

    http blog 163 com goodluck lq 126 blog static 63285386201001994058213
  • Spring bean的生命周期

    对于普通的Java对象 当new的时候创建对象 当它没有任何引用的时候被垃圾回收机制回收 而由Spring IoC容器托管的对象 它们的生命周期完全由容器控制 bean的声明 bean的声明有好几种 如上图 上图声明的一些bean信息可以通
  • 通过智慧的选择保持持续的进步 ——Google全球副总裁李开复谈选择的智慧

    通过智慧的选择保持持续的进步 Google全球副总裁李开复谈选择的智慧 2006 11 21 15 24 57 当今时代和20世纪已经有很大的差别 今天人们可以通过互联网接触到更多的信息 根据这些信息来为自己做更好的选择 这样的环境下 能够
  • Java是值传递还是引用传递?区别是什么?

    文章目录 值传递 引用传递 两者区别 Java到底是值传递还是引用传递 在Java中参数的传递主要有两种 值传递和 引用传递 值传递 实参传递给形参的是值 形参和实参在内存上是两个独立的变量 对形参做任何修改不会影响实参 也就是说 在方法调
  • word2vector学习笔记(一)

    word2vector学习笔记 一 最近研究了一下google的开源项目word2vector http code google com p word2vec 其实这玩意算是神经网络在文本挖掘的一项成功应用 本文是看了论文 Distribu
  • 校招——2021多益网络软件开发笔试和面试

    多益网络软件开发笔试和面试 要毕业了 临到五月才开始才开始找工作 一方面由于前期做毕设和搞论文拖到现在 期间在二月份就开始有点压力迫切想找工作 越到后面反而平静了好多 所谓破罐子破摔 一开始没想投多益的 是刚好身边有朋友进了多益 他是从三月
  • Google前工程经理王忻:如何准备软件工程师的面试

    2010 10 20 10 48 4639次阅读 来源 伯乐在线 职场博客 已有0条评论 发表评论 关键词 Google 软件工程师 面试 作者 人力资源 收藏这篇资讯 导读 原文作者王忻 Google前工程经理 2003年月加入Googl
  • 讲述IT人的程序人生,IT人心声,职业生涯,职场规划,程序员爱情优美文章155篇

    讲述IT人的程序人生 IT人心声 职业生涯 职场规划 程序员爱情优美文章155篇 来自 http www ithao123 com itlife 1 程序人生 程序 烟 我的人生2 程序人生 做技术 切不可沉湎于技术3 程序员 不得不习惯一
  • Google App Engine对Java支持情况一览

    Google App Engine对Java支持情况一览 http developer 51cto com 2009 04 09 11 06 杨赛 译 51CTO com 我要评论 0 Google App Engine的Java支持已发布
  • 信息收集 (一)Google Hack & robots文件

    一 Google Hack 在渗透测试中 信息收集是尤为重要的一部分 甚至可以占到整个渗透的百分之六十至七十 可见掌握好信息收集的方法十分重要 那GoogleHacking作为常用且方便的信息收集搜索引擎工具 它是利用谷歌搜索强大 可以搜出
  • 小记-面试时对MVC的理解

    MVC分别表示模型 视图 控制 1 模型层也叫业务逻辑层 是整个应用程序的核心 模型层接收视图层请求的数据并处理 返回最终的结果 2 视图层就是用户看到的并与之交互的界面 3 控制层就是接收用户的请求 并根据请求来决定调用哪个模型和视图去完
  • 如何在 Fedora 和 RHEL 系统中安装 Google Chrome

    Google Chrome 是一款功能强大 快速且流行的网络浏览器 以其简约的设计和强大的功能套件而闻名 虽然 Fedora 和 Red Hat Enterprise Linux RHEL 系统配备了默认的 Web 浏览器 大多数情况下为

随机推荐

  • ViewBinding和ButterKnife

    一 ViewBinding和ButterKnife比较 xff1a 传送门 1 ButterKnife一个好处就是不用写findViewById xff0c 另一个好处就是不用写setOnClickListener之类的 xff0c 满屏幕
  • 图的密度公式的解释

    一直不明白 xff0c 图的密度公式的含义 xff0c 如图所示 xff1a 分母 xff1a n n 1 2 xff0c 其实可以理解为两两相连的组合数量 比如说有6个节点 xff0c 那个两两相连的组合数为6 5 2 61 15 分子自
  • 【论文阅读】Cancelable Iris Biometric

    1 介绍 如果同时使用密钥和虹膜生物测定 xff0c 则错误拒绝率将增加 xff0c 因为恢复的密钥和汉明匹配距离都受到来自虹膜图案的噪声的影响 2 方法论 2 1 免注册转换 xff08 Registration free transfo
  • 阿里云服务器VNC连接Timed out waiting for a response from the computer报错解决方案

    首先要说明一点 xff0c 如果你是初学者 xff0c 第一次使用阿里云服务器并想获得可视化界面过程中遇到连接问题 xff0c 你可以参考以下方案 因为想要处理网页自动化测试的同时查看效果 xff0c 所以我想搞个VNC Viewer来显示
  • 发现scikit-image

    我是图形方面的新手 xff0c 写错的地方还请大家勘正 不记得从哪看到openCV与python的东西 xff0c 突然产生兴趣 xff0c 我喜欢python3 xff0c 但openCV偏偏最高只有python 2 7的支持 openC
  • Jetpack的学习

    一 ViewModel ViewModel的一个重要作用就是帮助Activity分担一部分的工作 xff0c 专门存放关于界面相关的数据 只要界面上能看到的数据 xff0c 都应该存放到ViewModel中 另外一个很重要的特性就是当手机屏
  • 【centOS 7一个解决“network.service: control process exited, code=exited status=1”方法】

    当我们用finalshell时 xff0c 发现连接不上 xff0c 用ip addr查看时 xff0c ens33没有ip xff0c 查看日志 一开始以为是没有开始网卡 xff0c 于是进入修改网卡配置参数 xff0c 修改 ONBOO
  • Ubuntu 20.04桌面文件夹图标消失及文件系统无法打开

    前言 之前遇到过服务器上桌面图标突然消失的情况 在更换系统语言之后 xff0c 桌面出现过一次这种情况 xff0c 经过重启之后就恢复了 再后来又莫名其妙出现了这么个问题 xff0c 最开始搜索的解决方案是 让你打开任务管理器 gnome
  • vim打造最强systemverilog编辑器

    更多分享内容可访问我的个人博客 https www niuiic top 更新 xff1a 1 对自动补全部分进行加强 xff0c 可以无限自定义snippets和keywords 补全能力完胜vscode 2 使用svlangserver
  • 修改CentOS VNC分辨率

    修改VNC分辨率有两个地方 1 etc sysconfig vncservers 2 usr bin vncserver 有些机器直接设置了这里就行 xff0c 有些要通过设置2才行
  • Debian11系统安装与配置Elasticsearch7.17.6

    安装方式 xff1a 使用安装包进行离线安装 1 下载安装包 下载地址 xff1a Elasticsearch 7 17 6 Elastic 选择DEB X86 64 xff0c 下载后得到文件elasticsearch 7 17 6 am
  • Windows Server 2012 R2 管理员密码忘记如何修改密码

    管理员密码忘记如何修改 人非圣贤孰能无过 有时我们经常会遇到忘记密码的尴尬场景 尤其是本机的管理员密码忘记 xff0c 那么如何更改恢复呢 xff1f xff08 如果你安装系统的过程中本身没有设置过密码 xff0c 那密码就为空或者为Ad
  • XPath 简单语法 (三)

    XPath表达式 2008 02 27 16 55 XML 文档对象模型 DOM 能够以编程方式读取 处理和修改 XML 文档 XPath 表达式 XPath 表达式使用路径表示法 xff08 与 URL 中使用的路径表示法类似 xff09
  • Error: cannot open display: localhost:0.0

    https stackoverflow com questions 12356425 error cannot open display localhost0 0 trying to open firefox from centos 6 在
  • MySQL 5.6 源码目录结构

    基于MySQL 5 6 26源码 源码目录 xff1a BUILD 构建工程的脚本 client 客户端 cmake cmd line utils 命令行工具 dbug 调试库 Docs 文档 extra 一些相对独立的次要工具 inclu
  • 计算机I/O原理

    cpu通过IO命令控制设备 xff0c cpu对设备的控制仅仅可以到达设备控制器 xff0c 无法直接控制设备 设备无法直接和cpu通信 xff0c 设备控制器通过中断机制向cpu反馈信息 即这个一个模型 CPU IO指令 gt 设备控制器
  • 计算机的I/O端口地址表

    PC的I O端口地址表 xff08 I O端口地址表 xff09 http tieba baidu com f kz 61 16042340 I O端口地址表 PC只用了10位地址线 A0 A9 进行译码 xff0c 其寻址的范围为0H 3
  • 利用pthread进行数组求和

    POSIX thread 简称为pthread xff0c Posix线程是一个 POSIX 标准线程 利用多线程可以提高运算速度 利用pthread进行数组求和的程序如下 xff1a include lt stdio h gt inclu
  • 字符串的全排列程序

    include lt iostream gt include lt cstring gt using namespace std void swap char str int i int j char tmp 61 str i str i
  • Google面试总结

    分享 Google面试总结 来源 xff1a 王冠中的日志 终于把Google的面试给搞完了 xff0c 感觉可以算是Tech Interview的顶峰了 这里主要写一下大概流程和内容 xff0c 给大家以后interview一个参考 G的