eQ技术面试经验(虚拟2021)
背景:
日期:2021 年 7 月 6 日至 9 日
模式:在校园内,完全虚拟(通过 MS Teams)
第 1 轮(在线编码轮)– 60 分钟 + 14 分钟:
这是 7 月 6 日的虚拟驱动器。第一轮是能力+编码轮。能力包括血缘关系、方向、编码-解码、数列、段落和基本量化。这是一个简单的 14 个问题。
之后有一个 1 小时的编码回合。它们由简单的问题组成。
1.打印图案:
Input
N=4
Output:
1
2*3
4*5*6
7*8*9*10
7*8*9*10
4*5*6
2*3
1
2. 给定一个大小为 N 的数组和一个变量 k。您需要对数组进行排序,使前 k 个元素按递增顺序排序,最后 k 个元素按递减顺序排序。
Input:
arr=[2,5,6,4,1,3,9,8]
k=4
Output:
arr[2,4,5,6,9,8,3,1]
我能够解决这两个问题。所有能够解决这两个编码问题的学生都被列入候选名单。有59人入围面试。
第 2 轮(技术面试 -1)- 30 分钟:
采访开始于告诉我你自己?我们对我们的项目进行了简短的讨论。我使用对象检测在 AI/ML 中创建了一个盲人辅助项目,围绕距离计算进行了一些讨论。后来,转向数据结构。他问我如何删除链接列表中的节点。我陈述了 2 指针方法。他问我当时有没有双向链表?
我回答说一个指针就足够了。然后继续 Reversing a Linked List 问题。我陈述了迭代方法。他告诉我优化它。我陈述了相同的递归版本。然后问如何用队列实现栈。我为此编写了代码。后来,他询问了规范化(所有形式的例子)。然后他询问了非规范化、参照完整性、外键、ON DELETE CASCADE 命令。最后,他带着所有的概念去 OOPs,问我关于钻石问题, Java中的多重继承,接口。
我可以回答他们并进入下一轮。
第 3 轮(技术面试 -2)- 60 分钟:
我被问及所有 OOP 概念。后来,他说要共享屏幕,并使用代码编写所有面向对象的概念。我写了关于抽象、继承、封装的代码,口头解释了多态性。
然后他询问有关数据库的问题,并要求我使用 INNER JOIN、COUNT、GROUP BY 子句编写 SQL 查询。它是连接两个表来查找在哪个部门工作的员工以及他们的人数。有些员工没有部门。因此,也必须找到 Null 类别的计数。
后来他给了我两个编码问题:
1. 反转一个没有任何内置函数的字符串
2. 一次性找到链表的中间元素。
我可以正确回答他们并进入下一轮。
第 4 轮(技术面试 + HR-2)- 30 分钟:
我被问及我的激情、优势、弱点和灵感。他问我关于实习的事情。他处于一个非常激进的区域。这一轮我有点紧张。我建议要自信。他问我一个问题,我们在 AI/ML 中工作的比例只有 1%。你有 AI/ML 方面的经验。为什么要加入eQ?最后,他给了我一个编码问题,让我在 45 分钟内解决并通过电子邮件发送代码。问题是:
用Java/C/C++编写一个程序,输出一个月的日历。打印日历的方法称为 PrintMonth(mnth, yr)
传递的参数是:
mnth – 月份编号 – 数字:1 表示 1 月,2 表示 2 月等。以 12 表示 12 月。所有其他值均无效。
yr – 年 – 数字:4 位数年份。有效值为 1980 到 2480。
PrintMonth(7, 2020) 的输出如下所示:
July 2020
+—–+—–+—–+—–+—–+—–+—–+
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
+—–+—–+—–+—–+—–+—–+—–+
| | |1 | 2 | 3 | 4 | 5 |
+—–+—–+—–+—–+—–+—–+—–+
|6 |7 |8 |9 |10 |11 |12 |
+—–+—–+—–+—–+—–+—–+—–+
|13 |14 |15 |16 |17 |18 |19 |
+—–+—–+—–+—–+—–+—–+—–+
|20 |21 |22 |23 |24 |25 |26 |
+—–+—–+—–+—–+—–+—–+—–+
|27 |28 |29 |30 |31 | | |
+—–+—–+—–+—–+—–+—–+—–+
请不要编写单片代码。将代码分解为模块化的组成方法/函数/类。
请注意并保持对齐。请完全按照所示使用空格,不要使用制表符 ('\t')。
假设您的类中有以下方法并且可以调用它。该方法称为:
MonthStartsOn(monthNum, yr)
其中 monthNum 接受参数 0 表示 1 月,1 表示 2 月等。最多 11 表示 12 月,
yr 是上面经过的年份。
该方法返回从 0 到 6 的数字。它返回 0 表示周一,1 表示周二等,6 表示周日。对于参数 <0 和 >11 的任何值,它返回 -1
虽然这个问题看起来很简单,但由于紧张,我在代码中提出了几个问题。我尽力保持冷静,但我相信我在匆忙中犯了一些非常愚蠢的错误,并没有让我清除这一轮。
结果出来后我写的代码解决了所有的错误之后是:
C++
#include
using namespace std;
int total_days(int monthNum, int year)
{
if (monthNum == 0 || monthNum == 2 || monthNum == 4
|| monthNum == 6 || monthNum == 7 || monthNum == 9
|| monthNum == 11) {
return 31;
}
else if (monthNum == 3 || monthNum == 5 || monthNum == 8
|| monthNum == 10) {
return 30;
}
else if (monthNum == 1) {
if (year % 400 == 0
|| (year % 4 == 0 && year % 100 != 0)) {
return 29;
}
else {
return 28;
}
}
}
string MonthName(int num_Month)
{
string months[] = { "January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December" };
string result = months[num_Month - 1];
return result;
}
// Just a call is needed for this function :
// MonthStartsOn(monthNum-1, yr); You can test by replacing
// int present=MonthStartsOn(monthNum-1, yr);
// with
// int present=2;
void PrintMonth(int monthNum, int yr)
{
int date = 1;
int present = MonthStartsOn(monthNum - 1, yr);
int max_days = total_days(monthNum - 1, yr);
cout << MonthName(monthNum) << " " << yr << endl;
cout << "+-----+-----+-----+-----+-----+-----+-----+"
<< endl;
cout << "| Mon | Tue | Wed | Thu | Fri | Sat | Sun |"
<< endl;
cout << "+-----+-----+-----+-----+-----+-----+-----+"
<< endl;
for (int i = 0; i < 5; i++) {
cout << "|";
for (int j = 0; j <= 6; j++) {
if (j < present && i == 0) {
cout << " |";
}
else if (i >= 0 && date <= 9) {
cout << " " << date << " |";
date++;
}
else if (i > 0 && date > 9
&& date <= max_days) {
cout << " " << date << " |";
date++;
}
else if (date > max_days) {
cout << " |";
}
}
cout
<< endl
<< "+-----+-----+-----+-----+-----+-----+-----+"
<< endl;
}
}
int main()
{
int year;
cout << "Enter Year" << endl;
cin >> year;
int month;
cout << "Enter Month" << endl;
cin >> month;
PrintMonth(month, year);
return 0;
}
我建议通过所有的面试经历并相应地准备。我建议你在面试中保持冷静、沉着和稳定。代码很简单。您可以使用类、函数来使其更加模块化。最后,保持自信。你将能够做到。我相信你!!!祝你一切顺利!!
经过最后一轮选拔,共有13名学生被选中。