其他分享
首页 > 其他分享> > 20个最常见的Google面试问题(翻译)

20个最常见的Google面试问题(翻译)

作者:互联网

读到一篇博客,博客的主题是分享Google 最常见的面试问题,原文链接如下:

https://www.programming-hero.com/blog/20-most-frequently-asked-google-interview-questions.html

为了方便阅读,我翻译成了中文:


在Google工作是许多人的梦想。 我们都知道您作为Google员工可获得的好处,这使我们感到兴奋。 但是在此之前,我们需要弄清楚一些事情和需要注意的东西,即 “ Google面试”。 以下是一些最常见的Google面试问题,可以帮助您了解Google面试。

1) 谈谈你所了解的哈希表(hash tables)的知识

Hashing 是一种用于从一组相似对象中唯一标识特定对象的技术。在哈希中,通过使用哈希函数将大键转换为小键。 然后将这些值存储在称为哈希表的数据结构中。 哈希的想法是将条目(entries ),即 Key-Value 对,均匀地分布在整个数组中。每个元素都分配有一个键(转换后的键)。通过使用该键,您可以在 O ( 1 ) O(1) O(1) 时间访问到该元素。使用 Key,哈希算法(哈希函数)可以计算出一个索引,该索引可以显示在何处找到或插入一个条目(entry )。

在此处获取完整答案:https://tinyurl.com/y88r4jgp

2) 假设你正在为事件(events)创建搜索引擎; 你会怎么做?

浏览器可以选择一个位置,然后按类别(音乐,网络,食物,艺术品等)或事件类型(会议等)查找事件。用户还可以启动基于关键字的搜索。该引擎应能够进行关键字启动的搜索,并在此之上应用任何过滤器(类别,事件类型等)。 搜索应返回结果列表,其中包含有关事件,名称,位置,票证信息等的关键信息。将鼠标悬停在位置时应显示地图。

在此处获取完整答案 : https://tinyurl.com/ybgvmsh3

3) 请计算在给定约束下,使用a,b和c可以形成哪些字符串?

给定长度 n n n,计算可以使用 abc(最多允许一个 b和两个 c)构成的长度为 n n n 的字符串的数量。

Input : n = 3 
Output : 19 
Below strings follow given constraints:
aaa aab aac aba abc aca acb acc baa
bac bca bcc caa cab cac cba cbc cca ccb 

在此处获取完整答案 : https://tinyurl.com/ydxjgu4e

4) 判断一个二叉树是否有大于或等于2个重复的子树?

给定一个二叉树,请检查二叉树是否有重复的子树,并且这个重复的子树是否 大于等于2。一个高效的方法是基于树序列化和散列,这个想法是将 子树 序列化为字符串并将这些字符串存储在哈希表中。 一旦找到哈希表中已经存在的序列化树(不是叶),我们将返回true。

在此处获取完整答案 : https://tinyurl.com/yausbjvv

5) 最长有效子字符串的长度

一种简单的方法是找到给定字符串的所有子字符串。 对于每个字符串,请检查其是否为有效字符串。 如果有效且长度到目前为止已超过最大长度,则更新最大长度。 我们可以使用堆栈检查子字符串在线性时间内是否有效。 该解决方案的时间复杂度为 O ( n 2 ) O(n^2) O(n2)

在此处获取完整答案 : https://tinyurl.com/y7v44y89

6) 二叉搜索树中的第二大元素

我们从获取最大价值的功能开始。 最大的值就是“最右边”的值,因此我们可以向右走,直到我们不再拥有合适的孩子,然后沿着树走一圈。

考虑到这一点,我们还可以沿着树走一圈,找到第二大树。

在此处获取完整答案 : https://tinyurl.com/y8c5swlm

7) 反转链表

太简单了,不想翻译,哈哈。

在此处获取完整答案 : https://tinyurl.com/y8of5hl6

8) 加油站问题

在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。

PS. leetcode访问地址 :https://leetcode-cn.com/problems/gas-station/

在此处获取完整答案 : https://tinyurl.com/yb7uq43f

9) 数组数字加1

在此问题中,有些事情是故意不清楚的,您应该练习询问面试官。 例如,对于此问题,以下是一些要问的好问题:

  1. 问:输入的最高有效数字前可以有0吗? 换而言之, [ 0   1   2   3 ] [0 \ 1 \ 2 \ 3] [0 1 2 3]是有效输入吗?
  2. 答:针对这个问题,
  3. 问:输出的最高有效位数可以为 0 吗? 换而言之, [ 0   1   2   4 ] [0 \ 1 \ 2 \ 4] [0 1 2 4]是有效输出吗?
  4. 答:出于这个问题的目的,。 即使输入在最高有效位之前为零。

在此处获取完整答案 : https://tinyurl.com/ybxs3pk4

10) 旅行推销员问题

  1. 将城市 1 作为起点和终点
  2. 生成所有(n-1)个! 城市的排列。
  3. 计算每个排列的成本,并跟踪最小的排列成本。
  4. 以最小的成本返回排列。

在此处获取完整答案 : https://tinyurl.com/y6nqmzc6

11) 寻找两个排序数组的中位数

如果合并数组中的元素数为偶数,则中位数为第 n 2 \frac{n}{2} 2n​个元素和第 n 2 + 1 \frac{n}{2}+1 2n​+1个元素的平均值。 例如,如果数组为[1 2 3 4],则中位数为 2 + 3 2.0 = 2.5 \frac{2+3}{2.0} = 2.5 2.02+3​=2.5

在此处获取完整答案 : https://tinyurl.com/y9odyqh6

12) 在有重复元素的数组中找到两个非重复元素

首先,对所有元素进行排序。在排序的数组中,通过比较相邻元素,我们可以轻松获得非重复元素。该方法的时间复杂度为 O ( n L o g ( n ) ) O(nLog(n)) O(nLog(n))

在此处获取完整答案 : https://tinyurl.com/y8hzeauv

13) 通过删除给定字符串的某些字符来查找字典中最大的单词

给定 字典和字符串 str,找到字典中最长的字符串,可以通过删除给定 str 的某些字符来形成最长的字符串。

示例:

Input : dict = {"ale", "apple", "monkey", "plea"}   
        str = "abpcplea"  
Output : apple 

Input  : dict = {"pintu", "geeksfor", "geeksgeeks", 
                                        " forgeek"} 
         str = "geeksforgeeks"
Output : geeksgeeks

这个问题简化为查找一个字符串是否是另一个字符串的子序列。 我们遍历所有词典单词,对于每个单词,我们检查它是否为给定字符串的子序列,并且是否为所有此类单词中最大的。 最后,我们以给定的字符串作为子序列返回最长的单词。

在此处获取完整答案 : https://tinyurl.com/y2jy94mo

14) 查找给定字符串中具有k个唯一字符的最长子字符串

"aabbcc", k = 2
Max substring can be any one from {"aabb" , "bbcc"}.

滑动窗口:这个问题可以在 O ( n ) O(n) O(n) 中解决。 想法是维护一个窗口并向该窗口添加元素,直到它包含的k小于或等于k,并在此过程中根据需要更新结果。 如果唯一元素超出了窗口中的要求,请从左侧开始删除元素。

在此处获取完整答案 : https://tinyurl.com/yckam84k

15) 二叉树的最近公共祖先

以下是一种简单的 O ( n ) O(n) O(n) 算法,用于找到 n 1 n_1 n1​ 和 n 2 n_2 n2​的 LCA。

在此处获取完整答案 : https://tinyurl.com/yc334bhh

16) 描述Dijkstra算法的工作原理

Dijkstra的算法与Prim的最小生成树算法非常相似。 像Prim的MST一样,我们以给定源为根生成 SPT(最短路径树)。 我们维护两组,一组包含最短路径树中包含的顶点,另一组包含尚未包含在最短路径树中的顶点。 在算法的每个步骤中,我们都找到另一个顶点(尚未包含的集合)中的一个顶点,该顶点与源的距离最小。

在此处获取完整答案 : https://tinyurl.com/y7l2e23a

17) 请使用一个算法来验证数字是否为素数

一个幼稚的解决方案是遍历2到n-1之间的所有数字,并检查每个数字是否除以n。 如果找到任何可除的数,则返回false。

PS. 显然,你如果这样回答,肯定会被立马淘汰。

在此处获取完整答案 : https://tinyurl.com/yb8js7z5

18) 从给定的模式生成所有二进制字符串

Generate all binary strings from given pattern :

Given a string containing of ‘0’, ‘1’ and ‘?’ wildcard characters, generate all binary strings that can be formed by replacing each wildcard character by ‘0’ or ‘1’.

我们将下一个字符的索引传递给递归函数。 如果当前字符是通配符“?”,我们将其替换为“ 0”或“ 1”,然后递归其余字符。 如果到达字符串的结尾,则将其打印出来。

示例:

Input str = "1??0?101"
Output: 
        10000101
        10001101
        10100101
        10101101
        11000101
        11001101
        11100101
        11101101

在此处获取完整答案 : https://tinyurl.com/y9dgfdcz

19) 求最大非负子数组

给定一个长度为N的整数A的数组,从A中找出非负数的最大和子数组。该子数组应该是连续的,即,通过选择第二个和第四个元素并跳过第三个元素而创建的子数组是无效的。

示例:

A = [1, 2, 5, -7, 2, 3]
Output = [1, 2, 5]

在此处获取完整答案: https://tinyurl.com/ycmlumot

20) 你将如何实现线程安全的 LRU 缓存?

我们使用两种数据结构来实现LRU缓存:

在此处获取完整答案 : https://tinyurl.com/y3fy5xdc

希望这些可以使您更接近 Google Job 的梦想!

标签:Google,20,获取,此处,面试,tinyurl,https,字符串,com
来源: https://blog.csdn.net/Gassuih/article/details/112538559