📜  应用程序的 VMWare 面试经验。开发MTS(2018 年 8 月校内)(1)

📅  最后修改于: 2023-12-03 14:54:09.490000             🧑  作者: Mango

应用程序的 VMWare 面试经验

最近,我参加了 VMWare 的面试,申请的是 MTS(Member of Technical Staff)的职位。在这篇文章中,我想记录一下我的面试经验以及分享一些有用的技巧。

面试流程

VMWare 的面试流程大致分为以下阶段:

  1. 初步电面:此阶段是由 HR 进行的,主要目的是了解您的背景、技能和职业目标。

  2. 技术电面:如果您在第一轮面试中成功通过,VMWare 将进一步安排一轮技术电面。在这一轮面试中,您将与一位VMWare 专业人员进行直接交流,并检查您的基本编程和计算机科学知识。

  3. 面对面或远程面试:如果你在前两轮面试中通过,你将被安排去 VMWare 的办公室参加面对面或远程面试。在这一轮面试中,您将与团队领导者或高级团队成员交谈,并解决复杂的技术问题。

技术面试

VMWare 的技术面试中,人们通常会问一些基本的编程问题,如数据结构、算法、编码规范等等。以下是我在面试中遇到的一些问题:

1. 数据结构

链表实现 LRU 缓存

实现一个 LRU (最近最少使用)算法,在使用缓存时删除最不常用的数据。要求使用链表实现。

class Node:
    def __init__(self, key, val):
        self.key = key
        self.val = val
        self.prev = None
        self.next = None

class LRUCache:

    def __init__(self, capacity: int):
        self.capacity = capacity
        self.dic = dict()
        self.head, self.tail = Node(0, 0), Node(0, 0)
        self.head.next, self.tail.prev = self.tail, self.head

    def get(self, key: int) -> int:
        if key not in self.dic:
            return -1
        node = self.dic[key]
        self.remove(node)
        self.add(node)
        return node.val

    def put(self, key: int, value: int) -> None:
        if key in self.dic:
            self.remove(self.dic[key])
        node = Node(key, value)
        self.dic[key] = node
        self.add(node)
        if len(self.dic) > self.capacity:
            node = self.head.next
            self.remove(node)
            del self.dic[node.key]

    def remove(self, node):
        prev, next = node.prev, node.next
        prev.next, next.prev = next, prev

    def add(self, node):
        prev = self.tail.prev
        prev.next = node
        node.prev = prev
        node.next = self.tail
        self.tail.prev = node
2. 算法

最长连续序列

给定一个未排序的整数数组,找出最长连续序列(不重复)。例如,[100, 4, 200, 1, 3, 2] 的最长连续序列为 [1, 2, 3, 4]。

def longestConsecutive(nums: List[int]) -> int:
    num_set = set(nums)
    max_length = 0

    for num in num_set:
        if num - 1 not in num_set:
            current_num = num
            current_length = 1

            while current_num + 1 in num_set:
                current_num += 1
                current_length += 1

            max_length = max(max_length, current_length)

    return max_length
3. 编程规范

避免使用全局变量

使用全局变量可以引入复杂性和错误,使程序更难调试和维护。应该尽量避免使用全局变量,并使用参数和返回值实现跨函数通信。

变量命名

变量名应该清晰、简洁、有意义,并使用小写字母和下划线组合,例如 my_listresult_dict 等。

总结

VMWare 的面试难度较大,需要准备好编程基础、数据结构、算法和编程规范等方面的知识。在面试过程中,应该保持积极、自信和耐心,并善于沟通和解决问题。