我有机会在 2020 年 10 月接受 VMWare 采访。这是一次完全不同且令人难以置信的经历。这是我申请的高级开发人员简介。我是通过公司网站、职业门户网站申请的。一切都非常顺利。招聘人员非常友好。我被告知这将是一个 3 小时的背靠背面试,每个 1 小时针对不同的专业领域。我的面试持续了大约 3 小时 45 分钟。
以下是我被问到的问题清单,每一轮都有不同的面试官:
我获得了 Hackerrank 登录名,并共享了一个屏幕以检查我的编码技能。
第一轮(更多关于 Core Java):
- 给定一个单词列表,以某种方式排列它,就好像它们以字母方式出现在字典中一样,并从这些单词中向我提供字典中出现的最后一个单词。猫、蝙蝠、老鼠、国王、王后、智者、长、变焦、VMware
- 为 IT 园区设计停车场。您将公开哪些 API?你会使用什么设计模式?
- 给定一个类中的字符串列表。以类的客户端无法修改数组的方式定义 getter,但您可以在类中修改它。如果我们把它改成一个字符串数组,你会怎么做?
- 您将在上述问题中应用哪种排序算法,为什么?你将如何在不使用 API 排序方法的情况下迭代它?
- 什么是深拷贝,什么是浅拷贝?何时何地使用?
第二轮
- 什么是微服务,我们为什么需要它们?微服务的用例是什么?使用它们的优缺点是什么?什么时候垂直缩放,什么时候水平缩放?
- 什么是可扩展性,为什么需要它?高可用性和可扩展性之间有什么区别?
- 如果一个服务,比如说一个微服务,部署在一个集群的 3 个不同的节点上,它们会相互通信吗?如果是,那么如何?他们交流会是一个很好的设计,因为它是相同的服务吗?是否会制作数据库副本/将有多少个数据库实例..
- 什么是并发?什么是用例?线程如何通信?他们有哪些不同的跑步方式?
- 什么是同步?它是如何实现的,有例子..
- 我们如何创建一个线程……扩展线程,实现 Runnable?哪个更好?为什么?
- 什么是阻塞队列?如果满/空,它如何阻塞线程?
- 什么是并发集合?它们如何实现并发?
- 并发哈希映射的内部工作?什么是并发修改异常?
- 什么是流 API?它是干什么用的?
- 给定一份员工名单。我需要根据他们的名字/姓氏/年龄等搜索他们。但我的搜索应该被包含在内。应该使用哪些数据结构?我将如何搜索?
第三轮
- 反转链表
- 设计一个锁,其中有两个函数acquire() 和release() 并且两个线程必须使用它。你将如何为它编写代码?
- 设计一个 URL 缩短算法。 I/P 是一个带有用户参数的长 URL,您必须在他的电子邮件中向用户提供一个短 URL。单击短 URL 时,它会打开带有相应参数的长 URL。你将如何设计这个?
- 什么是依赖注入?
- 什么是里氏替换原则?
- 什么是MVC模式?为什么我们需要它?
总的来说,这是一次很棒的体验。