📜  耐力面试经验(校内)

📅  最后修改于: 2022-05-13 01:58:28.251000             🧑  作者: Mango

耐力面试经验(校内)

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 中以任何语言编写代码。
问题陈述:

命令行中实现具有以下功能的内存键值存储:

  • 该程序应支持以下内容
  • 斜体- 用户键入的命令
  • 粗体- 来自命令行的响应
CommandDescriptionExample
set key value [ttl]set the key with specifiedset hello 5
value. optional ttl in secondsdone
can be specified. if ttl isset test data
specified, the key shoulddone
expire after ttl.set ttl_test 10 5
done
get keyget the key if found in dataget hello
store. or return nil.5
get world
nil
get test
data
flushflush all the keysflush

flushing done

get hello

nil

savesave all keys to a filesave

saved to data.dat

load filenameload keys from a fileload data.dat

loading done

Bonus PointResolve conflict when set isSet hello 5
done over same key twice.Set hello 6
Get hello
Resolve conflict when set is5 6
done over same key twiceSet ttl_test 5 10
with ttlSet 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,请确保您对网络和网络知识非常了解,因为大多数项目都基于此(并确保您也喜欢它!)。