赞
踩
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
电话面试通过后,HR 会很快跟你反馈沟通面试结果,是否通过,以及 onsite 的安排。因为现场面试是 4-5 轮,平均1 轮一小时的话需要 4-5 个小时,其实还是蛮耗费精力的。一般会沟通可以约 2 个半天或者 1 整天,两个半天的好处是时间不会那么紧张,前两轮后,中途可以过几天再休整调整下再继续,我当初就选择”快刀斩乱麻/早死早超生” 的方案直接约了 1 天时间搞定。
onsite 也基本上是在电脑上 coding。你和面试官一人一个笔记本,code 时共享屏幕,有时候题目面试官会在白板上写出onsite 的题目,明显就要比电话面试的题目难度高一些呢。但实际上比我想象中的要简单些,因为曾经想 Google 这样的公司面试恐怕连理解题目意思都要理解大半天吧。可能也是社招的缘故,社招整体感觉在算法的要求比校招就要低一些。
我记得其中有一道题目就跟 leetcode 上的类似(再次声明不是原题,也不 share 原题),Leetcode 上那个题目应该是二维矩阵,最短路径相关的。用 dp 可以解决,只不过一般题目会分为好几个小问题,难度一般从易到难。
同时也考察到了二叉树,仍然围绕着二叉树的遍历进行。需要熟知二叉树的各种遍历方式,非递归的方法(递归比较容易一般不会让写这个)。 在遇到二叉树相关问题的时候,是否可以联想到二叉树的遍历上来。
另外有一道系统设计的问题“知识图谱”的概念,围绕着”图”的相关算法这个要求在白板上写出设计方案和伪代码,同时面试官会不断 push 你让你提出更优的解决方案。有足够多的计算资源,并行去跑,以及具体怎么实现。这道题目我回答的不好(当初也知道不好,后面 HR 反馈也印证了这一点)。
还有一道题目,是解决生活中的场景题目。需要你抽象出这个问题,用代码来解决。一般这种题目,就需要反复跟面试官去沟通和确认其中的场景, 怎样把业务抽象成算法。 记得之前面试 Amazon 的时候也有类似的题目(只不过当初面 Amazon 考察的是 OO Design而本题是具体算法实现).
onsite 一共聊了 5 轮,上午 2 轮,下午 3 轮,其中有两轮是英文面试(英文面试后面会说),整体来说,工程师岗位面试会围绕如下几个方面进行(以下参考 HR 提供的面试指南):
Coding:用熟悉的编程语言(不限)实现给定的题目,会重点关注解题目过程中的理解和沟通能力;
算法:涉及到 排序/搜索/分治/动态规划/贪心/递归,具体数据结构,也有可能会涉及到 Dijkstra 和 A* 等算法,需要会算法复杂度的分析;
排序:常见的排序算法,时间/空间复杂度,例如 快排/归并/堆排序/插入/基数排序等等;
数据结构:数组/连表/堆/栈/hash/数/二叉树等;
数学:可能会涉及到离散数学,组合数学,例如 N个中选k 个的方法等;
图:图的表达(例如矩阵/邻接表),bfs/dfs 等;
递归:递归和迭代的转换;
其他:设计和操作系统等;
以上这部分摘自 HR 提供的 Google 工程师面试指南.pdf
中午 HR 小姐姐会安排一个 Google 的工程师,带你吃饭,跟你聊天。有任何疑问都可以跟他沟通,不得不说,Google 的伙食还是蛮不错的。我当初就跟小哥哥聊了下他在 Google 工作的感受。
英文面试,单独拿出来说一下,建议还是提前准备,练习一下基本的口语。不要因为面试过程中,突然让你只用英语沟通,让气氛变得紧张起来导致发挥不好。自我介绍之类的肯定你可以提前准备,然后就是你可以尝试比如拿其中的题目自己模拟一下面试场景,主要是可能需要提前熟悉一下基本的计算机相关词汇,不要到时候想表达却表达不出。
整体来说,Google 的面试确实很难,但确实也没我想象中的那么难。但要求确实是很高的,基本上一些边界 case 等也都是在考察范围内的。onsite 面试完后,在第二天我就得到结果通知:面试没通过 事实来看没通过的结果反馈比通过反馈更快。HR 会反馈你哪里表现得不够好,然后如果想进 Google就加油刷题,说 1 年后可以再次尝试,保持联系哦。哈哈!以上就是我这次完整的 Google 面试之旅,虽然失败(实力还不够)了,但还是有收获的。
笔者有个朋友进了美国Google,下面是他在Google整理的面试真题专场:
Google面试标准
解题的步骤
经典Google面试题
图片太大,上传不了,感兴趣的朋友可以帮忙点赞文章后,关注点这里来免费获取
笔者还给大家准备了左程云左神的算法书籍、视频,帮助大家更好的学习算法
目录(算法有分 将、校、尉、士四个等级来表示难易程度)
第1章栈和队列
设计一个有getMin功能的栈(士★)
由两个栈组成的队列(尉★★)
如何仅用递归函数和栈操作逆序一个栈(尉★★)
猫狗队列(士★)
用一个栈实现另一个栈的排序(士★)
用栈来求解汉诺塔问题(校★★★)
生成窗口最大值数组(尉★★)
构造数组的MaxTree (校★★★)
求最大子矩阵的大小(校★★★)
最大值减去最小值小于或等于num的子数组数量(校★★★)
限于篇幅原因,同时也为了大家更好的阅读,只截取了部分目录,感兴趣的朋友可以帮忙点赞文章后,关注点这里来免费获取
第1章栈和队列
设计一个有getMin功能的栈(士★)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
6aJi9-1715401320428)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。