首页 > 技术文章 > 关于我碰到的奇怪的笔试题

serendipity-echo 2021-10-13 23:02 原文

2021.10.23  22:34

今天碰到一个很奇怪的笔试,

  事情是这样的,很久很久之前--真的是很久,我向某某公司投了简历,然后今天收到了笔试通知。

  就在刚刚,我做完了,然后我就陷入了沉思。

  我在想到底是什么情况面试前端的需要答语文的语句逻辑排序的题目,嗯,就是那种高考时做的,给你n个句子然后让你按照逻辑正确排序组成一段完整的段落的题目。

  这就算了,可以理解,对吧

   好吧,后来再问了一些什么张三李四的逻辑问题我就不吐槽了,但是

  但是!

  面试前端要写算法题???? 

  还是用JS写???

  可以理解?

  不可以!

  最主要的是你题目有问题还拿出来考试??? 

 

题目如下:

  给定一个n,请按以下规则求1-n的奇数之和与偶数之和的差:

    1.奇数序列N,i表示第i个数,如果i为奇数,则Ni的值取2*Ni;如果i为偶数,则Ni取Ni左移三位的三次方;

    2.偶数序列N,i表示第i个数,如果i为奇数,则Ni的值取Ni的平方根向下取整的值;如果i为偶数,则Ni取Ni左移四位的平方。

  大概就是这样,可能题目的一些细节表述有些不同,但是大差不差。

   下面是我的代码:

let sum=0;
let index1 = 0;
let index2 = 0;
for(let i=1;i<=this.num;i++){
    if(i%2===1){
        index1++;
        if(index1%2===1){
            sum += i*2;
            console.log('sum:',sum,'i:',i,'i*2:',i*2);
        }
        else{
            sum += Math.pow(i<<3,3);
            console.log('sum:',sum,'i:',i,'Math.pow(i<<3,3):',Math.pow(i<<3,3));
        }
    }
    else{
        index2++;
        if(index2%2===1){
            sum -= Math.floor(Math.sqrt(i));
            console.log('sum:',sum,'i:',i,'Math.floor(Math.sqrt(i)):',Math.floor(Math.sqrt(i)));
        }
        else{
            sum -= Math.pow(i<<4,2);
            console.log('sum:',sum,'i:',i,'Math.pow(i<<4,2):',Math.pow(i<<4,2));
        }
    }

}
return sum;

  嗯,到目前为止还没说问题,下面我就来说说:

    他给了一个例子:n=4  然后 输出是  3   ???

 

推荐阅读