Citadel rotation program电面

上来打了个招呼就开始做题,还问我你不介意这样突然开始吧。。。

第一题是判断一个数是不是fibonacci number,我没想到什么好办法就一个个生成数列直到超过给的数。他问如果这个函数会被调用的很频繁比如一天一百万次怎么办?我说在每次计算的时候可以把生成的fibonacci number存下来,再记录一个目前存着的最大的fibonacci number,这样下次我们看给的数小于这个max的话就查一下存下来的数里有没有就行;如果大于它我们再生成。他说你implement一下吧,我就用hashset去写了一下。写完以后又让想一些test case和edge case。
事后查一下发现有方法直接判断一个数字是不是fibonacci number,可以自己去google一下。但是感觉这种属于看过才知道,不看过不可能想出来的。不知道面试官问这种题的时候的expectation是什么样的呢?

第二题是让写一个class,用来计算polynomial。就是给好了系数a[0] - a[N-1],然后每次给一个输入x计算出结果。具体来说就是a[0] + a[1]*x + a[2]*x^2 + … + a[N-1]*x^(N-1)。说要efficient和考虑performance,但我除了在计算时在每次的x项后直接再乘一个x而不是用pow(x,n)来计算以外,也没想到有什么能优化的。求点拨。写完以后也是让写一些test case,负数、0都要考虑到,为了确定程序是对的。

最后五分钟让问问题,得知它们这个rotation program的面试流程就是一轮电面 + Onsite,然后进去以后先有一段时间的培训,专门培训business方面的知识,之后会rotate三个组,每个待两到三个月。感觉是挺有意思的一个program。

1 Like

我觉得第二题想问的是vectorization?

楼主是申请的时候 就是rotation program 吗 还是申的SDE被分配到这个项目?