刷题

基础知识学完之后就可以刷题了。刷题是必要的环节,对于零基础的同学来说,不通过大量刷题来巩固知识通常情况下很难在转专业考试中取得较好的成绩。不少同学就是忽视了刷题的重要性,在考场上十分懵逼,反复追问自己“为啥我什么都学了但是什么都不会”,希望任何读到这里的读者都不要产生这种问题。

首先在刷题之前,确保自己按照《苏州大学 转专业通用指南》的建议加入了苏州大学转计科院的小群以及转专业的大群。小群中会提供大量的参考资料、选择题试题以及部分往年试卷(不全),这将会对你接下来的刷题过程有很大帮助。此外,你也可以在本指南的“往年题目与题解”部分找到过去三年的完整考试试卷与解答。

在刷题中很重要的一部分是往年的试卷。这些试卷可以在开始刷题之前做一点感受一下,有点逼数,然后在最后,也就是考前做一点,以防止遗漏。笔者建议在正式开始学习之前或是学了点皮毛之后就去刷一张卷子,刷题之前心里先有数对刷题是十分重要的,这可以帮助自己了解应该刷哪些题、如何刷题、刷到什么程度够用等问题

无论如何,由于真题很珍贵,不要随随便便做掉,做的时候尽量模拟考试环境。

关于选择题应该如何准备,可以直接下载小群群文件里的许多模拟题自己做,基本上做完其中的选择题就已经够用了。如果还担心自己在选择题中丢分,可以再找一点“Python 程序设计”课程的模拟卷的选择题做一做,即使不是我们学校的题目也可以做,甚至普及课程的题目也可以做,至少选择题内容相差不大,网上这样的题有很多。这方面可以稍微多下一点功夫,毕竟选择题丢分是很可惜的。

刷题网站有很多,但通常情况下还是最为推荐在 LeetCode(力扣)平台进行刷题练习,考试难度基本在 LeetCode 题库中的简单题与中等题的难度之间,大部分为简单题,少数为中等题难度(说实话,虽然目前考试中没出现过,但不排除以后出现困难题)。力扣同时也是毕业生为了提高面试能力而常用的刷题平台。

力扣 (LeetCode) 官网

下面简单说明一下应该如何在力扣刷题:

  1. 数据库、Shell 及多线程的题目,无论难度是简单、中等还是困难,都不可能出现在转专业考试之中。

  2. 在所有“算法”题中挑选简单题和中等题做即可。大致只需做到简单题能较快做出,中等题中偏基础的题能够基本掌握即可。(事实上,考试的难题基本上都是从中等题里摘的,自然是刷得越多越好,一般来说对动态规划和搜索的考察较多,对栈、队列、树、堆等数据结构的考察较少,即使考到也通常可以选择用动态规划/搜索的解法完成,然而仍是那句话,很难确定未来的考试难度,因此多学点总是没有坏处)。

  3. LeetCode 上的题目很多,不用全部做完。但是正如上面所说的,很多难题都是这里改编的,为了更好地涵盖考试内容,自然是做得越多越好。一般来说,做个两百多道应该是足够了。但你如果打算擦线过,做个几十道也可以,运气好说不准也能考得很不错。

下面介绍一下点开一道题后如何做题:

这里以第一题为例。点开第一题后会出现如上图所示的界面,首先需要在红框标识位置将语言选择为 Python 3,右侧的代码模板同时也会自动更改。

下面解释一下上图所示的代码模板是什么意思。如果读者已经学完了面向对象的部分,并且同时还记得函数的部分知识的话,上述代码的内容应该不难理解。

提前声明,为了通过转专业考试不需要了解上图中类似“nums: List[int]、target: int、-> List[int]”这样的代码是什么意思。这是 Python 3.5 新增的 type hints 语法,考试不会涉及。如果有读者对这些知识感兴趣,可以阅读本文附录 C“Type Hints(类型标注)”

上图所示就是对第一题的一个非常简单的解答。这个解答非常朴素易懂,但是效率很低。不过对于转专业考试的难度来说,写出这种程度的代码就已经足够了。

编写代码的过程中可以点击下面的“执行代码”按钮进行调试。编写完毕后可以点击下面的“提交”按钮提交代码,会给出代码是否正确的结果。如果代码运行错误,也会给出究竟是使用哪一个测试集进行测试时发生了错误。值得注意的是考试的时候可没有力扣这么方便的调试工具,做题的时候也没法调试,也不会告诉你哪一个测试集出错了,都是写完代码后就直接提交了。

LeetCode 自带的代码编辑器自然是比不上 PyCharm 之类的 IDE 的,甚至有时候比不上 IDLE 来得好用。因此自然可以先在这些编辑器中先编写代码,然后把代码复制到 LeetCode 中再运行。

如果你很喜欢使用 Visual Studio Code 来编写代码,那么或许可以尝试其第三方扩展库中的 LeetCode 力扣插件,该插件将力扣直接内置到了 VSCode 之中,用起来颇为方便。

刷题做到心里有数就可以了。一般来说,刷到往年真题的大部分题目(五六题)能够很快做出来,并且剩下的题能在稍微思考后做出来(至多一题需要大量认真的思考做出来)就可以了。至于具体要刷多少题,因人而异。总之刷题的目标是为了巩固与掌握已学的知识,而不是为了刷题而刷题。如果你感到刷题并没有为你带来多少提升,那么你可以先尝试回头学习一下相关知识再来继续刷题。

问:刷题很困难怎么办?感觉第一题都很难做出来,需不需要补算法知识?

简单回答:不需要。大家一开始做题都是不适应的,也都是慢慢刷着才熟练的。一开始的时候碰到不会的题先试着做十五分钟,做不出来就看力扣上的题解,讲得都很不错。到后面熟悉了之后就不常碰到做不出来的题目了,这时候建议延长一点思考时间,我个人是至少一道题想三十分钟做不出来才去看题解。

中间如果有碰到新知识,比如链表、动态规划这些不了解,且看题解也看得一知半解的话,就自己在网上直接找讲解,知乎简书甚至 CSDN 都可以的,能看懂就行。没有必要去看系统的算法课或是看书学算法,在这个阶段为了准备转专业考试而开始系统学算法花费的时间太多了,有可能来不及,并且耽误刷题。我不阻止学有余力的同学自行开始系统学习算法,但如果感到自己没有能力这么做就不要去尝试了。

刷题一开始总是有一段不适应的时间,不管你事先有没有系统学过算法都是如此,有过算法学习背景只能缩短这段不应期,而不能杜绝。毕竟上手刷题与单纯学习知识是两套不同的思维方式,因此唯一的办法就是尝试适应这种新的思维方式。

最后更新于