各位AP小伙伴们好呀~2022年5月4日进行的AP CSA考试已经结束,本场考试为线下纸笔考试,CB官网已更新了2022AP CSA北美FRQ真题。TD也邀请教研组老师针对此套「北美卷」,做出了对应的题目点评与考点分析,滑至文末即可领取。

AP CSA整体难度

今年的FRQ考题难度适中。题目本身的描述通俗易懂,虽然有文本较长的题目,比如第1题,但表达的要求和逻辑都不是特别复杂。考察的代码较为基础,例如第1和4题,只需要将基本的找最大最小的代码、计数和check all elements的代码,结合题目的要求稍加修改即可。

较为有难度的题目是第2题,题目考察class的继承,代码本身并不复杂,考察的内容也是中规中矩,没有涉及到特别难的知识。但是由于往年FRQ较少出现class的继承,可能会导致同学们在平时的学习中,对此类FRQ缺乏练习,导致答题不熟练。但如果平时对继承的内容有深入的理解,这道题也是能轻松拿下的。

AP CSA往年题目对比

FRQ 1、3、4题考察内容与2019、2020题目相差不大,分别考察Methods, ArrayList, 和2D Array。往年常考的计数问题、求和与求平均、找最大最小、check all elements等依然是今年考察的重点。

FRQ-2题则较为新颖,虽然依旧是考察写一个完整的class,但往年FRQ考得最多的是编写普通的class, 较少出现考察class的继承。而今年则主要以class的继承为背景设置题目,考察同学们对继承的理解和subclass的实现,涉及constructor 的编写,super的使用以及overriding等。

整体而言,今年的题目比较侧重于考察同学们对class的理解。每道题都包含了两个class,着重考察同学们对class的包含、继承等关系的深入理解。

AP CSA逐题讲解

FRQ-1:Game class

考察范围:Unit 3 if Statements ; Unit 4 iteration;Unit 5 Writing classes

本题主要考察同学们对if, 循环的使用,以及找最大最小,求和等代码的编写。题干虽然较长,但难度适中,逻辑较为简单。

(A)方法要求将3个level的分数进行累加,如果isBonus为true,还需要将总分数乘以3。注意要获得level 2的分数,必须满足level 1和2都同时达到。同理,只有level 1,2,3都达到,才能获得level 3的分数。

👉🏻逻辑:

(B)方法要求模拟num次play, 并返回最高的分数。这道题考察找最大最小的代码,要求必须调用play和getScore方法。

👉🏻逻辑:

FRQ-2: TextBook class

考察范围:Unit 5 Writing classes,Unit 9 Inheritance

本题主要考查对于inheritance的理解,题目涉及writing class, super的用法,overriding等。整体难度中等偏上。

[instance variables]

TextBook继承自Book,Book中已经定义了title和price两个instance variables, 题干中提到:A Textbook has an edition number。因此只需要给TextBook增加一个instance variable,用来存储edition number即可。

👉🏻逻辑:

[constructor]

由于constructor不能被继承,因此需要给TextBook编写constructor并在其内部使用super调用父类的constructor。

👉🏻逻辑:

[getEdition()方法]

要求返回edition的具体数值,这个method比较简单,直接return edition的结果即可。

👉🏻逻辑:

[getBookInfo()方法]

题目要求方法返回的String除了包含title和price之外,还要包含edition number。因此父类中getBookInfo()并不适用子类,子类需要进行overriding,要对getBookInfo()内部代码进行改写。

👉🏻逻辑:

注意,return这句代码不能写成:return edition + “-” + title + “-“+ price;这是错误的写法,因为title和price都是父类中的private 成员,不能直接访问。

由于题目中没有提供getPrice() method,只提供了getTitle(), 因此写成return edition + “-“+getTitle() + “-“+getPrice();也不是最佳方案。最好使用super.getBookInfo(),调用父类的同名方法,先得到title和price拼接的结果,再在前面拼接上edition即可。

[canSubstituteFor()方法]

方法要求当两个object具有相同的标题,并且当前object的edition大于等于参数的edition时返回true,否则返回false。

👉🏻逻辑:

FRQ-3:ReviewAnalysis class

考察范围:Unit 4 循环使用,Unit 7 ArrayList方法使用

题目考查对于ArrayList方法的使用以及求和求平均的代码书写。

(A)方法要求计算并返回allReviews中所有元素rating的平均值。可以使用for-each 循环或者普通的for循环traverse allReview的所有元素,使用getRating()获取对应元素的rating值,并计算累加和,最终除以allReview的长度,就可以得到所要求的平均值。

👉🏻逻辑:

(B)方法要求将allReviews中所有包含感叹号“!”的评论,以元素的index和“-”开头,以“.”结束,存储到新的ArrayList中,并将ArrayList进行返回。

👉🏻逻辑:

FRQ-4:Data class

考察范围:Unit 3 if 语句书写以及逻辑判断,Unit 4 循环使用,Unit 8 2D Array

题目的考察内容与2019年FRQ-4极其类似,都是以2D Array的traverse为基础,同时涉及Math.random()的使用,以及计数、check all elements等代码的书写。

(A)方法要求将grid的所有元素赋值为[1, MAX]之间的随机数,而且该随机数必须能被10整除而不被100整除。可以使用row-major order的方式,traverse grid的所有位置,利用Math.random()产生符合要求的随机数,并将该随机数填充到grid中的对应位置。

👉🏻逻辑:

(B)方法要求统计并返回grid按照升序排列的列数,是典型的计数和check all问题。可以traverse grid的所有column, 使用check all的代码结构检测每一列的所有元素,如果发现相邻元素不满足升序,标记该列false,否则标记为true。如果该列最终的标记为true,则计数,否则不计数。

👉🏻逻辑:

福利:2022FRQ真题

TD整理了CB目前在官网最新更新的2022年北美卷的AP FRQ真题免费分享给大家(答案官网将于9月份公布),有需要的同学可以扫下方二维码,添加TD客服马甲,给马甲发送暗号「2022frq」即可领取~其他科目真题将随官网更新陆续放入分享链接中,敬请关注~

推荐阅读

👉2022AP环境科学北美卷FRQ已放出 || 附领取方式与考情分析

👉2022AP心理学北美卷FRQ已放出 || 附领取方式与考情分析

👉疫情下AP考生图鉴:受疫情影响的中国大陆AP考生确定无法补考,大家都有什么反应?

👉CB通知:2022年中国大陆部分地区AP考试取消,无法提供补考!对申请有何影响?应对策略在此!

👉2022年美国政府与政治北美卷考试真题,免费下载领取!详细考情分析看这里