苏格兰皇家银行面试经历 |第 2 组(软件设计师)
第 1 轮:这是笔笔试题,有 20 道 MCQ 题(我申请Java开发人员时与Java相关)和 4 道编码题,其中 3 道需要在纸上完成
编码问题:
找到编号最高的行。以 0 和 1 作为列值的 2d 排序矩阵中的 1
递归地反转链表
Rwo 道路,一次只允许一侧通行。同步代码以避免死锁
计数信号量问题,其中一个资源作为 N 个实例。同步访问资源。
与字符串初始化、 Java 8 特性、JIT、互斥、单例模式、流等相关的 MCQ 问题有时不止一个是正确的。
第二轮:这是第一轮的技术讨论
要求解释编写的程序。
以前公司的角色。
架构和理解在以前的公司完成的项目。
设计模式熟悉和使用并询问过Singleton
第 3 轮:在纸笔上进行了一小时的设计轮次 HIGH 和 LOW 级别的设计都被问到了。
设计一个可以有 N 个客户的系统。每个客户可以根据 P 数量的服务收取 M 个价格。
系统应具有以下特点
N 总是可以增加或减少
M 总是可以像(酒店价格)一样增加或减少,因此需要实施可变定价方案
服务也可以增加或减少
系统一次可服务数百万客户
系统应该是可扩展的和容错的。
应尽可能快地提供所请求的服务,以尽量减少空间。
第四轮:设计技术讨论轮
缓存实现。
哈希图实现。
只能存储重复的数据结构实现
实现一个服务,其中一个任务由 10 个线程并行完成,我们必须像文件下载管理器一样更新每个线程的任务进度