我是 LinkedIn 的常客,有一天我在浏览提要时看到了 CodeChef 的软件开发工程师实习海报。 CodeChef 的面试过程与包括其母公司 Directi 在内的大多数其他公司大不相同。由于 COVID-19,所有回合都是虚拟的。
CodeChef 的在线编码回合– 3 小时
– 第一和第二个问题是初学者级别。
– 第三个问题(简单)– 给定一个数组 A1, A2, …, An 大小为 N。一对 (i, j) 是好的当且仅当 1 <= i < j <= N 并且 Ai+Aj 是一个质数。你需要在这个数组中找到好的对的数量。 (技巧:使用埃拉托色尼筛法寻找素数)
– 第 4 个问题(中) – 修改背包问题(动态规划)
– 第 5 个问题(难) – 基于图表
其中,我能够解决其中的 4 个,并进入下一轮。
Web 应用程序开发回合 – 10 天时间
– 我获得了我必须使用的技术堆栈 – PHP (Slim Framework)+ MySQL + ReactJS。
– 我获得了官方 CodeChef API 的访问权限,任务是构建一个具有诸如搜索竞赛、其中存在的问题等功能的竞赛竞技场。这里有趣的是 CodeChef API 的速率有限。因此,我必须在指定的时间间隔内在中间服务器上缓存数据,然后将结果提供给前端。
– 我被要求通过推送到私有 GitHub 存储库来提交代码。在下面找到 Web 应用程序的预览
Web App 讨论 + 技术回合 – 1 小时
– 采访从我如何构建 Web 应用程序以及面临的挑战开始。
– 然后我被问到 OS、DBMS 和网络的一些基本问题。
– 我还被要求解释我在简历中提到的技术,如 Docker、MongoDB 等(专业提示:确保你知道解释简历中的每个词)。
最期待的 DSA 回合 – 电话面试 – 1 小时
– 给定一个包含重复的 n 个正整数的数组,您将如何转换该数组,使得所有元素都以最少的移动次数不同?问题是,您只能执行一种操作,但可以重复任意次:对于数组中的任何对,(Ai, Aj) 都可以转换为 (Ai, Ai + Aj)
– 经过一段时间的思考和与面试官的讨论,我能够想出一个在二次时间内使用哈希映射的解决方案。然后,我被要求优化。在对几个示例进行试运行后,我观察到了一些东西(用数组中的自身和最大元素的总和替换任何元素),并在线性时间内提出了一个解决方案。然后我被要求用我最喜欢的语言(C++)编写相同的代码。
– 我的建议是大声思考。您的思考过程比解决方案本身更重要。
CodeChef 首席技术官的最后一轮面试 – 30 分钟
– 这更多是关于我、我的家庭背景、兴趣的非正式讨论。我所要做的就是保持自信并分享我的故事。
– 他还分享了 CodeChef 及其文化的演变。
– CTO 立即通知我我加入了。
为期一个月的面试过程到此结束,我被选为 CodeChef 的 SDE 实习生🙂
准备策略和技巧
– 精通没有捷径。实践。 DSA 对于任何计算机科学工程师来说都是非常重要的,因为 Web 框架可能来来去去,但只要数据存在,这个主题就已经存在并将继续存在。因此,大多数产品开发公司都高度重视它。
– 如果你有足够的时间准备,你可以通过在 Codeforces、CodeChef 解决问题来提高你的逻辑思维能力,并遵循下一点。
– 但如果时间很短,那么最好在 GeeksForGeeks、HackerRank、Leetcode 上练习标准的 DSA 问题。
– 好吧,即使你擅长 DSA,除非你有一些 Web 开发经验,否则通过这种面试是不够的。为此,我建议您学习一些最新的网络/移动应用程序技术并构建一些副项目。还可以尝试为 GitHub 中的开源项目做出贡献,以便更好地了解编码在现实生活中的样子。
– 准备您的 LinkedIn 个人资料并成为活跃用户。你可能会像我一样随时找到机会。它还可以帮助您改善您的专业网络。