资讯详情
筛选

2022AP CSA北美卷FRQ已放出

来源:渊学通
发布时间:2023-01-15

2022AP CSA北美卷FRQ已放出

 

 

 

各位AP小伙伴们好呀~202254日进行的AP CSA考试已经结束,本场考试为线下纸笔考试,CB官网已更新了2022AP CSA北美FRQ真题。做出了对应的题目点评与考点分析,我们一起看看吧。

 

 

 

 

整体难度

 

 

 

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

 

 

 

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

 

 

 

往年题目对比

 

 

 

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

 

 

 

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

 

 

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

 

 

 

逐题讲解

 

 

 

 

FRQ-1Game class

 

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

 

 

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

 

 

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

 

 

????逻辑:

 

 

 

 

 

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

 

 

????逻辑:

 

 

 

 

 

 

FRQ-2: TextBook class

 

考察范围:Unit 5Writing classesUnit 9 Inheritance

 

 

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

 

 

[instance variables]

 

 

TextBook继承自BookBook中已经定义了titleprice两个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除了包含titleprice之外,还要包含edition number。因此父类中getBookInfo()并不适用子类,子类需要进行overriding,要对getBookInfo()内部代码进行改写。

 

 

????逻辑:

 

 

 

 

 

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

 

 

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

 

 

[canSubstituteFor()方法]

 

 

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

 

 

????逻辑:

 

 

 

 

 

 

FRQ-3ReviewAnalysis class

 

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

 

 

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

 

 

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

 

 

????逻辑:

 

 


 

 

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

 

 

????逻辑:

 

 

 

 

 

 

FRQ-4Data class

 

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

 

 

题目的考察内容与2019FRQ-4极其类似,都是以2D Arraytraverse为基础,同时涉及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,则计数,否则不计数。

渊学通留学
专注国际课程规划
在线咨询
电话咨询
预约测评