第 1 轮(在线测试): Citrix 访问了我们的校园,担任只对 ME 学生开放的软件工程师职位。
有 2 个编码问题和 40 个 MCQ:
- 其中之一是基于图形的问题,即寻找可通过某条路径到达且距离最多为“K”的城市数量最少的城市。
- 另一个是关于 DP 的中级问题。
- MCQ 是中等难度的。
这一轮有 13 人从大约 40 人中脱颖而出。解决一个编码问题和相当数量的 MCQ 就足以让我们进入下一轮。
第二轮(技术面试):我被要求自我介绍。面试官挑了一个他喜欢的项目,让我解释一下。这是一个基于网络的项目(关于负载平衡),我详细解释了它。然后他谈到了我最擅长的科目,我说了数据结构和算法。所以他立即开始了编码问题。
问的问题是:
- https://www.geeksforgeeks.org/non-repeating-element/
- 然后我被要求设计一个具有以下 3 个功能的音乐播放器:
- 从播放列表中随机播放一首歌曲。
- 确保一旦选择了一首歌曲,就不会再次选择它。
- 将新歌曲添加到播放列表。
我无法实现第二个功能(尽管后来他解释了该方法时,我意识到这真的很容易)。
- 本轮最后一道题是打印二叉树的左视图。 https://www.geeksforgeeks.org/print-left-view-binary-tree/
8人入围下一轮。
第三轮(技术面试):这一轮直接从一个编码问题开始。问的问题是:
- https://www.geeksforgeeks.org/toggling-k-th-bit-number/
- 有 n 个内核,为请求端口的内核分配一个随机端口(最初可用的 65535 个端口中)。
- 第三题是关于Hashing and Sliding Window的中级题。当我运行测试时,我的代码在某些测试用例中失败了,但是,即使是面试官也不确定它在哪里失败。
7人入围下一轮。
Round 4(Technical + Managerial):这又是从互相介绍开始,然后我被问到一个设计问题。
- 我被要求设计一个 URL 缩短服务。这个讨论持续了大约 45 分钟。
- 我被问到一些基本的操作系统问题,比如“什么是颠簸?”。
- 给定排序算法的可执行文件,您将如何估计每个代码所需的时间复杂度。假设它们都是某种排序算法的正确实现,即都产生了正确的输出。
最后,我被问到了一些行为问题,例如:
- 告诉我你在团队中遇到一些挑战的经历,以及你是如何解决的。
- 告诉我你在做一个项目时与任何团队成员有一些意见分歧的时间,以及你是如何解决的。
- 最后,他问我有没有什么问题要问他们,我的采访就这样结束了。
3个人拿到了最终offer,可惜我不是其中之一。