第1轮:
机器编码– 30 分钟讨论问题陈述,3 小时实施,另外 1 – 1.5 小时讨论解决方案,包括测试用例。
设计 Covid-19 疫苗接种预订系统
功能包括:
- 入职州、地区、病房、疫苗接种中心、插槽
- 用户使用独特的文档注册自己。
- 适当的搜索功能可帮助用户查找城市中的插槽、中心、病房。
- 列出预订和中心数据。
问题是实施很重,我们需要确保我们处理突然输入和边缘情况,并且出现了很多这样的情况。
类似的基于实现的问题可以是 – https://workat.tech/machine-coding/practice/design-library-management-system-jgjrv8q8b136。
输入/命令与文章中的非常相似。
第 2 轮(DSA):45 分钟
- 给定一组正数和负数。您必须找到 3 个数字的最大乘积
https://practice.geeksforgeeks.org/problems/three-great-candidates0515/1。Input : [9, 1, 2, 3, 4, 5, -8, 10] Output : 450 (10 * 9 * 5) Input : [-9, 1, 2, 3, 4, 5, -8, 10] Output : 720 (10 * -9 * -8)
解决方案:
– 对数组进行排序,答案将是最大值(最后 3 个数字的乘积或前 2 个数字与最后一个数字的乘积)
时间:O(n Log n)
– 遍历数组并将最多 3 个数字和最少 2 个数字存储在变量中。答案将是 max(max1 * max2 * max3, max1 * min 1 * min2)。
时间:O(n)
- 给定具有源的飞行路线,我们需要找到目的地。目的地是没有通往其他机场的路线的机场。
我可以有多个机场,它们没有通往其他机场的路线,但应该可以从源头到达目的地机场。
目的地机场将永远存在。
Input : [A,B] [B,C] [C,D] [E,F], Source = A Output : D A(source)->B->C->D E->F
D 之后没有路由。F 也没有到另一个机场的路由,但是 F 不能从源头到达,所以它不能作为答案。
Input : [A,B] [B,C] [C,D] [C,E] [E,D], Source = A Output : D A(source)-B-C - D \ / E
D 之后没有路由,所以 D 将是目的地。
解决方案:
创建图,然后从源执行 DFS 调用,直到找到没有子节点的节点。该节点将是答案。
时间——O(n),n是机场数量
我使用哈希图来构建像邻接列表这样的图。
讨论了构建可以进行空间优化的图形的其他方法。
- 给定一个正数 N,生成该数字的分数,其中 N 可以表示为 2 个数字 A 和 B 的总和,分数是 [Score(A) + Score(B)] 的所有排列的总和。
A 和 B 组合必须是唯一的。 (例如:1 & 3 与 3 & 1 相同)
Input : 3 Output : 3 Input : 5 Output : 14
解决方案:
这是一个一维 DP 问题,其中 N 的分数可以通过计算小于 N 的数字的分数以自下而上的方式计算。
Example : 1 => 1 (Base case) 2 : 1 + 1 => Score(1) + Score(1) = 2 3 : 1 + 2 => Score(1) + Score(2) = 3 4 : 1 + 3 => Score(1) + Score(3) = 4 2 + 2 => Score(2) + Score(2) = 4 = 4 + 4 = 8 5 : 1 + 4 => Score(1) + Score(4) = 9 : 2 + 3 => Score(2) + Score(3) = 5 = 9 + 5 = 14 6 : 1 + 5 => Score(1) + Score(5) = 15 : 2 + 4 => Score(2) + Score(4) = 10 : 3 + 3 => Score(3) + Score(3) = 6 = 15 + 10 + 6 = 31
>我们只需要制作一个从1到N的一维数组,从1开始遍历填充值,最后返回Score(N)。
时间:O(n^2)
有些人进行了 2 轮 DSA,但我的轮进行得很顺利,所以他们为我减少了 1 轮。
虽然这些问题看起来比较容易,但是有 45 分钟在手,其中 10 分钟用于介绍和基本项目/角色讨论,在大约 30 分钟内解决 3 个问题使它有点困难。
第 3 轮(招聘经理/文化设施):1 小时
- 问我关于以前组织中的角色。
- 解释我所从事的工作的非常高级的架构。
- 语言/框架的选择和原因。
- DB (SQL / NoSQL) 的选择以及原因。 (深入讨论)
- 通过深入讨论缓存概念。
- 项目讨论。
- 我证明自己更倾向于以客户为导向的情况。
- 我与团队发生分歧的情况以及我是如何处理的。
- 我特意去做某事时的情况。
- 迄今为止对我来说最大的成就。
- 如何处理客户需求与业务需求不一致的情况。
- 您为展示团队合作而采取的步骤。
判决:选择
保持一致并有耐心,事情会奏效,你会到达你想要的地方。