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代表西
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM