一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 11809|回复: 57
收起左侧

【干货】Bloomberg 面经,offer 已拿

  [复制链接] |试试Instant~ |关注本帖
mnmunknown 发表于 2015-10-1 12:53:36 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
学校招聘会投的简历,全程 on campus 面试,面的是 Bloomberg 2016 R & D Software Engineer,今天 HR 刚打电话发了offer。

简单说一些自己背景:   . 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴

学校: 美国本科 Industrial & Systems Engineering 毕业,Master 本校 Computer Science,2016年5月毕业。
实习: 2014 夏天在一个很小的软件公司做了三个月;2015 夏天在 J.P. Morgan Chase 做了十周,拿了 return offer 但是铁了心不想回去。
课程: 上了一整年课,算法,OS,数据库
刷题 :  用 Java , 主刷 lintcode,最后剩30道左右觉得太偏的懒得写了,不过我写过的题都至少看过2~3遍,反复研究过最优写法而且最常见的那些我都纯手抄了几份,加上自己的思路分析手稿。
           leetcode 有些题挺好的,test case 也全,面Bloomberg之前买了个会员刷了些锁住的题和 lintcode 上没有的。不过总的来讲 leetcode 题偏简单,随便什么题都敢标 hard ...

秋季招聘会投简历,Bloomberg 门口人山人海的,排队之长已经挤的旁边几个公司的桌子门可罗雀。。。他们派了大概六个技术人员现场来问问题,然后收简历安排面试。第一轮面试当晚就发邮件预约了。面试风格是把onsite挪到on campus,连续三天车轮战,一天一场;每一场如果挂了就直接送你走,如果过了就会当场讨论一会儿然后约你第二天再过来。有种星际比赛打淘汰赛的感觉,我反正觉得挺爽的,速战速决BO1单败淘汰制,非常对我的胃口。

每一轮有两个面试官,一个主面试官负责把控交流,另一个负责辅助补充,同时从另一个角度问问题。. from: 1point3acres.com/bbs
鏉ユ簮涓浜.涓夊垎鍦拌鍧.


第一轮:主面试官白人青年Yuri, 惯用 C++ ,副面试官中年亚洲人 Eric ,写 Java.

一般公司面试第一轮都有两个目的,最基本的是screening,也就是说确定你确实是简历上的那个人,主要经历也没有伪造,面的出现替考或者替面试的情况。其次是考察各种技术能力。也就是说如果你在准备第一轮面试的话,一定要做好最重要的功课:Know your resume, inside out. 只要你写在简历上的东西,一定要能侃侃而谈非常详细的说清楚。

Yuri : (简单询问了一遍简历信息)“So tell me what have you done in the past summer in J.P. Morgan Chase ?”

我把暑假做的那个web application从头到尾讲了一遍,毕竟是从 0 一行一行从后端码到前端的,设计思路和细节都说的非常详细,其中还穿插了 Relational Database,Schema,Indexing,Hibernate ORM,Spring MVC framework,Spring Dispatcher Servlet Request Mapping,JSON serialization 和 JavaScript parsing 这些,讲了大概10分钟吧。

.鏈枃鍘熷垱鑷1point3acres璁哄潧Yuri:“Wow.... Looks like you have done good work from backend all the way to frontend, great ! Ok now let's do a warm up problem, I want you to write code on the paper..”

Warm up 就是 Reverse Integer. 是时候展现真正的技(yan)术(ji)了。。。

先把 corner case 全给他丢了过去。。他表示很好开写吧。。。 一边写一边讲,他一开始有点不太理解我处理 integer overflow 的做法,因为我不喜欢声明 long 所以都是用 next / 10 == prev 这种办法判断 next 是不是 overflow的,如果 overflow 就返回 0,他想了想觉得可以,就算通过了。

一个有意思的地方是,Bloomberg面试官对于边界条件处理方式的偏好和 lintcode / leetcode 这种 OJ 不一样,OJ上你就直接返回 0 , -1, null 这种就可以了,但是面试官喜欢在这种情况下让你 throw new exception. 我遇到的几个技术面都是这样。. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

然后 Eric 接过话头给了另一道题:“给你一个完全由大写和小写字母组成的String,按照出现频率返回新的String,区分大小写。举个例子,ABCAabcABa -> AAAaaBBbcC,AAA在最前面因为它的出现频率最高。如果频率一样的话我不在乎谁先谁后,当然如果能按lexicographical order返回更好。”

我:“至少O(n)扫一遍 String 是必须的,统计频率的话用 int[] 或者 HashMap 都行,一边走一边加,不过最后要按频率输出我觉得定义一个 Pair Class 也不错,里面存一个 char ,一个 int 代表出现次数,然后让这个Pair Class implement comparable interface,放到一个Collection或者array里面可以直接调用 sort() 函数给 Pair 排序。”

Eric:“不错,写吧。不过我嫌全写完太麻烦,你就认真把你 Pair Class 和 implement comparator interface 那个地方写好,还有最后输出的部分。”. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

Pair Class 里面有 @Override compareTo ,Eric 就从这个入手开始问了一大堆 override ,overload, interface,abstract class / method , OOD 的概念,为什么要有 abstract class 和 interface,polymorphism 这些。不过有个地方我说的不好,Eric问了我一个 run-time polymorpism 的问题,问我这个是 run-time 还是 compile time,我当时脱口而出 run - time ,然后两个面试官居然丧心病狂的进入了影帝模式,同时做出了极其疑惑的表情看着我然后问我 “你确定??” 我简单思考了一下然后坚定地推翻了我原来的正确答案,改成了 compile time .....

.鏈枃鍘熷垱鑷1point3acres璁哄潧
后来一想觉得他俩是故意的,因为一个概念问题也好,算法问题也罢,你直接把最优解丢过去很容易让人怀疑你是背答案,从面试官角度讲不太容易区分出来你到底是对这个真的有透彻的理解,还是只是查了我们的题库在鹦鹉学舌。所以俩人一起演戏混淆视听,让你学着不仅能当场给出正确答案,更能给出背后的原因,通过分析来defend yourself. 这个地方确实理解的不好,背答案瞬间就被两个面试官抓包了,好在影响不是特别大。

Yuri:“算法表现不错,我看时间还挺多的,咱们来点刺激的 System Design 吧!”

我:(草泥马草泥马草泥马你们第一轮就这么搞我完全不按套路出牌啊)
. 1point 3acres 璁哄潧
Yuri:“一个用户用我们的 Bloomberg terminal 看数据,新闻和图表,功能都能用,但就是读取特别慢,比如说10秒钟才能加载出来,非常不爽。我们现在有十台服务器的 cluster,告诉我,怎么改善用户体验? ”
我:“你那十台服务器都用来做什么的?”
Yuri:“处理用户请求。”
我:“要不试试把一个用户的数据请求拆分成几块,比如数据请求,图表请求和新闻请求,然后同时分配到多个服务器上同时处理?”
Yuri:“想法不错,然而并没有什么卵用。因为这十个服务器都向同一个后台数据库要数据。”
我:“那你的意思是,瓶颈不在服务器处理业务逻辑的 CPU 时间上,而是后台数据库的 I/O ?”. from: 1point3acres.com/bbs
Yuri:“(点点头)不错,就是这样”
我:“那多加几个数据库的replicate不就好了,这样还能比较有效利用你已经有的十台服务器,现在这个情况这十台服务器肯定都没用上啊”. Waral 鍗氬鏈夋洿澶氭枃绔,

.鏈枃鍘熷垱鑷1point3acres璁哄潧Yuri 和 Eric 相视一笑,甚是暧昧。
. Waral 鍗氬鏈夋洿澶氭枃绔,
Yuri:“想法不错,然而也并没有什么卵用。”
我:“为啥?”. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
Yuri:“因为我们没钱。”. from: 1point3acres.com/bbs
我:“…………………………(MLGB)”

Yuri:“给你个提示吧,用户看到的面板信息其实很多都是静态的。”
我:“那就一定是缓存了。”
Yuri:“非常好,怎么缓存?”-google 1point3acres
我:“用户的请求都通过一个反向代理服务器,可以用Redis做 in-memory cache,把用户面板的静态结构和静态信息都缓存起来。比如说一个公司的新闻可能本来就是一小时才更新一次,那我就不需要在这一小时的时间内,每个用户都要从数据库抓数据,绝大多数请求只需要在缓存里抓就好了。”
Yuri:“不错,但是你怎么保证用户抓到的信息都是最新的?你说了缓存,我怎么知道自己很快抓取到的数据不是之前缓存的陈旧数据?”

这个我想了一会儿也没想到好答案,确实没实际搞过这些理解也只能到这里了。

Yuri:“没事,这种问题没有所谓的标准答案,我只是想看看你到底能答到哪一步。走到现在这一步,你不用非说出个业界方案,就给我说说你能想到的idea就好。”
我:“用户抓数据是一种pull request,反过来讲,后台数据库和服务器是知道数据被更新了的,他们可以在数据被更新的时候主动push 最近数据到对应的缓存里,把原来的缓存信息替换掉。”

俩人面色缓和了很多,一看时间大概还剩15分钟,就是纯聊天了。其实我觉得,面试里面和面试官聊天的部分才是干货最多最有意思的,因为特别自由随意,你可以问你好奇的东西,同时通过你问的东西也可以让面试官了解你这人的喜好和性格,我所有的面试里最喜欢的环节就是聊天。
. from: 1point3acres.com/bbs
Yuri:“首先我要郑重和你说一句。。。。Bloomberg是个金融行业的技术公司,不是电视台!你可能是从我们的Bloomberg news了解到我们公司的,但是我们真的是做技术的,不是新闻社!”
我:“汗,这个我还是知道的,我自己用过Bloomberg terminal,参加过 Bloomberg 出席的 Hackathon,还在J.P. Morgan 的 trading floor 看到无数台你们的机器,在我心目中绝对是技术公司啊。”
Yuri:“那就好。。。。。”

我:“你们的Developer culture怎么样?”
Yuri:“为什么这么问?”
我:“我在J.P. Morgan作为一名开发人员,亲眼目睹了我的同事们天天泡在ppt,excel,outlook上,实在是太他妈depressing了。。。”

Yuri 和 Eric 同时开始放声大笑,丝毫没有掩饰嘲讽意味的打算。。。
笑够了之后Yuri说:“我们这的人,你可以看到一整楼的 Linux Terminal,如果这个景象会让你感到不那么depressing的话,哈哈,那你很适合来我们这。”

我:“你们是怎么给新人分组的?随机乱扔,组挑人,还是人挑组?”
Yuri:“人挑组。我们管自己叫 Bloomberg University,CS新人进来先培训12周,期间你自己发掘和了解公司兴趣,最后自己选。当然,培训期间你的表现越好,就越容易选到你想去的组。”
我:“那差不多就是我在你们 Bloomberg University 再上一个学期的学,然后挑个专业,学霸优先?”
Yuri:“哈哈哈哈差不多就是这个意思。”. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
我:“其实我特别看重一个公司里,技术开发占多大的比重。在J.P. Morgan里我觉得他们对于技术的看法和真正靠技术赚钱的公司是不一样的。技术对他们来讲只是支撑金融运作的工具,他们不需要开发新技术的人,只需要维护技术的人。技术老旧不说,如果觉得太落后了,也不会自己开发,而是直接去买。所以我在那实习的时候总有一种感觉,就是我们根本就不是核心部门,也不是赚钱的部门。我们不带来任何利润,反而有很大的开销。每当出现任何问题的时候,那些 CIB / CCB 前台部门完全不懂技术的人只会觉得,我们花了这么多钱,怎么还是搞不好?”

Yuri 和 Eric 表情变得严肃了一些,听的非常认真。-google 1point3acres

Yuri:“你先坐着,我们出去商量一下。”

两分钟之后他俩回来,约了我第二天10点直接面第二轮,有惊无险这轮算是过了。
鏉ユ簮涓浜.涓夊垎鍦拌鍧.

评分

25

查看全部评分

本帖被以下淘专辑推荐:

sunshine2301 发表于 2015-10-6 15:18:36 | 显示全部楼层
堕落的猴子 发表于 2015-10-6 12:46
楼主这个交流能力深得我心,从遣词造句到临场应变,太多可以学习的地方了!
. From 1point 3acres bbs
bloomberg算是我纽约地区用 ...

楼上的自信真励志,学习~
回复 支持 2 反对 0

使用道具 举报

57656929bb 发表于 2015-10-1 13:07:01 | 显示全部楼层
楼主速度更,月票大大的有
回复 支持 反对

使用道具 举报

leixiang5 发表于 2015-10-1 13:51:38 | 显示全部楼层
坐等楼主更新第二轮面经。。
回复 支持 反对

使用道具 举报

molt 发表于 2015-10-1 14:43:54 | 显示全部楼层
铁了心不会去是因为钱太少吧

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| mnmunknown 发表于 2015-10-1 14:53:32 | 显示全部楼层
第一轮看time slot大概约了30个人,一轮之后感觉挂了一半。有些朋友算法题都做出来了还是没约到第二轮有些可惜啊。

第二天10点,第二轮。
.1point3acres缃
主面试官是 Justin ,和校招会时候和我聊天的是同一个人。此人纯数学系出身,读了个数学金融的Master,然后又跑去当了一段时间数学教授,辗转来到了Bloomberg. 所以这货面试的个人风格极其明显,语速和思路飞快,而且如果你跟不上他的思路他还会无情地打断你。我在校招会上被他连珠炮似的问了一大串问题搞得有点手忙脚乱,看到今天又是他其实心里有点虚。

副面试官是 Charles , 一个瘦削的带些 geek 气的白人男,两个人都写 C++.

Justin:“我记得校招会好像和你聊过天啊。我当初问你的什么问题来着?”
我:“问我这个干啥,免得你再问我一样的问题?”
Justin:“哈哈别闹,说正经的,我校招会问你什么来着?”
我:“Set Theory....”

Justin:“哦哦哦我想起来了。(转过去对Charles)我问他的问题是,给 N 个大小为 M 的 integer array,返回所有 array 的 intersection. 你当场想出来用HashMap + HashSet 的答案可以过,不过我觉得还不够牛逼,我给你一分钟,给我想个更牛逼的。”. 鍥磋鎴戜滑@1point 3 acres

我:“其实就用一个HashMap就行了。Key是integer, value是count,依次扫每个array,给每个已经出现的数字 +1 count,最后看哪几个数的 count  = N就行。”
Justin:“不对,那一个array里有 duplicates 怎么办?”
我:“简单啊,你扫到第 i 个数组的时候,只在发现count 是 i - 1 的情况下 + 1 就行了,其他的都不用管。这样count 小于 i - 1 的说明之前某个数组里没出现这个数,可以直接无视;而在同一个数组里重复出现的数,只会被加一次。”
Justin:“恩……之前面的人没说过这个啊,不过很简洁,我喜欢。”. 1point 3acres 璁哄潧

Charles:“我现在不让你用HashMap,你怎么办?”
我:“HashMap可以实现 O(1) lookup 的均摊复杂度,不让用也可以做,不过复杂度肯定高一些”. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
Charles:“没事,我现在就让你 in place,不给你额外空间”
我:“最后我总得返回结果吧,给我个arraylist行不?”. 鍥磋鎴戜滑@1point 3 acres
Charles:“恩,可以”
Justin:“我先提醒你一下,遇到新问题的时候,一定要确定你给出的是正确答案,哪怕是暴力解法也好,然后我们慢慢优化不迟。”
我:“对每个array排序,m log m ,然后在arraylist里每个元素对数组进行binary search”
Charles:“不错,不用额外空间可以办到。排序算法你用什么?”
我:“in place 就得 quick sort.”
Justin:“数组里数很少的情况,你也用quick sort吗?”
我:“不,数少的情况下用insertion sort,也是in place,虽然Big O 复杂度更高,但是相比divide and conquer的排序算法,在数组数字少的情况下overhead更小,所以更适合作为小数组base case的处理方式”
Charles:“很好,我现在给你一百万个排好序的数组,你怎么做?”
我:“内存能放下吗?”. From 1point 3acres bbs
Justin:“能。”
我:“那就把第一个数组的所有数字先放到最终结果里,然后每个元素上对其他所有数组做binary search,因为最终返回的是所有数组的intersection,最终返回结果一定是第一个数组的子集,也就是说如果最终结果里有这个数字,它肯定在第一个array里出现过。”

这题就算过了,两个人比起第一轮明显在不停的加快面试节奏。。。。整个对话大概五分钟之内就结束了

Justin:“来warm up吧,返回链表里倒数第 K  个节点,纸上写。我要提醒你一下,我要求你写production code,所以动笔之前最好想清楚”

又到了展现真正的技(yan)术(ji)的时候了。把各种边界条件都给他们说了一遍,表示满意。Charles不喜欢我用return null的方式处理异常,于是我表示还是throw new IllegalArgumentException.

于是我把西装外套脱了,挽起袖子拿出提前准备好的钢笔开始写代码。写了几行,Justin转过身和Charles说:“I like how he just rolls up the sleeves and write with an actual pen, that's so classic !”. more info on 1point3acres.com
我:“是啊,Jamie Dimon style, man. ”
Justin大笑,然后开始拿过我写完代码的纸开始看,表示没问题,下一个。

Charles:“Java 标准库你比较常用哪些?”
我:“Arraylist... HashMap...”
Charles:“那就写个Arraylist吧,我只需要 add() 和 insert() 两个函数就行。要求一样,production code,不用管generics,就当是 integer 好了。 ”
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
我想了想,觉得还是干脆写个Arraylist class好了,刚写完 class 开头 Justin 插话:“Good, writing the class is probably the best way to do it if you want those two methods implemented.”. 1point3acres.com/bbs

因为这次要写的行数比较多,加上自己爱用钢笔,所以全程写的比较慢比较小心,一边写一边讲思路。最后还是一不小心有个情况没考虑好,就是 insert 的时候如果预定空间满了要注意自动 resize. 好在 Charles 刚发觉就提醒我有东西忘了,然后我就又写了个 void 函数处理 resize. 期间开新 array 和改 reference 那里又简单说了一点 garbage collection.
.鏈枃鍘熷垱鑷1point3acres璁哄潧
时间还比较多,他俩又让我写了个特别简陋版的 HashMap class,就是用 mod 余数 + Separate Chaining 应对 collision的情况,当然这个大多数是描述,写的代码不像arraylist那么细,我估计他俩一开始也没打算考。。。。

Justin 除了面试官之外其实也是 Hiring Manager,剩下时间还挺多的时候我们就又进入了聊天模式,这次他应对我的提问和主动问我的问题就比较尖锐了。。。

Justin:“Why Bloomberg ?”
我:“我家在东部,所以只考虑NJ 和 NYC 的机会,加上之前实习经历让我想找一个以技术开发创造利润,以技术部门为核心的公司,所以Bloomberg.”
Justin:“Why Bloomberg , not Google ?”. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
我:“Google也很牛逼啊。他们有很多技术非常强的人和各种项目。这点上讲我倒是觉得Bloomberg也是非常出色的技术公司。你非要我说两个的区别,我觉得就是所处的行业不同吧。两家公司都靠技术吃饭,但是应对的客户,数据的大小和内容,需要解决的问题相差还是很大的,这点上讲,我觉得Bloomberg的数据从数量上讲不会有Google大,但是质量和客户的平均水准都更好。”
Justin:“我喜欢你这个回答。其实挺有意思的,我之前面的人经常被我这个问题吓到,包括今天在你之前的两个人。被这个问题一吓,就开始手忙脚乱说起Google的坏话来。我觉得这挺不好的,再说我也不想听Google哪些地方烂,我只是想看看你到底对我们的公司和我们的行业独特之处有没有自己的理解,你自己能不能找到我们公司能让你喜欢的,独特的地方出来。”

我:“你们开发风格如何?”-google 1point3acres
Justin:“我们喜欢自己造轮子,自己装。就拿数据库来说吧,我们可以直接买Oracle的,花大价钱让他们的技术人员来调参数,遇到问题再去找他们。不过既然我们自己的开发能力完全可以自己造一个,我们要Oracle干嘛?他们有些东西做的非常不错,但是绝大多数时候我们根本不care,索性自己做一个,遇到问题的时候我直接跑上楼找做这个数据库的组就好了,功能还可以自己定制。这就是我们的风格。市面上流行的各种 Hadoop, Spark,我们也用,我们也玩。不过这些东西不是生搬硬套就能突然解决你一切问题的,一切要看情况来。对于我们Bloomberg来讲,我们有能力,也非常乐于把这些东西拆了,然后随时根据我们的具体要求定制一个自己的工具。所以说我们这有些C++非常牛的人,参与标准库和allocator开发的,我们也是C++还有各种开源社区非常活跃的contributor.”. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

我:“你们的数据和Google Facebook比起来有什么主要区别么?”
Justin:“大小不一样。我们绝大多数数据都是 Mid - size,但是其中的复杂程度远远超过一般的所谓大数据。举个例子,金融公司和股票总共就那么多,我们显然不会像Google Facebook那样一搞搞出来上亿个用户的数据量。但是因为数据质量高而且其中的信息非常复杂,所以我们一直需要自己一套独特的数据存储和分析工具,去解决我们这个行业的问题。就像我们之前说的,所谓大数据,所谓各种分布式系统和计算,其实都是根据行业,根据数据特点,量身定做。”

后面又扯了什么我也有点记不清了。。干货比较多的就是前面这几段。
. 鍥磋鎴戜滑@1point 3 acres
Justin 和 Charles 又表示让我先去外面等一等,他们讨论下这轮面试的结果。然后我刚走出去没几步就被叫回来了,这次他俩只考虑了10秒钟。。。直接领我去见了 HR ,Justin 笑着说 :“We have another third rounder here !”

评分

3

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| mnmunknown 发表于 2015-10-1 14:58:46 | 显示全部楼层
困了,最后一轮明天有空写吧。
回复 支持 反对

使用道具 举报

allen6432 发表于 2015-10-1 17:10:08 | 显示全部楼层
哈哈 ,果然面纽约的公司感觉就是不一样
回复 支持 反对

使用道具 举报

fengwar3 发表于 2015-10-1 20:49:13 | 显示全部楼层
赞细节,楼主记忆力真好,谢谢分享!

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

leixiang5 发表于 2015-10-2 01:22:35 | 显示全部楼层
楼主的behavior问题回答得真不错。 学下来了。下次面试就这么回答。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

leixiang5 发表于 2015-10-2 01:25:32 | 显示全部楼层
molt 发表于 2015-10-1 14:43
铁了心不会去是因为钱太少吧

只要你是向往科技公司。jpmc不是你的选择。
回复 支持 反对

使用道具 举报

liyanjia92 发表于 2015-10-2 01:28:25 | 显示全部楼层
请问楼主最后一轮他问你JP MORGAN OFFER的细节了吗?
回复 支持 反对

使用道具 举报

allen6432 发表于 2015-10-2 01:43:18 | 显示全部楼层
好贴,值得分享,楼主辛苦. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| mnmunknown 发表于 2015-10-2 07:45:19 | 显示全部楼层
liyanjia92 发表于 2015-10-2 01:28
请问楼主最后一轮他问你JP MORGAN OFFER的细节了吗?

这个我等下会写
回复 支持 反对

使用道具 举报

 楼主| mnmunknown 发表于 2015-10-2 10:08:00 | 显示全部楼层
本帖最后由 yls0327 于 2015-10-7 11:48 编辑 . From 1point 3acres bbs
.鐣欏璁哄潧-涓浜-涓夊垎鍦
第三天,第三轮。. Waral 鍗氬鏈夋洿澶氭枃绔,

这轮是Hiring Manager + HR ,技术面 + Behavior + Culture fit.-google 1point3acres

前一晚上又看了一遍Bloomberg job description,做了做公司的功课, 然后侧重认真复习了System Design,如果他让我设计个Bloomberg Terminal我也得能画出个大概设计,从用户注册,数据库设计,web service,数据爬虫,news feed这些。认真上过一些课程确实受益良多,自己也经常在群里得到其他朋友帮忙分析算法和系统设计的问题,去面Bloomberg之前还有群友专门帮我一起直接写了个马拉松问题的整个Solution代码。。。感激不尽
. more info on 1point3acres.com
提前一个小时到了学校 Career Center ,时间到了之后等了几分钟也没见人出来,于是就向工作的学生要了一下时间表,看了下最后一轮约面试的大概还有六个人。想了想他们的要求:

Strong algorithm & data structure skills,我觉得目前遇到的算法和数据结构题都还太简单了,我还剩一大堆 lintcode medium / hard 的算法正愁没地方用;计算机基础的话,我上过DB, OS,校招会前两个礼拜还花了几天时间把之前OS课的教科书从头到尾又看了一遍;Strong communication skills,本科几年我在我们 Engineer Fraternity 是本校 Chapter 十几年里唯一一个中国人 brother,做过 Community Service Chairman,Executive Board Business Manager,和美国人交流上完全不虚。背景经历,我应该是最后一轮面试者里面唯一一个在大投行做过技术实习的。

. From 1point 3acres bbs想来想去,哪怕这六个人里面你们只挑一个,也肯定是我啊。

过了几分钟被叫了进去,最后一轮面试Bloomberg只来了三个人,先看到的是 Justin. .1point3acres缃

Justin:“我也是Hiring Manager,不过既然上一轮是我让你过的,这轮我就不再面一遍了。你这轮是我们的另一个Hiring Manager, James.”
Justin:“(和我握了手,挤了下眼睛) Good Luck ! :D”
. 鍥磋鎴戜滑@1point 3 acres
James 是 CMU CS 本科,在 Bloomberg 做了大概十年,眼神里透着浓浓的 Geek 气息。。HR mm 以前在 Google 做了几年 tech recruiter,经常来我们学校参加各种黑客马拉松或者校招会活动,绝对脸熟。我倒是稍微有点惊讶两个人坐在同一个屋子里一起面试,因为一个是面试官里最 senior 的技术人员,一个人是面试官里最不 technical 的 HR,显得很不和谐。。。不过我记得面经里看到过有人被要求向完全不会编程的人解释各种计算机概念和算法,想来这个 HR 也不是坐在旁边卖萌的,也从侧面想看看我解释问题时能有多么的浅显易懂吧。
.1point3acres缃
James:“我发现你简历里有 Computer Vision 啊,我还挺喜欢的,和我做的东西也相关,来,给我讲讲 Computer Vision 吧。”.鐣欏璁哄潧-涓浜-涓夊垎鍦
我:“(你TM在逗我???这特么面经里完全没有啊…………)”
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
我简历上确实写了 Computer Vision 的东西。自己装的逼,含着泪,也要继续装完。. Waral 鍗氬鏈夋洿澶氭枃绔,

于是我花了大概15分钟讲了之前做的一个OCR识别手写字母的project,用的Matlab.  这个 project 确实是我自己一行一行写出来的,而且当初觉得教授推荐的方法不够牛逼我又自己查了很多 paper 实现了一篇 paper 上的另一种算法,效果感人很多。。。所以自认为对这个 project 的理解还是比较到位的。从选 threshold 把照片转成 binary image,Flood filling / two pass labeling 找 connected components ,reverse mapping 把截取图像 map 到 64 x 64 的方格上,gradient vector 提取图片 feature ,Euclidean distance 找最相近的 match , 最后识别结果的 Classification 和 Correctness Matrix 这些。. From 1point 3acres bbs

每一步 James 全都打断我追问各种细节,努力回忆之余还要注意表达的浅显易懂,因为旁边那个 HR mm 完全没有走神的意思一直在听,然后不停地在我的简历上写写画画。。。平心而论如果这个 project 不是自己从头到尾认认真真做过的,肯定死了。敢往简历上写的东西,一定要保证自己理解的透彻啊。

James:“我发现你惯用的语言是 Java 啊,为什么选 Java?”
我:“学计算机第一门课就是 Java 啊,而且我也觉得 Java 入门容易,也有很多库和框架可以很快搭东西出来。不过现在慢慢觉得,如果想更好的理解一门语言的运作机制,提高自己的编程水平达到更好的性能,还是要多了解底层一些的东西,比如用 Java 的想更进一步怎么都得研究研究 JVM 和 Garbage Collection 这些。”
James:“说的没错。你既然提到了了解Garbage Collection很重要,就给我讲讲 Java 里的 Garbage Collection 吧。”

这个我特意准备过,于是从 Eden, S0, S1, Young Generation,Old Generation,Permanent Generation 都给画出来描述了下,一边说一边分析我对这个设计的理解和我觉得 Java GC 为什么这么实现。James 不置可否,HR mm 倒是听的很有兴致,技术面 HR 有兴致有个卵用啊 T_T

追问到这 James 觉得意犹未尽,于是就开始用他丰富的业界经验开始不停碾压我了。。。他就是要逼问到我再也回答不出来为止。. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴

James:“你说 Java 里总是用 mark - sweep 的方式清理内存,设计 Java 的人显然比我们聪明多了,他为什么不干脆给每一个 Object 一个 reference count,它的 reference count 到 0 的时候自动回收掉? 这样就不需要特意再扫来扫去判断哪些是 garbage,性能岂不是提高很多?”

我:“(没想过这个问题……思考了一会儿) 我不清楚。不过我觉得这个设计应该是有些 corner case 没有考虑到,导致某些情况下可能会导致 memory leak.”

James:“不错,给我举个例子。”

我当场没想出来 ,于是他画了个几个 Object 互相 reference 的情况,像 Graph 里面的 Strongly Connected Components 那种,然后一个外部的 reference 指向其中一个 Object. .鏈枃鍘熷垱鑷1point3acres璁哄潧

James:“这个简单的情况里,如果那个指向他们的 reference out of scope,里面的 Objects 应该被 mark & sweep,但是由于互相有引用关系,reference count 不会清零,于是也就无法被准确回收。好了,技术面就到这些了。”
-google 1point3acres
HR:“和我说说你对我们公司有什么了解吧,是怎么知道我们公司的,又是什么让你感兴趣来面试?”
我:“我们学校图书馆有Bloomberg Terminal ,我大三的时候发现的,然后还注册过账号玩过几次。期间遇到问题还会有专人打电话协助,所以我对你们的第一印象就是个金融行业里的技术公司。第二次是我们学校的 Hackathon,在一大堆互联网公司里面你们也来了,还给我们 API access,所以我觉得你们还是对技术有追求并且喜欢招技术人才的。”

HR:“不错~ 我看你本科是ISE的,为什么当初读这个专业,后来又怎么想到转 CS ?”
我:“我知道自己想做 Engineering / Math 相关的东西,不过不确定喜欢什么。家里人当初让我学 CS,我不乐意,当初的心性来讲,我觉得一天到晚坐着写程序实在是太无聊了,玩心很重,不太能接受这个当时在我看来很 nerdy 的专业。本科几年学了很多从 EE 到力学到Operational Research到商学院的管理课程,大三的时候开始用单片机编程做传感器数据采集,数据分析然后一直到前段显示界面,让我觉得还是写程序这玩意好玩,门槛不高而且教学资源特别丰富,又能考验自己的动手能力,就入坑了。本科的我觉得写程序的人都是一群呆逼,研究生了,发现我自己不但成了那个呆逼,而且还挺开心。。。。”
. 1point3acres.com/bbs
HR mm 乐的前仰后合,说:“那和我好好讲讲,你入职的话有什么打算?”
.鐣欏璁哄潧-涓浜-涓夊垎鍦
我:“我非常喜欢 CS,也肯定会努力向同事学习,加强自己的技术水平,这也是我的主要目标。不过我总想起夏天在 J.P. Morgan Chase 实习时候,我的manger给我的建议。。。他说我很高兴你能完全自主完成我给你的技术任务,我也完全不需要插手去管。但是我想认真告诉你,技术之外,你一定要学会 Learn our business. 你做的每一个 project 都是它的目的,可能是一个大系统里的某个功能,也能是某个内部或者外部客户的需求。你一定要学着去从架构师和管理层的角度去思考问题,想一想,如果你是整个项目的负责人,为什么要去做里你手里的东西?期望这个东西起到什么效果,解决什么问题?你每次解决技术问题的时候,记得随时随地把这些问题放到脑子里。对于你这样的人来讲,这是你职业成长需要学会的最重要的东西。”-google 1point3acres
. more info on 1point3acres.com
James连连点头一脸非常开心的样子。。。。

James:“你这样过了技术面走到我这,又能理解学习行业知识重要性的面试者很少见啊。在我们公司实际工作的时候,能同时做好技术工作同时对金融行业的各种运作有良好理解的人非常非常少。但是我们最想要这样的人。给你举个例子吧,我以前带队开发过一个对冲基金的系统,直接给 Bloomberg 最早的 founder 展示了效果,他特别喜欢,于是他去 Goldman Sachs 谈判的时候,直接就把我带过去了。事实证明 Goldman Sachs 不但非常喜欢这个系统,更乐于和直接制作这个系统的工程师深入交流,并且讨论各种可能的需求,可能需要解决的问题。这种沟通比 business analyst 之间的沟通高效不知道多少倍,因为他们都是外行,不懂这个,但是我们不但能做技术,也懂你们的 business,没有人比我们更胜任和客户打交道的任务。很可惜,大多数技术人员技术水平非常出色,但是这方面都不重视,或者做的不好。”

James:“有的时候,我们的大客户,比如 J.P. Morgan Chase , Goldman Sachs 这些,他们自己也不是特别清楚自己需要什么。因为他们了解 business,但是不了解 technology,在思考一个问题的时候,他们很多时候不能特别理性的知道,什么在技术上是可行的,技术上的进步能带给他们什么,他们到底需要什么。这些东西他们不懂,就需要我们教他们,而且要由技术能力出众而又了解他们 business 的工程师团队教。我们的创始人 Michael Bloomberg,就是华尔街出来的,所以他一开始做的技术非常能抓住那些金融行业里人的痛点,知道他们最需要什么。”

说到这我表示非常赞同。其实有点想把之前实习时候对 J.P Morgan Chase 的看法和他再说一遍,但是考虑到毕竟是 Bloomberg 的大客户,而且实习期间 manager 一直对我特别好,就算工作内容不喜欢不想回去,这么在 hiring manager 面前黑前雇主也太不厚道。所以我起了个话头,但是没深入继续讲,等着看 James 的反应。 鏉ユ簮涓浜.涓夊垎鍦拌鍧.

然后 James 表示既然你不想开枪,那就老子自己开。

James:“恕我直言,不是我故意说J.P. Morgan的坏话,而是他们比起Bloomberg,不适合喜欢做技术的人发展
. 鍥磋鎴戜滑@1point 3 acres
我:“(WHAT THE FxxK DID I JUST HEAR ???? )”

James:“我希望你明白金融行业里,后台运维和前台部门的区别。对于他们来讲,技术只是支持金融服务的工具,他们不需要开发什么牛逼的东西,老老实实运作,缺什么管前台要钱买就是了。那些天天缩在后台部门养老的人,平心而论,你在那实习的时候,真心看得起他们,把他们当你以后共患难的同事看吗?”
我:“……其实不是。我觉得天天打电话做报表的人生是在是太无聊了。”
Jame:“Boring. Right, Boring. 如果你对这个行业有兴趣,并且真心想开发一些牛逼的东西,并且得到一个技术开发人员应有的待遇和尊重,那你就不应该选择 J.P. Morgan Chase,不管他们有多想让你回去。你这种人,应该来我们这。不过如果你只是想写牛逼的代码,对我们行业兴趣不大的话,你就应该去Google,我也绝对不拦着你。好了,时间差不多了,我去上个厕所,你和 HR mm 继续聊吧。”.鏈枃鍘熷垱鑷1point3acres璁哄潧

我:“(信息量有点大。。。。) 88”

HR:“好了,时间差不多了,问你几个问题。 身份? 又没有亲属在 Bloomberg ? 目前还在面哪些公司? 手里有没有其他 offer,包括 J.P. Morgan的?”

一一作答之后,HR表示两周之后给答复,一周之后,也就是昨天,来电话给的 offer. Compensation 是 HR 主动先问我的,据我了解他们是 routinely offer higher than your expectation,具体多少要看最后的 offer letter了,不过和你能查到的其他 Bloomberg new grad package 基本在同一个范围。
回复 支持 反对

使用道具 举报

leanlee 发表于 2015-10-2 10:14:05 | 显示全部楼层
con,我们学校bb也来了,面的时候跟一个烙印,题迅速做出来然后聊了一堆,烙印让我好好准备第二天的on campus interview以及未来的ny onsite,然后就被黑了没有然后了。。。。。。
回复 支持 反对

使用道具 举报

 楼主| mnmunknown 发表于 2015-10-2 10:18:22 | 显示全部楼层
leanlee 发表于 2015-10-2 10:14
con,我们学校bb也来了,面的时候跟一个烙印,题迅速做出来然后聊了一堆,烙印让我好好准备第二天的on camp ...

这太倒霉了。。你们面的时候只有一个面试官吗,还是说两个人都是老印?
回复 支持 反对

使用道具 举报

leanlee 发表于 2015-10-2 10:28:12 | 显示全部楼层
mnmunknown 发表于 2015-10-2 10:18
这太倒霉了。。你们面的时候只有一个面试官吗,还是说两个人都是老印?

三个,一个烙印,但我去的时候烙印闲着,主动叫我过去,然后整个过程相谈甚欢聊了一大堆,从题目到课程到intern到他们组做的东西到我现在project到职业生涯到bb的前景,真不知道他是为了啥
回复 支持 反对

使用道具 举报

 楼主| mnmunknown 发表于 2015-10-2 10:31:47 | 显示全部楼层
leanlee 发表于 2015-10-2 10:28
三个,一个烙印,但我去的时候烙印闲着,主动叫我过去,然后整个过程相谈甚欢聊了一大堆,从题目到课程到 ...
.鐣欏璁哄潧-涓浜-涓夊垎鍦
你是说的校招会聊天吗,那种情况和你聊的那个人可能也没权利决定给不给谁面试而且自己也确实记不住。。。有可能是他们回去筛简历的时候把你的筛掉了。。悲剧啊
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-9 06:14

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表