📅  最后修改于: 2023-12-03 15:05:07.149000             🧑  作者: Mango
我是一名大学计算机专业的学生,在校内参加了Accolite的SDE面试,以下是我的面试经历。
面试分为两轮,第一轮是笔试,第二轮是面试。
笔试题目共有两道:
要求输入一个字符串,统计其中出现次数最多的字符并输出。
可以使用哈希表(Python中的字典)来统计每个字符出现的次数,然后再用一个变量记录出现次数最多的字符即可。
def find_most_frequent_char(string):
freq = {}
for c in string:
if c in freq:
freq[c] += 1
else:
freq[c] = 1
most_freq_char = None
most_freq_count = 0
for c, count in freq.items():
if count > most_freq_count:
most_freq_char = c
most_freq_count = count
return most_freq_char
要求输入一个整数数组和一个整数k,找到其中所有满足任意两个数的和等于k的数对。
可以用一个哈希表记录每个数字出现的次数,然后遍历数组,对于每个数字i,检查k-i是否在哈希表中出现过,如果出现过则说明存在一对数的和等于k。
def find_sum_pairs(arr, k):
freq = {}
for num in arr:
if num in freq:
freq[num] += 1
else:
freq[num] = 1
pairs = []
for num in arr:
if k - num in freq:
pairs.append((num, k - num))
return pairs
面试内容包括算法、数据结构和编程语言的基础知识。
面试官让我实现一个二叉树的遍历算法,我写了一个递归实现的先序遍历。
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def preorder_traversal(root):
if not root:
return []
result = [root.val]
result.extend(preorder_traversal(root.left))
result.extend(preorder_traversal(root.right))
return result
面试官让我实现一个栈,我用Python列表来实现。
class Stack:
def __init__(self):
self.data = []
def push(self, elem):
self.data.append(elem)
def pop(self):
if not self.is_empty():
return self.data.pop()
def top(self):
return self.data[-1] if not self.is_empty() else None
def is_empty(self):
return len(self.data) == 0
面试官问我Python中的装饰器是什么,我解释了一下装饰器的用途和用法。
def hello(func):
def wrapper(*args, **kwargs):
print("Hello!")
return func(*args, **kwargs)
return wrapper
@hello
def greet(name):
print(f"Nice to meet you, {name}!")
greet("Alice")
通过这次面试,我学到了很多新的知识,也发现了自己还需要进一步提高的地方。希望能够在未来的面试中更进一步,也希望我的面试经验能够对其他程序员有所帮助。