进行笔试之前,我们首先要了解的是,我们春招、秋招的时候,企业用的是什么平台。

因为每一个平台的代码输入规则不一样。据我了解,一般企业会用到以下几个平台:

  • 牛客网:腾讯、美团等一众大中小厂
  • 赛码网: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 浏览器作答。

版权声明:本文为kurryluo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/kurryluo/p/12335272.html