一亩三分地论坛

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

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

Bloomberg 电面 on site 超详细面经

[复制链接] |试试Instant~ |关注本帖
阿童木萝卜 发表于 2014-9-27 00:41:40 | 显示全部楼层 |阅读模式

2014(7-9月) 码农类 硕士 全职@Bloomberg - 网上海投 - 技术电面 Onsite |Fail

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

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

x
五月份面的bloomberg, 人生第一次找工作面试。当时自己啥都没准备,leetcode 没刷,CC刷了前三章,看了看版上的面经就去了。
面:
官网投简历20天左右hr给安排了电话面试。
面试官是亚裔的口音,不知道是不是国人大叔,都能听得懂,交流没障碍,这点很好。
1.     简单介绍了自己,就开始问C++的概念题了,大都准备过的,construct, destructor, why virtual function,然后在share的文档里写了个例子,base class, derived class 关于 virtual function的问题, 还有问了virtual destructor的问题,还有让找错,其实就是 delete[] A 写成了 deleteA,比较简单。
2.     接下来是一道编程题,Find1 missing number from 0 to N.
自己犯的错误:
1)这个面试官大叔没有具体的描述这个问题,而是说了个例子,1到10000,有个数missing了,所以我的function输入的不是n,而是一个定值10000,怪自己经验不足。
2)还有就是我没问这个array到底是不是sorted。
3)我上来就说求1到n的和(开始竟然没用公式求,而是for loop求的,我真笨),然后gothrough array求和,最后两和相减即为所求。但是指出会有overflow,[size=14.3999996185303px](4[size=14.3999996185303px])大叔问怎么解决,我说可以go through array求当前为止的平均数,程序折腾了半天没写对。
后来大叔说有比O(n)更好的办法吗?我没想到,后来他说用tree可以达到O(lgn)。我也没细问,因为不明白怎么用tree?现在也不明白。。。(当然如果是sorted 的array,直接二分查找就可以了,但是这个用tree是啥意思?)
总结这道题: 如果是unsorted array,可以求和解决(会overflow),避免overflow可以用XOR解决,参考 http://www.geeksforgeeks.org/find-the-missing-number/
如果是sorted的array,直接binary search就好,看index与数的对应关系知道该在左半边还是右半边找。

. 1point 3acres 璁哄潧
onsite
1.    两个国人大哥大姐,基本是上来就做题。(45min)
(1)国人大姐出的题: 给一个char array = {‘3’, ‘+’, ‘2’, ‘*’,‘4’, ‘-’, ‘1’}, 里面没有括号, 求出运算表达式的结果。我开始完全没idea,后来想到用两个queue, 边用例子边想,本来以为死到这道题上了,后来就边go through 例子array边想就想到了,要用两个stack, s1存数,s2存operator,iterator through array and push element into corresponding stack , when pushingelement to stack , I need to do a decision :push it to s2 if s2 is empty or the current element array has higherpriority than s2.top() . 程序如下;
·      i++的位置要放对,记得计算加减乘除的时候i不变化, 这个开始犯错了,后来想到了
·      还有就是记得善后处理,这个想到了,但是因为还要做下一道题,面试官说先别写了。
code :
#include <iostream>
#include <stack>
using namespace std;
boolisHigherPriority (char a, char b)
{
    if((a == '*' || a == '/') && (b== '+' || b == '-')) return true;
    return false;
}
int Cal(int a, int b, char c)
{
    if(c == '+') return a+b;
    else if (c == '-') return a-b;
    else if (c == '*') return a*b;
    else return a/b;
}
int Calculation(char *array, int n)
{
      if(n <= 0) return 0;
      stack<int> s1;
      stack<char> s2;
      int i = 0;
      while(i < n)
    {
        if(i%2 == 0) {s1.push(array-'0');i++;}
        else
        {
            if(s2.empty() ||isHigherPriority(array, s2.top())) {s2.push(array); i++;}
            else
            {
                int a, b, d;
                b = s1.top(); s1.pop();
                a = s1.top(); s1.pop();
                char c =s2.top();s2.pop();
                d = Cal(a, b, c);
                s1.push(d);
            }
        }
    }
    while(!s2.empty())
    {
        int a, b, d;
        b = s1.top(); s1.pop();
        a = s1.top(); s1.pop();
        char c = s2.top();s2.pop();
        d = Cal(a, b, c);
        s1.push(d);
    }
    return s1.top();
}
int main()
{
    //char A[7] = {'3', '+', '2', '*','4', '-', '1'};
    char A[11] = {'3', '+', '2', '*', '4','-', '6', '/', '2', '+', '1'};
    int res = Calculation(A, 11);
    cout << res << endl;
    return 0;
}
(2) 写完上一题只剩10分钟了, 国人大哥出的题,放水的,validBST。 我开始说inorder 输出vector<int >看是不是sorted, 写了之后在他的提示下发现不用输出整个vector,每次只要跟上一个比较即可。代码参见leetcode。
2.    一个老美一个欧洲人(45min )
(1)老美上来问了点C++的东西,virtualfunction一类的,还有什么时候用python, 啥时候用C++。 然后给了一道parking lot的题。大意是Design aparking lot management software, in term of data structure,使得每个车开进来的时候就能找到最近的停车位。我一开始说用tree 做BFS,在这上面纠结了很久。后来慢慢地在面试官引导下找到方案:vacant lot用min_heap存,存储的是(distanc,Lot_ID),key 是distance,每次车进来就取min的那个,remove掉,min_heap 要恢复,所以O(lgn)复杂度; occupied lot 用hash table 来存, C++ 中是用set,存的是Lot_ID,每次做insert, delete操作是O(1)复杂度。没写code。
(2)弄完上一道题剩的时间就不多了,欧洲人给了一道two sum的题,很快写完了,run了一个example,结束了,比较顺利。
3.    一个老美 manager(30min)
(1) 简单聊了一个简历上的project,他挑的是个我放在简历后面不太熟的。
(2) 然后出了一道题:有n个机器,每个机器上存了一些file,里面是一些integer,sorted的,每个机器上有m个integer,让我找所有这些机器上的integer的median。 因为数据量太大,所以没办法做merge sort,开始想的是每次去掉一半的做法,很快发现不可行。Manager说可以先实现这个函数isMedian(int a),就是判断一个integer是不是median, 这个简单,在每个机器上用binary search找到这个数的位置,最后所有机器上的累加看有多少个数小于它(s 个数),多少个数等于它(e个数),多少个数大于它(b个数),最后就算出了这个数所处的位置,如果abs(s – b)< e,那么这个数就是所求的median,else: if(s < b) 我们可知median 要比当前的数大, else,我们可知median 比当前数小。isMedian 的复杂度是 nlogm。
所以这道题的整体思路是对于第一个机器上的数,找到median,然后用isMedian函数判断这个数是不是所有数的median,如果不是,用二分法在第一个机器上的数的一半找,找最多lgm次就能判断median所在的范围了,然后利用这个范围到第二个机器上找,看能不能缩小范围,就这样遍历n台机器,每台机器上复杂度是2*lgm+lg(range size), since range size<=m, 所以还是O(lgm),总复杂度是 (nlgm)^2.
4.    HRmm(20min )
Why CS, 需不需要 sponsorship, 讲讲你做项目面临的困难,象征性的问了一下,因为已经下午三点左右,HRmm也很累,直打哈欠。
五月下旬的周五面的,接下来的周二收到的果,悲了。心情低落了一段时间,因为当时自己赤膊上阵,基本啥题都没刷,面完感觉很良好,因为当时已经超常发挥了。。。


因为今年10月份毕业,三月份的时候投了份简历,就是bloomberg家,我投的第一家公司,也是当时仅投的一家,很幸运的拿到了电面和onsite。这也给我了一个错觉,以为只要投了简历就会有回应,就会有on site。 虽然这次oniste 被拒心有不甘,但是总结原因发现是自己的硬实力不够,coding 能力不足,所以暑期闭关三月开始刷leetcode和CC, 八月底才又开始投简历,但是悲剧的是,大部分简历没人理,找人内推FLAG简历就都悲剧了(可能是转专业的缘故),马上十月份毕业,手里一个offer还没有,心理很急啊。发面经攒人品,如果大家觉得有用,接下来要面的其它公司的也会陆续发。


补充内容 (2014-9-27 00:47):
为什么下面的字体都变斜了呢,找了半天不知道该怎么重新编辑。。。大家将就着看,有知道怎么编辑的麻烦告诉我~

评分

7

查看全部评分

ohmystill 发表于 2014-9-27 01:57:16 | 显示全部楼层
楼主这个真心详细 4个月前的 还都能回忆出来 给32个赞
回复 支持 反对

使用道具 举报

TonyJang 发表于 2014-9-27 22:39:38 | 显示全部楼层
他家必须用C++吗?
回复 支持 反对

使用道具 举报

jingi08 发表于 2014-9-27 23:05:29 | 显示全部楼层
请问他家onsite男生西服要打领带吗。。
回复 支持 反对

使用道具 举报

 楼主| 阿童木萝卜 发表于 2014-9-30 06:56:01 | 显示全部楼层
TonyJang 发表于 2014-9-27 22:39. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
他家必须用C++吗?

面试的时候应该不是必须的,但是它家很在意你C++的熟悉程度,准备一下C++概念题吧。
回复 支持 反对

使用道具 举报

 楼主| 阿童木萝卜 发表于 2014-9-30 06:58:11 | 显示全部楼层
jingi08 发表于 2014-9-27 23:05
请问他家onsite男生西服要打领带吗。。

最好是吧,我去面的时候貌似大家是这样的,他家毕竟是个金融公司,打上领带至少没坏处。
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-7 23:41

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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