谷歌实习面试经历
我收到了Kickstart的面试通知,我参加了Kickstart 2019的A轮和B轮,分别获得了186和181的排名。他们告诉我会有两轮,第一轮是电话,另一轮是环聊。他们与我分享了 2 个谷歌文档链接,以便在面试期间编写代码。
第一轮(电话轮:45分钟):我接到一个系统生成的电话,然后将我连接到面试官(不是印度人),他先自我介绍,然后让我介绍自己,然后他转向问题。
- 给定一棵 N 叉树。您必须按顺序遍历树,并且在每个节点处您需要打印节点的值和它具有的子节点数。我解决了这个问题,然后他开始变得更难,并告诉我,无论我的代码作为输出给我什么,现在都是我的输入,我必须再次构建树。我就像 wooow(Pin drop 沉默 5-10 分钟),我现在什么都想不出来,我只是告诉他我们如何解决这个问题,但我无法实施。然后他转到下一个问题。
- 给定 N 个数组,您需要返回重复的元素,如果有多个重复的元素,则返回第一个。我已经解决了这个问题然后他稍微改变了它并告诉我现在我必须返回重复最大次数的数字,我也解决了。在此之后他改变了它,现在我必须返回重复的最大数量。我解决了所有这些。
最后他告诉我,我可以问他任何事情,我问了一些问题,他回答了。
第2轮(环聊:45分钟):我有视频通话的链接,我准时加入,然后我问面试官(不是印度人)他是否能正确地看到和听到我,然后我们互相介绍了对方,他转移到问题上。
- 给定两个数组,我必须找到两个数组之间的共同元素。首先,我使用具有 O(nlogn) 时间复杂度的二进制搜索来解决它。然后他告诉我,如果一个元素在两个数组中多次出现,我应该只输出一次,我确实解决了这个问题。然后他告诉我优化时间复杂度,然后我使用无序映射并在 O(n) 中解决它然后他告诉我现在我已经对两个数组进行了排序,我必须在 O(n) 时间复杂度和 O 中找到解决方案(1)空间复杂度。我使用两个指针解决了这个问题,然后他给了我 2 3 个测试用例,并告诉我在这些测试用例上虚拟运行我的代码,我做到了。
- 这个问题是上一个问题的一个更难的版本。这次我得到了一个按行排序的矩阵,现在我必须返回所有行中共有的数字。我使用 N 个 O(N*M) 复杂度的指针解决了它,然后他告诉我在测试用例上运行,我做到了。
最后他让我问什么,我又问了一些问题,他回答了。