2018前端我的笔试记录(一)

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

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

下面是笔试部分记录:测试

编程部分spa

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

     而且小Q对于可否被3整除这个性质很感兴趣。小Q如今但愿你能帮助他计算一下从数列的第1个到第r个(包含端点)。blog

输入描述:three

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

输出描述:字符串

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

 

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

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

二、牛牛之前在老师那里获得了一个正整数数对(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);

 

三、牛牛去犇犇老师家补课,出门的时候面向北方,可是他如今迷路了,虽然他手里有一张地图,可是他须要知道本身面向的是哪一个方向。请你帮助他。

输入描述: 

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

每一个输入包含一个测试用例,每一个测试用例的第一行包含一个正整数,表示转的方向的次数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表明西
    }
}
相关文章
相关标签/搜索