HR 在 LinkedIn 上联系了我
第 1 轮(在线编码轮):Hackerrank 平台 1 小时 30 分钟
- 给定一个输入字符串,编写一个函数,返回行程编码的输入字符串的字符串。
For example, if the input string is “wwwwaaadexxxxxx”, then the function should return “w4a3d1e1x6” Expected Time Complexity: O(n)
- 让 1 代表“A”,2 代表“B”,等等。给定一个数字序列,计算给定数字序列可能的解码次数。
Input: digits[] = "121" Output: 3 The possible decoding's are "ABA", "AU", "LA" Input: digits[] = "1234" Output: 3 The possible decoding's are "ABCD", "LCD", "AWD" Expected Time Complexity: O(n)
第 2 轮(F2F 编码轮):CoderPad 与 Goldman Sachs 开发人员
- 给定一个字符串字符串数组,将字谜组合在一起。您可以按任何顺序返回答案。
字谜是通过重新排列不同单词或短语的字母而形成的单词或短语,通常只使用一次所有原始字母。
Input: strs = ["eat","tea","tan","ate", "nat","bat"] Output: [["bat"],["nat","tan"], ["ate","eat","tea"]] Expected Time Complexity: O(n)
- 给定一个包含学生姓名数据和他/她在 3 个科目中得分的文件。任务是找到具有最高平均分数的学生列表。
如果超过一名学生的平均分数最高,则按照文件中的顺序打印它们。
Input: file[] = {“Shrikanth”, “20”, “30”, “10”, “Ram”, “100”, “50”, “10”} Output: Ram 53
Shrikanth、Ram 的平均得分分别为 20 和 53。所以 Ram 的最高平均分是 53。
预期时间复杂度:O(n)
第 3 轮(F2F Coding Round on Zoom):CoderPad 与两名高盛开发人员
- 给定一个链表,编写一个函数来反转每 k 个节点(其中 k 是函数的输入)。
Input: 1->2->3->4->5->6->7->8->NULL, K = 3 Output: 3->2->1->6->5->4->8->7->NULL Expected Time Complexity: O(n) Auxiliary Space: O(n/k).
- 给定一个二叉搜索树 (BST) 和一个正整数 k,找到二叉搜索树中第 k 大的元素。
- 设计一个数据结构 SpecialStack,它支持所有堆栈操作,如 push()、pop()、isEmpty()、isFull() 和一个附加操作 getMin(),它应该从 SpecialStack 返回最小元素。 SpecialStack 的所有这些操作都必须是 O(1)。要实现 SpecialStack,您应该只使用标准的 Stack 数据结构,而不要使用其他数据结构,如数组、列表等。
Example: Consider the following SpecialStack 16 --> TOP 15 29 19 18 When getMin() is called it should return 15,
第 4 轮(F2F 编码轮放大):CoderPad 与两名高盛开发人员
- 给定一个大小为 n 的未排序数组 arr[0..n-1],找到最小长度子数组 arr[s..e] 使得对该子数组进行排序使整个数组排序。
示例:如果输入数组是 [10, 12, 20, 30, 25, 40, 32, 31, 35, 50, 60],您的程序应该能够找到子数组位于索引 3 和 8 之间。
- 给定一个二元数组,其中将元素从索引 i 移动到索引 j 需要 abs(i – j) 成本。任务是找到将所有 1 移动到给定数组的每个索引的成本。
Input: arr[] = {0, 1, 0, 1} Output: 4 2 2 2
解释:
将元素从索引 1、索引 3 移动到索引 0 需要 abs(0 – 1) + abs(0 – 3) = 4。
将元素从索引 1、索引 3 移动到索引 1 需要 abs(1 – 1) + abs(1 – 3) = 2。
将元素从索引 1、索引 2 移动到索引 2 需要 abs(2 – 1) + abs(2 – 3) = 2。
将元素从索引 1、索引 2 移动到索引 3 需要 abs(3 – 1) + abs(3 – 3) = 2。
因此,所需的输出是 4 2 2 2。
第 5 轮(放大的 F2F 编码轮):CoderPad 与两名高盛开发人员
- 将 N 个国际象棋皇后放在 N×N 棋盘上的问题,以便没有两个皇后互相攻击。
预期输出是一个二进制矩阵,其中放置皇后的块为 1。
例如,以下是上述 4 皇后解决方案的输出矩阵。
{ 0, 1, 0, 0} { 0, 0, 0, 1} { 1, 0, 0, 0} { 0, 0, 1, 0}
解决方案:使用递归和回溯
- 实现一个支持以下接口的 SnapshotArray:
SnapshotArray(int length) 用给定的长度初始化一个类似数组的数据结构。最初,每个元素都等于 0。
void set(index, val) 将给定索引处的元素设置为等于 val。
int snap() 获取数组的快照并返回 snap_id:我们调用 snap() 的总次数减 1。
int get(index, snap_id) 返回给定索引处的值,当时我们使用给定的 snap_id 拍摄快照
解决方案:使用 Node 类的二维数组,一维用于存储索引,二维用于存储快照。对于每个索引获取特定 snap id 的值,我们可以使用二分搜索,因为每个索引中的 snap 数组将被排序,并且 get 操作的复杂性降低到 log(N)
第 6 轮(F2F Coding Round on Zoom):CoderPad 与两名高盛开发人员
- https://www.hackerrank.com/challenges/connected-cell-in-a-grid/problem
第 7 轮(放大的 F2F 编码轮):CoderPad 与两名高盛开发人员
- 给定一个随机数数组,将给定数组的所有零推到数组的末尾。例如,如果给定的数组为 {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0},则应将其更改为 {1, 9, 8, 4, 2, 7, 6, 0, 0, 0, 0}。所有其他元素的顺序应该相同。
预期时间复杂度为 O(n),额外空间为 O(1)。
- Java和Python一些与字符串相关的基础知识和字符串。
第 8 轮(F2F Round on Zoom):CoderPad 与两名高盛开发人员
- 关于我最近的项目、我从事的技术和缓存疏散策略的几个问题。
- 客户财富管理 (CWM Goldman Sachs) 团队、产品和技术栈简介高盛的用途。
经过这些轮次之后,我终于收到了一封来自 HR 的邮件,要求进行薪酬讨论。