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就好了不去深究怎么优化。