📜  Cvent 面试经历 |设置 1(SDE 校内)(1)

📅  最后修改于: 2023-12-03 15:30:13.842000             🧑  作者: Mango

Cvent 面试经历 | 设置 1 (SDE 校内)

面试概述

本次面试意在寻找一名 SDE (Software Development Engineer)。总共分为3轮面试,每轮面试大概50分钟。

第一轮面试

第一轮面试主要考察基础知识,包括算法和数据结构。对于算法,主要考到了数组、字符串和树等方面。对于数据结构,主要考到了数组、链表和树等。还有一些系统设计的问题。

第二轮面试

第二轮面试主要考验编码能力和代码质量。面试官给出一个需求,并要求我在一个小时内写出完整的代码。这个要求较高,所以需要有很高的编码速度和代码质量。

第三轮面试

第三轮面试主要是面试官综合考察了我的学术背景、工作经历、有关产品的思考和个人项目。

面试内容
第一轮面试

针对数

#求数组中的最大值
def find_max(arr):
    """
    :type arr: List[int]
    :rtype: int
    """
    if not arr:
        return None
    res = arr[0]
    for i in range(1, len(arr)):
        if arr[i] > res:
            res = arr[i]
    return res

针对链表

#寻找链表中的重复元素
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

def have_duplicate_node(head):
    """
    :type head: ListNode
    :rtype: bool
    """
    if not head:
        return False
    node_set = set()
    cur = head
    while cur:
        if cur in node_set:
            return True
        node_set.add(cur)
        cur = cur.next
    return False
第二轮面试

首先定义了一个题目

实现一个函数,输入一个字符串,将字符串中的字母都换成其前面第三个字母,并将其中的特殊字符和数字删除。例如 'a1b2c3d$' 将会被转化为 'xwy$'。

实现的函数如下

def replace_letters(string):
    """
    :type string: str
    :rtype: str
    """
    alpha_map = {}
    for i in range(ord('a'), ord('z') + 1):
        alpha_map[chr(i)] = chr(i - 3) if i > ord('c') else chr(i + 23)
    for i in range(ord('A'), ord('Z') + 1):
        alpha_map[chr(i)] = chr(i - 3) if i > ord('C') else chr(i + 23)
        
    res = []
    for ch in string:
        if ch.isalpha():
            res.append(alpha_map[ch])
        elif ch.isnumeric():
            pass
        else:
            res.append(ch)
            
    return ''.join(res)
第三轮面试

面试官基本上围绕我的一些项目展开提问,包括项目的实现方式以及如何采用最佳实践去优化已写代码的部分。面试官还问了关于大规模系统的设计,我通过前一份工作的经验,回答了与跨单元和时间量的测试以及复杂系统的监控等问题。