布隆伯格 2020暑期实习 电面凉凉过程

9.20学校career fair聊天投简历9.23发邮件通知电话面试

面试官听口音是一个白人小哥哥。上来就互相自我介绍,没怎么问bq直接打开hackerrank切入正题。
选择语言,然后小哥一边给你描述,一边把题目打在编辑器上。

题目都很简单
(1)第一题是给定一个上限,打印不超过这个上限的斐波那契数列。
(2)公司高频题 蠡口 散思刘 相同类型
主要是自己java转c++,对c++的基础知识不熟,被小哥夺命连环follow up问到心态爆炸。

follow up:

第一题:
(1)如果给的上限(叫NMAX)超过了INT_MAX,描述一下你写的print函数的behavior (超过了INT_MAX什么问题?函数是否还打印?打印多少内容,到什么时候停下?Compiler是Warning还是Error?)
我说overflow了,那要不改成long或者long long呗。小哥说不行必须要int…
(2)如果给的上限调小了,没有超过INT_MAX,还有哪里会有溢出的问题?
(3)(前一个我回答了我每一步求的前两数之和可能溢出)如果两数之和溢出了,再回答一下之前的问题(函数是否还打印?打印多少内容,到什么时候停下?Compiler是Warning还是Error?)
第二题:
(1)data stream不断地有transaction进来,每个transaction的结构是(weight, price),要计算实时的average = sum (weight * price)/ sum (weight) ,顺便问了一下空间复杂度
(2)如果要计算最近的100万个transaction的average,怎么做?(这就是原题了,我回答了可以用vector存一下,不过如果把你要的上限改大,这样做就不好了)
(3)他顺着我的话头就说了,你用vector就是要在memory里‍‌‌‌‌‌‌‍‌‍‌‌‍‌‍‌‌‌‍‍面计算了,那如果我要求最近的1000万个?1亿个?你怎么做?

最后就问我还有没有问题要问他的,我就随便哈拉了两句,就这么结束了。
题目是不难,主要是自己基础只是薄弱,平时刷题也是注重数量,做过的题pass就好了不去深究怎么优化。

所以第一题followup楼主怎么答的?需要打印吗

在hackerrank跑下来, 只要有overflow就会有compile warning;
NMAX和sum都是int或者unsigned int的话就跑到啥时候overflow了就停了;
如果NMAX是unsigned int 但sum是int的话, 只要NMAX很大比如是UINT_MAX就可能死循环了, 因为sum超过INT_MAX就可能是负数, 永远到不上限.
其实可以自己本地跑跑看哈哈哈 这玩意儿还是要自己跑了才记得住.

请问bloomberg是必须C/C++面试吗?

不是哦 可以选自己擅长的语言

请问楼主,这个怎么回答:
你用vector就是要在memory里面计算了,那如果我要求最近的1000万个?1亿个?你怎么做?

不好意思啊我没答上来😂…我觉得要不就是用动态数组 不够了resize 要不可能就是要把历史数据存disk了吧…力扣上有人在讨论区问了这个但好像没有回答

可以用incremental,每次进行过一次transaction,就记录数量和目前的平均

但是这样如果第1000万零1个来了 怎么做到去掉第一个 加上这个 然后再求avg呢?因为没有记录第一个number啊