2022年Arcesium暑期实习(校内)
有 3 轮 45 分钟的技术轮次和 1 轮 20 分钟的 HR 轮次(可变)。
第一轮技术:面试从数组和链表的讨论开始。我被问到一些问题:
- 链表的结构。跟进,如果你必须在特定位置插入一个元素,你更喜欢链表还是数组?接下来,你有一个大小为 10 的数组,你想在数组中插入另一个元素,你会如何插入呢?我们创建一个双倍大小的新数组,复制原始元素,然后添加元素。跟进,你为什么把尺寸翻倍,为什么不翻三倍?
- 给定一个链表,在链表中找到循环的起点。如果您知道弗洛伊德循环检测算法的证明,那就太好了,我无法证明它是正确的。
- 有后续问题。他对函数进行了更改,而不是传递指针,而是将节点作为值传递。
- 给定两个字符串s1 和 s2。查找 s2 的字符是否可以重新洗牌以创建 s1。我们必须检查每个字符的频率是否相同。他问我将使用哪种数据结构来存储,我说我会使用大小为 256 的向量,因为 ASCII 有那么多字符。
- 他询问了哈希图。
- 我们还可以使用无序映射在恒定时间内进行搜索、插入和删除。所以,他问我为什么要使用矢量。答案是,尽管无序映射需要常数时间,但常数因子本身非常大,而对于向量,它非常低。
- 然后他询问了无序地图的最差时间复杂度以及它何时发生,碰撞,我们如何避免它们。
- 哈希映射是如何工作的,为什么它需要恒定的时间?
- 给定一棵二叉树,检查它是否是 BST。又有一些后续问题。
第二轮技术:讨论了我的项目。提出的问题是:
- 我使用了哪些技术以及使用它们的原因。
- 为什么我使用 NoSQL 数据库,在 NoSQL 数据库中为什么使用 MongoDB?
- 我的项目有多少个休息端点?
- 中间件?
- 当用户创建帐户时会发生什么?
- 应用程序可以处理的当前负载?
- 你怎么能缩放它?
- 他让我写一个 SQL 查询。给定一个包含 roll_id、course_id 备注的表,得分打印确保每个科目前 3 名最高分的学生的 roll_id。
- 关于 ACID 属性的问题?
- 数据库如何保持一致性?
- 它如何保持耐用性?
- 规范化及其形式?
第三轮技术:再次对我的项目进行了轻微的讨论。这一轮的重点是 OOPS 和 OS。提出的问题是:
- OOPS 的 4 个支柱?
- 抽象是如何实现的?
- 为什么我们需要继承?例子?
- 然后,他写了两个类,让我继承其中一个类。
- 访问说明符?为什么我们需要它们?
- 关于内存动态分配的问题?如何解除分配?
- 如果我们不取消分配会发生什么?
- 垃圾收集器?
- 破坏者?
- 如果B类继承自A类,那么A类类型的指针可以指向B类的对象吗?
- 如果一个类继承自两个类并且都有一个共同的方法会发生什么?
- 编译时错误还是运行时错误?我们如何避免它们?
- 虚函数?
- 编译时多态性与运行时多态性?
- 实现他们的代码。调度算法?哪个是最好的?
- 进程与线程?
- 上下文切换?
- 过程控制块?
- 线程的缺点?
- 如果两个线程访问同一个内存会不会有问题?
还有一些问题。
人力资源回合:提出了行为问题。这些问题可能有点奇怪。所以,做好准备。
建议:
Arcesium 提出了许多后续问题。因此,在准备主题时,请务必阅读详细信息。除了编码之外,他们还询问操作系统、OOPS 和 DBMS。因此进行了 3 个技术回合。
祝你好运!!