Jane street 面试 | Jane street VO面经 | Jane street VO辅助 | 代面

Jane street 面试 | Jane street VO面经 | Jane street VO辅助 | 代面

最近面试了jane street的五轮面试,面试官很友好。

第一轮是Take Home测试,打开文件发现都是熟悉的过往工作内容,暗自庆幸,开局顺利。

第二轮是三十分钟的HR电话面试,常规问题过后居然还有几个Brain Teaser打底,应接不暇,充满惊喜。

第三轮是一个小时的Numeracy挑战,面试官第一个问题是算一个城市有多少个塑料袋。我们完成后,又让算一下到一千里头有多少个四,幸好没算错。

第四轮一小时简历深挖。这一轮相对平稳,主要是问过往经历。不过还是蹦出个关于“做空”的问题,有惊无险。

第五轮两个半小时的技术大考,分两场连续面试。第一场顺利,第二场面试官掏出Excel,让我们口述她操作,过程中出现沟通误解,有些步骤卡壳,面试官和我们都挺不舒服,氛围一下子紧张起来。

下面分享一下Jane street面试过程中的Code问题。

Jane street Coding 1:LeetCode 443

给定一个字符数组,使用以下算法压缩它:以空字符串 s 开头。对于字符中的每组连续重复字符:

如果组的长度为 1,则将字符附加到 s。否则,在字符后附加组的长度

from typing import List

def compress(chars: List[str]) -> str:
    chars.append("") # 添加一个哨兵字符
    s = ""
    count = 1
    curr = chars[0]

    for i, c in enumerate(chars):
        if not i:
            continue
        if c == chars[i - 1]:
            count += 1
        else:
            s += curr
            if count > 1:
                s += str(count)
            curr = c
            count = 1

    return s

Jane street Coding 2

请实现一个 字符流压缩类,该类支持多次迭代,并能对输入字符串进行压缩。
压缩规则如下:

  • 只记录字符连续出现的次数,并将结果存储在字符串中。
  • 仅记录最后一个字符及其重复次数。
  • 每次调用 compress() 方法时,都会基于当前输入字符串进行压缩。

Example:

compress(‘aabb’) -> ‘a2’

compress(‘bcccdddd’) -> ‘b1c3d4’

class StringCompressor:
    def __init__(self):
        self.last_char = "" # 记录上次处理的字符
        self.count = 0 # 记录字符出现次数

    def compress(self, s: str) -> str:
        if not s:
            return ""

        compressed = ""
        self.last_char = s[0]
        self.count = 1

        for i in range(1, len(s)):
            if s[i] == self.last_char:
                self.count += 1
            else:
                compressed += self.last_char + str(self.count)
                self.last_char = s[i]
                self.count = 1

        # 记录最后一个字符的计数
        compressed += self.last_char + str(self.count)

        return compressed

Follow up question: 实现与以前相同的类,但每个输入都有一个表示顺序的索引。需要使用 dict 来存储索引和输入。

Example:

  1. compress(‘deef’, 3) -> “”
  2. compress(‘bbcc’, 1) -> “”
  3. compress(‘ab’, 0) -> ‘a1b1’
  4. compress(‘ccdd’, 2) -> ‘c2d2’
class IndexedStringCompressor:
    def __init__(self):
        self.data = {} # 用于存储不同索引的字符串状态

    def compress(self, s: str, index: int) -> str:
        if index not in self.data:
            self.data[index] = ""

        # 更新该索引的字符串
        self.data[index] += s

        # 执行压缩逻辑
        compressed = ""
        last_char = self.data[index][0]
        count = 1

        for i in range(1, len(self.data[index])):
            if self.data[index][i] == last_char:
                count += 1
            else:
                compressed += last_char + str(count)
                last_char = self.data[index][i]
                count = 1

        # 记录最后一个字符的计数
        compressed += last_char + str(count)

        return compressed

Reference

Jane street 面试 | 一亩三分地

Interviewing :: Jane Street

经过我们的强力VO辅助代面,候选人通过这些面试题的解析和沟通,面试官不仅了解了候选人的编程能力,也看到了在解决问题过程中的清晰思路和有效沟通技巧。祝大家面试顺利!

author avatar
ProgramHelp
END
 0
Comment(尚無留言)