SDE-1 的 Google 面试经历
第 1 轮:环聊视频通话(DS 和算法)(1 小时)
- 告诉我一些你的事吧。
- 一场马拉松正在上演。每个跑步者都有独特的号码,印在他的 T 恤上。摄影师正试图从顶部捕捉该数字,因此在 180 度旋转中看不到任何数字。如果将每个数字单独旋转 180 度后,我们得到一个与 X 不同的有效数字,那么 X 是一个很好的数字。每个数字都必须旋转——我们不能选择不理会它。 0、1、8 自行旋转; 6 和 9 相互旋转,其余数字不旋转到任何其他有效数字。范围是给定的,您需要找出该范围内的好数字。
案例:
- 10 将转换为 01 但无效,因为我们的范围以 1 开头。不允许使用前缀 0。
- 如果范围是 1 到 7 并且没有 6 变为 9,则不允许。
- 11 不允许,因为 11 将在更改后变得相同。
- 如果 no 有 2、3、4、5、7 这样的数字,那么 no 将不允许。
- 输入:范围:1 到 10(包括 1 和 10)
- 输出:有效数字列表:6、9
您可以参考此链接:https://www.geeksforgeeks.org/check-if-a-given-number-is-fancy/
第 2 轮:现场(行为轮)(1 小时)
- 说说你自己
- 为什么谷歌?
- 你最喜欢谷歌的哪个产品?为什么?市场上有竞争产品吗?
- 如果我向您当前的组织询问反馈,那么他们会说什么?专注于消极点。
- 如果你必须改进一个技术点和一个行为点,那么你会改进哪一个?
- 在您的上一个组织中或在此之前,您做过任何领导工作吗?指导/组织者类型。
- 当你的工作的功劳将给予他人时,你会怎么做?
- 任何情况下你的经理不同意你的想法,你是如何说服他的?
- 为什么你要在 1 年前离开?
- 您在技术和非技术方面的 2 年计划是什么?
- 你有任何问题问我吗?
第 3 轮:现场(DS 和算法)(1 小时)
她要求使用二进制搜索功能来判断数组中是否存在。通常我们通过 (low+high)/ 2 找到中间元素,所以她要求改变它并使用随机函数来决定中间元素。对已排序数组执行二进制搜索,但此处给出未排序数组。
对二分搜索逻辑进行了两次修改。
1) 给出了未排序数组而不是排序数组
2)中间元素是根据随机函数决定的。现在我们必须从给定数组中找出这个函数给出真实结果的数字。
提示:如果 x 左侧的所有数字都较小且 x 右侧的所有数字都较大,则函数将为值 x 返回 true。
示例:[ 4、3、1、5、7、6、10]
答案:5、10
时间复杂度:O(n)
空间复杂度:O(n)
第 4 轮:现场(DS 和算法)(1 小时)
赠送一根巧克力棒。那个酒吧里有 n 个棋子。每一块都有自己的甜度。您必须将巧克力棒分成 k 块,然后将这些块分给 k-1 个人,您将得到剩下的最后一块。你必须告诉你会得到多少甜味。你会从所有 k 片中得到最少的甜味片。所以你必须以这样一种方式来分割平板,你会得到最大的甜味。
输入:1、2、4、7、3、6、9 N = 7,K = 4
输出:7(将其分成 4 个部分,如 [1, 2, 4] [7] [3, 6] [9] 分别具有甜度级别 7, 7, 9, 9)
参考链接:
https://www.geeksforgeeks.org/painters-partition-problem/
https://www.geeksforgeeks.org/allocate-minimum-number-pages/
第 5 轮:现场(DS 和算法)(1 小时)
与第 4 轮类似。有 n 个人,每个人都有一些体重。您必须将它们分成 k 个连续组,以使组之间的总重量差异最小化。您必须返回最大和最小加权组之间的差异。
输入:1、2、4、7、3、6、9 N = 7,K = 4
输出:2(将其分成 4 个部分,例如 [1, 2, 4] [7] [3, 6] [9],权重分别为 7,7,9,9 所以答案将是 9 - 7)
第 6 轮:现场(DS 和算法)(1 小时)
给出了一个网格。它包含每个单元格中的字符。您必须找出 x 到 y 之间的最小汉密尔顿距离。汉密尔顿距离:| row_index_x - row_index_y | + | column_index_x – column_index_y |
[ x, 0, 0, 0 ]
[ 0, y, 0, y ]
[ x, x , 0, 0 ]
[ 0, y , 0, 0 ] 答案:1
时间复杂度:O(nxm)
空间复杂度:O(nxm)
谷歌主要关注逻辑以及您如何提供解决方案。它记录了每一个小错误。面试官真的很有帮助。他们期望采用最佳方法的清晰代码。