2026 高盛 编程面试 真题与解答

发布: (2026年4月17日 GMT+8 14:59)
3 分钟阅读
原文: Dev.to

Source: Dev.to

问题 1:事务段

问题概述:
(原文中省略细节)

关键思路:
(原文中省略细节)

问题 2:高效任务

问题概述:
(原文中省略细节)

关键思路:
(原文中省略细节)

问题 3:设计哈希映射

问题描述
实现一个简单的哈希映射,支持以下操作:

  • MyHashMap() – 初始化数据结构
  • put(key, value) – 插入或更新键值对
  • get(key) – 返回与 key 关联的值;如果键不存在则返回 -1
  • remove(key) – 删除已存在的键

解决思路

使用链式法处理冲突。结构包含一个固定大小的桶数组,每个桶在列表中存储键值对。

  • 哈希函数: key % bucket_size
  • 冲突处理: 基于列表的链式法
  • 操作: 在每个桶内进行线性搜索

Python 实现

class MyHashMap:
    def __init__(self, bucket_size: int = 1000):
        self.bucket_size = bucket_size
        self.buckets = [[] for _ in range(bucket_size)]

    def _hash(self, key: int) -> int:
        return key % self.bucket_size

    def put(self, key: int, value: int) -> None:
        idx = self._hash(key)
        bucket = self.buckets[idx]
        for i, (k, _) in enumerate(bucket):
            if k == key:
                bucket[i] = (key, value)   # update existing
                return
        bucket.append((key, value))          # insert new

    def get(self, key: int) -> int:
        idx = self._hash(key)
        bucket = self.buckets[idx]
        for k, v in bucket:
            if k == key:
                return v
        return -1

    def remove(self, key: int) -> None:
        idx = self._hash(key)
        bucket = self.buckets[idx]
        for i, (k, _) in enumerate(bucket):
            if k == key:
                bucket.pop(i)
                return

复杂度

  • 平均时间: 每个操作 O(1)
  • 最坏情况时间: O(n)(当所有键冲突到同一个桶时)
  • 空间: 存储键值对的 O(n)

面试技巧

  • 重点清晰地解释边界情况。
  • 编码时要阐述你的思考过程。
  • 准备好回答关于再哈希、负载因子以及其他冲突解决策略的后续问题。
  • 练习 LeetCode 中等难度的题目,涵盖数组、动态规划、贪心和设计等类别。

祝你在高盛面试准备中好运!

0 浏览
Back to Blog

相关文章

阅读更多 »

一行写列表(List Comprehensions)

介绍:您可以使用循环在 Python 中构建列表,但列表推导式让您能够在单行可读的代码中完成相同的工作。python numbers = 1, 2, 3,...