第1轮:
- 设计一个文件系统。如果我必须构建自己的文件系统,面试官会更多地寻找我将使用的数据结构。
- 设计一个文本编辑器。又是一个 DS + 设计问题。因此需要探索文本编辑器的各种功能以及解决所有问题的最佳方法。
- 如果该文本编辑器在云上(类似于 Google Docs),当多个用户同时操作时,您将如何管理并发场景。
第二轮:
- 为多租户环境设计身份验证系统。一开始很简单,并在可扩展性方面增加了范围和复杂性。
- 在不使用 3rd 方工具(如 tomcat 等)的情况下设计服务器。
- 硬币组合问题(动态规划)。
- 关于队列和微服务应用的一些问题。
第 3 轮:
- 设计一个国际象棋游戏。这是一个 OOAD 问题。
- 为亚马逊闪购设计一种方法。如何在可扩展的并发环境中处理争用。
第 4 轮(招聘经理轮吃午餐):
- 主要是行为问题,比如你为什么想转换,关于你目前的团队,角色和责任,日常活动,创新,你如何评价自己在 javascript、 Java等方面。
- 关于数据库设计的一些基本问题,正如我所说,我在该领域没有太多经验。
第 5 轮(HackerRank 编码轮):
- 设计一个可以在文件系统上操作各种命令的命令行,例如:mkdir、touch、cd、cd..、ls 等。
我觉得,面试官主要是看你对问题的思考有多清楚,提出正确的问题并将其分解成更小的问题。殊不知,没有正确的答案,只能有相对更好的办法。
一切顺利!