📜  SDE II 的 PayPal 面试体验(1)

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

SDE II 的 PayPal 面试体验

概述

本文将介绍我参加 PayPal SDE II 职位的面试经历。在此之前,我已经面试过多家公司,有些成功有些失败。本次面试我成功进入了 PayPal,并且获得了一个不错的工资待遇和团队氛围。

面试流程

我先要说明的是 PayPal 的面试流程与大多数公司的不同。他们的流程主要有以下几个阶段:

  1. HR 筛选简历
  2. Hackerrank 的一道题目
  3. 一轮视频技术面试
  4. 一轮视频行为面试
  5. 一轮看不见面试(通常是打电话或视频电话)
  6. 一天的现场面试

在这篇文章中,我将主要介绍视频技术面试和现场面试。其他几个阶段相对较为简单,类似于其他公司的流程。

视频技术面试

技术面试时我的面试官是一个非常友好的人。他首先让我介绍我自己并问了一些开放性问题,然后进入了第一轮面试。

第一问

第一道题和字符串相关。给定两个字符串 st,在 s 中找到一个最短的子串,使得 t 中所有字符都出现在 s 中。在这个问题中,我们可以使用滑动窗口算法。我首先在白板上画了图,以便我更好地指导我的面试官。然后我实现了算法。

def minimum_substring(s, t):
    char_count = {}
    for char in t:
        char_count[char] = char_count.get(char, 0) + 1

    left, right = 0, 0
    min_length = len(s) + 1
    min_start = 0
    count = len(char_count)

    while right < len(s):
        if s[right] in char_count:
            char_count[s[right]] -= 1
            if char_count[s[right]] == 0:
                count -= 1
        right += 1

        while count == 0:
            if right - left < min_length:
                min_length = right - left
                min_start = left

            if s[left] in char_count:
                char_count[s[left]] += 1
                if char_count[s[left]] > 0:
                    count += 1
            left += 1

    return s[min_start:min_start+min_length] if min_length <= len(s) else ""
第二问

第二道题是一个经典的题目。给定一个数组,每个元素都表示该位置可以跳跃的最大长度。请问从第一个元素起至最后一个元素,最少要跳几步?

这个问题我们可以用贪心算法来解决。具体来说,我们可以从左到右扫过所有元素。对于每个元素,看看我们能“覆盖”多少步,然后继续向右扫描。当我们达到数组的右侧时,我们答案也就出来了。

def jump(nums):
    last_jump_max = 0
    current_jump_max = 0
    jump_count = 0

    for i in range(len(nums)):
        if i > current_jump_max:
            return -1

        if i > last_jump_max:
            last_jump_max = current_jump_max
            jump_count += 1

        current_jump_max = max(current_jump_max, nums[i]+i)

    return jump_count
现场面试

现场面试是一整天的面试。他们会给你一道简单的算法题(在我的情况下是反转链表)然后再进行四轮技术面试。在技术面试中,他们将考察您的软件工程能力、设计系统能力、以及基本的系统原理和算法。

我的面试官非常友好,但它们需要您展示自己的实际经验,并同时对你进行挑战。我被问到了很多算法和数据结构的问题、编程习惯和软件设计的问题。总之,现场面试是一个充满挑战但非常有意义的经历。

个人感受

在我1个月的时间里经过了此次 PayPal SDE II 的面试,我最终得到了工作机会,这让我感到非常幸运。我的经历告诉我,如果你想做一个好的程序员,你不仅应该在技术上表现出色,还应该具备面试和沟通技巧。这些都是必要的,才能在软件工程领域获得成功。