📅  最后修改于: 2023-12-03 14:58:51.511000             🧑  作者: Mango
高盛(Goldman Sachs)是一家全球领先的投资银行、证券和投资管理公司,成立于1869年。在投资银行和证券交易等领域处于领先地位,拥有丰富的投资经验和尖端科技。
在高盛工作是很多程序员的梦想,以下是一位程序员在高盛面试的经历分享。
第一轮面试主要是考察基本的计算机科学知识,包括但不限于数据结构、算法、操作系统、计算机网络等等。面试官会根据你的简历提出问题,并让你解答,也会给你编程题让你现场编写代码。
在这一轮面试中,面试官问了我以下几个问题:
对于第一个问题,我先简要介绍了红黑树的概念和几个重要的性质,然后给出了红黑树插入删除的过程。
对于第二个问题,我先给出了死锁的定义,然后讲了四个必要条件,最后讲了几种避免死锁的方法,比如加锁顺序定制、死锁检测与恢复等。
对于第三个问题,我给出了两种查找最大值的方法,一种是遍历表格,找出最大值,另一种是使用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)
第二轮面试主要考察面试者的项目经历和技术深度,面试官会详细询问你的项目和技术细节,并问一些关于系统设计和架构的问题。
在这一轮面试中,面试官主要问了我以下问题:
对于第一个问题,我详细介绍了我最近完成的一个交易系统,包括它的功能和设计,并讲了我在其中的职责和贡献。
对于第二个问题,我介绍了我使用的技术,包括数据存储、消息队列、异步处理、缓存等等,并解释了为什么选择这些技术,比如性能、可扩展性等方面的考虑。
对于第三个问题,我讲了我们的系统是如何部署的,我们使用了Docker和Kubernetes,来保证高并发和高可用性。
高盛作为一家全球领先的投资银行,面试官对于求职者的技术能力和项目经历都有着非常高的要求。在面试过程中,除了需要对基本的计算机科学知识有深入的了解,还需要对自己的项目有深入的理解和把握,能够清晰地解释设计和细节。同时,对于系统的可靠性和性能方面的考虑,也是非常重要的。