📜  沃尔玛 SDE 面试经验 |校内 2021(虚拟)

📅  最后修改于: 2021-11-22 10:38:00             🧑  作者: Mango

Walmart Global Tech 于 8 月访问了我们的校园,聘请学生担任软件开发工程师职位。
最初,有一个基于 CGPA 的入围名单,之后大约 250 名学生被选中参加在线评估。

在线测评:平台为HackerEarth,时长1小时

  • 10 个技术 MCQ,属于 OOPS、OS、DBMS、网络和 SQL
  • 2道中难度编码题

编码问题是:

  1. 给定两个由小写英文字母组成的字符串A 和 B。找出不同对数 ((i,j), (k,l)) 使得子串 A[i…j] 和 B[k…l] 相等且 j-i+1 的值最小。
    C++
    // Solution to Q1
    int smallest_common_substrings(string A, string B) {
        char freq[256] = {0};
      
        for (char c : A) {
            freq++;
        }
      
        int sum = 0;
      
        for (char c : B) {
            sum += freq;
        }
      
        return sum;
    }


    C++
    //Solution to Q2
    #include 
    using namespace std;
      
    int solve(vector &arr, int n, int k, int x)
    {
        vector dptable(n, INT_MAX);
        dptable[0] = 0;
      
        for (int i = 0; i < n; i++)
        {
            for (int j = max(0, i - k); j <= min(n - 1, i + k); j++)
            {
                if (dptable[j] > dptable[i] + (arr[j] == arr[i] ? 0 : x))
                {
                    dptable[j] = dptable[i] + (arr[j] == arr[i] ? 0 : x);
                }
            }
        }
      
        return dptable[n - 1];
    }
      
    int main()
    {
        ios_base::sync_with_stdio(0);
        cin.tie(NULL);
      
        int n;
        cin >> n;
      
        vector arr(n);
      
        for (auto &x : arr)
            cin >> x;
      
        int k, x;
        cin >> k >> x;
      
        cout << solve(arr, n, k, x);
      
        return 0;
    }


  2. 给定一个包含 N 项的数组 a1,a2…..an
    给定两个整数 K 和 X。其中 K 表示从位置 i 向任一方向可以进行的最大跳跃次数,只有当 abs(ji) <= K 且 1<= 时,您才能一步跳转到位置 j j<=n。
    如果 a[i] = a[j],则从 i 跳到 j 将花费 X 量。
    找出从位置 1 到达位置 N 的最小成本。

    C++

    //Solution to Q2
    #include 
    using namespace std;
      
    int solve(vector &arr, int n, int k, int x)
    {
        vector dptable(n, INT_MAX);
        dptable[0] = 0;
      
        for (int i = 0; i < n; i++)
        {
            for (int j = max(0, i - k); j <= min(n - 1, i + k); j++)
            {
                if (dptable[j] > dptable[i] + (arr[j] == arr[i] ? 0 : x))
                {
                    dptable[j] = dptable[i] + (arr[j] == arr[i] ? 0 : x);
                }
            }
        }
      
        return dptable[n - 1];
    }
      
    int main()
    {
        ios_base::sync_with_stdio(0);
        cin.tie(NULL);
      
        int n;
        cin >> n;
      
        vector arr(n);
      
        for (auto &x : arr)
            cin >> x;
      
        int k, x;
        cin >> k >> x;
      
        cout << solve(arr, n, k, x);
      
        return 0;
    }
    

能够通过两个问题的所有测试用例,总共有 1 个解决方案和 1 个部分解决方案的学生也进入了下一轮。

33人被选入下一轮。

第 1 轮(技术面试 1):45- 50 分钟

  • 这一轮是通过 Zoom 进行的技术面试。
  • 面试官先自我介绍,他是SDE 3(后端),在IT领域有10年的经验,在沃尔玛工作过一段时间。在这一轮中,我没有被要求编写任何问题,它更多地关注核心 CSE 主题。
  • 我被要求自我介绍,然后我们直接进入技术问题。

他给了我一个谷歌文档链接,我可以用它来向他解释答案。

  1. 有 2 台机器,第一台机器想向另一台机器发送消息。详细解释通信是如何发生的。我解释了关于 OSI 和 TCP/IP 模型的所有内容,每一层在传输数据中的工作,建立连接的 3 路握手协议。他对我的回答很满意。
  2. 是关于 STL 的实现,他问我是否给了一个无序的 n 个数字集,我将如何在不使用排序算法的情况下将其更改为有序集。我告诉他,我们可以对给定的无序集合进行 BST,然后对树进行中序遍历以获得元素的有序集合。我在 google doc 上解释了我的方法。
    他很满意,没有让我编码。
  3. 给定一个已排序的数组,用 1 个重复的数字找到该数字。我给了他一个简单的 o(n) 解决方案,之后他让我让我的解决方案更复杂(是的,更复杂) ,同时面试官要求我让我的解决方案更复杂是非常奇怪和有趣的,面试官很客气,我们聊的很好。
  4. 提出了有关线程、分页和分段的各种问题。面试持续了大约 50 分钟,最后他问我是否有什么问题要问他,我问了他在沃尔玛的日常工作,他以非常翔实和礼貌的方式回答了这些问题。

25 人被选入下一轮。

提示: 准备好核心主题,因为它们与 DSA 同等重要,并在面试结束时向面试官提出好的和有意义的问题。

第二轮(技术面试二):1小时

通过变焦进行。面试官是沃尔玛的高级数据科学家,他最初告诉我这将是一轮编码。在继续讨论编码问题之前,我们对我的项目进行了很好的讨论,因为我的简历主要是基于数据科学的。

我被问到的几个问题

  1. LSTM 比简单的 RNN 好在哪里?解释了梯度消失问题,解释了背后的数学,很满意。
  2. 你为什么在你的一个项目中使用随机森林算法?解释了随机森林的优点,它的工作原理,它与决策树有什么不同。
  3. 什么是相对特征重要性和部分依赖图?在我的一个项目中使用过它,所以向他解释了它,很满意。
  4. 什么是偏差-方差权衡以及如何使用随机森林来解决个性化问题?然后他转向编码问题,他让我打开我最喜欢的 IDE 和代码。
  5. 图案印刷问题:https://practice.geeksforgeeks.org/problems/pascal-triangle0652/1。确定这是一个帕斯卡三角形,向他解释了逻辑,然后他让我在共享屏幕的同时对其进行编码。
    代码运行成功,他很满意。
  6. 在链表中查找循环:https://practice.geeksforgeeks.org/problems/detect-loop-in-linked-list/1。没有要求写这个,只需要给他解释方法,给他蛮力方法,然后用maps来降低复杂度,他很满意O(n)时间和O(n)空间复杂度(PS) : 它也可以在 O(1) 空间中解决)
  7. 编写一个打印 YES 和 NO 的概率相等的函数。给了他 C++ 中 rand() 的想法,然后他接着将打印 YES 的概率设置为 25%,然后是 10%。建议对 rand()函数一些调整,他很满意。

面试持续了大约 1 个小时,最后他问我是否有什么问题要问他,我问了他作为数据科学家在沃尔玛的日常职责,他以非常翔实和礼貌的方式回答了这个问题。

提示:确保你能坚持你在简历上写的所有内容,因为面试官会深入了解你的项目和实习。

第 3 轮(招聘经理/人力资源轮):1 小时

  • 在我的技术回合结束后,我被要求留下来,大约 10 分钟后我进行了这一回合,我被告知这是我的最后一轮。
  • 面试官先让我做自我介绍,然后根据我的简历、我第一次参加hackathon的经历、我为什么做简历上写的ML认证等问题问了一些问题。
    他问我,在我看来,领导者最重要的品质是什么。
  • 然后我们就沃尔玛、沃尔玛的创新以及沃尔玛正在研究的任何最新技术进行了长时间的深入讨论。
  • 他还问了一些技术问题,比如什么是云,公共云和私有云有什么区别?
  • 我向他询问了在沃尔玛工作的各个团队的情况。
  • 总而言之,我们进行了很好的讨论,面试进行了大约一个小时,然后他祝我好运,并让我留意我的安置单元的任何更新。

第二天公布结果,16名学生被选为FTE,7名实习生被选为实习生,可根据表现转为FTE。

我被选为全职员工之一🙂

提示:确保您研究了有关您申请的公司的所有信息,使用 GFG 进行 DSA 和核心科目的常规练习。