📜  eQ技术面试经验(虚拟2021)

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

eQ技术面试经验(虚拟2021)

背景:

日期:2021 年 7 月 6 日至 9 日

模式:在校园内,完全虚拟(通过 MS Teams)

第 1 轮(在线编码轮)– 60 分钟 + 14 分钟:

这是 7 月 6 日的虚拟驱动器。第一轮是能力+编码轮。能力包括血缘关系、方向、编码-解码、数列、段落和基本量化。这是一个简单的 14 个问题。

之后有一个 1 小时的编码回合。它们由简单的问题组成。

1.打印图案:

2. 给定一个大小为 N 的数组和一个变量 k。您需要对数组进行排序,使前 k 个元素按递增顺序排序,最后 k 个元素按递减顺序排序。

我能够解决这两个问题。所有能够解决这两个编码问题的学生都被列入候选名单。有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) 的输出如下所示:

请不要编写单片代码。将代码分解为模块化的组成方法/函数/类。

请注意并保持对齐。请完全按照所示使用空格,不要使用制表符 ('\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名学生被选中。