获取内容资料
WEB前端

牛客网在线面试前端

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

牛客网:腾讯、美团等一众大中小厂赛码网:360、顺丰、字节等一众大中小厂其他小平台或自建平台:测评网、阿里、三七互娱

一般来说,企业会选择前两个比较大的求职平台作为笔试的合作方。所以,我们基本上只需要了解前两个平台的玩法就可以了。

牛客网在线面试前端

至于前端开发,会有一些问答题,比如根据描述,写一段 CSS、HTML,实现某个效果。这种题比较简单,根据所学知识写清楚就可以了。

这篇文章重点是前端开发中遇到编程题,解决测试用例的输入问题。

牛客网

牛客网成立于 2014 年 9 月,产品矩阵包括 IT 题库、在线编程练习、线上课程、交流社区、竞赛平台、笔面试服务。

简单地说,笔试面试之前,我们可以在牛客网上刷各种题,拿前端开发来说,包括 js,html,css,算法,计算机网络,计算机基础,甚至包括智力题,逻辑题都可以在牛客网上刷。

当我们进行笔试的时候,企业会给我们发送一个牛客网的试题链接,电脑会开启摄像头,录制我们答题的过程,以防作弊。

牛客网还可以进行远程视频面试。当你看到面试官时,面试官也在看着你。当着面试官的面,手撕代码了解一下?

除了刷题、笔试、面试,牛客网还有交流社区,上面有很多面经,甚至交友的帖子。上面的人说话好听又搞笑,超喜欢牛客网的沙雕们,上一个炫耀帖给予大焦虑后有段子作伴,痛并快乐着。

刚开始我不知道牛客网这个神器,了解了它的功能后,找工作大那段时间,几乎每天都会上去刷一下。

介绍了牛客网是干嘛的,那么最主要大问题是刷题大时候最需要注意的是什么呢?

答案是:输入。

在做题之前,我们要保证写的代码正确读取了测试用例的输入。否则,即使我们的代码是正确的,平台进行验证的时候也会判定是错误的。

牛客网在线面试前端

如上图所示,我们打开牛客网上的一道编程题,右边是代码输入模块。可以选择各种语言做题,前端有两个选择,一个是基于 V8 环境,另一个是基于 node,两者的区别在于读取测试的输入规则不同。

直接上代码:

JavaScript (V8 6.0.0)

牛客网提供了 readline 函数,不用填写任何参数,每执行一次,就读取一行。多行输入其实就是写多个 readline。

[多行输入的 图 ]

// 单行输入// 0 1while(line=readline){ // readline 得到的是字符串 let parameters = line.split(‘ ‘); let a = parseInt(parameters[0]); // 单行第一个参数 转化成了数字 let b = parseInt(parameters[1]); // 单行第二个参数 转化成了数字 print(a+b);}// 多行输入,且行数确定// 2// 0// 1let 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 // 1let 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 1let 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 // 1let 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 1while(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 12 3 1 // 到这里是第一组5 41 2 13 4 02 5 13 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 那里。}

补充两个赛码网官方给出的攻略,建议仔细读几遍:

输入输出教程:https://discuss.acmcoder.com/topic/5d47dfa8b99ad44605a1700b编程题考试须知:http://oj.acmcoder.com/ExamNotice.html

其他小平台或自建平台

其他平台相对用得不多,在做题之前要先上平台练习练习,熟悉平台的规则。

需要注意的是:检查能否跳出做题界面,到本地编辑器做题。众所周知,一些智能化的编辑器可以有自动代码补充功能,大大节约了做题的时间。牛客网和赛码网的编程题都是可以的,问答题不可以。

通用技巧

Similar Posts

发表评论

邮箱地址不会被公开。 必填项已用*标注