耐力面试经验(校内)
Endurance International Group参观了我们学院的软件开发人员简介。它由 5 轮组成(MCQ、编码、技术 1、技术 2、人力资源)。
第 1 轮(MCQ 轮 45 分钟):
有 60 个 MCQ 问题,有 4 个选项。这些问题属于 GATE 级别,正确答案为 +3,否定答案为 -1。这些问题涵盖了 OOPS、算法分析、网络、DBMS 和操作系统等主题。我能够“尝试”其中的 54 次,并在大约 70 名其他竞争对手中获得第一轮冠军。大约 25 人入围下一轮。
第 2 轮(编码):
EIG 的编码轮次不同于普通的编码轮次。您必须在自己的笔记本电脑上的 IDE 中编写代码,并且与 Internet 断开连接。它们通过大学局域网为你提供所有知名编程语言的库命令,你可以参考。您可以在您选择的任何 IDE 中以任何语言编写代码。
问题陈述:
在命令行中实现具有以下功能的内存键值存储:
- 该程序应支持以下内容
- 斜体- 用户键入的命令
- 粗体- 来自命令行的响应
Command | Description | Example |
set key value [ttl] | set the key with specified | set hello 5 |
value. optional ttl in seconds | done | |
can be specified. if ttl is | set test data | |
specified, the key should | done | |
expire after ttl. | set ttl_test 10 5 | |
done | ||
get key | get the key if found in data | get hello |
store. or return nil. | 5 | |
get world | ||
nil | ||
get test | ||
data | ||
flush | flush all the keys | flush flushing done get hello nil |
save | save all keys to a file | save saved to data.dat |
load filename | load keys from a file | load data.dat loading done |
Bonus Point | Resolve conflict when set is | Set hello 5 |
done over same key twice. | Set hello 6 | |
Get hello | ||
Resolve conflict when set is | 5 6 | |
done over same key twice | Set ttl_test 5 10 | |
with ttl | Set ttl_test 6 20 | |
Get hello | ||
5 6 | ||
After 10s | ||
6 |
解决方案:我创建了一个带有属性值和时间戳的数据类。时间戳使用基于系统的时间戳存储数据项的到期时间(以毫秒为单位),如果没有到期时间则为负值。
在获取数据时,我检查了过期时间戳是否小于当前时间戳,然后输出 nil(输出已经过期),否则显示数据。
在保存文件的过程中,我只保存了尚未过期的项目,以类似的方式检查。
对于奖励部分,您可以使用 Linked List of Data items 。
输出由至少 2 人审核。
3人进入下一轮,包括我自己。
第 3 轮(技术 1):
小组有两名评委,一轮大约需要 30 分钟。首先,他们向我询问了我的项目以及其中哪一个是我最喜欢的。我描述了我所有的机器学习项目和 Android 应用程序。他们还在我的实习中注意到基于网络的项目,并对它们感到好奇。
在询问了从服务器检索数据的基本过程之后,他们给了我一个基于从网站检索数据的情况,然后是一系列需要注意的障碍。它们如下:
如何确保用户登录到服务器,而无需在数据检索的每个步骤中检查凭据。
我通过在数据库中添加一个 is_online 列来提出一个解决方案。但是,如果他从多个设备访问,这将自动验证用户。
如何确保用户仅从一台设备访问该站点?
我建议使用带有 user_Id 的 device-id 进行身份验证。但他们不希望在通话时间如此频繁地交换用户的详细信息。他们给了我一些使用随机数的提示,我告诉他们在服务器端生成公钥和私钥对,并将私钥提供给用户,以便在加密数据的同时保留唯一身份。他们说我做得太过分了,因为这些服务不是免费的。解决方案是仅向该会话的用户发送一个随机密钥,然后使用 I 来解决上述两个问题。
如何阻止 DDOS 攻击,以便在给定时间段内不会从同一用户创建多个连接?
我建议使用单独的轻量级脚本来检查在一定时间内(运行带有计数器的 while 循环)从用户的公共 IP 建立的连接数,然后才能访问服务器脚本。他们询问了我将在哪个层使用这个脚本,因为我们需要在 OSI 的上层之前停止连接方式。
这一轮之后我没有被选中。他们告诉我,我有一套不同的技能,目前还不是他们的要求。
在与其他学生交谈后,我了解到他们也被问到了类似的问题。在面试轮次中,没有太多关注编码或操作系统。
建议:如果您想进入 EIG,请确保您对网络和网络知识非常了解,因为大多数项目都基于此(并确保您也喜欢它!)。