第 1 轮:这是一个离线测试,由 2 篇论文组成,第 1 篇论文有大约 20 个基于接口、 Java类、垃圾收集和一些输出问题的Java MCQ。等,难度是正常水平。另一篇论文有 3 个编码问题,简单的问题-
反转一个给定的数字,找到2个给定节点的LCA,找到一个数字是否是幻数(幻数如果xy= x^n + y^n,其中n是给定的)
第二轮:
这是一个技术回合,主要基于我为编码问题编写的答案。他问了这样的问题:
- 为什么你使用 StringBuilder 而不是 String。
- 什么是字符串池。
- String StringBuilder 和 StringBuffer 之间的区别。
- 当对象不可变时,编写您自己的不可变类。
- 主要数据类型和包装类之间的区别。
- 单例类以及如何调用这个单例类。
- 功能接口。
- 抽象类。
- Java8 中的 lambda 表达式。
- 访问修饰符、final 关键字、static 关键字、
- 异常,定义自己的异常类,检查和未检查的表达式,重载和覆盖,集合框架。
他还问了设计模式,但我说我不知道。这一轮持续了大约 45 分钟,面试官非常友好,我的代码中没有涉及几个案例,所以他给出了提示并要求解释我将如何实现这些。
第 3 轮:
这一轮也是技术轮,面试官给出了许多基于输出的问题——一个实现 2 个接口的类,它们都定义了相同的成员,那么在实现两个接口的类中打印该数据成员时会出现什么错误,你将如何纠正它.与Java的内部类相关的问题,关于如何调用在内部类中定义的私有方法,使用 super 关键字。
给定两个类 X(数据成员 i、j 和静态块指的是 Yi 和 Yj)和 Y(数据成员 i、j 和静态块指的是 Xi 和 Xj),它们将被初始化的顺序以及输出是什么,你需要知道Java的类加载是如何发生的。然后他问了一些关于线程、synchronized 关键字以及如何获取和释放锁的问题。关于继承、方法重载和覆盖的一些问题。
然后他要求写几个 SQL 查询和一个基于递归的编码问题。然后我们就我当前的项目、面临的问题以及基于此的一些问题进行了长时间的讨论。预期的 CTC。这次采访持续了大约 1 小时 30 分钟。
结果对我来说是积极的🙂