一亩三分地论坛

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

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

Bloomberg onsite

[复制链接] |试试Instant~ |关注本帖
TryingAndTrying 发表于 2015-7-28 03:06:00 | 显示全部楼层 |阅读模式

2015(7-9月) 码农类 硕士 全职@Bloomberg - 网上海投 - Onsite |Otherfresh grad应届毕业生

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

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

x
去了bloomberg onsite。整个面下来,感觉问的挺基本的。但是我面的题目,都不是直接给你算法题。基本都是应用题。给你一个生活中的例子,让你解决,然后需要你自己抽象出算法题。我下面有的是是直接分享算法,有的还是应用题。有的时候需要跟他们讨论一下,input和output。每个问题结束,都会有follow up,以及时间空间复杂度分析。.鐣欏璁哄潧-涓浜-涓夊垎鍦
第一轮:两个美国小哥:分享了一个学校经历
1 check duplicates: 一个数组,只有一个是重复的,找出这个重复的数。
解法:说了一下bruth force, 然后用hashset优化。

2 valid parenthesis: 一个string, 里面有各种各样的括号,判断这些空号是合法的,其他的符号就忽略。
解法:stack, leetcode有原题。

3 best time to buy and sell stock: 只交易一次,计算最大利润,以及买入和卖出价格。
解法:leetcode有原题. 1point3acres.com/bbs

4 股票交易情况下,有很多的上市公司。你需要求得上市公司是哪一年上市的。已经设计好了一个api的function, 但是他返回的年份有一定的规则。然后时间复杂度是o(n). 你要利用已经给你的api, 去求得某一个股票的上市时间,并且时间复杂度要缩短。 如下:

//假设apple实际上市是1995年. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
public int getYear(int startTime, int endTime, String name) {-google 1point3acres
    //1. 输入: 开始时间1990,结束时间1993,苹果; 输出:1990
    //2. 输入: 开始时间1996, 结束时间1998,苹果; 输出0
    //3. 输入: 开始时间1992, 结束时间1996,苹果;输出1995
}-google 1point3acres

解法binary search O(log n)
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
第二轮:一个美国人一个印度人:分享了一个学校经历
1 设计一个音乐播放器,设计class, 以及各种存储歌曲和playlist的方式。 然后完成shuffle的算法;. Waral 鍗氬鏈夋洿澶氭枃绔,
解法我是用hashmap动态存playlist,然后用arraylist存所有的歌(因为查找方便,randomly access),然后用设计纸牌的shuffle 算法做的music shuffle。. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

2 美国人打开chrome,说主页上会显示最长访问的8个网址,你如何实现这个功能。
解法:min heap + hashmap 鏉ユ簮涓浜.涓夊垎鍦拌鍧.

3 我有一个function: doSomething(); 这个function有一个限制十秒内只能被call10次,如果十秒内多于10次,系统会报错。如何设计一个报错的功能。
解法:size 10的queue. 没超过10的size, enqueue new call, else dequeue 第一个call. 并比较当前call和第一个call的时间,超过10秒,输出warning。
. 1point 3acres 璁哄潧
4 印度人说,我现在心里有一个数,你可以说任意的一个数,我可以回答你大了还是小了。你要用什么的算法思想来猜数。
解法我说了两个,他没有说范围的时候, left window and right window --> right window以(2^n)的速度递增,而left window覆盖上一次的right window,确定了两个window,做binary search。
他说了范围直接用binary search。两个解法都是log(n)时间复杂度。

第三轮 一个美国人的manager:问了一下你喜欢的公司是什么样子的?
1 题目有点不记得了,貌似说了一下对象存在哪儿?我说heap. 然后他问了些关于garbage collection的东西和finalize()的东西。
. 1point3acres.com/bbs
2 不用乘法运算符,计算两个数的乘法
解法:用了位运算。经理人很好啊。因为我位运算做的不是那么熟练。一开始给了一个对的方向,告诉了位移法的步骤,然后他说那样不好写代码,然后提示了我一下,我就换了一个思考方式。最后做出来了。

3 开放题 你现在是一个风投顾问,帮很多有钱的人投资。你觉得什么样的情况会使得有些人赚更多钱,而有的人赚不到钱。
4 演示terminal, 聊天,开玩笑,聊天,继续开玩笑,结束

第四轮 美女manager
问了一下现在找工作的情况,和一些常规的hr问题:比如你选择工作的标准是什么,你最喜欢什么样的工作环境。然后聊天,然后让我赶紧去机场,别错过灰机了。
. Waral 鍗氬鏈夋洿澶氭枃绔,
7月21日面的。现在还没有消息。心情很烦躁。发面经给马上要面的人。准备准备。有啥题,需要讨论的,留言就好。保佑保佑~~~ 好人一生平安


补充内容 (2015-7-31 07:12):
今天收到了offer,好开心。等了快10天了。

评分

6

查看全部评分

CSBrogrammer 发表于 2015-7-28 04:02:39 | 显示全部楼层
谢谢LZ,会一切顺利的!
回复 支持 反对

使用道具 举报

CSBrogrammer 发表于 2015-7-28 04:05:55 | 显示全部楼层
请问股票交易那题,第一个的输出是否应该为0呢?因为1990到1993这段时间苹果还没上市呢不是?
回复 支持 反对

使用道具 举报

 楼主| TryingAndTrying 发表于 2015-7-28 04:09:45 | 显示全部楼层
CSBrogrammer 发表于 2015-7-28 04:05
请问股票交易那题,第一个的输出是否应该为0呢?因为1990到1993这段时间苹果还没上市呢不是?

谢谢你,那道题是1990,这样可以区分你输入的区间是大了 还是小了
回复 支持 反对

使用道具 举报

CSBrogrammer 发表于 2015-7-28 05:29:09 | 显示全部楼层
TryingAndTrying 发表于 2015-7-28 04:09
谢谢你,那道题是1990,这样可以区分你输入的区间是大了 还是小了

原来是这样,谢谢!
回复 支持 反对

使用道具 举报

CSBrogrammer 发表于 2015-7-29 19:06:39 | 显示全部楼层
TryingAndTrying 发表于 2015-7-28 04:09
谢谢你,那道题是1990,这样可以区分你输入的区间是大了 还是小了

不好意思再麻烦您一下,还是之前的股票交易那题,所以api返回年份的规则就是倘若输入的区间小了,返回输入区间开始时间,若大了,返回0,若在区间内,则返回上市年份?是这个意思吗?
回复 支持 反对

使用道具 举报

mnmunknown 发表于 2015-7-29 20:59:54 | 显示全部楼层
本人是秋季毕业正在考虑什么时候开始正式申请(同时也想多留些时间给自己完善刷题),请问lz是春季还是秋季毕业?什么时候投的简历?

谢谢!
回复 支持 反对

使用道具 举报

 楼主| TryingAndTrying 发表于 2015-7-29 23:07:32 | 显示全部楼层
CSBrogrammer 发表于 2015-7-29 19:06
不好意思再麻烦您一下,还是之前的股票交易那题,所以api返回年份的规则就是倘若输入的区间小了,返回输 ...

对的 就是这个意思
回复 支持 反对

使用道具 举报

 楼主| TryingAndTrying 发表于 2015-7-29 23:08:14 | 显示全部楼层
mnmunknown 发表于 2015-7-29 20:59
本人是秋季毕业正在考虑什么时候开始正式申请(同时也想多留些时间给自己完善刷题),请问lz是春季还是秋季 ...

我是今年春季毕业的 我6月份投的简历 准备好了 再投吧 他家全年都在招人

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

CSBrogrammer 发表于 2015-7-30 05:05:25 | 显示全部楼层

所以唯一需要注意的special case就是上一次query returned的start year is actually the year wanted是吗?请问还有什么其他需要注意的 special cases,除了regular的binary search cases之外?
回复 支持 反对

使用道具 举报

 楼主| TryingAndTrying 发表于 2015-7-31 07:12:32 | 显示全部楼层
CSBrogrammer 发表于 2015-7-30 05:05
所以唯一需要注意的special case就是上一次query returned的start year is actually the year wanted是吗 ...

解法是这样的 你要跟他商量,应该会有一个range: minYear and maxYear. 然后你求的midYear = (minYear + maxYear) / 2; 然后call那个function getYear(midYear - 1, midYear, apple). 如果你得到的返回结果是0, 那么minYear = midYear + 1, 如果你得到的返回结果是midYear - 1, 那么maxYear = midYear - 1, 如果你得到的返回结果是x, 那么x就是你要的上市的时间。有问题再问我
回复 支持 反对

使用道具 举报

CSBrogrammer 发表于 2015-7-31 08:01:08 | 显示全部楼层
TryingAndTrying 发表于 2015-7-31 07:12
解法是这样的 你要跟他商量,应该会有一个range: minYear and maxYear. 然后你求的midYear = (minYear +  ...

太感谢了,回答得真好,赞LZ好热心!
回复 支持 反对

使用道具 举报

xmruibi 发表于 2015-7-31 08:59:57 | 显示全部楼层
在地里发面经 真的是攒人品! 给算法姐点赞!
回复 支持 反对

使用道具 举报

 楼主| TryingAndTrying 发表于 2015-7-31 13:31:43 | 显示全部楼层
xmruibi 发表于 2015-7-31 08:59
在地里发面经 真的是攒人品! 给算法姐点赞!

大神 请进了加州大公司,refer我。。。
回复 支持 反对

使用道具 举报

tiantiana 发表于 2015-8-2 07:07:22 | 显示全部楼层
恭喜lz,看起来lz用的java,请问b家不考c++吗?lz怎么应对的啊,谢谢。
回复 支持 反对

使用道具 举报

tiantiana 发表于 2015-8-2 07:32:13 | 显示全部楼层
我大致写了一下重要的player的部分,重来没什么太多design经验,还请lz和各大牛指教不足之处!非常感谢。
回复 支持 反对

使用道具 举报

tiantiana 发表于 2015-8-2 07:32:23 | 显示全部楼层
class Pplayer extends Player {
    int currVolumeLevel;
    int currZoomValue;. Waral 鍗氬鏈夋洿澶氭枃绔,
    Song curr;
    PlayList list;
    public Player getPlayer(){return this;}
    /*public File getMediaFile(){return new File();}
    public void playMediaFile(File)
    public int getRate(){};*/
    public void playListSong(){}
    public void stopPlay(){};
    public void playNextSong(){}
    public void cleanPlayList(){}
    public void turnDownVolumn(){}
    public void turnUpVolum(){}
    public void playSong(Song s){}
}. more info on 1point3acres.com
class Song {
    String SongName;
    String fileType;
    int fileSize;
    String SongPath; 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
    String duration;
    Song(String s) {
        SongName = s;
    }
    public String getfileName(){return "";}
    //public String getFilePath(){return ""}. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
}
class PlayList {
    private static List<Song> list;. more info on 1point3acres.com
    private int size;. From 1point 3acres bbs
    PlayList() {
        size = 0;
        list = new ArrayList<>();
    }
    public void AddSong(Song sg){. 1point 3acres 璁哄潧
        list.add(sg);
        size++;
    }
    public List<Song> getSongList() {
        List<Song> l = new ArrayList<>();
        for (Song s : list) {
            l.add(s);
        }
        return l;
    }. from: 1point3acres.com/bbs
    public static List<Song> shuffle() {  . From 1point 3acres bbs
        int number = list.size();
        Random random = new Random();  
        int randomNumber = 0;  
        for (int i = 0; i < number - 1; i++) {  
            randomNumber = i + random.nextInt(number - i);  
            swapSong(list, i, randomNumber);
        }  
        return list;
    }  
    private static List<Song> swapSong(List<Song> list, int start, int randomNumber) {  
        Song temp = list.get(start);  
        list.set(start, list.get(randomNumber));  
        list.set(randomNumber, temp);  
        return list;
    }
}
回复 支持 反对

使用道具 举报

窗外一棵树 发表于 2015-8-2 10:05:01 | 显示全部楼层
同问java问题  之前听说blomberg不是只能用c++咩

求解惑。。
回复 支持 反对

使用道具 举报

tiantiana 发表于 2015-8-2 10:07:51 | 显示全部楼层
另有the 10 most frequent URL 问题,我也同意用hashmap+minHeap来做,但是,如果是heap中的url的频率有了更新,lz怎么处理的?需要把heap 都poll出去,再update吗?不然heap里的元素怎么update呢?谢谢。
回复 支持 反对

使用道具 举报

CSBrogrammer 发表于 2015-8-2 10:36:14 | 显示全部楼层
tiantiana 发表于 2015-8-2 10:07
另有the 10 most frequent URL 问题,我也同意用hashmap+minHeap来做,但是,如果是heap中的url的频率有了 ...

应该不用都poll,找到那个元素remove再add就好了吧
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-11 09:10

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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