📜  软件工程师CGI面试经历

📅  最后修改于: 2021-11-18 01:29:42             🧑  作者: Mango

我有 4 年以上的Java开发经验。

总共 3 轮(2 技术 + 1 管理)

HR 回合只是手续而已。

CGI 招聘团队直接联系了我,他们将我的个人资料从 Naukri 列入了候选名单。

第 1 轮(电话约 1 小时): Core Jave 向我提问(深入了解 OOP 概念)。我还被问到Java 8 新特性(Lambda 表达式、函数式接口、 Java 8 中的哈希图和垃圾收集更改)、集合、异常处理、多线程、序列化、SQL。

  1. HashMap 和 ConcurrentHashMap 如何在内部工作以及 ConcurrentHashMap 相对于 HashMap 的优势。
  2. 用资源解释尝试。为什么我们不需要 finally 块在这里。
  3. 为什么 wait()、notify() 和 notifyAll() 在 Object 类中而不在 Thread 类中。为什么?
  4. 除了使用同步,如何实现线程安全? (信号量和互斥量)
  5. 你知道多少种打破单例设计模式的方法?你将如何修复它们?
  6. 自定义序列化和外部化差异示例。
  7. 检测链表中的循环。
  8. SQL 中的索引,如何编写优化的查询。

第 2 轮(Microsoft Teams 大约 1 小时 15 分钟):大多数情况下,我被要求使用 notepad++ 编写Java程序(无 IDE :P))

  1. 使用 Date 等可变对象创建您自己的不可变类
  2. 给定一个具有属性 id、name、salary 的 Employee 类。编写一个程序,使用薪水对员工对象进行排序,如果薪水相同,则使用名称进行排序。
  3. 给定一个具有属性 id、name、salary 的 Employee 类。编写一个程序,将员工对象存储在地图中,这样地图上就不会存储两个重复的员工。
  4. 给定一个字符串,从中找出第一个重复的字符。
  5. 给定一个字符串,从中找出最长的回文。 (只是他感兴趣的方法和算法)
  6. 解释 executerService 框架。提交与执行。

第 3 轮(Microsoft Teams 约 40 分钟):

这是一个管理回合。有人问我为什么要从基于产品的公司再次转向基于服务的公司。告诉我您在上一个项目中遇到的两个最具挑战性的情况。你是如何克服它们的?然后他解释了这个项目,他们使用的技术。他很有礼貌,知识渊博。这是一次不错的体验。

第 4 轮(Microsoft Teams 约 30 分钟): HR 轮只是手续。

薪资讨论以及我多久可以加入。

提示:

  • 对你的答案充满信心。如果你不知道一些答案也没关系。礼貌地说不比给出错误的答案要好。
  • 在 GeeksforGeeks、HackerRank 等网站上练习大量的编程问题。有理论知识是好的,但面试官希望有实践知识和解决问题的能力。
  • 即使他们让你陷入困境,也要保持微笑。他们正在测试您在压力情况下的行为方式的能力。尽力而为,你的态度对他们来说很重要。
  • 一切顺利,你会摇滚!