📌  相关文章
📜  SDE 的 Arcesium 面试经验 | 9个月经验(1)

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

SDE 的 Arcesium 面试经验 | 9个月经验

背景介绍

我是一名有9个月工作经验的SDE,在Arcesium公司参加了SDE岗位的面试。在这次面试中,我收获了不少经验和技巧,现在分享给大家。

面试准备

在参加面试之前,我做了以下几个准备工作:

  1. 对公司进行了一定的了解,包括公司背景、业务范围、发展情况等;
  2. 针对岗位要求进行了相关的技术准备,复习了算法、数据结构等;
  3. 进行了模拟面试,找朋友做面试官进行练习。
面试过程

面试分为两轮,第一轮是技术面试,第二轮是HR面试。

技术面试

技术面试主要考察实际的编程能力和解决问题的能力。我的面试题目有以下几个:

1. 实现一个二叉树遍历算法

这道题目主要考察对二叉树的基本了解以及编程能力。我的实现思路是使用递归方式实现前序遍历、中序遍历、后序遍历。

# 定义一个二叉树节点类
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

2. 寻找两个有序数组的中位数

这道题目主要考察算法思维和数学能力。我的实现思路是采用归并排序的方式合并两个有序数组,然后找到中位数。

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]

3. 如何在大规模数据下排序

这道题目主要考察对大数据量排序的思考。我的回答是采用分区实现单机快排,然后使用多机排序进行并行处理。

HR面试

HR面试主要考核个人的职业规划、素质以及公司文化、价值观等。我的HR面试主要问了以下几个问题:

  1. 你对我们公司的文化和价值观有什么了解?
  2. 请介绍一下你的职业规划和发展方向。
  3. 你在解决问题时通常采用什么样的方法?
总结

以上就是我的SDE岗位在Arcesium公司的面试经验。在这次面试中,我收获了很多,也体会到了许多自己的不足。我相信,只要坚持学习和探索,不断提升自己,最终会成为更好的程序员。