线上选拔测试:共分三个阶段,均在同一天进行。
- 第一阶段(MCQ ROUND):这一轮由 50 个关于 C 编程语言的 MCQ 组成,我们有 50 分钟的时间来解决 50 个问题,这个阶段还有一些基于输出的问题,我们得到了一个代码片段,我们应该输入该程序的输出。基于输出的问题没有负面标记,而 MCQ 问题有负面标记,如果您尝试大约 30 个问题,您将进入下一轮的候选名单。
- 阶段 2(主观回合):这一轮有 3 个编码问题和一个基于输出的问题,他们主要关注树,所以如果你想破解 Josh,请练习大量基于树的问题
问题:- 给定一个表示为链表的数字,我们应该将这个数字乘以 4。
- 找出最长的交替奇偶子数组的长度
- 给定一棵树,我们需要返回一个列表,该列表表示应该在每个级别添加的最小数量,以便每个级别的节点之和形成一个 AP
- 这是一个基于树的基于 C 输出的问题
- 第三阶段(编码回合):这一轮有三个编码问题,它们很简单
- 买卖股票以最大化利润 这是一个标准的 DP 问题
- 给定一个链表应该通过节点本身的总和和第 (nk) 个节点的总和来更新每个节点的值
e.g. 31->2->3->4->5->11->50 Output : 42->13->8->4->8->13->42
- 给定一棵树,我们需要检查这棵树是否平衡,即 |左子树的高度 – 右子树的高度| <= 1
技术轮:我是在线测试后直接进行了第二次面试,而很多人也进行了第一次技术面试,所有轮次都完全集中在树木上
面试第二轮:这一轮问了三个问题,都是基于树的
- 给定一棵树,每个叶子到根的路径代表一个数字,我们应该返回树中形成的所有数字的总和
在它的情况下形成的数字是 123,543 和 643 并且代码的最终输出应该是 123+543+643=1309在 O(N) 时间和 O(1) 空间
- 给定两个 BST,我们应该从 O(1) 空间中的两个最佳组合中打印节点的排序顺序,并且发现每个节点都引用了其左子节点、右子节点和父节点
- 给定一个 BST 和一个范围,我们需要删除所有不在范围内的节点,结果树也应该保持 BST 的条件
面试第三轮:
- 给定一个 BST 和一个目标值,我们需要将 BST 分成两个 BST,使得所有小于或等于目标值的节点都在第一个 BST 中,而其他节点在O(logn) 时间和 O( 1)空间
- 给定一个反 BST 和一个目标值,我们期望返回O(1) 空间中与目标值相距 K 距离的所有节点的总和
- 我最近参与的一个项目
人力资源回合:
- 到目前为止的体验如何
- 难度是多少
- 你是如何准备回合的
- 你是谁
- 你的弱点
- 如果给你很多工作,你会如何应对压力
- 你有其他公司的offer letter吗