转自:http://blog.sina.com.cn/s/blog_8740e0c30101cryd.html

在详细阅读本文之前,你需要明白Google并不是简单地需要你在经过良好的训练之后解决某些熟知问题,我们更看重你是否有激情和能力试着去解决一些从未见到过的问题。在本文中我们罗列了面试中可能会遇到的一些知识点,但面试的考查范围并不仅限于这些,我们强烈建议你对于那些我们在此没有提到的知识同样给予足够的重视。值得一提的是,在Google的面试中,除了针对知识本身进行评估外,我们同样会甚至更加看重对于你的系统化思维,快速学习能力,语言沟通能力以及个性的考察。

1. 面试流程

每轮面试持续45分钟,面试官将是一位来自Google的软件工程师。面试官会考察你对于计算机专业基础知识(如数据结构,算法等)的掌握程度以及你在解决实际问题时如何利用它们。

面试内容包括:

  • 简单的自我介绍,之前做过的项目,所获的主要成绩以及你列在简历上的其它任何东西,尤其是当你自诩为某方面专家的时候(面试官会重点考察)。

  • 编码能力测试: 在面试中,你需要在白板上或者纸上完成代码(电话面试时需要在Google docs上完成)

  • 设计和开发复杂算法并分析其性能特征。

  • 计算机科学的基础知识:面向对象的设计和编程;常见数据结构如哈希表,栈,数组等;系统级的知识如操作系统,计算机网络,编译器等。

  • 解决实际问题的能力:利用计算机的知识解决全新的问题。

  • 设计问题:例如功能集,接口设计,类的继承,约束条件下的系统设计,系统的简单性和鲁棒性,折衷设计。

  • 开放性问题:面临的最大挑战,已知的最好/最坏设计,效率分析及优化,测试问题,如何改良一个已有产品的思路。

  • 语言能力(中英文):在我们的整个面试进程中,除了对你的技术能力和工作能力进行综合评价外,还会针对性地评估你的中英文沟通能力。面试官可能会选择用英文进行面试,或者跟你进行一些简单的对话,了解你的项目经验,教育或工作背景,展开技术方面的讨论,希望您可以花些时间,在语言方面也做好充分地准备。

2. 如何准备

编程

我们期待你在面试中能写出高质量且高效的,结构清晰的,无输入错误并且可被编译的代码。这是因为,Google的所有工程师(各个级别)会在同一个代码库中协同工作,让所有人的代码遵循统一的高标准对于提升代码审阅流程的效率至关重要。

你应该至少十分熟悉一种编程语言,如果熟悉C++,  Java,Python或者Javascript更好,你需要在面试中写出逻辑和语法完全正确的代码。请注意,仅仅完成伪代码是不够的,你的代码还需要可以被成功编译执行。请尝试如此练习:你先在纸上写出完整代码,然后将其输入到电脑中试着编译(如果不能编译,你可能需要多加练习)。可以练习的题目包括:构建/遍历数据结构,实现系统流程,从大型数据集合中提取单个值,完成不同数据集合间的转换等。

数据结构和算法

用“大O表示法”分析算法的时空间复杂度是必须掌握的。由于你将来可能参与构建非常复杂的产品,用“大O表示法”分析执行效率非常重要。你同样需要理解如链表,数组,树,哈希表,图,排序算法,NPC问题等基本概念。并且在面试中,你需要展现出自己有能力应用上述所有知识来解决碰到的问题,包括:利用“大O表示法”进行复杂度分析,排序和哈希算法,超大规模数据的处理以及在“编程”条目下列出的知识点。

  • 排序:你要懂得如何实现数据的排序,除了冒泡排序之外,你需要至少了解一种时间复杂度为nlog(n)的排序算法的细节,了解两种更佳(例如快速排序算法和归并排序算法)。另外,归并排序算法在一些快速排序算法不好用的情形下会非常有效,建议你对此进行深入了解。

  • 哈希表:可以认为,哈希表是所有已有数据结构中最重要的一种。你需要彻底了解它如何工作,并且能够在面试中用擅长的语言用一个数组来完整实现它。

  • 树:你需要了解树的构造,遍历和树的处理算法等基础知识,熟悉二叉树,n叉树以及字典树。你需要至少熟悉红黑树,伸展树和AVL树这三种平衡二叉树的一种,并知道如何实现它们。你需要了解树的两种遍历算法:BFS和DFS,并且知道中序,后序和前序三种遍历算法的区别。

  • 图:图结构在Google中非常重要,你需要熟悉图的三种基本表示方法(对象箭头表示,邻接矩阵和邻接表),并能说出它们各自的优缺点。你需要了解两种基本的图遍历算法:广度优先搜索和深度优先搜索,知道它们的算法复杂度,它们各自的适用情形,以及如何在实际代码中应用它们。如果有机会的话,你可以试着去学一些更加巧妙的算法,如Dijkstra算法。

  • 其它数据结构:你应该尽可能地多学一些其它数据结构和算法,了解一些著名的NP完全问题,如旅行商问题和背包问题,并且能够在面试官在提及它们的时候认出它们,还要知道“NP完全”这个概念是什么意思。

数学

有的面试官会问到基础的离散数学、线性代数或其他一些数学问题,所以你可以在面试前花点时间复习/自学一下。请准备基本的组合学和概率论知识。你应该熟悉“n选k”问题(n-choose-k problems)及类似问题——越多越好。

系统设计

你需要熟悉2的各次幂并能以此来进行估算。例如,估计一个给定的设计需要多少台计算机。你需要了解Google的产品,并思考换做你会如何设计后端与前端。系统设计题考察的是你解决问题的能力。可能的主题包括:功能集、接口设计、类继承体系、分布式系统、约束条件下的系统设计、系统的简单性和鲁棒性、折衷设计。

操作系统

实际上面试内容包括但不限于操作系统,还可能包括其他内容,如网络、并行计算、编译原理等。这里仅以操作系统为例:你需要了解进程、线程和并发问题,熟悉锁(locks)、互斥量(mutexes)、信号量(semaphores)、监视器(monitors)以及它们的工作方式,理解死锁(deadlock)、活锁(livelock)以及如何避免。你需要知道进程和线程所需的系统资源,清楚上下文切换(context switching)的工作方式,并了解操作系统和底层硬件如何创建它们。你还需要对任务调度(scheduling)要有一些认识。世界正在迅速向多核迈进,所以请你了解一下“现代”并行架构的基础知识。

实际问题

有的面试官可能会问一些实际问题,以考察以下几个方面:思维过程是否清晰,能否提出创造性的解决方案并用多种方法解决问题,以及如何在探讨中选定解决问题的途径。因此你可以尝试提出一种算法,用这个算法写成解决方案的代码,分析代码的运行时性能,然后优化你的方案。

3. 在哪里热身和练习

我们强烈建议你在面试前练习编码和算法,以下是一些有用的资源:

  • 编码:Google's APIs,  代码风格指南

  • 数据结构与算法:算法常规主题列表,算法列表,数据结构列表

  • 面试官分享:视频

  • 练习:你也许会需要访问网站www.topcoder.com。如果你加载了“竞技场”(Arena)控件并进入练习室,你可以用一区或二区的题目做热身。另一个工程师们强烈推荐的网站是projecteuler.net。这些网站有一些你平时无法遇到的编程难题。

4. 如何成功的面试

大胆说出你的想法和主动交流

多数情况下,你需要从面试官那里得到更多信息来分析和解答完整的问题。你思考的过程与最终的方案同样重要,因此我们鼓励你问更多的问题并说出你的想法。

  • 当需要作答的时候,请首先定义和框定你所听到的问题。

  • 当你不理解问题的时候——请让面试官帮忙说明它。

  • 如果你需要做一些假设——请确保它是正确的假设。

  • 请描述你打算如何解决问题的每个部分。

  • 请让面试官随时知道你的想法,因为对他/她来说,你的思考过程与最终答案同样重要。

  • 请认真倾听——在面试官试图帮你的时候不要遗漏掉提示。

了解面试官的期望

面试官会像关注答案一样地关注你解决问题的过程:

  • 求职者是否认真听并理解了问题?

  • 求职者在开始解题前是否询问了正确的问题?(重要!)

  • 求职者解题时是否使用了暴力解法?(不好!)

  • 求职者是否使用了未经检测的假设?(不好!)

  • 求职者是否听到并留意到了提示?

  • 求职者理解/解决问题是否缓慢?(不好!)

  • 求职者在选择最优方案前,是否乐于寻找更多解决方案?

  • 求职者是否探寻过新思路和新方法来解决问题?

  • 求职者在解决方案中是否有创造性和灵活性,能否接纳新的思路?

  • 面试问题能否推广到更复杂的情形?(译注:前提是求职者很好地解决了当前问题)

提问环节

在每次面试之前请准备一些你关心的问题。注:如果你有关于面试流程、薪酬或你的面试表现的问题,请直接咨询你的招聘HR。我们强烈推荐你做些关于Google和我们产品的功课:Google简介,Google维基主页,一位Google工程师的职业生涯。

感谢你的阅读。最后,我们对你的面试着装没有特别要求,穿着舒适和自信就好。

#2013年Google官方技术求职大礼包#面试求职技巧篇相关推荐

  1. web漏洞扫描器原理_【技术分享】漏洞扫描技巧篇Web 漏洞扫描器

    0x00 前言 之前 我们简单介绍了一下扫描器中爬虫的部分,接下来将继续介绍扫描器中一些我们认为比较有趣的技巧. 0x01 编码/解码/协议 在很久以前有人提问 AMF 格式的请求怎么进行检测,或者有 ...

  2. 如何用一个月的时间准备google的技术面试

    最近google在我大陆又火了一把,谷歌不能用了,哎呀,尼玛.还让不让程序员活了.在这个节骨眼上,我也来凑个热闹,对于广大需要谷歌的程序猿们,送上两个字:呵呵 昨天在csdn上看到一位兄台的文章< ...

  3. 2013 VMware官方技术大讲堂 超清视频教程 汇总 下载

    2013 VMware官方技术大讲堂 超清视频教程 汇总 下载 链接: http://pan.baidu.com/s/1qWtZVJ2 密码: 文件下载 VMware技术大讲堂-虚拟化的奇迹之vMot ...

  4. 【收藏】Android屏幕适配全攻略(最权威的Google官方适配指导)

    来源:http://blog.csdn.net/zhaokaiqiang1992 更多:Android AutoLayout全新的适配方式, 堪称适配终结者 Android的屏幕适配一直以来都在折磨着 ...

  5. Android官方技术文档翻译——新构建系统概述

    本文译自Android官方技术文档<New Build System>,原文地址:http://tools.android.com/tech-docs/new-build-system. ...

  6. 金三银四求职季,程序员面试必备——数据库篇

    我们身处一个技术变革的时代,随着分布式.云计算.大数据等技术的飞速发展,各种数据库百花齐放.它们在具体功能和使用场景上各有千秋,在实现细节上也不尽相同,但是在工作原理上又有着诸多共通性和相似性. 跳槽 ...

  7. 金三银四求职季,程序员面试必备——数据分析篇

    这个年代里,"用数据说话"已经像是一种过气的口号.各行各业不同角色和身份的人们都已懂得"用数据说话"的重要性,甚至日常生活中也需要用数据看清事实,科学吃瓜.所以 ...

  8. 连封面都是递归——《你好哇,程序员——漫话程序员面试求职、升职加薪、创业与生活》...

    安老师关于IT从业者职业生涯规划的作品素来以风趣幽默著称,这本书也不例外.     本书中<找工作的辟邪剑谱>章节从寻找意向企业.投简历.内推.笔试.面试等各方面讨论,把自己面试别人和被别 ...

  9. 连封面都是递归——《你好哇,程序员——漫话程序员面试求职、升职加薪、创业与生活》

    安老师关于IT从业者职业生涯规划的作品素来以风趣幽默著称,这本书也不例外.     本书中<找工作的辟邪剑谱>章节从寻找意向企业.投简历.内推.笔试.面试等各方面讨论,把自己面试别人和被别 ...

  10. Interview:Java岗位面试—面试求职攻略之一个JAVA程序员面试心得(非常值得收藏)

    Interview:Java岗位面试-面试求职攻略之一个JAVA程序员面试心得(非常值得收藏) 导读 据网上资料显示:2018年互联网行业是寒冬,其他行业日子也不好过.各个互联网大厂纷纷缩招减员,严格 ...

最新文章

  1. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)
  2. matlab在电力行业中的仿真技术-MATLAB小电流接地系统单向故障仿真分析
  3. npm install 时--save-dev和--save的区别
  4. VTK:定向箭头用法实战
  5. C# Winform验证码
  6. [Linux]文件的atime ctime mtime
  7. python实现文本编辑器_Python实现文本编辑器功能实例详解
  8. Codeforces 712C Memory and De-Evolution
  9. 淘宝全屏轮播代码怎么做?淘宝轮播天猫全屏轮播代码
  10. matlab/simulink 永磁直驱海上风电场仿真模型 含集群电流源等效 海上风电场线路结构
  11. Python - 多个Excel合并 (列不同序 或 列数不同)
  12. Adam优化算法详细解析
  13. 人生的意义到底是什么?
  14. safri 对于display:block;的元素显示不出来 其他所有浏览器均正常
  15. 搭建 PHP 开发环境(手把手图文教程)
  16. edge microsoff 连不上网_win10电脑连不上网的三种解决方法
  17. 大数据在高校的应用场景_大数据技术在高校教育中的应用
  18. python 中在字符串前面加上b,u,r的含义
  19. python图形显示不出来_Matplotlib无法显示图像的问题
  20. Vuze--Java路径配置

热门文章

  1. 贪心算法3——加油站问题
  2. UVA - 10105 Polynomial Coefficients
  3. Excel复制到word,清除格式后行间距过大
  4. 解决微信小程序点击出现蓝色背景色问题
  5. 科大讯飞和 Nuance 在语音识别技术上各有长项和短处?
  6. 时差怎么理解_懂的人自然懂,不懂的人再多解释也有时差,故事只能说给懂的人听...
  7. python正则查找_python正则匹配
  8. 小米路由做文件共享服务器,群晖NAS+小米路由器文件直接传输
  9. 怎样在科学计算机上计算反正切,科学计算器使用教程_科学计算器怎么解方程...
  10. 永磁同步电机数学模型