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表明西
    }
}
相關文章
相關標籤/搜索