第 1 轮:在线评估
平台: HackerRank
时长:95分钟
三个编码问题,每个问题都有时间限制:25 分钟、35 分钟、35 分钟。
- 给定一个大小为 26 的字符串,代表不同类型的宝石(用小写英文字母表示),按其功率递增的顺序,以及一个大小为 n 的字符串数组,表示所有 n 个参与者的 n 个序列。每个参与者每轮都必须按照他们在指定顺序中的相同顺序使用一颗宝石。 (也就是说,它们序列中的第 1 颗宝石应在第一轮中使用,第 2 颗宝石应在第 2 轮中使用,第 i 颗宝石应在第 i 轮中使用)。在每一轮中,如果参与者在该轮中没有任何宝石可以使用,或者他们使用的宝石的强度至少低于该轮中其他参与者的一颗宝石,则该参与者将被淘汰。 (每轮可能有 0 个或多个淘汰)。任务是确定哪位参与者会留到最后并成为获胜者。
- 获得所需数组的最少操作次数
- 你的店里有 N1 水果和 N2 蔬菜。设 f[i] 是你卖第 i 个水果的利润,v[i] 是你卖第 i 个蔬菜的利润。顾客只允许携带相同数量的水果和蔬菜。计算所得利润的公式为:如果[f1, f2, f5]为一天卖出的水果,[v1, v5, v7]为一天卖出的蔬菜,则获得的利润为:f1 * v1 + f2 * v5 + f5 * v7。 fi 不必与 vi 成对出售。但是,水果和蔬菜只能根据订单出售。计算可以产生的最大利润。
第 2 轮 – 技术面试 1
平台:代码对
时长:1小时
自我介绍
解释你的项目之一
编码问题:如果一次只能捡起 1 或 3 颗巧克力,计算清空装有 n 颗巧克力的盒子的方法数。
想法:这个问题是到达第n个楼梯的方式计数的变体
很多关于类、构造函数、析构函数、虚函数、动态内存分配等的问题(这些主题的深入问题)
数据结构设计问题:给定一个表示对某个城市的查询的永无止境的城市流,设计一个数据结构来存储它们,以便可以按编号降序有效地检索前 10 个查询最多的城市每个后续条目的查询。
第 3 轮:技术面试 2
平台:码对
持续时间: 1.5小时
- 编码问题 1:给定一个大小为 n 的数组,将数组拆分为 m 个子数组,以使最大子数组和最小。
- 思路:这个问题类似于d天出货的能力
- 编码问题2:计算完全二叉树的节点数
- 编码问题 3:在 O(1) 时间内从堆栈中获取最小元素
来自 DBMS 的问题:
- SQL 和 NoSQL 数据库之间的区别及其示例
- 外键
- 酸特性
- 定义交易
- 回滚和提交
- 编写一个 SQL 查询来获取获得第二高分的学生的姓名(每个学生的 5 个科目的分数在一个表格中给出。学生的最终分数 = 在所有 5 个科目中获得的分数总和)
再次来自 OOP 的问题。
数据结构设计题:设计一个数据结构来实现浏览器历史。它应该具有以下特点:
- 上次访问的 URL 应根据其时间戳排序(从最新到最早)
- 搜索在给定时间段内访问的 URL(如过去 30 分钟、1 小时等)
- 使用给定关键字搜索 URL
第 4 轮:技术面试 3
平台:代码对
时长:25分钟
数据结构设计问题:
- 设计一个数据结构在C++中实现动态多态
- 给定一个永无止境的城市流,设计一个数据结构来存储它们,以这样一种方式有效地存储城市,以它们访问次数的递减顺序以及每个后续条目。如果两个城市的访问次数相同,那么它们应该按照它们在流中第一次出现的顺序存储。
关于虚函数和C++动态绑定机制的简要讨论。
关于我过去的实习经历和技术的一些问题,我有经验并希望与之合作。
一两天后我接到一个电话,被告知我被选中了。