斐波那契数列 n = 9292 的结果是什么?

2022-03-02 09:15:30 +08:00
 CookCoder

面试了一个远程公司,第一题是写一个斐波那契数列的实现,这个没有任何难度,反正是不写递归就行

但是第二题是用自己写的第一题的答案运行 n = 9292

因为每注注意 n = 9292

所以第一题实现的时候比较粗暴,第二题运行结果当然是无穷大

后来进行调整,其实很简单,力扣有题目

var fib = function(n) {
    const MOD = 1000000007;
    if (n < 2) {
        return n;
    }
    let p = 0, q = 0, r = 1;
    for (let i = 2; i <= n; ++i) {
        p = q; 
        q = r; 
        r = (p + q) % MOD;
    }
    return r;
};

持续 % 1000000007 的结果就出来了 随后又实现一下不 % 1000000007 的结果 结果太庞大了,肯定不是,否则太侮辱出题人了

BUT ,对方公司就是要这个庞大的结果 我现在道心崩了

7843 次点击
所在节点    程序员
91 条回复
CookCoder
2022-03-02 09:49:51 +08:00
@lance6716 远程面试,给题目以后就无沟通了,而且运气很差,对方是才毕业一个月的新手,后期沟通答案的时候,她转述程序员的解释,差点让我信仰崩塌。

她说因为我没有 MOD

我?

过了一会说要的是原答案

我??

那你给我的空白也不够把原答案复制进去啊
Aoang
2022-03-02 10:00:31 +08:00
建议直接放弃,不用太在意。

之前远程电话面试某厂,人都是拿着面试题随便挑着问的,都能听到翻页的声音。如果你回答的不是纸上的答案,就说你回答的不对。问题在于还有宏观题…

面试到一半,给我整一句,你简历上写的完全都不会,然后把电话挂了。

面试体验最差的一次
fds
2022-03-02 10:06:54 +08:00
……没听说过取模还有什么共识的。你换几个别的数字会有什么问题呢?
我个人理解,这题考点就是时间复杂度和类型的取值范围。时间复杂度别递归就行。取值范围你要用 python 实现,就不用做什么特殊处理,因为 python 支持大整型。用 js 的话,要不就用 bigint ,要不就自己写个数组分段计算,不然 float64 会丢精度。
面试给 pdf 应该也不用在 pdf 上编辑吧?肯定要提供程序代码吧?我觉得面试主要看代码,至于答案,只要是算法对,应该无关紧要。
masterclock
2022-03-02 10:13:03 +08:00
1000000007 挺常用,但也没到共识的程度

面试的时候,给了问题,只做,不提疑问,我一般是扣分的
CookCoder
2022-03-02 10:15:40 +08:00
@masterclock 我之前因为提问,反而扣分,这个真是看缘分了
zhandi4
2022-03-02 10:17:34 +08:00
BigInt 加矩阵快速幂,他就没啥可挑剔的了。题目没有说取 mod 的话,还是没必要先入为主去取,或者说把自己的疑问去沟通一下。事后来看就不用去纠结了,这面试体验太差了,面试也是相互选择的。
ipwx
2022-03-02 10:17:53 +08:00
我觉得沟通需求也是程序员重要的基本技能。楼主这就属于沟通技能极差
littlewing
2022-03-02 10:20:55 +08:00
要不要 mod 你直接问 HR 不就行了,你再这里问有啥用
CookCoder
2022-03-02 10:21:51 +08:00
@zhandi4 他们说我错了,我坚持认为没有错,我要一个解释,然后说我没有 MOD ,可是我的代码里明确进行 MOD ,对方又说需要原答案,所以,真的是一个让我恼火的面试,也是一次体验很差劲的面试。


@ipwx 我只是认为在国内很基本的面试题,没有必要去提问,至于是否沟通能力差劲,仁者见仁智者见智吧。
CookCoder
2022-03-02 10:22:44 +08:00
@littlewing 因为一直以为大数值答案是默认 MOD 的,根本不需要提问
ipwx
2022-03-02 10:22:44 +08:00
“我只是认为在国内很基本的面试题”

我觉得坚持这个认知没错,这件事情就说明沟通技能差了。(
CookCoder
2022-03-02 10:26:31 +08:00
@ipwx 那我感觉您可以和那个因为我提问,反而扣分的面试官进行沟通一下,他说面试题就是考察你所有想到的点,把所有可能都解答到位就 OK ,所以提问当然减分。

所以面试这么多次以后,遇到疑惑,到底提问还是不提问,因为我怎么选择都遇到扣分的情况。

所以这个我感觉和沟通能力什么的都没有任何关系,就是看面试官而已。
iDontEatCookie
2022-03-02 10:28:24 +08:00
这么垃圾的面试体验就别找自己的问题了吧?
jmc891205
2022-03-02 10:32:13 +08:00
面试不是考试,更像相亲,有时候就是会因为一些莫名其妙的原因被拒(对候选人对公司来说都是)
mainjzb
2022-03-02 10:32:44 +08:00
我觉得。。。这个面试很有效。。。证实了这个部门和你真的不合(逃
jmc891205
2022-03-02 10:34:10 +08:00
不过就此题来说
如果我是面试官 候选人问我要不要取模或者主动就取模了
那我后面会避免和他讨论 Leetcode 原题了 hhh
CookCoder
2022-03-02 10:39:04 +08:00
@jmc891205 我之前也不知道取模,最开始面试的时候,我甚至是递归去回答,经过几轮面试官的教育,才知道有什么动态规划,MOD 等等。
fds
2022-03-02 10:56:15 +08:00
面试又不是考试,没有标准答案。不同面试官有不同解读很正常。招人的岗位不同对答案的侧重也有不同。你非得争对错,就比较“学生气”。何况面试也是你选择对方的一个过程,如果对方主管或者工作方式你不喜欢,那就不要强求。

至于取模,十年前考察 C 语言并且是 easy 难度的题目,那一般会提示你取模。难一点的都可以要求你用数组模拟计算出来。现在主流语言基本都支持大整型了,所以直接要精确结果也正常。基本功在面试初级岗位时还是挺重要的。

@CookCoder 你能回答我如果这道题用 js 编写,可以取模,但一定要精确结果,这个取模运算中被除数的最大值是多少吗?我从你之前的回复里感觉你不清楚这个答案。那么对方公司给你扣分也无可厚非。扣分的点不一定是你提问了,而是你的提问暴露出一些知识漏洞。
CookCoder
2022-03-02 11:04:40 +08:00
@fds 这个有统计过,有被 MOD 过的被除数有 4658 个,最大的是 1999128362
encounter2017
2022-03-02 11:07:26 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/837325

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX