📜  GoJek 产品工程师实习面试经验| 2019年校内

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

在线技术测试:

在Interview Bit 平台上,技术测试的持续时间为60 分钟。测试由两部分组成,每部分 30 分钟。第一部分是 30 道 MCQ 问题,接下来是 1 道编码问题。 MCQ 问题主要集中在 DBMS、操作系统、计算机网络、算法和概率上。问题包括核心主题的子主题,如查找主键、线程、内存管理、计算网络 IP、算法的时间复杂度和一些简单的概率问题。在 MCQ 部分,您需要快速而彻底地掌握概念,才能正确回答所有问题。

编码问题是一个简单的级别问题,我们需要将给定的链表向右旋转 K 个位置。
解决这个问题需要指针和链表的基本知识。

Input: 
1->2->3->4->5
k=2

Output:
4->5->1->2->3

按 K 位置右旋转链表

在线测试完成后,根据他们的测试表现和简历,从 120 名学生中选出了 10-12 名学生。有实习经验或开源贡献的学生优先。

技术面试第一轮

技术回合首先简要介绍了我自己和我的简历。面试官问了我关于我过去实习、分配的任务和我面临的挑战以及我在实习中使用的技术堆栈的问题。由于我是一名 MERN 堆栈开发人员,他首先询问与 React 相关的问题。

  1. 什么是虚拟 DOM,它与真实 DOM 有何不同?
  2. 虚拟 DOM 如何提高 Web 应用程序的性能?
  3. React 中的组件是什么,React 中的无状态和有状态组件是什么?
  4. React 中的组件生命周期是什么?

他继续解决与后端、NodeJS 和 Javascript 相关的问题。

  1. Javascript 中的 ES6 是什么?
  2. 什么是 JS 中的承诺和回调?
  3. 什么是多线程? NodeJS是多线程的,NodeJS是如何处理多进程和API请求的?
  4. 什么是扩展,您如何扩展系统?
  5. 什么是微服务,它与单体服务有什么不同?

经过大约 30 分钟的 QA 会议,面试官让我对自己的编码技能进行评分,然后继续解决编码问题。问题如下:

给定 N 个不同颜色的球保持在一条直线上,如果两个球的颜色相同,它们会碰撞在一起并消失。编写一个程序来找出这样的碰撞次数和剩余的球数?

Input: azxxzy
Output: ay

Input: abccbxyyxba
Output: aba

问题是从字符串递归删除相邻重复项的变体。起初,我继续使用蛮力方法创建一个函数来删除第一个重复的相邻字符,然后递归调用新修改的字符串的方法,并使用堆栈数据结构对其进行进一步优化。递归删除相邻重复项给定字符串

成功解决问题后,他继续解决数据库设计问题,并要求我设计 BookMyShow Web 应用程序的数据库模式。电影预订网站的数据库模型

我被要求为用户、电影、礼堂、预订信息、放映信息设计单独的架构。在每个模式中指定所需的属性,为每个模式选择主键和外键并将它们互连。他进一步扩展了问题以扩展数据库以存储城市中多个剧院的信息并将所有剧院映射到各个位置。我需要指定搜索查询如何工作的步骤,以防用户想在某个电影厅的某个时间预订某部电影。

成功实施后,面试官要求我添加一项新功能,以锁定座位,以防用户未付费。如果用户没有完成支付,座位会在一段时间后解锁。他进一步要求我保护 API 并检查正确的用户是否使用中间件功能对用户进行身份验证为锁定的席位付费。

最后,他问了我在学术之外的课外活动,我的爱好和兴趣。我如何学习新事物及其工作背后的概念?

结论:仅在第一轮之后,我就被选为 GoJek 产品工程的两名暑期实习生之一。

提示:
听完问题澄清你的任何疑问,否则你最终可能会解决一个错误的问题,这会给面试官留下不好的印象。就算知道解法,先告诉蛮力,再优化。达到优化算法后编写代码。

如果您无法提出优化的解决方案,请不要惊慌,而是与面试官就您的方法进行互动,以便他指出您哪里出错了。告诉他们你的思考过程,而不是直截了当地告诉他们解决方案。 GoJek 更喜欢熟悉各种开发概念且不受单一技术堆栈限制的学生。如果您对构建某些东西充满好奇和热情,并热衷于学习新事物,那么它肯定会增加您的优势。