PAT 计算机程序设计能力考试

2021年10月6日 | 分类: 【编程】

【报名】

官网:https://www.patest.cn/

报名:https://www.patest.cn/reg

参考:https://blog.nowcoder.net/n/5a31513394d443ef887fe1439a0e108c

【考试】

PAT-2021年冬季考试
报名已开始
报名截止
2021年12月9日 17:00 (北京时间)
考试时间
2021年12月19日 13:30 (北京时间)

PAT 计算机程序设计能力考试

请阅读本说明,按照步骤及注意事项报名。请在报名前,点击链接仔细阅读 PAT 考生须知 。

注意:本次考试包含线上考场和线下考场,请务必仔细阅读以下内容,以免不能正常参加考试。

2021年春季考试将继续以线上考试为主,考生可选择“线上考场”进行报名,须自备考试环境,详见上述考生须知。但部分考点可以有条件地开放线下考场。报名线下考场时,请考生务必关注不同考点的不同要求,以免耽误考试。线下考场要求在页面上边选择考点省份后可见。线下考场要求将来可能会发生变化,届时考试中心会与考生联系,按考生意愿全额退款或转为线上考试。

第1步:如果没有报名帐号,请进入报名网站点击右上角“注册”。
旧 PAT 报名网站用户请先前往 旧报名网站用户绑定 页面绑定账号。

请注意:为避免恶意占坑以及黄牛党行为,管理员将随时删除以伪造的身份证号码注册的帐号, 并且在注册后,考生将不再有权限修改自己的姓名和身份证号码。请务必准确填写注册信息 ! 请上传本人 1 寸近照电子版(标准大头照,不是写真、漫画、卡通或宠物头像),您的信息将出现在准考证和 PAT 证书上。 注册但没有上传照片的用户将无法报名考试。 友情提醒:在“编辑资料”的个人信息中,可填写 1000 字“自我介绍”。 考生可将缩写版个人简历填在此处,以便用人单位查阅。填写的信息越多,越有可能得到企业的注意。 不填写该信息的考生通常被认为无求职需要,企业一般不主动打扰。

第2步:注册成功后将看到欢迎信息。请点击“考试报名”,选择自己希望参加的考试的级别、时间。

第3步:点击地图上自己想去的省份,在该省份考场列表中选择自己想去的考场 ,点击“报名”。

第4步:在“发布时间设置”中选择自己希望成绩被推送给企业的时间,默认为本场考试结束后立刻发送。 另外报名页中列出了全部PAT联盟企业及其优惠政策,请选择允许哪些企业查看您的哪些信息,最后点击“确认”。 PAT 将在考试结束后将信息根据您的意愿发送给联盟企业。请注意:如果不做任何改动,系统默认全部勾选。

第5步:仔细核实页面上的报名信息,确认无误后,点击“付款”,在线完成缴费。

请注意:PAT 系统将自动删除报名后超过 48 小时未付费的报名者; 在报名截止前一周将删除报名后超过 24 小时未付费的报名者; 缴费后再要求退考,考试中心将扣除所缴费用的 25% 作为人工处理的手续费; 报名截止前 3 天( 72 小时)开始将不接受退款请求。

【课程】

课程:https://www.icourse163.org/course/zju-93001

微博:https://weibo.com/chenyuell
介绍:https://baike.baidu.com/item/%E9%99%88%E8%B6%8A/12189569

学了一门编程语言不知道能干啥?来学数据结构就对啦! 学会编程相当于会砌猪圈的泥瓦匠,学完数据结构就会盖个双层小楼啦~ 同时还可以一窥构筑摩天大厦的奇门武功! 欢迎勤奋的小白活泼乱入!十周修炼,得入门径,一代大侠,从此出发 —— 快来吧~ ^_^
—— 课程团队
课程概述

“数据结构”是计算机科学与技术专业、软件工程专业甚至于其它电气信息类专业的重要专业基础课程。它所讨论的知识内容和提倡的技术方法,无论对进一步学习计算机领域的其它课程,还是对从事大型信息工程的开发,都是重要而必备的基础。

程序设计解决问题往往有多种方法,且不同方法之间的效率可能相差甚远。程序的时间和空间效率,不仅跟数据的组织方式有关,也跟处理流程的巧妙程度有关。本课程将介绍并探讨有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮助学员学会数据的组织方法和一些典型算法的实现,能够针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。

注意:本课程只涉及最基础的数据结构和与之关联的最基本的算法,更多更复杂的数据结构和经典的解决优化问题的算法,将在后续课程中介绍。

本课程的特点是,对每一种重要的经典数据结构,我们都会从实际应用问题出发,导出其定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例和练习题帮助学员增强对理论的感性认识,从而明白这些数据结构为什么存在以及在什么情况下可以最好地解决什么样的问题。为了兼顾起点不同的学员,课程中特意设计了“小白专场”系列,手把手教授如何将解决问题的抽象算法用具体的代码实现,从而引导初学者更好地入门。

坚持完成本课程学习、并按照要求完成所有练习的学员,应该具备了PAT(Programming Ability Test)甲级需要的所有基础知识,辅以充分的英语阅读能力和熟练的编程能力,应可以取得优良成绩。

课程大纲

第一讲 基本概念(1:15:26)[陈越]

1.1 什么是数据结构(4节共32:43)

1.2 什么是算法(3节共22:41)

1.3 应用实例:最大子列和问题(3节共20:02)

第二讲 线性结构(2:19:00)[何钦铭]

2.1 线性表及其实现(6小节共45:04)

2.2 堆栈(4小节共39:51)

2.3 队列(2小节共15:45)

2.4 应用实例:多项式加法运算(1小节10:37)

小白专场:多项式乘法与加法运算- C实现(3小节共27:43)

第三讲 树(上) (1:50:08)[何钦铭]

3.1 树与树的表示(5小节共38:54)

3.2 二叉树及存储结构(2小节共16:43)

3.3 二叉树的遍历(4小节共37:02)

小白专场:树的同构 – C语言实现(2小节共17:29)

第四讲 树(中)(1:06:31)[何钦铭]

4.1 二叉搜索树(3小节共20:57)

4.2 平衡二叉树(2小节共22:53)

小白专场:是否同一棵二叉搜索树- C实现(3小节共22:41)

线性结构之习题选讲[陈越]:Reversing Linked List(3小节共13:08)

第五讲 树(下)(1:53:28)[何钦铭]

5.1 堆(4小节共30:05)

5.2 哈夫曼树与哈夫曼编码(3小节共19:52)

5.3 集合及运算(2小节共12:57)

小白专场:堆中的路径 – C语言实现(1小节共7:51)

小白专场[陈越]:File Transfer – C语言实现(4小节共42:43)

第六讲 图(上)(1:29:32)[陈越]

6.1 什么是图(3小节共24:02)

6.2 图的遍历(4小节共22:22)

6.3 应用实例:拯救007(1小节共14:40)

6.4 应用实例:六度空间(1小节共8:06)

小白专场:如何建立图- C语言实现(6小节共20:22)

第七讲 图(中)(2:11:35)[陈越]

树之习题选讲-Tree Traversals Again(2小节共12:16)

树之习题选讲-Complete Binary Search Tree(3小节共25:47)

树之习题选讲- Huffman Codes(3小节共18:11)

7.1 最短路径问题(6小节共56:38)

小白专场:哈利•波特的考试- C语言实现(4小节共18:43)

第八讲 图(下)(57:02)[陈越]

图之习题选讲-旅游规划(2小节共8:49)

8.1 最小生成树问题(2小节共20:16)

8.2 拓扑排序(2小节共27:57)

第九讲 排序(上)(1:11:44)[陈越]

9.1 简单排序(冒泡、插入)(4小节共23:26)

9.2 希尔排序(1小节共9:29)

9.3 堆排序(2小节共10:27)

9.4 归并排序(3小节共28:22)

第十讲 排序(下)(54:20)[陈越]

10.1 快速排序(4小节共25:25)

10.2 表排序(2小节共12:41)

10.3 基数排序(3小节共12:13)

10.4 排序算法的比较(1小节共4:01)

第十一讲 散列查找(1:43:39)[何钦铭]

11.1 散列表(2小节共13:43)

11.2 散列函数的构造方法(2小节共13:05)

11.3 冲突处理方法(6小节共36:26)

11.4 散列表的性能分析(1小节10:26)

11.5 应用实例:词频统计(1小节6:01)

小白专场[陈越]:电话聊天狂人- C语言实现(4小节共23:58)

第十二讲 综合习题选讲(1:14:41) [陈越]

习题选讲-Insert or Merge(2小节共11:51)

习题选讲-Sort with Swap(0,*)(2小节共11:06)

习题选讲-Hashing – Hard Version(1小节共7:15)

串的模式匹配(KMP算法)(5小节共44:29)
预备知识

学过一门编程语言,具有一定编程基础,即可理解主要内容,因为数据结构本质上是不依赖于编程语言的,且编程练习平台可以接受二十余种语言代码的提交。但由于算法描述多用类似C语言的伪码,且“小白系列”仅讲解C语言的算法实现,所以如果学过C语言会更容易接受。

如果还对计算机处理离散结构的基本理论和方法有较为系统的理解(即预修“离散数学”),则对更扎实地掌握本课程内容有很大帮助,但并不是必须的。

证书要求

为积极响应国家低碳环保政策, 2021年秋季学期开始,中国大学MOOC平台将取消纸质版的认证证书,仅提供电子版的认证证书服务,证书申请方式和流程不变。

电子版认证证书支持查询验证,可通过扫描证书上的二维码进行有效性查询,或者访问 https://www.icourse163.org/verify,通过证书编号进行查询。学生可在“个人中心-证书-查看证书”页面自行下载、打印电子版认证证书。

完成课程教学内容学习和考核,成绩达到课程考核标准的学生(每门课程的考核标准不同,详见课程内的评分标准),具备申请认证证书资格,可在证书申请开放期间(以申请页面显示的时间为准),完成在线付费申请。

认证证书申请注意事项:

1. 根据国家相关法律法规要求,认证证书申请时要求进行实名认证,请保证所提交的实名认证信息真实完整有效。

2. 完成实名认证并支付后,系统将自动生成并发送电子版认证证书。电子版认证证书生成后不支持退费。

参考资料

推荐教辅和资料:

1.《数据结构》(第2版),陈越、何钦铭、徐镜春、魏宝刚、杨枨 编著,高等教育出版社,2016年6月

2.《数据结构学习与实验指导(第2版)》,陈越、何钦铭、徐镜春、魏宝刚、杨枨 编著,高等教育出版社,2019年7月

3. 课程练习网站:

拼题A(Programming Teaching Assistant):https://pintia.cn/ 本课程的编程练习将在这里布置。

PAT(Programming Ability Test)官网:https://www.patest.cn/ 提供全部考试真题与报名入口。

常见问题

0。我应该怎么设置账号开始学习呀?

答:同时在两个窗口登录拼题A和中国大学MOOC,进入拼题A用户名下的“个人中心”找“我的绑定”,点击“绑定中国大学MOOC”,妈妈再也不用担心你学完了没成绩啦!然后继续在“个人信息”中输入本学期的“邀请码”,就可以“应邀做题”啦~

1。我不是计算机专业的,能学这门课吗?

答:只要会写程序就能学。

2。我数学不好,能学这门课吗?

答:会算术就可以了…… 有个别例子涉及基础数学概念(比如什么是多项式),花一分钟上网搜索一下定义就可以搞定。

3。我不会写程序,能学这门课吗?

答:不能…… 还是先学会写程序再说吧~ 隔壁翁恺老师的C语言讲得很好懂,推荐~

4。学这门课每周要花多少时间?

答:平均4-8小时,开始可能轻松一点,后面的课业会越来越重 —— 这样你才能长进嘛~ 建议开课前先去拼题A做一下自测:如果1小时内能做到满分,这门课你是可以轻松搞定的;如果需要2小时,那么你学这门课每周估计要花5小时以上;如果3小时还拿不到满分,那你这门课可能要花8小时以上(说不好是每周还是每天……)

5。为什么我的程序在自己机器上跑得好好的,提交到拼题A网站就各种错误?

答:因为你自己用于测试自己程序的数据太弱了同学…… 另外一定注意严格按照题目要求输出结果,不要输出如“Please input …”之类的多余信息。要用标准输入输出,不要从文件读写。不要急,想想ACM竞赛的世界冠军们也是这样哭着走过来的,心理就平衡了~

6。拼题A的测试数据能不能公布呀?

答:不能。公布数据后一定会有人直接打印结果的…… 不过,如果在某组数据上卡了比较长的时间,可以到论坛上哭诉,老师会在一段时间后打开那组数据的提示信息。

7。什么是PAT甲级,能吃?

答:PAT是Programming Ability Test的缩写,是一个考试,分顶级、甲级、乙级三个级别。证书真的能吃 —— 就如托福考试在留学申请中的作用一样,百余家联盟企业划定了PAT分数线,对达到分数线的考生给予免除与编程能力测试相关的笔试,直接邀请进入面试的机会。数十家企业的HR排队打电话请你去面试,想想也是醉了……

8。什么时候考PAT最合适?

答:一般大三下半学期春季考试,凭成绩在企业春招中找份实习工作,暑假先去实践一下,对找工作非常有帮助。
或者大四开学参加秋季考试,正对上企业大规模秋招的时间。
万一秋季没考好、并且秋招时没找到理想的工作,还可以参加冬季考试、同时选择春季才把成绩推送给企业。
万一冬季也没考好,还有最后一次春季考试,这样大四阶段还可以抓住最后春招的机会。

拼题A常见问题及解答

评分

试题的解答提交后由评分系统评出即时得分,每一次提交会判决结果会及时通知;系统可能的反馈信息包括:
结 果 说 明
等待评测 评测系统还没有评测到这个提交,请稍候
正在评测 评测系统正在评测,稍候会有结果
编译错误 您提交的代码无法完成编译,点击“编译错误”可以看到编译器输出的错误信息
答案正确 恭喜!您通过了这道题
部分正确 您的代码只通过了部分测试点,继续努力!
格式错误 您的程序输出的格式不符合要求(比如空格和换行与要求不一致)
答案错误 您的程序未能对评测系统的数据返回正确的结果
运行超时 您的程序未能在规定时间内运行结束
内存超限 您的程序使用了超过限制的内存
非零返回 您的程序结束时返回值非 0,如果使用 C 或 C++ 语言要保证 int main 函数最终 return 0
段错误 您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起
浮点错误 您的程序运行时发生浮点错误,比如遇到了除以 0 的情况
内部错误 评测系统发生内部错误,无法评测。工作人员会努力排查此种错误

常见问题

*我应该从哪里读输入,另外应该输出到哪里?

如果没有特别说明,你的程序应该从标准输入(stdin,传统意义上的“键盘”)读入,并输出到标准输出(stdout,传统意义上的“屏幕”),不要使用文件做输入输出。由于系统是在你的程序运行结束后开始检查输出是否是正确的,对于有多组测试数据的输入,可以全部读入之后再输出,也可以处理一组测试数据就输出一组。

*为什么我的程序交在这里得到编译错误,而我在自己的机器上已经编译通过了?

本系统所使用的编译器和你在自己机器上使用的可能有区别,请留意几个常见的地方:

本系统是 64 位 Linux 系统,使用的编译器版本和编译参数可以参见编译器帮助

Java 代码需使用 Main 作为主类名

Visual C++ 6.0 和 Turbo C++ 3.0 (及它们的更低版本)有较多违背 C++ 标准(ISO/IEC 14882)的地方,不要使用它们来判断 C++ 程序语法上是否有问题

C++ 下 64 位整数的类型是 long long,不要使用 __int64

*为什么我的程序得到了“返回非零”?

返回零表示一个程序正常结束,如果没有返回零,则系统认为程序没有正常结束,这时即便输出了正确的内容也不予通过。

C 或 C++ 代码请确认 int main 函数最终会返回 0,不要声明为 double main 或者 void main

有异常的语言,请确认程序处理了可能抛出的异常

*程序的时间和内存占用是如何计算的?

程序的运行时间为程序在所有 CPU 核占用的时间之和,内存占用取程序运行开始到结束占用内存的最大值。

*为什么同样的程序运行时间和所用内存会不同?

程序运行时间会受到许多因素的影响,尤其是在现代多任务操作系统以及在使用动态库的情况下,多次使用同一输入运行同一程序所需时间和内存有一些不同是正常
现象。我们的题目给出的运行限制一般为标准程序的若干倍,也就是说,选用正确的算法和合适的语言,那么运行限制是富余的。

*不同语言的时间限制和内存限制是相同的吗?

是相同的,我们认为选择合适的编程语言也是一项必备技能,所以没有为不同语言设置不同的限制条件。

*我提交的代码可以做什么,有什么限制吗?

没有。这里没有系统调用白名单,也没有针对语言限制可使用的包或库。虽然我们比较宽容大度,但还是请不要做不符合道义的事情。如果你需要使用我们系统没有提供的某个语言的某个库,或者需要更改编译参数,可以联系我们。

其他问题

在考试或比赛中遇到其他问题请咨询现场工作人员。