一位技术人员高级成员的朋友向我介绍了 VMWARE。我接到了 HR 的电话,然后是一封带有 Zoom 面试链接的电子邮件。该电子邮件还包含一个用于配对编码的hackerRank链接。
安排了 3 次背靠背的技术面试。所有的面试官都非常友好和理解。
第1轮:
- 解释当前项目的架构。到目前为止,您使用了哪些设计模式,为什么?
- URL 缩短算法。您将如何设计整个端到端系统,然后对其进行扩展以处理更多请求等等?
- 解释Java的同步。解释锁。编写您自己的程序,其中将包含两种方法
- 获取锁()
- 释放锁()
使用上述两种方法编写您自己的代码来处理进入临界区的多个线程。
- 编写一个算法来反转单链表。如果以可迭代方式进行,时间和空间复杂度是多少,如果以递归方式进行,时间和空间复杂度是多少。
第二轮:
- 谈谈你自己和你最近参与的项目。
- 设计一个系统来审查软件公司的代码。您将使用哪些 API?其中有多少是 GET、POST、PUT 和 DELETE?你会使用什么设计模式,为什么?您将如何使系统具有容错性和可扩展性?
- 给定一个单词列表,按照它们以字母顺序出现在字典中的方式排列它,并提供从这些单词创建的字典中出现的第 n 个(比如倒数第二个)单词。
cat,bat,rat,king,queen,wise,long,zoom,vmware Constraint: The algo should be time-optimized.
您将使用哪种排序算法以及时间和空间复杂度是多少?
- 为什么Java是最流行的广泛使用的语言?是什么让它从其他编程语言中脱颖而出。
第三轮:
- 关于架构当前项目的详细讨论。您如何部署应用程序?正在使用哪些数据库,为什么?等等。
- 关于多线程、竞争条件、线程安全和锁定机制的问题很少。您将如何处理Java集合中的并发性?
- 什么是序列化?你将如何在Java实现它?它内部如何运作?瞬态关键字有什么用?
- 游乐园管理系统设计.
- 您目前如何处理项目中的身份验证?