📜  Paytm 面试经历 2020

📅  最后修改于: 2021-09-23 06:07:58             🧑  作者: Mango

嗨极客,
我最近参加了 Paytm Noida 软件工程师职位的面试。我有 1 年 7 个月的软件开发经验。
申请:我直接在LinkedIn上给招聘人员发了消息,并与她分享了我的简历。她发送了一个在线测试的链接,将在周末尝试

在线测试:(90 分钟)
在线测试由 2 道编码问题和 20 道 Mcqs 组成,需在 90 分钟内完成。问题如下
1-https://www.geeksforgeeks.org/number-buildings-looking-sun/ – 问题类似于这个问题
2- https://www.geeksforgeeks.org/minimum-insertions-to-form-a-palindrome-dp-28/

Mcqs 基于基本的Java、集合输出问题和基本的线程概念。
完成 1 个编码问题和 10-12 个 MCQ 就足以通过这一轮。

接下来,由于 COVID,所有回合都是虚拟的,并在环聊视频通话中进行

第 1 轮(45-60 分钟)

这一轮完全基于数据结构和算法。面试官很想知道这种方法,并问了我一些示例测试用例,看看我的方法是否涵盖了它们。问了以下问题
1- https://www.geeksforgeeks.org/delete-a-node-from-linked-list-without-head-pointer/
2-https://www.geeksforgeeks.org/print-nodes-top-view-binary-tree/
3- https://www.geeksforgeeks.org/find-element-appears-array-every-element-appears-twice/
对于这个问题,他感兴趣的是 O(n) 时间 0(1) 空间解决方案和只有 1 次数组遍历(提示:使用 XOR)
4-https://www.geeksforgeeks.org/find-two-non-repeating-elements-in-an-array-of-repeating-elements/
此问题是上述问题的扩展,其中所有数字都重复而不是两个数字出现一次(基于 XOR 的方法的提示扩展)

我能够回答所有 4 个问题,并且能够清楚地解释该方法。

第 2 轮(30-45 分钟)

这一轮也是基于数据结构和算法,最后还问了一个谜题

面试官在这里扫了我的简历,问了做的工作和涉及的技术栈(5分钟)
然后他跳到 DS Algo 问题上。本轮问到以下问题
1- https://www.geeksforgeeks.org/reverse-a-linked-list/
我给出了一种基于堆栈的方法,但他要求我在不使用任何其他数据结构且不使用除 Head 之外的其他指针的情况下执行此操作(提示:递归)

他问我是否对图表有任何想法。我说是的我知道基本的算法,然后他问我以下问题
2- https://www.geeksforgeeks.org/detect-cycle-in-a-graph/(提示 DFS)
我使用了 DFS 并解释了我的方法。然后他问我为什么不用 BFS,接着是 5 分钟的讨论,讨论在哪里使用 DFS 以及在哪里使用 BFS

然后他问了我一个很流行很简单的谜题
3-https://www.geeksforgeeks.org/puzzle-1-how-to-measure-45-minutes-using-two-identical-wires/
我在 5 分钟内回答了它,并从他那里得到了一个小小的提示:

第三轮(简历+核心Java +集合+线程,30-40分钟)

这一轮是由我被聘用的团队的技术负责人完成的
他扫描了我的简历,询问项目中使用的Java版本。我说的是Java 8。
1-他问我Java 8 的特性
然后他问我在 JVM 中做了哪些更改以引入 Lambha 表达式。你可以从 https://stackoverflow.com/questions/29143803/java-lambdas-how-it-works-in-jvm-is 详细阅读-it-oop

2- Java的泛型提出了另一个问题。 List 和 List 的区别
(提示:在Java键入擦除)
3- Linked HashMap 如何维护 Keys 的插入顺序(提示:在桶中使用 DLL)
4- 关于微服务架构的一些基本讨论(来自简历)

5- 我在简历中提到过消息队列。所以他问我你用的是哪个MQ。
我回答卡夫卡。我在这里很害怕,因为我对 Kafa 的工作原理只有基本的了解。
1-当消息位于不同的分区时,您如何控制消费者级别的消息读取顺序(我希望在 M2 之前读取 M1)(仅当消息位于同一分区时才能保证 KAFKA 中的消息顺序!!)
我花了一些时间思考并告诉他,我们可以在每条消息上附加一个序列,并继续将它们持久化数据库并检查序列是否已经到达,如果没有,则抛出异常。 (基本上,消费者只会在前一种情况下承诺抵消)这个答案给他留下了深刻的印象

2- 另一个基于场景的问题被问到,假设消费者正在处理大量数据并通过端点将数据发送到 3rd 方服务,但 3rd 方服务非常慢,需要 6 秒才能响应。如何优化它
( 解决方案:由于 API 需要很长时间来响应,因此同步等待响应没有意义,因此使用异步通信模式即多线程,设置线程池,线程将异步调用 API . 然后是spring boot中@async注解和Executor框架的小讨论

6- API 调用的 Feign Client 和 Rest 模板之间的区别(基于简历)
7- 静态同步和同步方法之间的区别?
8- 在 SQL 中使用 SUM函数的简单查询(我回答错了!!!)

第 4 回合(工程经理回合:1 小时)

小介绍然后他开始提问
当他问我一个系统设计问题时我很惊讶
它是
1-https://www.geeksforgeeks.org/how-to-design-a-tiny-url-or-url-shortener/
我对系统设计没有任何实践,但在现场思考,很少提示,我能够用上面提到的方法解决它

2- 设计 Facebook 全局提要和用户个人资料提要(DB 模型)和 API,以获取用户个人资料信息和用户全局提要信息。我也被这个问题震惊了

关于 Pub-Sub 模型、SQL 与 NOSQL、缓存和数据库模型设计的讨论很多。

然后他突然问我我的经历,我说1年7个月,然后他很快改变了问题的流程,问了一些非常基本的问题,比如
1-@RestController 注释
2- 涉及到 POJO 内部库的 JSON 反序列化
3 为什么选择JPA?
4- 关于使用 Joins、groupBy、IS LIKE 的 SQL 查询
5- JUnit 框架,如 Mockito 等

结果:被选中!

我要感谢 GeeksforGeeks 提供如此精彩的内容和对所有主题的详细报道。