Adobe 面试问题 - 计算机科学家
第一回合
- 一个双向链表恰好有一个节点指向列表中的随机节点,纠正双向链表。
- 构建一个类似 Hashmap 的数据结构,可以向上和向下扩展——面试官正在寻找一种方法,在这种方法中我们不必在增加大小时重新哈希 map 中的所有项目,可以使用桶的一致哈希
第二轮
- 信号量和互斥量、ACID 属性之间的区别
- 给定数字的下一个较大的回文数
- 给定到达和离开时间的数组,找到最大数量。随时可用的汽车
解决方案:只需将到达和离开时间合并到一个数组中,并为每次维护到达或离开标志,现在对合并的数组进行排序,每次到达增加计数,每次离开减少计数并保持最大计数。
第三轮
- 有一个圆圈,满载 x 的航班最多可以飞行半个圆圈。你需要多少额外的飞行来帮助第一次飞行完成循环。您可以使用任意数量的航班。任何帮助飞行都必须有足够的燃料才能返回原点,即飞行只能行进 1/4 圈并返回。飞行可以向任何方向飞行,并且可以重复使用。 (答案是 2)。
- 生产者和消费者使用等待和通知,生产就绪代码。
第四轮
- 当前的项目,kafka 是如何工作的?
- 矩阵螺旋印刷
- 一个机器人要么可以爬一步,要么可以爬两步,所以,找出他可以爬 n 步的方法。 – f(n) = f(n-1) + f(n-2)
- 编写数据库池类,以确保在执行查询时获取和释放连接。