📅  最后修改于: 2023-12-03 15:30:13.842000             🧑  作者: Mango
本次面试意在寻找一名 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)
面试官基本上围绕我的一些项目展开提问,包括项目的实现方式以及如何采用最佳实践去优化已写代码的部分。面试官还问了关于大规模系统的设计,我通过前一份工作的经验,回答了与跨单元和时间量的测试以及复杂系统的监控等问题。