(二)各大筆試網站(牛客網、賽碼網、測評網)介紹和做題技巧——以前端開發為例


進行筆試之前,我們首先要了解的是,我們春招、秋招的時候,企業用的是什么平台。

因為每一個平台的代碼輸入規則不一樣。據我了解,一般企業會用到以下幾個平台:

  • 牛客網:騰訊、美團等一眾大中小廠
  • 賽碼網:360、順豐、字節等一眾大中小廠
  • 其他小平台或自建平台:測評網、阿里、三七互娛

一般來說,企業會選擇前兩個比較大的求職平台作為筆試的合作方。所以,我們基本上只需要了解前兩個平台的玩法就可以了。

至於前端開發,會有一些問答題,比如根據描述,寫一段 CSS、HTML,實現某個效果。這種題比較簡單,根據所學知識寫清楚就可以了。

這篇文章重點是前端開發中遇到編程題,解決測試用例的輸入問題。

牛客網

牛客網成立於 2014 年 9 月,產品矩陣包括 IT 題庫、在線編程練習、線上課程、交流社區、競賽平台、筆面試服務。

簡單地說,筆試面試之前,我們可以在牛客網上刷各種題,拿前端開發來說,包括 js,html,css,算法,計算機網絡,計算機基礎,甚至包括智力題,邏輯題都可以在牛客網上刷。

當我們進行筆試的時候,企業會給我們發送一個牛客網的試題鏈接,電腦會開啟攝像頭,錄制我們答題的過程,以防作弊。

牛客網還可以進行遠程視頻面試。當你看到面試官時,面試官也在看着你。當着面試官的面,手撕代碼了解一下?

除了刷題、筆試、面試,牛客網還有交流社區,上面有很多面經,甚至交友的帖子。上面的人說話好聽又搞笑,超喜歡牛客網的沙雕們,上一個炫耀帖給予大焦慮后有段子作伴,痛並快樂着。

剛開始我不知道牛客網這個神器,了解了它的功能后,找工作大那段時間,幾乎每天都會上去刷一下。

介紹了牛客網是干嘛的,那么最主要大問題是刷題大時候最需要注意的是什么呢?

答案是:輸入。

在做題之前,我們要保證寫的代碼正確讀取了測試用例的輸入。否則,即使我們的代碼是正確的,平台進行驗證的時候也會判定是錯誤的。

如上圖所示,我們打開牛客網上的一道編程題,右邊是代碼輸入模塊。可以選擇各種語言做題,前端有兩個選擇,一個是基於 V8 環境,另一個是基於 node,兩者的區別在於讀取測試的輸入規則不同。

直接上代碼:

  • JavaScript (V8 6.0.0)

牛客網提供了 readline() 函數,不用填寫任何參數,每執行一次,就讀取一行。多行輸入其實就是寫多個 readline()。

【多行輸入的 圖 】

// 單行輸入
// 0 1


while(line=readline()){ // readline 得到的是字符串
    let parameters = line.split(' ');
    let a = parseInt(parameters[0]); // 單行第一個參數 轉化成了數字
    let b = parseInt(parameters[1]); // 單行第二個參數 轉化成了數字
    print(a+b);
}


// 多行輸入,且行數確定
// 2
// 0
// 1

let K = parseInt(readline()); // 讀取行數
let inputs = [];
for(let i = 0;i < K; i++){
    line = readline()
    inputs.push(line)
}

function func (inputs){ // 得到 inputs 后,用函數處理
    console.log(results)
}

func(inputs)


// 多行輸入,但行數不確定
// 2
// 0 
// 1

let A = parseInt(readline()); // 多寫一行讀取提示性輸入
let inputs = [];
while(line = readline()){
    inputs.push(line)
} 
console.log(inputs)

function func (inputs){ // 得到 inputs 后,用函數處理
    console.logh(results)
}

func(inputs)

  • JavaScript(Node 6.11.4)
// 單行輸入
// 0 1
let readline = require('readline');
const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
});

rl.on('line', function(line){
    let parameters = line.split(' ');
    let a=parseInt(parameters[0]); // 單行第一個參數 轉化成了數字
    let b=parseInt(parameters[1]); // 單行第二個參數 轉化成了數字
    console.log(a+b);
   
});


// 多行輸入,且行數確定
// 2
// 0 
// 1
let readline = require('readline');
rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
 
let K = 2; // 輸入 K 行
let inputs = []; // 存儲輸入 
rl.on('line', function(data) {
    // 獲取輸入
    inputs.push(data);
    if (K == inputs.length) { //
        // 處理
        let result = func(inputs);
        // 輸出結果
        console.log(result);
        // 清 0
        inputs.length = 0;
    }
});

function func () {} // 處理輸入的函數(算法)


// 多行輸入,不確定輸入行數
// 1
// 2
// ......
let readline = require('readline');
 
rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
 
let inputs = [];
let num = 0;
rl.on('line', function(data) {
    if(num == 0){
        num = Number(data.trim());
    } else {
        inputs.push(data.trim());
        if (num == inputs.length) {
            // 處理
            let result = func(inputs);
 
            // 輸出結果
            console.log(result);
 
            // 清 0
            inputs.length = 0;  // 不可改動
            num = 0;    // 不可改動
        }
    }
});

function func () {} // 處理輸入的函數(算法)

最后,需要注意的是牛客網上的題可以由公司在題庫中選,這部分題一般不會出現多個空格或者換行符的。也可以由公司員工重新出的題,他們填寫測試用例的參數時,可能會誤操作,多打一些我們看不見的字符。** 所以,做題的時候留個心眼,數字就處理成數字,過濾字符串前后空格。**

賽碼網

賽碼網的輸入方法和牛課網類似,只不過把 readline() 這個函數,換了一個名字:read_line()。下面看 V8 環境下的基本用法,賽碼網也有 Node 環境,和牛客網的方法一致,不再贅述。

// 單行輸入
// 0 1
while(line = read_line()){
    line = line.split(' ');
    print(parseInt(line[0]) + parseInt(line[1])); // 輸出結果
} 


// 多行,無論行數確定與否

let first_line = read_line();// 如果有多余的提示性字符,可以過濾
let inputs = [];
while(line= read_line()){
  inputs.push(line);// 把后邊的每一行都當作一個字符串,作為數組的元素填入數組中,這樣就可以操作了
}

print(func(inputs));

// 多行,多個測試用例放在一起,詳細見下方給出的 輸入輸出教程 。

樣例輸入
3 1
2 3 1 // 到這里是第一組
5 4
1 2 1
3 4 0
2 5 1
3 2 1 // 到這里是第二組

let N, M;
// 每組第一行是 2 個整數,N 和 M,至於為啥用 while,因為是多組。
while ((N=readInt()) != null && (M=readInt()) != null) {
  print (N + ' ' + M);
  // 循環讀取 “接下來的 M 行”
  for (let i=0; i<M; i++) {
    let a = readInt();
    let b = readInt();
    let c = readInt();
    // 每行是 3 個整數,a,b,c。
    print(a + '' + b +' ' + c);
  }
  // M 行讀取完了,就又要開始下一組了,去 while 那里。
}

補充兩個賽碼網官方給出的攻略,建議仔細讀幾遍:

其他小平台或自建平台

其他平台相對用得不多,在做題之前要先上平台練習練習,熟悉平台的規則。

需要注意的是:檢查能否跳出做題界面,到本地編輯器做題。眾所周知,一些智能化的編輯器可以有自動代碼補充功能,大大節約了做題的時間。牛客網和賽碼網的編程題都是可以的,問答題不可以。

通用技巧

  1. 每次做題提前 5 分鍾准備好。為防止作弊,網站一般會要求你打開攝像頭、簽名、掃描小程序監控手機。這個步驟也會浪費一點時間。
  2. 仔細讀題,很多題不難,描述性的文字很長,耐心點讀完基本上就能做出來,很多人倒在了去做題的路上。
  3. 推薦使用 Chrome 瀏覽器作答。


免責聲明!

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



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