牛客网最全在线笔试、编程攻略(建议收藏) 您所在的位置:网站首页 python的计算题怎么做 牛客网最全在线笔试、编程攻略(建议收藏)

牛客网最全在线笔试、编程攻略(建议收藏)

2023-09-23 01:37| 来源: 网络整理| 查看: 265

来源:牛客网

整理:大数据肌肉猿

一、常见问题

设备问题

问: 浏览器使用问题?

答:浏览器推荐使用最新版本的Chrome或者火狐浏览器,如果某一浏览器出现问题可以换个浏览器重新打开页面。

问: 摄像头如何调成前置?

答:进入答题页面前,可以在笔试调试设备页面可以直接切换摄像头;

笔试过程中如果需要切换摄像头,可以先进入调试设备页面

(exam.nowcoder.com/test/video),切换好摄像头后,结束调试,返回笔试答题页面,刷新页面即可,可能会造成离开一次页面。

 

问: 摄像头出错?

答:请确认你的摄像头连接正常,并且浏览器没有禁用(地址栏旁边有个摄像头图标上面有小叉就是禁用了)。笔试前可以打开

exam.nowcoder.com/test/video可以去这个页面检查设备。

问: 拍照失败怎么办?

答:拍照上传失败,请检查浏览器有没有adblock adguard等这种广告屏蔽插件,如有请关闭后重试,笔试前最好禁用所有浏览器插件和无关的应用程序。

问:小程序扫码异常(部分企业的笔试不会开启该功能)

答:请按以下步骤检查:

1.手机是否已联网

2.微信更新至最新版

问:答题时提示手机异常   (部分企业的笔试不会开启该功能)

答:请确保手机网络连接正常,使用最新版微信APP,手机需要一直保持在小程序页面保持常亮(不要锁屏),建议笔试插上手机电源,防止手机意外关机

笔试前可以打开nowcoder.com/cts/mini/test测试手机小程序,测试时间为3分钟,测试过程中出现手机异常,可以在本帖下面留下手机型号。

答题相关

 

问:只收到笔试短信通知,没有邮件通知,无法获取笔试链接怎么办?

答:请前往投递简历使用的邮箱垃圾箱查看,如果仍不能找到,就关注公众号:牛客招聘助手  ,绑定收到短信通知的手机号码查询。

问:打开笔试链接提示“不符合本场考试资格”,应该怎么处理?

答:请确认你是否拷贝了完整的笔试链接(含16位ID)并粘贴至浏览器地址栏。

问:没有收到邮件通知,怎么办?

答:如果你收到短信通知,但没有收到邮件通知,无法获取笔试链接,你可以关注微信公众号“牛客招聘助手”,绑定你收到短信的手机,查询笔试链接。

问:确认个人信息时,发现个人信息有误?

答:应企业要求,部分个人信息考生不能修改,请通过信息下方“点此反馈”入口,更正你的个人信息;如果可以修改,直接修改即可。

问: 笔试答题(非编程题)可以离开页面?

答: 不同公司的要求不一样,请仔细阅读考试须知,如要求不能离开页面,笔试过程请务必不要跳出页面,跳出页面会做作弊标记的哦。

 

问:问答题可以上传图片吗?

答: 问答题支持使用手机扫码上传图片,也支持本地上传。

    

 

问:回答了的题目可以再次查看吗?

答: 试卷中的题目分为多个目录,每个目录的题目提交后,就不能再次进入该目录;如果该目录未提交,你可以通过点击答题卡切换到该目录的其他题目。

   

问:笔试未结束,关闭了答题页面,可以继续答题吗?

答: 笔试中途因误操作关闭答题页面,如果在考试时间内,你可以重新复制笔试链接,打开页面继续笔试。

   

问:笔试过程中发现题目问题或者其他系统使用问题,怎么办?

答:你可以通过右侧底部的在线咨询小窗选择问题类型后发消息咨询。

 

编程题相关

问: 编程题可以离开页面,进行本地调试吗?

答: 不同公司的要求不一样,请仔细阅读考试须知,点击进入编程题时也会有弹窗提示,请注意是否支持本地IDE,不支持时,请务必不要跳出页面,跳出页面会做作弊标记的哦。

问: 在线编程题是否可以使用本地IDE编辑和调试代码?

答: 部分企业会严格考察考生编辑代码的能力,会禁止考生离开编程题答题页面,不能使用本地IDE调试代码,你可以通过代码框上方的自测功能进行调试;允许使用本地IDE的笔试,可以使用本地IDE调试代码。

问:为什么我本地通过了,但是线上提交说没通过所有测试用例?

答:牛客网的每个编程题都有10-50组测试数据,你的代码在本机可以通过仅仅是通过了样例数据,可能存在边界条件考虑不周导致更多的测试数据没有通过,所以会返回答案错误。

问: 编程题的输入输出怎么写?

答:编程题分两种考核方式:

核心代码模式:只需要实现函数核心功能并返回结果,无须处理输入输出;

ACM模式:按照题目输入输出说明和例题给出的输入输出规范处理输入输出,不同的语言有不同的输入输出规范。

问: 没有通过所有测试用例是答案错了还是复杂度不对?

答:如果只提示没有通过所有的测试用例,那就不是超时的问题也不是编译的问题,仅仅是测试用例有部分没有通过,可能是代码考虑不够全面。

问: 编程题怎么算分?

答:题目会按照case通过比例给分,可以多次提交,不同考试会有不同计分规则,分为按照所有提交的最高分计分(如果多次提交的最高分一致,以最后一次最高分提交得分)、按照最后一次提交的最高分得分。

问:在线编程题支持哪些语言进行编译?

答:牛客在线编程题目前支持C++11、C++14、Java、C、Python、Python3、pypy2、pypy3、C#、PHP、JavaScript、R、Go、Ruby、Swift、ObjC、Pascal、Sql、TCL、matlab、bash等  语言,不同企业可能会对编程语言有限制要求,请仔细阅读笔试邮件通知,邮件中会有编程题语言的相关说明。

问:编程题代码直接输入到代码框就完成了吗?

答:编辑好代码后,一定要点击 保存并提交 !!!

根据不同计分模式会有所不同,如果试卷设置是按照所有提交的最高分计分,系统会在提交该模块时帮你自动提交一次;如果  试卷设置  是按照最后一次提交计分,系统不会帮着提交,总之:一定要点击 保存并提交 !!!

其他问题

问:考试过程中可以短暂离开吗?比如上厕所

答:可以,请快去快回!

问: 为什么我没有切页面弹窗说我跳出了?

答:请关闭所有可能屏幕提示的软件,包括QQ、OUTLOOK、杀毒软件等,只要屏幕失焦都算成是退出,如下图所示弹窗,均为跳出页面。

问:笔试时网络不好,页面加载慢,怎么办?

答:你可以将网络切换为手机热点,完成笔试。

重要提示:请在收到考试通知时,仔细阅读通知邮件中的注意事项,每次笔试的要求可能不一样。

二、编程判题规则

1. 判题系统的编译器信息

C/C++:clang++ 3.9 -std=c++14 -O -Wsign-compare -Wc++11-extensions

JAVA:javac 1.8 -encoding=utf-8

Python: python 2.7.3

Python3: python 3.2.3

C#: mcs 4.0.1

Go: go 1.8.3

2. 判题系统的输入输出

2.1对于这种有函数定义的题目,你只要完成函数,返回相关的值就可以,不需要处理任何输入输出,不要在函数里输出任何东西。

2.2 对于传统ACM的OJ模式题目,你的程序需要stdin(标准输入)读取输入,然后stdout(标准输出)来打印结果,举个例子,你可以使用c语言的scanf或者c++的cin来读取输入,然后使用c语言的printf或者c++的cout来输出结果。代码禁止读取和写入任何文件,否则判题系统将会返回运行错误。OJ一次处理多个case,所以代码需要循环处理,一般通过while循环来出来多个case。

以下是A+B题目的样例代码:

计算a+b的和: 每行包含两个整数a和b 对于每行输入对应输出一行a和b的和 输入 1 5 输出 6

C64位输出请用printf("%lld") 

1

2

3

4

5

6

7

#include

intmain() {

   inta,b;

   while(scanf("%d %d",&a, &b) != EOF)//注意while处理多个case

       printf("%d\n",a+b);

   return0;

}

C++64位输出请用printf("%lld")

1

2

3

4

5

6

7

#include

using namespace std;

intmain() {

   inta,b;

   while(cin >> a >> b)//注意while处理多个case

       cout

       Scanner in =newScanner(System.in);

       while(in.hasNextInt()) {

     //注意while处理多个case             

            inta = in.nextInt();

           intb = in.nextInt();

           System.out.println(a + b);

       }

   }

}

C#

1

2

3

4

5

6

7

8

9

publicclassProgram {

  publicstaticvoidMain() {

   string line;

   while((line = System.Console.ReadLine ()) !=null) {//注意while处理多个case

     string[] tokens = line.Split();

     System.Console.WriteLine(int.Parse(tokens[0]) +int.Parse(tokens[1]));

   }

  }

}

Python

1

2

3

4

5

6

7

8

9

10

importsys

try:

    whileTrue:

        line = sys.stdin.readline().strip()

        ifline =='':

            break

        lines = line.split()

        printint(lines[0]) +int(lines[1])

except:

    pass

Python3

1

2

3

4

importsys 

forlineinsys.stdin:

   a=line.split()

   print(int(a[0])+int(a[1]))

JavaScript(V8)

1

2

3

4

5

6

while(line=readline()){

   varlines = line.split(' ');

   vara = parseInt(lines[0]);

   varb = parseInt(lines[1]);

   print(a+b);

}

JavaScript(Node)

var readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.on('line', function(line){ var tokens = line.split(' '); console.log(parseInt(tokens[0]) + parseInt(tokens[1])); });

R语言

1

2

3

4

5

6

7

8

9

10

11

lines=readLines("stdin")

for(l in lines){

       if(l ==""){

               break;

       }

       ll = strsplit(l," ")[[1]]

       a=ll[1];

       b=ll[2];

       cat(as.numeric(a)+as.numeric(b));

       cat('\n');

}

matlab

1

2

3

4

5

6

7

8

try

    while 1

        line = input('', 's');

        lines = strsplit(line);

        printf("%d\n", str2num(lines{1}) + str2num(lines{2}));

    end

catch

end

3. 判题系统状态

等待评测: 评测系统还没有评测到这个提交,请稍候  正在评测: 评测系统正在评测,稍候会有结果  编译错误:您提交的代码无法完成编译,点击“编译错误”可以看到编译器输出的错误信息  答案正确: 恭喜!您通过了这道题   运行错误: 您提交的程序在运行时发生错误,可能是空指针

部分正确: 您的代码只通过了部分测试点,继续努力! 格式错误: 您的程序输出的格式不符合要求(比如空格和换行与要求不一致)  答案错误: 您的程序未能对评测系统的数据返回正确的结果  运行超时: 您的程序未能在规定时间内运行结束  内存超限: 您的程序使用了超过限制的内存  异常退出: 您的程序运行时发生了错误  返回非零: 您的程序结束时返回值非 0,如果使用 C 或 C++ 语言要保证 int main 函数最终 return 0  浮点错误: 您的程序运行时发生浮点错误,比如遇到了除以 0 的情况  段错误 : 您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起  多种错误: 您的程序对不同的测试点出现不同的错误  内部错误:   请仔细检查你的代码是否有未考虑到的异常情况,例如非法调用、代码不符合规范等。

三、那些年我在牛客踩过的坑

循环输入输出处理常见问题

1、为什么需要循环输入输出:通常来说OJ对于每道题里面有.in和.out文件,分别表示测试数据的输入和输出。如果某些编程题的所有数据都只做在一个.in和一个.out中,这样就会变成多组测试了,所以需要提交的代码中循环处理。

2、处理方法:其实这个问题可以避免,就是编程题后台每个样例做一组对应的.in和.out文件,这样就变成单组测试,代码就不需要循环处理,但是平时练习的题目质量不一,这个问题都会出现。

代码里面循环处理了即使是单组测试也会完全没问题,所以为了偷懒,可以全写成循环处理。

3、还有一个坑:如果测试数据是多组的,但是恰巧你代码里面需要些标记数组,map,set等,在循环内一定记得清空,不然可能会产生前面的测试样例影响了后续数据的答案。

对于各种语言的一些基本知识

1、出题人通常会使用C/C++编写标程,数据也是由标程制造的,所以使用跟出题人一样的语言会比较稳妥

2、C/C++效率比较高,通常来说一般OJ对于一道题目的时限限制会区分C/C++和其他语言,通常处理方式是假设C/C++时限是1s,其他语言就会给2倍时限,甚至更多。

3、关于cin cout和scanf printf。做题的时候尽量使用scanf printf。下面告诉一个小常识,不要惊讶:在数据量比较大的情况下cin cout比scanf printf慢挺多。一旦遇到大数据量,光是读入就有可能跪掉。你或许可以使用std::ios::sync_with_stdio(false); 这条语句关掉scanf和cin的同步,加快效率。但是即使这样cin还要慢,而且一旦使用了这条语句,scanf和cin混用可能就会造成一些奇怪的错误

4、Java相关:Java整体效率大概比C/C++慢2倍以上,但是Java写编程题也没什么问题,主要就是处理好各种输入输出的情况。

5、python等等其他语言, 做编程题首先要自己在平台上多练习不同的数据格式的读取方法,还有就是效率可能偏低,另外有些语言封装的功能太丰富了,以至于代码里各种函数完成的最终代码,笔试官或者面试官对于算法的考察并不想看到这样的code。

6、开辟数组空间最好根据题目的数据范围要求来,这里可能会造成runtime error,如果代码中递归的深度太深也可能爆栈空间导致 runtime error。

关于输出格式

格式问题经常令人抓狂,其实主要都有几个常见的坑

1、行末空格:比如我输出需要打印多个数需要使用空格分隔的时候,我们循环使用printf("%d ",x);这种会很方便,但是这样会导致行末多一个空格,后台系统会严格比对你的输出和.out文件,这样也会被判错误

2、换行问题,对于每个样例,建议输出完全之后都换行一下。对于一些题目,可能就是不换行就导致了后面输入数据错位,那就肯定不可能过了。

关于时间复杂度分析:

通常来说一般的系统1s能跑的算法量级是不足1e8的,所以做题的时候评估算法效率很重要,直接判断你的做法能否通过,当然这是以C/C++为标准的,其他语言自己乘个时间倍数。

举个例子,比如题目n = 1e5,那么我就可以很敏感的知道我的算法需要一个 O(n) 或者 O(nlogn)。平方复杂度直接超时!

最后关于 "我本地能通过,交上去就是不对"

这个问题很蠢!通不过就是有一些问题。一个是要累积经验,分析到底可能出现的问题在哪里。另外不要使用一些奇怪的函数和行为。之前有见过有人使用了windows和linux平台那个功能的函数名都不一样的奇葩函数,所以要使用标准的跨平台的库函数。各个语言一般平台都会告诉你每种语言给的编译器版本,这个环境信息也是很重要的。

推荐阅读 外企面试,哪有你想象的那么难!精心整理的ebay大数据面试题(全)秋招失利,如何把握春招?(大四、研三)秋招失利,如何把握春招?(大四、研三)我是锦锋,谈谈拿到66个大数据校招offer的经历 从简历被拒到收割今日头条offer,我花了一年时间 阿里技术面全A,终面却被产品经理拉下马,我不服安心实习 or 全心秋招 ?(附实习跑路路线及秋招攻略)我面试了100多家公司,总结了全网最详细的在线面试经验

扫描下方二维码

添加好友,备注【交流群】

拉你到学习路线和资源丰富的交流群



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有