Blog Archive

Wednesday, December 28, 2011

美国Bloomberg on-site technical interview面试总结 - JiansNet

美国Bloomberg on-site technical interview面试总结 - JiansNet:

http://www.jiansnet.com/topic/2551/loomberg-on-site-technical-interview


technical interview,一个亚裔和一个印度人(用A和I代替)。基本上都是语言问题,问了一点很简单的算法。整理如下:

1. (A) 给一个程序查错。有几个错误是很常见的,比如指针形式返回一个local的数组,strncpy分配的内存不够之类。后来A说这些都是run-time error,有没有compile-time error。我一开始没看出来,后来A提示让我看某一行,我恍然大悟,发现是本来应该return指针的函数return了一个&buf,而buf是一个数组的名字。我立即说应该把&去掉或者用&buf[0]。然后A说如果不改这一行,如何修改。我说可以把函数signature里的返回值换成pointer的reference或者pointer to pointer。A问reference和pointer的区别是什么。我回答了一下,然后A又问C里面有没有reference。我说有啊,A说其实C里是没有reference的(这个我真不知道),C++才有。

2. 一个几百个文件的程序有memory leak,如何debug。老题,不多写了。(By the way,这题最好的答案是什么?)

3. (A, 中间I进房间一起问)关于一般variable,static variable和global variable所在的memory位置。然后问后两个有什么区别,我说static variable是要程序运行到所在函数才分配内存,global variable是一开始就分配,所以有些情况下static variable更好一些。

4. (I, A) 如何用binary tree organize一些数,1到10之类。我说用BST,然后他们问BST如何插入一个值,如何delete一个BST。写了一点code。

5. (I) new和malloc的区别。这个比较简单。

6. (I) polymorphism含义,virtual function之类。我给他们比较详细的解释了一下virtual table(这个地方有点弄巧成拙,因为后来R说他是C programmer,不太懂C++, 然后A顺势又问了不少virtual function的问题,而这些问题自己研究的又不够细致。两边都没有讨好。)R问从一个programmer的角度来讲如何利用polymorphism. 我说可以用一个指向base class的pointer指向derived class,这样,比如在写程序的时候可以call同一个函数,不用知道具体的class,但不同class有不同的behavior。R说他在一个struct里定义一个pointer to function,然后也可以有同样的效果。我说class的意义不仅仅在于polymorphism,还有encapsulation,inheritence等等。他在这个问题上纠缠了一会,似乎觉得我没有说出很strong的理由为什么我们要用C++,试图argue C++的feature C都可以实现。我这时候只好又举出template之类的C实现不了的例子。总之说了很多,但沟通效果不好。

6. (I,A) 接着上面的题,关于virtual function。A问如果是pure virtual function那么virtual table里还要不要有这个function。然后又问pure virtual function能不能有definition,我一开始说没有,后来A说是可以有的,说有一种情况这个还挺有用。我说这样的话derived class可以省去这个function的定义,如果不想override它的话。但这好像不是他要的答案。我似乎在哪儿见过另一个用途,但是没想起来。

7 (I,A) I问C和C++里static有什么区别,我解释了一下。然后他们又想起了virtual function,问能不能有static virtual function,我说这个不行,他们让解释,我说了一通,但是感觉他们对我的解释不是很满意。

8. (I) 写一个singleton。I批评我class的名字和member的名字都起的太短,没有任何意义,说要是他coding review 肯定过不了。这个其实非常冤枉,因为我平时是写Java的,Java里面的变量名通常都比C长而且更加规范,但是我写字比较慢,于是面试前我觉得写code时应该写快一点,是故意把名字起的比较短的。这个时候我有点哭笑不得,然后他又问singleton用在multi-thread环境中的时候有什么问题,如何避免。然后随便聊了聊,就结束了。

中间还有些顺手问的小题,比如有没有用过template,你认为自己的C++程度如何,等等。都比较简单。

作者: riverroad


No comments:

Post a Comment