ixigo 面试经历 |对于 SDE2 后端
作为软件开发人员,我有大约 3 年零 4 个月的经验。我最近接受了 ixigo 的 SDE2 后端Java简介职位的采访。面试经历如下。
第 1 轮:(数据结构和算法)
采访开始时简要介绍了我和我所做的工作。本轮有2名面试官。一位毕业于 NIT Allahabad(4.5 年以上经验),另一位毕业于印度理工学院德里。他们检查了我的 github 个人资料和竞争性编程资料。他们问了我以下 3 个问题,涉及的参数是时间复杂度、空间复杂度和代码清晰度。
问题 1:给定一个交换了 2 个节点的数据的二叉搜索树,打印交换的节点。
解决方案:我提出了一个使用中序遍历的解决方案,因为 BST 的中序遍历总是给出一个排序列表。因此很容易识别不符合顺序的节点。解决方案很容易实施。在)
问题 2:给定一棵结构经过修改的二叉树,每个节点还包含有关父节点的信息。现在在这个二叉树中,如果我们烧掉一个节点,那么火会在 1 秒内从烧掉的节点传播到父节点,它是子节点。说出整棵树被烧毁的时间。
解决方案:我使用 BFS 来解决问题,代码很简单。 O(n+e)
问题3:打印二叉树的底视图。
这很简单。在)
第 2 轮: Java
面试官问我Java相关概念
问题 1:ConcurrentHashMap 是如何工作的。 Java使用的底层算法和代码是什么。如何在其中实现同步。解释桶协议。
问题 2:枚举的使用并举例说明使用它的设计模式。
问题 3:与集合和泛型相关的不同问题。
问题4:Threads、Latches、barriers、Semaphores、Mutex、Dead locks、Callables等多线程相关的概念。
第 3 轮:VP 技术轮
面试官是一位非常有经验的人(10 年以上),毕业于 IIT Varanasi 和 IIM Bangalore 的 PG。他也是 ML(机器学习)负责人。他问我以下问题。
问题 1:Spring 中的 Bean 作用域,作用域解析是如何工作的。如果我们在单例范围 bean 中传递请求范围 bean,会出现什么问题。
问题 2:什么是微服务架构,它与单体架构有何不同。使用它们的好处。解释您在代码中使用的微服务以及您为它们的交互使用的机制。
问题 3:他问我有关断路器的信息以及我使用过的任何此类断路器的示例。我在我的一个项目中使用了 Netflix hystrix,并且对此有所了解。然后他问我关于服务发现以及为什么使用它。
问题4:他让我解释一下我在一个项目中实现实时同步的架构。我向他解释了 WebSocket 和 Stomp 协议,并在我的 Spring 项目的服务器端使用了它们。然后他问我关于我使用的消息队列。
问题5:他给我解谜题。给定一个正方形的棋盘,棋盘的每个角上都有一个 1 卢比硬币。硬币的方向是未知的,它可以是正面或反面。有 2 位玩家 A 和 B。玩家 B 被弃牌,不知道初始配置。如果所有硬币都是正面或反面,则玩家 B 获胜。玩家 B 可以要求玩家 A 掷硬币任意次数。一旦他确定达到获胜状态,他会询问玩家 A 是否正确,玩家 A 会回答他是/否。如果答案是否定的,则玩家 A 可以将方板旋转 n*90 度(n 为整数)。现在游戏继续进行,直到玩家 B 获胜。
他想检查解决这个问题的方法,因为我是玩家 B,他是玩家 A。
第4轮:CTO轮
面试官毕业于 IIT Kanpur,拥有超过 15 年的工作经验。他还是机器学习、分布式系统和人工智能方面的专家。
问题1:告诉我你的项目和你项目的HLD。解释迄今为止您在项目中解决的最复杂的问题。
问题 2:您最喜欢的应用程序是什么,然后告诉我您可以更改的一项功能以及您将如何实现它。
问题3:设计一个类似于谷歌的搜索引擎。它应该可以很好地适应高负载。解释索引是如何工作的,你将在哪里存储爬网时返回的数百万条结果,你将使用什么技术(例如 HDFS、基于 Lucene 的索引器,如 Apache Solr、Elastic 搜索等),你将如何开始在搜索引擎中爬网, 实现 typeahead 功能,解释数据结构 (Tries) 和您将用于实现它的相关技术,您将如何优先考虑您的搜索提要。该系统设计问题的主要参数是可扩展性和性能。
问题 4:实现一种算法,显示旅行路线上附近的餐馆、加油站、CNG 站等。尽可能优化算法。
问题 5:然后他问我一个几何谜题。他想检查我可以计算的速度以及我能想到的边缘情况。
第五轮:CEO轮
面试官毕业于IIT Kanpur,他在Inseed 完成了他的PG,在沃顿商学院完成了双MBA。他是一个很有经验的人。
问题一:他让我自我介绍和一些关于我的经验和资格的基本问题。
问题 2:他让我设计一个类似于 Uber 的系统。
所有的面试官都非常了不起,非常聪明。这对我来说是一次美妙的经历。采访持续了一周。他们向我提供了 SDE2(高级软件开发人员)简介 :)。