📜  Sr. MTS 的 VMware 面试体验(2020 年 4 月)

📅  最后修改于: 2021-09-23 05:33:14             🧑  作者: Mango

我于 2020 年 4 月在锁定期间参加了 VMware 的 MTS 高级职位面试过程。我通过 VMware 的在线门户申请,下周接到 HR 打来的电话,询问我是否有机会参加面试。

第 1 轮(Zoom 视频通话 + HackerOne 在线编辑器):

面试从我的介绍和我以前的经验/项目、所有技术、我工作过的编程语言以及相关问题开始。
然后面试官开始问主要与操作系统概念和数据结构相关的问题。面试官期望在每个场景中深入了解操作系统。就像在用户空间中发生的那样,然后发生的是内核模式。
示例——执行 malloc(4) 时会发生什么
malloc() 返回什么样的地址?虚拟地址还是物理地址?
malloc是如何分配内存的?
malloc 会失败吗?

VMM 的虚拟内存布局和内部结构、TLB、TLB 的需要、页面地址转换。什么是页面错误?页面错误是如何处理的。
中断和内核上下文处理。
使用 fork() 创建进程,fork() 调用会发生什么。线程和进程的区别。同步机制,它们的使用场景。互斥锁和信号量、互斥锁和自旋锁有什么区别?
解释系统调用、上下文切换和“进程上下文”与“内核上下文”。
编写一个多线程程序来访问一组全局数据变量。需要注意什么?

数据结构问题包括 –
1. 对由 1 和 0 组成的数组进行排序。
2. 您将如何从无限传入的整数流中存储和查找最大元素?
3. 找到上述数据集的第 k 个大。

第二轮(Zoom 视频通话 + HackerOne 在线编辑器):

第二轮更侧重于设计方面。

与第一轮类似,我被问及我参与过的所有项目以及我喜欢使用哪些语言。面试官问了几个关于系统调用的操作系统问题,并询问了文件 open() 调用的工作原理,与此相关的附带问题是操作系统如何知道要执行的文件系统调用。我还被问到有关 mount() 系统调用内部的问题。

后来我被要求用 C++ 编写代码来解决多线程读写器问题。并在同一编码练习中解释一点点变化。

第 3 轮:

经理轮主要是关于我与前任团队和我现任经理的关系。在我目前的组织中的好与坏经历。你为什么想换工作?

没有什么开箱即用的。我建议以积极的方式回答,不要对您目前的工作或任何其他团队成员持否定态度。把事情简单化。

旁注

把事情简单化。在技术面试中不要考虑太多复杂性,除非被要求改变。在代码编写过程中说出你的想法,比如假设,或者至少在开始编码之前弄清楚问题。另外,如果您不知道某些主题,请保持诚实,只需说出它即可;不要不必要地拖动。