📜  西数实习面试心得| 2021 年校内(虚拟)(1)

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

西数实习面试心得| 2021 年校内(虚拟)

最近我参加了西数实习的面试,这里分享一下我的面试经历和心得,希望对其他程序员有所帮助。

面试流程

面试过程分为三部分:笔试、技术面试和HR面试。首先是笔试,包括选择题和编程题,时限为1小时。笔试之后是技术面试,与我面试的工程师进行了一个小时的技术交流。最后是HR面试,了解了一些个人背景和想法。

笔试
选择题

选择题难度偏低,主要考察数据结构和算法以及计算机基础知识。例如,有这么一个选择题:

操作系统中,进程和线程的主要区别是:

A. 进程是资源分配的基本单位,线程是独立调度的基本单位。

B. 进程可以拥有自己的独立地址空间,线程不能拥有。

C. 进程之间可以直接通信,线程之间不能直接通信。

D. 进程只有一个控制块,线程有多个控制块。

这道题的正确答案是A。除此之外,还有一些其他的选择题,测试了操作系统、计算机网络、数据库、编译原理等知识点。

编程题

编程题难度适中,主要考察算法和代码实现能力。例如,有这么一道题:

实现一个功能类似于linux tail命令的程序,输出文件的最后 n 行。要求程序具有如下特性:

1. 输入参数为文件名和输出行数n。

2. 若文件行数小于n,则输出全部内容。

3. 能够处理大文件。

4. 最好不用随机读取文件。

我使用Python实现了这个程序,核心代码如下:

def tail(file_path, n):
    with open(file_path, encoding='utf-8') as f:
        lines = [line.strip() for line in f]
        if len(lines) <= n:
            return "\n".join(lines)
        else:
            return "\n".join(lines[-n:])
技术面试
项目经验

首先,面试官询问了我的项目经验,我结合自己做过的一个网站项目谈了一下。

技术问题

然后,他向我提出了几个技术问题。其中有一个是这样的:

两个有序数组A和B,长度分别为m和n。找出两个数组的中位数。

要求时间复杂度为O(log(m+n))。

我花了一些时间思考之后,给出了下面的Python代码:

def find_median_sorted_arrays(nums1, nums2):
    m, n = len(nums1), len(nums2)
    if m > n:
        nums1, nums2, m, n = nums2, nums1, n, m
    i_min, i_max, half_len = 0, m, (m + n + 1) // 2
    while i_min <= i_max:
        i = (i_min + i_max) // 2
        j = half_len - i
        if i < m and nums2[j-1] > nums1[i]:
            i_min = i + 1
        elif i > 0 and nums1[i-1] > nums2[j]:
            i_max = i - 1
        else:
            if i == 0:
                max_of_left = nums2[j-1]
            elif j == 0:
                max_of_left = nums1[i-1]
            else:
                max_of_left = max(nums1[i-1], nums2[j-1])
            if (m + n) % 2 == 1:
                return max_of_left
            if i == m:
                min_of_right = nums2[j]
            elif j == n:
                min_of_right = nums1[i]
            else:
                min_of_right = min(nums1[i], nums2[j])
            return (max_of_left + min_of_right) / 2.0
HR面试

在HR面试中,我与招聘经理进行了一个小时的交谈,了解了一些公司的文化和福利政策,也谈到了自己的想法和职业计划。

总结

参加西数实习的面试,是一次宝贵的经历。从笔试到技术面试,再到HR面试,我深刻感受到自己的不足和需要提高的地方。希望这篇经验分享能够帮助其他程序员,祝大家都能够拿到心仪的实习机会!