📜  Expedia 面试经历(2020 年在校实习)

📅  最后修改于: 2021-11-10 06:15:28             🧑  作者: Mango

Expedia 于 8 月访问了我们的校园招聘实习生。该过程从在线轮次开始,然后是 3 轮面试。

在线回合包括两个部分:2 道编码问题和 10 道技术选择题。时间限制:90分钟。平台:HackerRank。这是一个相当简单的回合。

一季度。给你一个数字 n。你必须知道有多少小于或等于 n 的素数存在。例如。如果 n=10,你的答案应该是 4,因为 {2, 3, 5, 7} 是小于 10 的素数。

Q2。给定两个字符串A 和 B。您必须输出一个字符串C,它由 A 和 B 的字母交错组成。例如。如果 A=”abc” 和 B=”efg” 输出 C 应该是“aebfcg”。另一个前任。 A=”abc” B=”pqrst”然后 C=”apbqcrst”。

大约 25 名学生被选入下一轮。

第 1 轮:技术面试 1

首先,我被要求简要介绍一下自己。然后我被问到我的爱好。

接下来面试官问了我最喜欢的数据结构。我说的是链表。所以她给了我以下问题:

1.编写一个程序来反转链表。

2. 编写一个程序,以给定大小“K”的组反向链表。

3.给你一个非常大的数字,它是一个单向链表的形式,每个数字都是一个节点。例如。 123 写成 1–>2–>3。现在你必须给这个数加 1 并返回它的头。记住你只有一个单向链表。所以我告诉她,我们可以最初反转列表。同时,我们维护一个变量进位,并将 1 添加到反转链表的新头部(这将是数字的最后一位)。第一个节点的新值变为 (1+(initial value))%10 并且该节点的进位具有值 (1+(initial value))/10。同样对于所有其他节点,新值=((进位+(初始值))%10 和进位=(进位+(初始值))/10。

例如。如果我们得到 129,那么最初 1->2->9 变成 9->2->1。首先将 1 添加到 9 给我们 10,所以新值 =10%10=0 和进位 =10/10=1,因此列表更改为 0->2->1,第一个节点的进位=1。第二个节点的新值=(1+2)%10=3 并且进位=3/10=0.,因此列表更改为0->3->1,第二个节点的进位=0。第三个节点的新值=(0+0)%10=0 并且进位=0。所以列表变成了 0->3->1。反转列表我们得到 1–>3–>0 这是必需的答案。

她对我的解决方案很满意,然后询问了这个问题的任何特殊情况。我想了一会儿并回答说,如果最初给我们一个全是 9 作为数字的数字,我们将不得不在结果列表中添加一个额外的节点(值为 1)才能得到答案。例如。我们得到 9–>9–>9 反转它给我们 9–>9–>9 我们在头上加 1 和进位方法,这给我们 0–>0–>0 和 1 向左结转。所以我们添加了一个额外的值为 1 的节点,即 0–>0–>0–>1 并将其反转以获得 1–>0–>0–>0。

进一步选拔了13名学生。

第 2 轮:技术面试 2

再次,我被要求简要介绍自己。然后他们根据我的简历问了我一些问题。

随之而来的问题是:

  1. 如何设计一个小的 URL 缩短器。解决方案:https://www.geeksforgeeks.org/how-to-design-a-tiny-url-or-url-shortener/
  2. 给定两个链表,找出它们是否在某个节点合并。我给出的一个解决方案是,对于第一个链表,我们完全遍历它并将引用存储在哈希集(Java)中。现在,在遍历第二个链表时,如果我们找到一个节点,其引用已经存储在我们的哈希集中,我们已经找到了合并节点,否则不存在合并节点。但是由于这种方法使用了内存,我被要求对其进行优化。所以我提出了另一种解决方案:我们可以找到2个列表(D)的大小差异,通过D个节点遍历较长的列表,然后同时将两个列表一起遍历,如果在任何时候我们发现list1.next==list2。接下来,我们找到了合并节点,否则不存在这样的节点。
  3. 找出数字的二进制表示中最长的连续 1 的长度。例如。 n=14 Binary representation=1110 这应该给我们的输出为 3。参考:https://www.geeksforgeeks.org/length-longest-consecutive-1s-binary-representation/

最终选拔了 10 名学生。

第三轮:人力资源轮

不幸的是,我没有被选中参加人力资源回合。

但是在 HR 回合中提出的问题非常笼统,比如告诉我们您在 5 年内看到自己的位置,您为什么想加入我们等。

最终选出了6名学生。