作者:Sebastian Funk | 2023年2月28日 | 面试技巧
Jane Street的软件工程师电话面试注重实际问题解决能力与系统设计思维。我们将通过一个曾使用的经典题目"Memo"(现已不再使用),带您身临其境体验面试过程。
需求背景
给定一个高计算成本的纯函数 f(int → int),设计一个记忆化版本 g,使得:
x,保证 g(x) == f(x)典型解法(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)
考察重点: