美文网首页
Google软件技术职位面试指南

Google软件技术职位面试指南

作者: 百战程序员 | 来源:发表于2019-04-02 16:08 被阅读0次

一直以来,Google都凭借其强大的实力,吸引着一批优秀的人才,特别是去年底,Google宣布在北京成立AI中心,更是吸引了一大批人。

千军万马过独木桥,怎么能不好好准备一场呢?

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

编程实践:你可以在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软件技术职位面试指南

      本文链接:https://www.haomeiwen.com/subject/wazlbqtx.html