📅  最后修改于: 2023-12-03 15:05:07.166000             🧑  作者: Mango
我是一名有9个月工作经验的SDE,在Arcesium公司参加了SDE岗位的面试。在这次面试中,我收获了不少经验和技巧,现在分享给大家。
在参加面试之前,我做了以下几个准备工作:
面试分为两轮,第一轮是技术面试,第二轮是HR面试。
技术面试主要考察实际的编程能力和解决问题的能力。我的面试题目有以下几个:
这道题目主要考察对二叉树的基本了解以及编程能力。我的实现思路是使用递归方式实现前序遍历、中序遍历、后序遍历。
# 定义一个二叉树节点类
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
# 实现二叉树遍历
def preorderTraversal(root: TreeNode) -> List[int]:
result = []
if root is None:
return result
result.append(root.val)
result.extend(preorderTraversal(root.left))
result.extend(preorderTraversal(root.right))
return result
def inorderTraversal(root: TreeNode) -> List[int]:
result = []
if root is None:
return result
result.extend(inorderTraversal(root.left))
result.append(root.val)
result.extend(inorderTraversal(root.right))
return result
def postorderTraversal(root: TreeNode) -> List[int]:
result = []
if root is None:
return result
result.extend(postorderTraversal(root.left))
result.extend(postorderTraversal(root.right))
result.append(root.val)
return result
这道题目主要考察算法思维和数学能力。我的实现思路是采用归并排序的方式合并两个有序数组,然后找到中位数。
def findMedianSortedArrays(nums1: List[int], nums2: List[int]) -> float:
m, n = len(nums1), len(nums2)
nums3 = [0] * (m + n)
i, j, k = 0, 0, 0
while i < m and j < n:
if nums1[i] <= nums2[j]:
nums3[k] = nums1[i]
i += 1
else:
nums3[k] = nums2[j]
j += 1
k += 1
while i < m:
nums3[k] = nums1[i]
i += 1
k += 1
while j < n:
nums3[k] = nums2[j]
j += 1
k += 1
mid = (m + n) // 2
if (m + n) % 2 == 0:
return (nums3[mid - 1] + nums3[mid]) / 2.0
else:
return nums3[mid]
这道题目主要考察对大数据量排序的思考。我的回答是采用分区实现单机快排,然后使用多机排序进行并行处理。
HR面试主要考核个人的职业规划、素质以及公司文化、价值观等。我的HR面试主要问了以下几个问题:
以上就是我的SDE岗位在Arcesium公司的面试经验。在这次面试中,我收获了很多,也体会到了许多自己的不足。我相信,只要坚持学习和探索,不断提升自己,最终会成为更好的程序员。