我通过LinkedIn接到了面试电话。
第 1 轮:第 1 轮是在某个编码平台上的编码轮(我不记得名字,因为它不是很广为人知)。
有2个问题。它们是非常基本的问题,几乎不需要了解列表中的列表如何工作。我用蛮力方法解决了它们,效果很好。
1 个月后,我接到了 F2F 回合的电话。
第 2 回合:F2F(仅 DS 回合 1 小时)
对于所有 DS 轮次,面试官将首先询问解决方案的方法和复杂性,如果它不是最佳解决方案,他们将要求进一步优化它。他们也可能会建议一些替代方法,并要求将您的方法与他们的方法进行比较。然后他们会要求您编写生产质量代码,即涵盖所有极端情况、优化循环、无代码重复等(他们认真对待这些要点:))
- 矩阵中最大区域的长度
- 检测无向图中的循环
第 3 轮:F2F(DS + 设计 1.5 小时)
- 发现第一个非从字符流重复字符
从字符流找到的第一个非重复的字符 - 设计小网址
大多数讨论都是关于HLD的。不同的方法和优点和缺点被问到。
讨论主要围绕所涉及的服务、故障、恢复以及一些关于数据库(sql 与 nosql)的内容展开。
建议:在 HLD 讨论中,不要直接从 kafka、zookeeper 等技术术语开始(了解这些技术很好)。从框图开始,确定系统的微服务以及它们如何相互调用。如果面试官问你关于技术的问题,那么你可以说出来。
第 4 轮:F2F(DS + 设计 1 小时)
1. 给定一个部分填满的数独。编写代码来检查部分填充的数独是否有效。
2. 设计多合一的信使系统。
第 5 轮:F2F(Bar Raiser 1 小时)
讨论当前的工作和项目。太多的行为问题,如果你准备好了,那就太好了。
1. 设计外卖APP(HLD+类图+时序图)
第 6 轮:F2F(DS + 设计 45-50 分钟)
- 对角打印矩阵
- 设计书我的节目(HLD 和仅高层讨论)
结论:我被选中了。
设计回合建议:
HLD:首先提出高级和基本框图,然后识别您系统的微服务。
LLD:识别系统的类别。尝试将功能/职责放在正确的类别中(面试官会彻底检查)。尝试设计可重用的类,即它也可以被其他一些类似的应用程序使用。然后你应该对对象流有一个很好的了解,即哪个是主控制器类以及不同的类如何相互调用。