Google前工程经理王忻:如何准备软件工程师的面试

2023-11-12

2010-10-20 10:48 | 4639次阅读 | 来源:伯乐在线-职场博客 【已有0条评论】发表评论

关键词:Google,软件工程师,面试 | 作者:人力资源 | 收藏这篇资讯

 

导读: 原文作者王忻,Google前工程经理,2003年月加入Google,是Google Lively背后的主导力量,是Google Desktop的重要贡献人,并在Google招聘委员会任职。2008年11月从Google离职,现是Trackville.com的创始人。2010年10月12日王忻在博客中透露,她已是Minted.com的CTO。(注:此文写于2006年6月。) 

 

Google前工程经理王忻

六月份的时候,我曾经在黑板报上介绍过“如何写一份好的工程师简历”, 今天想跟大家来谈谈如何准备软件工程师的面试?假设,现在您的杀手简历 (killer resume)已经吸引了某大公司的注意并约你面试。那么接下来该如何准备呢?

我在 Google(以前是微软)工作期间面试了不下 300人,其中某些应聘者确实表现非凡,但有些却显得准备不足。当然许多面试准备不足的人最后依然获得了录用通知,因为他们本身确实才华出众。但如果应聘者能提前准备妥当,那么面试过程将更为保险和轻松。以下所列出的就是我根据多年经验总结得出的建议:

1.使用相同的工具(如铅笔和纸张)和时间限制(例如半个小时)模拟面试训练

Google 和微软都会让应聘者在白板上手工解答编程问题,但通常大部分的应聘者都是习惯于在电脑上利用编程工具系统编写程序。因此面试的时候,某些应聘者离开了熟悉的电脑光标,站在白板前感觉手足无措不知该如何起行。又或者他们不习惯在编程之时旁边有人观看,这会让他们感到紧张而无法正常思考。

在现实生活中,如果你想要横渡英吉利海峡,自然不能总是在室内游泳池练习。你必须投身大海在波涛之中训练,在准备面试的时候也是如此。

在面试开始之前你最好向招聘单位询问面试形式和面试问题。如果招聘单位让你在某个房间考试且仅提供没有汇编程序的编辑器,那么就应该在家中按照这种情景进行练习。如果招聘公司单位让你在白板上回答问题并会安排考官在旁监督,那么你就要找一位软件工程师来扮演考官配合你练习。即使找来的考官经验不如你也没有关系,他们依然能帮助你消除在他人面前出错所带来的紧张感,这样可以让你适应有人在旁边盯着看的面试氛围。

如果你恰巧认识我并希望由我来帮你联系,那我的条件就是必须请我吃饭:如果你已经工作了就吃日本寿司大餐;如果你还是学生,那么吃比萨饼也可以。

2.在面试过程中不要对细小错误耿耿于怀

我曾不止一次的在面试过程中碰到这种情况:当应聘者知道编程问题后,他马上就想到了最佳的方案、确定了边界条件,然后开始编写程序。但在编写过程中,应聘者犯了诸如首先检查是不是操作顺序错误或忘记设定某变量等无关大局的小错误,当我指出其错误之后,应聘者立刻变得十分紧张,这种焦虑情绪影响了他在后面环节的正常发挥。

其实这种恐惧心理完全不必要。一名优秀的程序员在编程过程中出现错误也是很正常的,就像是小提琴手在演奏高难度的巴赫交响乐时也会偶尔失误。音乐会的听众可能会觉察到这些错误,但是听众绝对不会因为这种细小失误就把出色的小提琴手看作是门外汉。

即便应聘者彻底搞砸了某个编程问题,面试考官也可能会提出不同的问题并会容忍应聘者在某个问题上的失误。再退一步说,就算某次面试彻底失败,你也有机会在其它面试上补救。

我的一位同事(一个项目的技术负责人)最近面试了一个人,在开始面试时他觉得面试者的交流方式存在问题,因此开始表现的相当不友好。但经过了整个面试过程后,面试者证明了自身的能力,而我的那位同事也成了那位面试者最坚定的支持者。在过去的一年中,我从未见过这位同事如此强烈的支持哪位面试者。

所以,因此就算面试进展不顺,也务必坚持到底不要放弃。

3.在面试过程中不要失礼

这似乎是不用说的问题,但在面试过程中我确实碰到过影响很不好的失礼行为。曾有一位前来应聘软件工程师的人看到我就说:“哇,我真不敢相信你这么年轻!你看上去好小!!我觉得你才 18岁!”我看了他的简历才搞清楚原来是来应聘的,在开始的时候我却忍不住想:“这个人是来面试我的吧?!?!”

面试者的这种言行实在要不得。

面试者也要注意不要说出诸如此类的话:“哇,你真的就是考官吗?你看上去好老!”“哇,你真的是来面试我的,你看上去好胖!”(相信应该不会有人说这样的话)。

在我的另外一次面试中,应聘者的手机在面试开始 15 分钟之后就响了,她没有理会,手机连续响了20秒,这样不免会对面试造成影响。5分钟之后,她的手机又响了,她依然没有理会;5分钟之后,手机第三次响起。最后她终于抓过手提包在里面翻出了手机。我想:“是时候关掉手机了,她在进来之前就应该把手机关掉。”但是她在手提包中拿出手机之后却旁若无人的打起电话来,而且就在面试过程中间!

这种情况唯一可接受的理由就是他有什么非常紧急的事,但是即便情况如此,那么他也应该在面试开始之时就讲清楚,让面试官有所准备。

4.不要在面试中喧宾夺主

我曾经面试过几个应聘者,他们好像铁了心肠一定要告诉我他们最近的“超级项目”。当我开始发话他们就立刻打断:“我想让你了解我们近期处理的超级项目,10年之前当这个项目开始之时还默默无闻……”,然后接下来的5分钟时间都在那里滔滔不绝唾沫横飞。

有时应聘者好像打定主意要给每个考官详细描述其引以为豪的项目,然后一整天都在那里翻来覆去的说这个项目。

记住:面试官在面试过程中有具体的问题需要询问。但是如果应聘者喧宾夺主,那么考官就可能无法获得充分的信息来做出判断,同时这种行为也会让考官觉得应聘者很难共事。

如果你确实想谈论自己的项目,那么就应询问面试官:“我觉得最近的某某项目能充分体现我的能力,我能不能用 10分钟的时间来描述一下具体情况?”这样就会给面试官空间来调整面试过程,由此也避免毫无征兆就让面试离题万里。

5.在回答需要具体答案的问题之时,记得首先要有总括性的发言

有时我会问一个答案可以很简练的问题,例如:“在你的那个成功项目中总共有多少人参与?”但应聘者往往会就此打开话匣:“恩,张三参与了这个项目,他负责 UI部分,当然我也会给他一些指导。李四也在项目中,她在宾州远程工作,负责后端服务器。两年之后我们又有新人王五加入……”

在应聘者滔滔不绝的讲了三分钟之后,我还是不知道这个项目到底有多少人参与。

因此首先要简练的回答问题,然后再展开描述:“在我接手项目时有三个人,但当我离开项目时人数已经增加到12人。”

当然如果能简练的回答问题,然后征询意见之后再展开论述那就更好了:“在我接手项目时有三个人,但当我离开项目时人数已经增加到 12 人。我可以讲一下各人在项目中的具体分工吗?”

6.(不是特别重要)在面试中要衣着得体,舒适的商务便装是最佳的选择

人们有时候会为衣着犯愁。但是最重要的是要让自己感觉舒适。如果需要具体的建议,那么我建议穿衬衫甚至T恤衫。对于某些公司(例如 Google),西装革履显然是太隆重了。

这条建议不必太看中,因为面试官不会管应聘者穿什么。最好应该询问人事招聘部门穿什么合适,因为不同国家有不同习俗,就算美国东海岸和西海岸的公司着装文化也会有差别。像 Google 这样的公司在着装方面更加随意,因此如果你穿着“三件套”的经典西服去 Google 面试,考官可能会有异样的感觉。因此如果你真的具备软件工程的本领,穿什么其实并不重要。某个应聘者曾经穿着皱巴巴脏兮兮的T恤就跑来面试,他的T恤衫上还有着许多破洞。但最后他还是拿到了录取通知(当然我绝不建议如此穿着)。

最后的一个小故事

最后我想讲一场极为尴尬的面试。在看完之后,我希望你能这样想:无论你的面试如何糟糕,你至少要比这位应聘者幸运。

以前我还在微软的时候,我们通常会为应聘者准备一些饮料,某位暂称其为 Jeff 的应聘者要了一听百事可乐。我们走进面试房间后,他就在桌前坐下了。接下来我们简要的谈了谈他的工作经历,然后他开始在白板上解答编程问题,此时他还没有打开他的可乐。

我们俩站在白板前,然后杰夫开始在上面写程序。在写程序之时他沉浸在对整体构架的思考中,下意识的退了一步来查看整个白板。在后退时他不小心碰到了桌子,放在桌上的百事可乐掉到了地上。

因为可乐还没有打开,因此当可乐罐落地的时候,可乐罐炸开了。

可乐罐在地上打转,泡沫喷的到处都是。你可以想象当时的场景,可乐喷到了墙上、书架还有我电脑的键盘上。我俩楞在那里,手都半伸着(根本来不及抓到可乐罐),眼睁睁的看着可乐弄得到处都是。

我们花了 5 分钟的时间用纸巾来清理现场(虽然我的书本自那天之后都粘页了,而墙壁也不再是干净的了)。

随后我们重新开始白板测试。杰夫此时已非常紧张(换了谁都会紧张吧?)。他写了几行程序,然后擦掉,然后再写。他是用自己的手擦拭白板而不是用板刷。他急得额头冒汗,然后他又用刚刚擦过白板的手擦汗。在面试过程结束之时,他的脸上布满了红色、绿色和蓝色的颜料。

我说:“你的手上粘了很多颜料,我带你去卫生间洗洗吧,”然后我把他领到洗手间让他从镜中看到了自己的尊容。

原作者简介:

王忻,出生于北京,五岁时跟随父母移居美国。中学期间跳了三级,十五岁进入了加州理工大学,加入 Google前曾在微软等公司工作。详情见其简历。

 

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

Google前工程经理王忻:如何准备软件工程师的面试 的相关文章

  • 学习[30天自制操作系统]day02遇到的makefile的问题(未解决)

    学习 30天自制操作系统 遇到的问题 场景还原 尝试过的解决办法 问题描述 光盘代码day 02 helloos 4 helloos 5 在使用makefile 运行qemu 模拟器过程出错 场景还原 makefile ipl bin ip
  • 如何更改node.js的控制台字体颜色?

    本文翻译自 How to change node js s console font color I had to change the console background color to white because of eye pr
  • ASP.NET 的特点

    asp net 相比传统的动态页面技术 使程序设计相对简化 结构更为清晰 但大大加重 了页面设计的难度 其界面处理与传统的 asp php cgi 相比 极为死板 几乎全部需要由程 序员来处理其界面 很难使用第三方工具进行可视化设计 asp
  • Springboot 获取接口多个实现类bean 并调用的方式

    前文中提到通过策略模式代替switch case的方式 在实际使用中将接口通过bean获得 然后去调用即可 实际操作中发现 springboot在通过 Autowired 或者 Resource 方式注入时会出现部分问题 针对以上替代swi

随机推荐

  • [hive] 经典sql题及答案(一)

    推荐 经典sql题及答案 二 经典sql题及答案 三 题目部分 第1题 我们有如下的用户访问数据 userId visitDate visitCount u01 2017 1 21 5 u02 2017 1 23 6 u03 2017 1
  • vscode的前端插件,加快编程速度

    vscode的前端插件 加快编程速度 1 auto close tag 自动闭合html标签 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img aAm0WeuK 1598933801894 C Users Admi
  • 在dos下使用debug被提示incorrect ms dos version的解决办法

    原创 在dos下使用debug被提示incorrect ms dos version的解决办法 首先可以确定一点 直接使用debug时它是直接在当前目录下寻找的 一旦当前目录下没有debug或debug版本不合适 则会出错 直接在 开始 中
  • Unity normalized的坑

    注意 向量太小会返回0 所以要考虑等于000的情况 我们的项目恰恰会用到 normalized返回的值传给 Quaternion LookRotation 结果造成000错误 切记要考虑到 normalized 为0 的情况
  • 嵌入式(TCP、IP协议原理)

    TCP IP协议网络封包格式 以太网头 IP头 TCP头 TCP是一种面向连接的 可靠的数据传输 一 TCP的可靠传输 通过确认和重发机制 1 TCP把所有要发送的数据进行编号 每一个字节用一个号 2 发送时从当前数据位置 发送window
  • 【图片标注】推荐一款特别好用的图片分割标注工具EIseg

    前言 最近在百度飞浆的公众号看到一个特别有趣的图片标注工具EIseg 它labelme等标记工具不同的是 它是一个通过深度学习来标注的工具 使用鼠标点一下就能完成标注任务 下面是工具的演示 本文章仅供学习 操作演示 标注效果 绿色的点为正样
  • java jps监控_java性能监控工具jps-windows

    jps Lists the instrumented Java Virtual Machines JVMs on the target system This command is experimental and unsupported
  • mybatis jdbcType: DATE ,TIMESTAMP 区别:

    1 mybatis中 jdbcType 时间类型 当jdbcType DATE 时 只传入了 年月日 jdbcType TIMESTAMP 年月日 时分秒 2 jdbcType 是否必须 使用时 没有加jdbcType 正常 加上jdbcT
  • 【零知ESP8266教程】AP模式下WIFI UDP协议通信示例

    本帖主要讲解ESP8266 WIFI功能关于UDP协议网络传输的应用 这里演示了ESP8266在AP模式下UDP通信的示例 1 硬件 零知ESP8266开发板 2 软件 1 代码如下 文件 udp server ino by 零知实验室 u
  • 为什么 DeFi 需要探索以太坊外的世界?

    由于DeFi生态系统的总锁仓价值超过130亿美元 DeFi创造了最近几周的最高纪录 可以说 DeFi是当前加密货币行业发展最快的一个领域 在短短几个月内吸引了大量资本和市场参与者 在这一强劲势头下 以太坊仍是DeFi市场的主宰 占据了96
  • 联想网络同传系统_皮层网络结构的联想学习“理论”

    本文来自公众号 吴思Lab计算神经科学及类脑计算 AI科技评论 获授权转载 如需转载 请联系吴思Lab 编者按 张单可博士是我们课题组已毕业的博士生 最近刚从美国东北大学做完博士后回来 在中国科学院深圳先进技术研究院工作 这是他在博士后期间
  • 平台使用篇

    本课程提供的实验平台总体可以分成两个部分 硬件平台和软件平台 本讲简要介绍各个部分的基本组成及实验开发流程 平台使用篇 RflySim飞控底层实验平台配置介绍 01 电脑配置 1 1推荐配置 系统 Windows 10 x64系统 版本大于
  • MySQL如何查询表中重复的数据

    文章目录 一 查询重复记录 二 总结 一 查询重复记录 例 查询员工表里出现重复姓名的记录 思路 1 查看重复记录 首先要使用分组函数 group by 再用聚合函数中的计数函数count name 给姓名列计数 且使用group by 后
  • 【论文阅读】BGRL:Bootstrapped Representation Learning on Graphs

    目录 摘要 1 引言 2 Bootstrapped Graph Latents BGRL 2 1 BGRL组件 2 2 BGRL更新步骤 2 2 1 更新 2 2 2 更新
  • 解密全产业供应关系,助力企业寻找客户资源,洞察商机

    在当今商业竞争日益激烈的时代 企业要实现长期可持续的发展 需要深入了解供应链关系 抢先捕获商机 拓展优质的客户资源 然而 供应链关系错综复杂 商机 客户隐藏在其中 如何挖掘和洞察成为了企业亟需解决的难题 五度易链基于产业链上下游的视角 帮助
  • 合并两个有序数组(go实现

    合并两个有序数组 go实现 题目描述 解题思路 代码示例 执行结果 更多 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2 另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目 请你 合并
  • 机器学习python实现,自我总结

    机器学习代码及套用 网上很多机器学习的资料 我看了很多 最后发现用的时候其实没有那么复杂 也不需要了解很多的数学知识 也庆幸自己没有在上机器学习的课时放弃 写篇文章来总结总结吧 本文使用python来套 导入机器学习模块 自己随便百度一下机
  • centos网页/phpmyadmin 打不开_苹果手机Safari打不开网页?按下一个键,马上就能用...

    Safari 苹果手机自带的一个浏览器 很多人都认为是个垃圾 甚至把它卸载 但其实 Safari是当时乔布斯最看重的一个苹果武器 如果真要好好利用起来 这个自带软件远远比你想象的厉害
  • 下载LAMBDA Group的代码

    LAMBDA Group 的文章在其主页有公布代码和数据集 具体在其 主页 gt 数据与代码 下面的 代码 栏列了文章 比如点开第一篇 AcMR 里面有个下载代码的链接 code 但点开会发现 无法链接到服务器 根据杨嘉祺的邮件回复 在网址
  • Google前工程经理王忻:如何准备软件工程师的面试

    2010 10 20 10 48 4639次阅读 来源 伯乐在线 职场博客 已有0条评论 发表评论 关键词 Google 软件工程师 面试 作者 人力资源 收藏这篇资讯 导读 原文作者王忻 Google前工程经理 2003年月加入Googl