📜  高盛面试经历(1)

📅  最后修改于: 2023-12-03 14:58:51.511000             🧑  作者: Mango

高盛面试经历

简介

高盛(Goldman Sachs)是一家全球领先的投资银行、证券和投资管理公司,成立于1869年。在投资银行和证券交易等领域处于领先地位,拥有丰富的投资经验和尖端科技。

在高盛工作是很多程序员的梦想,以下是一位程序员在高盛面试的经历分享。

第一轮面试

第一轮面试主要是考察基本的计算机科学知识,包括但不限于数据结构、算法、操作系统、计算机网络等等。面试官会根据你的简历提出问题,并让你解答,也会给你编程题让你现场编写代码。

在这一轮面试中,面试官问了我以下几个问题:

  1. 讲一下红黑树
  2. 什么是死锁?如何避免死锁?
  3. 如何查找一个表格中的最大值?

对于第一个问题,我先简要介绍了红黑树的概念和几个重要的性质,然后给出了红黑树插入删除的过程。

对于第二个问题,我先给出了死锁的定义,然后讲了四个必要条件,最后讲了几种避免死锁的方法,比如加锁顺序定制、死锁检测与恢复等。

对于第三个问题,我给出了两种查找最大值的方法,一种是遍历表格,找出最大值,另一种是使用max函数。

接下来,面试官让我写了一段代码,让我模拟银行账户的存取款操作,并考虑线程安全的问题。

import threading

balance = 0

def deposit(amount):
    global balance
    balance += amount

def withdraw(amount):
    global balance
    if balance >= amount:
        balance -= amount
    else:
        print("Insufficient funds")

if __name__ == '__main__':
    t1 = threading.Thread(target=deposit, args=(100,))
    t2 = threading.Thread(target=withdraw, args=(50,))
    t1.start()
    t2.start()
    t1.join()
    t2.join()
    print(balance)
第二轮面试

第二轮面试主要考察面试者的项目经历和技术深度,面试官会详细询问你的项目和技术细节,并问一些关于系统设计和架构的问题。

在这一轮面试中,面试官主要问了我以下问题:

  1. 你最近做的一个项目是什么?你的职责是什么?
  2. 你的项目中用到了哪些技术?为什么选择这些技术?
  3. 你们的系统是如何部署的?考虑到高并发和高可用性?

对于第一个问题,我详细介绍了我最近完成的一个交易系统,包括它的功能和设计,并讲了我在其中的职责和贡献。

对于第二个问题,我介绍了我使用的技术,包括数据存储、消息队列、异步处理、缓存等等,并解释了为什么选择这些技术,比如性能、可扩展性等方面的考虑。

对于第三个问题,我讲了我们的系统是如何部署的,我们使用了Docker和Kubernetes,来保证高并发和高可用性。

总结

高盛作为一家全球领先的投资银行,面试官对于求职者的技术能力和项目经历都有着非常高的要求。在面试过程中,除了需要对基本的计算机科学知识有深入的了解,还需要对自己的项目有深入的理解和把握,能够清晰地解释设计和细节。同时,对于系统的可靠性和性能方面的考虑,也是非常重要的。