作者:Sebastian Funk | 2023年2月28日 | 面试技巧


面试概览

Jane Street的软件工程师电话面试注重实际问题解决能力系统设计思维。我们将通过一个曾使用的经典题目"Memo"(现已不再使用),带您身临其境体验面试过程。


第一部分:基础编码

题目:实现记忆化函数

需求背景

给定一个高计算成本的纯函数 f(int → int),设计一个记忆化版本 g,使得:

典型解法(OCaml示例):

let memo f =
  let results = Hashtbl.create 256 in
  (fun input ->
     match Hashtbl.find_opt results input with
     | None ->
        let result = f input in
        Hashtbl.add results input result;
        result
     | Some result -> result)

考察重点


第二部分:性能优化

问题发现