我向 Vymo 申请了班加罗尔的 SDE 实习生职位(目前位于偏远地区)。这是一个为期 6 个月的实习计划,很有可能获得 Pre Placement 的offer。公司进行了3轮选拔。
第一轮(在线测试):第一轮是在 HackerRank 上进行的在线测试,由 2 个部分组成,必须在 1 小时 30 分钟的持续时间内解决。
第 1 部分:这包括 3 个编码问题。两道题为简单,最后一道题为中/难
- 简单的问题——来自 HackerRank 的越狱问题——(它与 https://leetcode.com/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/ 非常相似) .
- 简单的问题——这是一个简单的二分搜索问题。
- 中等/困难问题——这是一个基于 DP 和二分搜索应用的问题。
第 2 节:本节包含 2 个 SQL 问题。
- 第一个问题很简单,方法很简单。
- 但是,第二个问题有点棘手(中等级别),需要了解 Joins、Null 和聚合函数的知识。
提示:
尝试解决至少 2 个编码问题和两个 SQL 问题,因为解决这么多问题肯定会让您参加面试。我解决了 2 个完整的和 1 个半编码问题以及两个 SQL 问题。
在第一轮之后,几天后我接到了第一轮技术轮的电话,该轮应该在第二天举行。
第二轮(技术面试第一轮):本轮是技术面试。面试官让我简单介绍一下自己。我通过告诉他们中的大多数人写在我的简历上来开始我的介绍。然后我们开始讨论我简历中提到的一个项目。这是一个全栈项目,他让我解释从注册到在门户上发布事件的完整工作流程。然后并排他不断地问一些相关的问题,例如:
- 什么是饼干? cookie 是在客户端还是服务器端?
- 什么是会话? cookie 和 session 之间的区别以及它们放在哪一边?
- 什么是缓存?服务器端缓存和客户端缓存有什么区别?
然后我们根据我的另一个项目的代码开始了一些关于javascript的讨论,他问了项目的细节,我用的是哪个3rd party API,用什么REST API方法来调用3rd party API以及做了多少经验我在使用 Javascript。
- javascript 中的事件循环是什么?
- 什么是 javascript 中的同步和异步事件?
- 解释javascript中的调用堆栈和执行上下文?
- 有哪些不同的 REST API 方法?
- GET 和 HEAD 方法有什么区别?
- POST 和 PUT 方法的区别?
- 幂等性是什么意思(这是在解释 PUT 时提出的后续问题)? DELETE 是幂等的吗?哪些方法是幂等的?
然后他给了我 2 个关于 javascript 的输出问题,这些问题基于 javascript 中的 setTimeout() 方法、异步事件和承诺的概念。我无法正确回答问题。
然后他给了我 2 个编码问题并要求他们解决它们(逻辑和代码):
- 查找数组中第二大的不同元素。我给出了一个 O(n) 解决方案,然后他进一步补充说,假设有重复元素,第二大元素也可以重复。例如,如果数组是 [6,7,2,5,3,3,2,9] 那么第二大元素应该只有 2。解决方案应该只在 O(n) 中。
- 给定一个包含重复字符的字符串。任务是找到连续重复最大次数的字符的第一个索引(基于 1 的索引)。
例如:
如果输入是“aabbbccccddddd”,那么输出应该是 10,因为 d 是重复的最大次数。
如果输入是“aabbaaccdaeee”,那么输出应该是 11,因为它是第一个 ‘e’ 的索引。注意 ‘a’ 在字符串出现了 5 次,但它不会连续重复。
在这一轮之后,几天后我接到一个电话,说我已入围下一轮人力资源轮次。
Round 3(HR Round):这一轮面试官问了我一些常见的HR问题
- 告诉我一些你的事吧。
- 谈谈你过去的实习和项目经历
- 为什么要加入 Vymo?
- 您是否愿意参加为期 6 个月的实习?
然后她向我解释了整个实习过程,事情是如何运作的,他们使用什么技术,团队是如何决定的,以及 PPO 过程。最后,我被选中参加为期 6 个月的实习。