📌  相关文章
📜  Snapdeal 面试经历 |设置 3

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

Snapdeal 面试经历 |设置 3

大家好,我最近出现在 Snapdeal 的班加罗尔办事处的Java简介采访中。这是我的经验。

面试共5轮,其中3轮技术,1轮经理和一轮HR。最后两轮只是正常讨论。

第 1 轮:技术轮:1:30 至 2 小时
面试从一些正常的行为问题开始,然后是 DS algo 和Java。

1. 说说你自己。

2. 您在 DS &Algo 中对自己的评分(满分 10 分)。紧随其后的是Java。

3. 给你一棵二叉树,并要求你转换二叉树,使其反转其子树。她的意思是镜像它。

4. 她现在问我你有一个链表(单独),你被要求反转链表中的每 3 个节点。例如 1 2 3 4 5 6 7 8 9 => 3 2 1 6 5 4 9 8 7。她要求代码应该处于生产级别。

5.从现在开始她问了我很多Java问题如下(她还根据我的回答问我后续问题)
1. 什么是线程以及如何创建新线程。
2. 创建线程有哪些不同的方法。
3. Hashcode和equals方法。它如何影响。你如何管理这种方法。
4. Hashmap相关问题基于上述问题和新问题。
休息我忘记了。

第 2 轮:技术轮:1:30 至 2 小时
这一轮主要只关注Java以及我对Java的了解程度。他问了我各种各样的问题如下

1.关于我的项目

2. 多线程问题非常深入。 (每个人都在思考Java中的多线程) Java如何处理线程,线程何时存活,何时死亡,如何死亡,死亡时会发生什么,活着时会发生什么,JVM做什么等。

3. 然后他给了我不同的场景来检查我在多线程环境中的Java编程技能。

4. hashmap 的工作原理及其在Java中的实现。 Java在 hashmap 中如何解决冲突。
其次是发生碰撞时会发生什么,get() 和 remove() 方法的行为如何。 get()、remove() 和 put() 方法等的 Hashmap 的复杂性是多少?
关于Java的很多问题

5. 什么是BST,什么是二叉树,Node 结构在node 结构中还可以做什么来提高效率。

6. 你将如何检查二叉树是否是 BST。为它写代码。
-> 我解释了如何检查给定的二叉树是否是 BST。然后我使用 inordertraversal 给了他最简单的解决方案。然后他让我写代码。
我使用中序遍历在Java中编写代码并等待他,同时我想他可能会要求我在没有中序遍历的情况下解决,就像我解释检查二叉树是否为 BST 的方法一样。所以同时我也为它写了代码😉
我根据最小/最大值编写代码并递归检查。

7. 然后他问我在 Spiralform 中打印矩阵,然后是代码。与此同时,他问我什么是二维数组,它们的行为方式以及内存分配方式。

第 3 轮:技术轮:1 到 1:30 小时
这一轮是最好的一轮,因为这一轮让我把自己推向了一个新的高度。这一轮有我从未听过或解决过的所有新问题。它是这样的;

1. 问我关于我自己、我的项目、我正在做什么……等等。

2.各种Java题。

3. 给定一个二维字符数组和一组单词(字典)。您的任务是返回给定数组中所有有效且可用的单词。
-> 我向他解释了从回溯开始解决上述问题的不同方法。然后他问我关于指数级的复杂性。随后要求进一步优化它。
我以各种方式(有或没有动态编程)一一优化我的算法,并尝试结合我的优化以产生更好的方法。我一直告诉他,在这种情况下,这就是复杂性。他让我进一步优化我的算法,并为我到达他希望我到达的地方喝彩。那是基于前缀树的解决方案。在给出这个解决方案之后,我进一步优化它以丢弃这么多不会导致解决方案的路径(这给了我一个 + 点)。然后他问我代码(我有点紧张,因为算法现在变得复杂,我说实现可能有点棘手,他告诉我慢慢来)。我告诉他这是我实现基于前缀树的解决方案的方法,然后他告诉我假设 PrefixTrie 实现中可以使用以下辅助方法,但他问我首先向他解释我如何有效地实现这些方法,我回答了)。
然后花了 25 分钟来编写该代码。他很高兴,但他再次要求我进一步优化代码的特定部分(我使用已访问的布尔数组来跟踪我的路径)。我再次用各种方式优化了这部分,从糟糕的复杂性到令人敬畏的复杂性,他变得非常高兴。

我要感谢 geeksforgeeks 提供了这么棒的平台来学习 DS 算法。

Snapdeal 的所有练习题!