高盛IT电面及第一轮onsite详细面经(北美区)

最终结果是被高盛拒了,前天onsite,今天收到的拒信。挺郁闷的,因为对高盛有好感,觉得这次搞砸了以后很难再有机会了,所以买了好多零食狂吃了半天。想来想去还是决定发个详细面经,因为之前参考了应届生上的好多帖子,很感激,现在该是贡献的时候了,希望能对大家有帮助。祝 成功!

本人基本情况:
北京某大学(非名校)通信工程专业本科,然后来美国念的ECE Master Degree,今年三月底毕业,GPA不高。在美国念书时做过两份实习,但与金融无关,没有任何金融背景,在校期间也没修过任何一门商学院的课。有过几个项目经历,但现在回头看看也没有太高的技术含量。编程还凑合,属于比上不足比下有余的那种。

电面:
30分钟,技术面。形式是这样的,我先说自己以前的项目经验,每说完一个项目,面试官会就那个项目提问。
问题大致分两类:
一、与项目本身相关:比如,我在某项目中提到我写的软件用于提高build的效率,面试官会追问怎样提高的效率。
二、与项目涉及的技术相关:比如,我在某项目中用到SQL,面试官会先问你对SQL是不是comfortable,如果是的话就开始问SQL的问题。

电面中被问到的部分技术相关的问题有(有些实在想不起来了):
1、我有一个表叫employee,里面有三个column,分别是ID,firstname, lastname,现在我使用了SELECT * FROM employee WHERE lastname='xxx’语句,请问实现同样的功能,怎样做能提高效率
2、这个题具体记得不是很清楚了,反正是设计一个数据库
3、String和StringBuffer的区别,StringBuffer和StringBuilder的区别
4、问我的某用Java开发的项目里用了哪些Collection,我用了ArrayList和Hashtable,然后就问ArrayList和Hashtable有关的问题若干,把书上相关部分都看了就对了

onsite:
原本安排见四个人,每人30分钟,可以视情况延长,有个人有事儿不在,所以最后一个面了一个小时,还有一个半小时的笔试。基本没有寒暄,也没有什么behavioral question,仅有的那么几个还被我搞砸了,后面会写到。先说技术问题吧。

第一位面试官[美国人](部分题目):
JAVA
1、是否知道multi-thread
2、知道的话就说一下
3、Java里怎么实现多线程
4、怎么同步
5、如果你说对了的话会问,lock和synchronized有啥区别
6、sleep和wait有什么区别,举例说一下都啥时候用
7、notify是什么
8、notifyAll和notify有啥区别
9、abstract class和interface有啥区别
10、Java里怎么体现多态的
11、面试官手写了个小类,实例化了两个它的对象,多线程下,让我写程序同步 (具体条件想不起来了,实在不好意思,考点就是上锁开锁,有兴趣的话大家可以自己设计个类似的题目)
12、JDBC相关问题若干

SQL
13、什么是UNION,什么是UNION ALL
14、什么是JOIN、LEFT JOIN、RIGHT JOIN
15、给两个表,把各种UNION各种JOIN结果写出来
16、聚族索引
17、什么是VIEW
18、怎样提高SQL语句效率,要举若干例子说明

SHELL
19、怎样查找文件
20、怎样看文件pattern
21、怎样列出目录下的文件
还问了几个,记不得了,应该都是常用的,不太懂shell,没回答上来几个

框架/结构
22、什么是MVC
23、然后会让你具体举例子说,如果你用过的话,可能还会问得更具体,这方面我不太懂,所以也没问得很深入

第二位面试官[美国人](部分题目):
1、什么是pass by value, 什么是pass by reference
2、Java支持哪个
3、然后拿出一份印好的函数出来让你说运行结果,不难,但很tricky,函数是swap
4、什么是多态
5、用不支持多态的语言实现多态,会给个具体的题目,现场写
6、什么是GC
7、GC的工作机制,也就是算法,知道哪个说哪个,说完名字之后具体解释
6、数据库设计一道,设计完之后如果面试官觉得不perfect,她会告诉你设计有缺陷,然后让你自己说哪里有缺陷,举例说做什么操作会出什么问题,然后改进

笔试(一共6道题,具体题目记不住,只能列出考点了)
1、编写函数,实现字符串“?a.b.c.d?“变为“?abcd?”,实际上就是去“.”,不许用现成的能实现此功能的库函数,要用迭代和递规两种方法实现
2、写第一题的JUnit
3、给了一个类,写它的equals()和hashcode()函数
4、写输出结果 考点是pass by value/pass by reference
5、写输出结果 考点是static/constructor
6、写输出结果 考点是父类子类的cast

第三位面试官[香港人](杯具就要开始了,注意收看)
先看了看我的笔试。笔试答得感觉不是太好,我是那种非常不会考试的人,对笔试有强烈的心理阴影,只要落到纸上就玩儿完,所以GPA很丢人。这人看了之后不咋满意,定下了一个比较轻蔑的基调,后边的一个小时面试基本是在这个基调下完成的。

1、讲个teamwork的例子吧
因为我最近三个project都是individual的,所以就讲了个以前的,因为我觉得比较典型,刚说两句,他在简历上看到那个project了,说“that was 3 years ago”,我顿时很尴尬,说也不是,不说也不是,他说:说吧说吧。我就继续了,并承诺再给他一个recent的例子。

2、讲个项目里的challenge吧
我就开始讲,刚才那问题我答得很不爽,讲challenge的时候情绪也不是很饱满,他也不是很care,快讲完的时候他笑了一声说:也没啥challenge的,我又很尴尬,完全停那儿了,冷场若干秒,完全是凶兆,面试大忌。

3、面试官突然一惊,探身问我,“你现在在哪儿工作啊?” 我说:“我三月底才毕业,现在处在求职阶段,还没开始工作。” 然后他举着简历到我眼前,一个一个项目开始问,哪个是intern的,哪个是在校做的project,做好标记之后嘟囔,“你没工作过啊⋯⋯”

4、然后从我过去的一个项目上扯到C++的纯虚类,问我纯虚函数怎么声明,我当时脑子根本就是一锅粥,怎么也想不起来了,而且好多年没碰过C++了,写了半天都是虚函数,不是纯虚,他连连叹气,最后我也没想起来,结束的时候才醒过来。

5、又转到一个Java项目上,涉及音频,他很感兴趣,让我给他讲怎么做的,我就开讲,讲完后他说“我觉得挺简单的啊”,我听完真想抽自己一嘴巴。说实话,这没什么可难的,程序没用多久就写完了,因为是web程序,没经验,部署的时候花了不少时间,可我又没说过它难。我当时已经有情绪了,没理他。

6、他继续那个项目,问我怎么做的音频,我就告诉他怎么做的,他说除了这方法还用过其它的没有,我说开始的时候我用十六进制编的audio,再转成流,但后来发现这样没有可控性,用户设置的音频参数没法控制音频输出,所以就改了。他说“你是说你用十六进制encode吗?”我说“是,最开始的时候是”,他说“我真不敢相信你居然用十六进制,而没有一下子想到xxx方法”。我再次很无语,就盼着赶紧结束。

后来又有的没的说了点儿什么,我完全已经是whatever的态度了,他还是上面那个调调,我们就这样很不来电地谈到结束。

总结:
其实我原本也没对进高盛抱太大希望,毕竟自己各方面都没那么优秀,但拿到面试还是挺高兴的,抱着学习的态度去的,也期待着是个美好的经历,结果没想到出来的时候很堵心,再说具体点儿就是,前半程我对自己还算满意,除了那种实在没碰过的,一问一答都比较顺,可面完那个香港人之后,我觉得自己做过的东西都是bullshit. 平心而论,问题真的不难,就是陷阱比较多,认真准备的话绝对可以从容通过。

因为我也没最终成功,所以给不了大家太多成功经验,非要说一条就是,每面一次之后要好好总结,把没答上来的问题弄明白,电面的时候问我SQL的语句效率我就不会,事后查了查,没想到onsite的时候又被问了类似的问题,只是更深入了一点儿。

失败的教训倒是有,最重要的就是,要控制好情绪。我平时是个有点儿小脾气的人,尤其当别人不待见我的时候,我也懒得待见别人。这次面试后半程完全有点儿失控,各种面试忌讳都出现了,事后我很后悔,没以一种积极的态度去回应面试官,光在那儿犯傻了。也许人家就是在考验你,结果我显然是fail了。

错失良机的滋味儿实在难受,希望大家好好把握!

5 Likes

感谢楼主!

问怎么多java基础和SQL 不考算法题吗?