我最近参加了 Arcesium 在海得拉巴办公室举办的面试活动。我是根据我的简历入围的。
F2F一共3轮面试,每次面试有2个面试官。
第一轮:
a) 介绍一下你自己和对当前项目的讨论
b) 关于数据库架构和基数的问题
c) 从链表中的最后一个节点找到中间节点和第 K 个
d) StringBuffer vs String vs StringBuilder( Java的字符串连接)
e) Java的异常处理(throws vs throw、checked vs unchecked、继承过程中的异常传播、自定义运行时异常)
第二轮:
a) 给定一个包含整数的堆栈,在 O(1) 空间中对堆栈进行排序。 (虽然我们可以使用递归)
b) 给定一个数 n,找出 n 中尾随零的个数!
c) 给定一个整数数组,以(i,j,k)的形式进行N次运算,即对数组中从i到j的所有元素加上k,并在N次这样的运算后打印该数组。(使用Segment树)
d) 25 匹马问题
e) 设计一个博客发布网站,当他在网站上发布一些博客时,它会通知用户的所有订阅者
第三轮:
a) RDBMS 中的事务
b) 如何在多线程环境中实现事务
c) Java中 volatile 的使用
d) 单例设计模式(双锁机制 vs Enum)
e) 您将如何在 Netbanking 软件中实现交易,其中多个用户从多个账户转账和取款?
f) DB 死锁场景和 DB 中的 2 阶段提交
g) Java中的垃圾回收是如何工作的(讨论 Young/Old Generation、Mark and Sweep、Mark 和 Compact 算法)
h) Java的弱引用是什么以及它是如何使用的?
i) 加入 Arcesium 的原因
每当我遇到困难时,在面试官的帮助下,我都正确回答了所有问题。经过 10 天的面试后,我收到了人力资源部高级成员技术职位的录取通知书。
总的来说,我觉得 Arcesium 寻找的候选人在Java、DBMS 和设计模式方面具有丰富的知识,并且在操作系统和网络方面具有良好的知识。
所以一定要复习基本的Java、DSA、OS 和设计模式。一切顺利🙂