2018前端个人笔试记录(一)

楼主网申了网易的前端开发岗,两周后发来了网易的笔试邀请并附上了链接。

整个笔试分为三部分,选择,编程和解答。楼主底子很差,这次笔试也只是试水。在发现大部分笔试题不会之后,没有解答完就提交了。(捂脸)

下面是笔试部分记录:

编程部分

1、小Q得到一个神奇的数列:1,12,123,........12345678910,1234567891011...

     并且小Q对于能否被3整除这个性质很感兴趣。小Q现在希望你能帮助他计算一下从数列的第1个到第r个(包含端点)。

输入描述:

输入包括两个整数l 和 r(1 <=l <= r <= 1e9),表示要求解的区间两端。

输出描述:

输出一个整数,表示区间能被3整除的数字个数。

举例:输入:2   5    输出: 3;

表示12,123,1234,12345 中能被3 整除的数有3个。

2、牛牛以前在老师那里得到了一个正整数数对(x,y,),牛牛忘记他们具体是多少了。但是牛牛记得老师告诉过他x和y均不大于n,并且x除以y的余数大于等于k,牛牛希望你能帮他计算一共有多少个可能的数对。

输入描述:输入包括两个整数,n,k(1 <= n <= 10^5,0 <= k <= n -1)。

输出描述:对于每个测试用例,输出一个正整数表示可能的数对数量。

举例:输入:5  2  ;输出: 7。 满足条件的数对有:(2,3)  ;满足条件的数对有(2,3)(2,4)(2,5)(3,4)(3,5)(4,5)(5,3);

3、牛牛去犇犇老师家补课,出门的时候面向北方,但是他现在迷路了,虽然他手里有一张地图,但是他需要知道自己面向的是哪个方向。请你帮助他。

输入描述: 

每个输入包含一个测试用例。

每个输入包含一个测试用例,每个测试用例的第一行包含一个正整数,表示转的方向的次数N(N<=1000)。

接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转。

输出描述:

输出牛牛最后的面向的方向,N表示北,S表示南,E表示东,W表示西。

小Q数列问题:
------------------------------
    输入:2  5
    输出:3
*/

console.log("【小Q数列结果】一共有" + three(2, 5) + ""); // 检查结果

function three(num1, num2) {
    let tmpFirst = ""; // 开端数字
    let tmpSecond = ""; // 结束数字

    let threeNumber = 0; // 整除3的数量

    for (let index = 1; index <= num1; index++) {
        tmpFirst += index.toString();
    }
    console.log("小Q数列--  " + "开端数字是" + tmpFirst); // 得到开端数字

    for (let index = 1; index <= num2; index++) {
        tmpSecond += index.toString();

        if (tmpSecond >= tmpFirst && tmpSecond % 3 == 0) { // 取得区间数字,并整除3
            threeNumber += 1;
            console.log("小Q数列--  " + "数字 " + tmpSecond + " 可以整除3");
        }
    }

    return threeNumber;
}


/* 
牛牛数对问题:
------------------------------
    输入:5  2
    输出:7
*/
console.log("【牛牛数对结果】一共有" + pair(5, 2) + ""); // 检查结果

function direction(n, k) {

    let pairNumber = 0; // 数对数量

    for (let indexX = 1; indexX <= n; indexX++) { // indexX是数对左边数字

        for (let indexY = 1; indexY <= n; indexY++) { // indexY是数对右边数字

            if (indexX % indexY >= k) { // 计算余数是否等于k
                pairNumber += 1;
                console.log("牛牛数对--  " + "数对 (" + indexX + "," + indexY + ") 符合");
            }
        }

    }

    return pairNumber;
}


/* 
牛牛转向问题:
------------------------------
    输入:3
          LRR
    输出:E
*/
console.log("【牛牛转向结果】方向是" + direction(3, "LRR")); // 检查结果

function direction(number, action) {
    let leftNum = 0; // 左转次数
    let rightNum = 0; // 右转次数

    for (let index = 0; index < action.length; index++) {
        action[index] == "L" ? leftNum += 1 : rightNum += 1; //取得左转和右转几次
    }

    console.log(leftNum,rightNum);
    let result = Math.abs(leftNum * (-1) + rightNum * 1); // 最终转的次数(左转一次和右转一次会抵消)

    let directionValue = 1 + result % 4; //数字4是一圈,所以取余数就是最终方向;初始方向是北,所以加1

    switch (directionValue) {
        case 1:
            return "N"; // 1代表北
        case 2:
            return "E"; // 2代表东
        case 3:
            return "S"; // 3代表南
        case 4:
            return "W"; // 4代表西
    }
}
原文地址:https://www.cnblogs.com/yun1108/p/8666229.html