在线编码回合:有三个编码问题和 MCQ。每个部分都有固定的分配时间。 MCQ 以一般问题解决技能和 CS 基础知识为基础。
编码问题:
- 两个玩家 A 和 B 在 x 轴的正轴上玩石头游戏,石头在点 0 处初始,你得到一个点 N。在每一步,玩家可以移动石头 i 2 (i > 0) 步朝着N点。如果玩家可以将石头移动到N点,则该玩家获胜。您需要输出哪个玩家将获胜。 (注意:石头永远不能超过 N 点)
Example: Input: 5 Output: B Explanation: Player A can either move the stone by 1(1*1) or 4(2*2). No matter which move player A chooses, Player B can always choose a move to reach 5 and win.
- 给定一个包含 N 个数字的数组,您需要输出所有子数组中的最大值 V,其中子数组 A[L..R] 的值 V 定义为 sum(A[L…R])*MAX(A[L …R]) 1 <= L <= R <= N。
约束条件:1 <= A[i] <= 1e9, 1 <= N <= 1e5
Example: Input: 1 -1 2 3 -4 Output: 15 Explanation: The subarray which gives maximum value V is A[3..4] = {2,3}, V = (2+3)*MAX(2,3) = 5*3 = 15
还有一个我不记得的问题。
我能够部分解决大部分 MCQ 和一个编码问题。
10 天后,我接到了第一次技术面试的电话。
第 1 轮(技术面试):持续时间:1 小时
面试是在hackerrank codepair平台上进行的。面试要求我介绍自己并分享我的实习项目细节。然后他问了我一些关于我的实习项目的后续问题,大约 5 分钟。
然后他转向与 CS 基础相关的问题:
- 编译阶段
- 链接器和加载器
- 程序是如何存储在内存中的? (https://www.geeksforgeeks.org/memory-layout-of-c-program/)
- 如果我的 PC 有 8 GB 的 RAM 并且我在编辑器中打开一个大小为 50 GB 的文件。可能的结果是什么?
动态搜索广告:
- 实现具有以下要求的随机函数:
一种。生成的随机数必须完全不可预测
湾性能应该不错
我给了他一个基于使用当前时间戳并将其与素数相乘以生成随机数的解决方案。他说这是一个很好的开始,但你的函数的性能会很慢,因为你将使用的时间函数每次都需要按时钟来获取当前时间。所以,他告诉我优化我的解决方案。我一直在分享我的思考过程,但无法想出任何有效的方法。几分钟后,面试官进入下一个问题。
- 给定一个不同元素的数组,您可以从数组中选择任何子集并重新排序它们。您可以在它们之间放置以下运算符:+、-、*、/、(、) 并计算表达式的值。您的任务是找到不能使用数组元素形成的最小正数。对于一个表达式,您只能使用一次数组元素。
Example: Input: [1, 2] Output: 4 Explanation: 1 and 2 are already present in the array. You can make 3 by adding 1 and 2 i.e. 3 = 1+2 There no possible way to make 4.
我只能说出这个问题的蛮力方法和时间复杂度。他让我优化它。我分享了一些想法,并与子集和问题进行了一些类比,但最终我无法解决问题。
判决:拒绝
祝一切顺利!!