为什么java在自己这是正确的但过不了oj_5000字长文,计算机保研机试介绍及准备策略!高分过过过!...

4b4aff2c694283742b9e20c1b55a5a01.gif

写在前面

算法不论在保研机试还是工作面试中都是重要的考核标准,算法基础好的人逻辑思维更强,在工程中能提高问题的解决效率,能用更简单的方法、更精简的代码解决实际问题,而在保研复试中也能体现个人的编程思维和能力,大大加分。下面带大家了解机试的重点和准备策略,希望对小伙伴们有所助益。

1 考点解读

1.  数学知识要求

算数:素数,整出,余数,求模,不定方程;

代数:函数,方程,多项式;

解析几何:笛卡尔坐标系,点到直线的举例,极坐标;

复数:模,夹角,矢量的合成和分解;

线性代数:行列式,矩阵,向量,线性方程组;

概率论:大数定理,贝叶斯公式,正态分布,极大似然估计。

2.  编程语言要求

C/C++:结构体、数组、指针、位运算、标准输入输出、文件操作、递归、数据结构及其变体、函数模板、宏替换、汇编知识。

Java:基本语法、面向对象、网络编程、接口、集合、IO、多线程、内部类、异常与保护、数据结构及变体、设计模式,反射,XML,多核与并发,软件测试。

2 准备策略

(1)熟悉OJ系统

OJ系统(Online Judge在线测评系统),提供题目的描述、输入输出格式、样例输入及输出,用户将代码提交给OJ进行评测,系统返回给用户相应结果。结果一般有八种:

AC(Accepted),答案正确;

CE(Compile Error),编译错误:此类结果一般是由于代码本身错误或者使用库函数却未添加相应头文件;

MLE(Memory Limit Exceeded),内存超限:如果程序使用了太多空间,超过题目限制;

OLE(Output Limit Exceeded),输出超限:输出过量内容,一般检查输出内容;

PE(Presentation Error),格式错误,修改程序中错误输出格式即可解决;

RE(Runtime Error),运行错误:检查是否有浮点错误、段错误(非法访问内存)、递归层数过多等;

TLE(Time Limit Exceeded),运行超时:算法时间复杂度大,或是程序陷入死循环;

WA(Wrong Answer),答案错误。

(2)能力提升

入门:

数据结构与算法是机试中最需要提升的能力。对于萌新来说。推荐阅读《大话数据结构》 (程杰 / 清华⼤学出版社)来入门,这本书的好处是能让⼈看得下去,使用C语言进行讲解示例,而且讲述了每种数据结构如何运用在我们熟悉的生活中,对数据结构的理解很有帮助。之后是算法的学习,推荐 《啊哈!算法》 (啊哈磊 / ⼈民邮电出版社),这本书里面讲解了栈、队列、列表、DFS、BFS、图的遍历、最短路径、树、堆、并查集、最⼩生成树等算法内容,而且内容风趣,里面对于具体算法都有代码和注释讲解,很适合刚懂C语言和数据结构的初学者学习。

刷题:

建议题库:LeetCode。LeetCode是⼀个在线编程的OJ网站,可以在线编写、编译、调试(改变输⼊样例的测试值),支持多种编程语言。

它将所有的题目分为了三个难度等级, Easy 、 Medium 和Hard,其次,它几乎对每个题目都标注了 Tag 标签(现在也叫Topics ),比如数组 Array 、动态规划 Dynamic Programming 、字符串 String 、树 Tree 、哈希表 Hash Table 、深度优先搜索 Depth-first Search 、二分搜索 Binary Search 、两指针 Two Pointers 、广度优先搜索 Breadth-first Search 、贪心 Greedy 、栈 Stack 、回溯 Backtracking 、链表 Linked List 、位运算 Bit Manipulation 、堆 Heap 、图 Graph 、排序 Sort 、并查集 Union Find 、⼆叉搜索树 Binary Search Tree 、队列 Queue 、线段树 Segment Tree 、拓扑排序 Topological Sort …可以看到这些标签几乎涉及了所有的基础算法知识,而且分类明确,我们在刷题的时候可以根据自己的薄弱环节进行针对性刷题。

既然题目按难度分为了 Easy 、 Medium 和 Hard ,我们可以按照题号顺序根据题目的难度等级练习,先解决 Easy 的题目( Easy 是真的简单),再攻克 Medium 的题目( Medium 有的难有的简单),最后 Hard 可以量力而为(除了公司面试,⼀般很少考 Hard ),这样的顺序能够保证你刷题过程中覆盖到了绝⼤多数算法题型。当然你也可以按照题目每次提交的通过率 Acceptance 从高到低刷,这样大致难度也是从易到难,不过还是要参考⼀下题号的大⼩,因为题号越靠前刷过的人越多, Acceptance 的百分比就越具有客观性。比如你看到⼀道题 Acceptance 很高,但是题号很靠后,那是因为能够坚持到这个题号的都是大佬,萌新进来刷个几十题(还很有可能是靠前的题号)就跑了。所以大佬们刷的多的题目即使很难说不定通过率也很高。所以 Acceptance 不是绝对的,但对于题号⼩的题目有⼀定参考价值。

如果你已经刷过别的OJ,对于算法已经了解了大概,只是有个别类型的题型掌握的不是很好,那就可以像上面所说的那样按照 Tag 来刷,针对自己的薄弱环节进⾏刷题,收效更快。但是 Tag 的缺点就是可能会形成惯性思维,⽐如⼀道题你没有思路,看到标注的 Tag 是 Hash Table ,就⼀下子明白要用hash映射来做,但是真正面试的时候只会给题目可不会告诉你这道题的 Tag 是什么。

以上就是两种刷LeetCode的顺序,根据自己的需求来选择,最好是两种结合,先广度优先地覆盖各类算法题型,顺便培养自己的编码能力和语言能力,再针对自己做的不好的题型深度优先地刷对应的Tag 。因为LeetCode每道题目的简短特性,你可以利用碎⽚时间进行刷题,比如课间、晚上没事刷⼀两题。

目光放长远一些,到了以后准备公司面试,有的公司是纯粹的“白板编程”,比LeetCode这种在线编程的要求还要高,比如给你张A4纸让你⼿写代码,或者给你一支白板笔直接在白板上手写代码。有些人摸到键盘在有了括号匹配和代码提示的情况下写代码没有任何问题,但是让你徒手写代码就写不出来了。所以在平时练习代码的时候也要注意这方面能力的培养和训练,而这对机试能力也是绝对有帮助的。

考场准备:

刚在考场座位坐下的时候,可以做以下几件事情:

1、打开IDE试试好不好用,如果你是⼀个又会 C/C++ 又会 Java/Python 的大佬,可以都试⼀下,毕竟有的时候会发现,⼀道题用xx语言处理起来有点复杂但是用另⼀个语言解决起来会更简单。给自己的IDE写个包含输⼊、输出的 "hello,world" ,运⾏⼀下看看有没有问题,然后打个断点试试调试好不好用。问题可以随时找考场老师协商解决。

2、试⼀下鼠标键盘好不好用,可能机房的机子个别会有故障,比如可以坐下来在键盘上输⼊⼀句 "The quick brown fox jumps over the lazy dog" 来检验键盘的26个字⺟是否好用(因为这句话包含了所有英文单词)。

3、提前建好做题的时候需要用到的cpp文件,并写好常用头文件和 main 函数和 return 0 。如果你用的的dev,在直接新建⼀个 .cpp 文件后,保存千万不要把这个 .cpp 文件直接保存在盘符里,比如D盘、E盘这些,⼀定要在盘符里面建立⼀个文件夹然后将 .cpp 文件保存在这个文件夹里,要不然编译调试的时候会出问题;还有就是不要直接保存在桌面,因为桌面⼀般情况下都在C盘,C盘绝⼤多数情况是还原盘,也就是机房的这台机子如果⼀不小心重启了,整个还原盘可能都会被重置,你刚刚保存的代码文件就消失了。所以可以问⼀下考场的⽼师哪⼀个是非还原盘符,⼀般情况下是D盘E盘,也就是机子重新启动后上⼀次保存的文件还会在的盘。我的习惯是只建立⼀个 .cpp文件,每次的题目都写在同⼀个 .cpp 文件里,也有的人喜欢建立4-5个 .cpp 文件、⼀道题目放在⼀个文件里,做完⼀道就换⼀个文件。由于我只用⼀个 .cpp 文件写代码,所以我⼀般还会打开记事本,保存在刚刚建立的那个文件夹里,用来粘贴我做完题目后的代码,毕竟对考试系统不太信任万⼀我AC后的代码弄没了,或者有题目没AC想换种思路写,但是不确定能不能按照新的思路完美写出来,就把旧的思路写⼀半没AC的代码先保存在记事本里。

4、头文件⼀般写以下几个常用的:

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

int main() {

  int n;

  return 0; }

也可以直接用#include 代替以上所有。在比赛中,使用这个文件是一个好主意,当你想减少时间浪费在做选择,特别是当你的排名对时间很敏感的时候。这还减少了编写所有必要头文件的所有杂务,使得不必为使用的每个函数都记住GNU c++的所有STL。但是也有缺点:它不是GNU C++库的标准头文件,所以如果你在一些编译器(除了GCC)上编译你的代码,可能会失败,比如MSVC没有这个头文件。并且使用它会包含很多不必要的东西,并且会增加编译时间。大家可以根据经验选择最适合的来应对机试。

5、所有机试都是严防作弊的,所以任何时候都不要尝试打开搜索引擎或者其他浏览器。

6、考试过程中,如果⼀道题尤其是简单的题因为⼀两个测试点没有通过,不要⼀直纠结导致后面的题目没时间看,注意控制好时间,很多时候后面的题目考的还是挺简单的,如果因为前面⼀两分错过了后面几十分就很不划算了。

以上就是岛主分享给大家的机试介绍和经验总结,希望大家采用科学的方式进行刷题和总结,那么保研的机试就不会是问题。祝大家夺得高分,成功上岸! 

a4af7fcc59fbbe24652bd064a188fc13.png

为了更好地助力大三学子保研,

我们建了2021计算机大三保研交流群,

需要的小可爱进群来,

每天24小时答疑!

? ? ?

1d7fa06cf2d110e8e441505946a93010.png

本群已开启进群验证

想加群的小可爱

可以添加团团学姐哦!

66afedd3cd1f2a1aa114ee949012c15e.png

【团团学姐微信】

9f0bb060fd9c70f081ce89b70db9447a.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值