Bloomberg

我是艺术生,但我拿到了Bloomberg的程序员offer

Jiaqi Liu | NYU | Art History
从艺术史专业,到Bloomberg软件工程师,我一直觉得很不可思议。来Offer的课程不仅为我打下了坚实的CS基础,帮助我丰富了简历,还通过内推让我最终拿到Bloomberg的面试。如果没有报名来Offer,我是很难很难成功的。

20号下午接到了Bloomberg的offer,到现在我都还觉得自己在做梦。怎么说呢,就是觉得,“啊,我竟然真的能达成这个目标啊!”,有种非常不可思议的感觉。但我知道,如果没有报名来offer,如果没有各位老师的教导和帮助,我应该是很难很难很难成功转行的。

先介绍一下我的背景 。对于老师们来说我绝对是学员里的hard mode。本科的时候读过一年computer science,后来转读Art History去了。研究生期间也继续选择了Art History。结果毕业前好几个博物馆出现财政危机,整个arts行业一片hiring freeze。尤其当时又决定不读博了,真的是不知道何去何从。

art-history-1

和好多亲戚朋友商量过,大家都提议说要不就转行吧,转回CS说不定机会还多一点。可是我真的是什么都不记得了,不记得怎么写程序,不知道OOD是什么…

真。的。什。么。都。不。懂。

朋友当时建议我看一下Head First Java入个门,然后就报来offer的课程学回来吧。

报名的时候是真心是抱着试一下的心态的,想着反正我的背景很可能老师一看到就放弃了,怎么也没想到孙老师当天下午就打了电话过来。老师那天和我聊了大概有一个小时吧。我到现在都记得老师和我说,(大意)来offer不guarantee jobs,但是努力的话,就能达到目标。我向来都是trigger pull得超级快的性格,一周内就报名了。

现在想想,当初真是做了一个无比正确的决定

我是16年秋季班开始上课的。刚开始上课的时候,有两次都不小心miss了课。过后找孙老师要录像的时候被严肃教育了。现在回想起来还好还好我过后再也没miss过。因为上课的时候同步带来的那种氛围和注意力和看录像完全是两回事。

在课上听孙老师讲题学的不只是怎么解决这些问题,还要学会怎么make reasonable assumptions,学会怎么接hint(面试的时候面试官大部分都是愿意交流的),学会怎么解释思路,学会怎么过例子。

art-history-2

我另外还上了project课。对于我这种简历一片空白的人来说,真的是帮大忙了。

Project课不止是复制代码然后做出一个product,更重要的是了解project里的各种衡量和选择。老师们都讲得非常细,只要认真听课,面对面试的各种resume问题大多可以轻松过。

12月中考完期末考后(神奇地竟然考得还不错)休息了两周,我1月4号开始投简历。

1月份的时候找好几个来offer的老师改过简历。因为我的背景很勉强很勉强能搭上前端,所以另外又找苏老师打电话问了一大堆前端面试的注意事项。当时一直就想,所有老师都这么responsive和responsible真的是太好了:D

1月和2月期间虽然面了好几个小公司,但是因为各种各样的原因(具体略过),都被拒了。2月底的时候整个人都觉得非常茫然。 投出去的简历都是石沉大海,networking也不尽人意。意识到自己状态有点差以后我当天就约孙老师打电话商量。

当时老师就答应了帮我找之前的学姐们内推Amazon和Bloomberg。第二天就全部安排妥当了(谢谢Zoie和Ying Li学姐帮忙!!!)。

3月中接到了Bloomberg约电面。提前又找了孙老师帮我mock各种behavioral questions。一mock发现真是各种问题。对各种经典behavioral questions我的回答都非常粗糙,显得情商特别低。

老师帮我改了好多问题的回答以后,算是心里有底了。不管电面和店面答起来都有了信心。电面问得非常简单,写完code问了一下time and space complexity。我把孙老师课上画的recursion tree在hackerrank里重现出来立刻过。

19号Onsite,每轮面试(理论上)45分钟,5分钟自我介绍,问问简历,35分钟问各种technical questions,最后5分钟Q&A。讨论题目都是用铅笔和纸 。

art-history-3

第一题是常见的类型。我却完全跑偏了。

两个面试官听了一下我的大概想法面面相觑,明显地散发出一种“呃……”的气息。感觉到气氛不对,我又重新看了一下题目,描述了一下解决问题的过程,然后提议用Set+Recursion来解决这个问题。稍微年轻一点的面试官当时就低声说了一句“Right!”(学会接hint和读空气真的很重要)。

题目写出来过后面试官还会问一下要怎么test,以及要我手动跑几个简单的test cases。我根据老师大课上讲题的过程,标出breaking point,一步一步跑例子,没有任何难度。

第二轮是30分钟后 。

两道题都是非常简单的题目。我一听就内心偷笑,这么简单的题目!大概描述了一下想法,我就准备开始写了。

Signature刚写完,面试官就问为什么这样写。为什么是String不是char[],为什么是return boolean。写完后分析还问时间复杂度为什么是O(n),为什么不写O(n/2),怎么cause heap overflow without causing stack overflow。非常简单的题目,但是问得特别细。 写的过程中他还问要怎么fool过garbage collector不去清理旧的nodes。题都是很简单的,但是这个面试官就是做到把各种概念和联系都问得非常清楚。

虽然面的过程我觉得很辛苦,但是面完真的非常服气。虽然我也有在某code上刷题,但是对于Java的理解都是从大课和Java课上得来的。面试要面得好,靠得不止是刷题(当然做题也还是要的),基础也要打好,课上的各种OOD和System Design虽然坊间传闻面entry level不常问,但是有所了解真的很有帮助。

4点45和Manager聊完,recruiter送我出门。临走前还在电梯间碰到了第二轮的面试官。我当时还特别高兴地和他打了招呼,随意聊了几句。

走出Bloomberg大门已经5点,onsite总共七小时。

因为我周五就要给另外一家公司答复,周四下午2点多Bloomberg recruiter就打电话告诉我有offer了。下午5点前正式的documents就全部来齐了。这样还能给足我时间去研究terms。

接到offer第一反应就是告诉孙老师。没有孙老师和来offer,我真的想像不到自己能走到这一步。

这篇东西真的写得好长啊(文科生习惯)。总结起来就是,谢谢来offer!大家加油,好好听课!

art-history-4