FRQ workshop: the 4 question types · Workshop FRQ: 4 loại câu hỏi
The free-response section
- The AP CSA exam has two parts. Part 1 is multiple choice. Part 2 is free response (you write Java by hand).
- There are always 4 free-response questions (FRQs), and they come in the same 4 types every year.
- This lesson is a quick map of the 4 types. Knowing the pattern makes the exam much less scary. You can do this!
Phần tự luận
- Đề thi AP CSA có hai phần. Phần 1 là trắc nghiệm. Phần 2 là tự luận (bạn viết tay bằng Java).
- Luôn có 4 câu hỏi tự luận (FRQs), và chúng xuất hiện theo 4 loại tương tự nhau mỗi năm.
- Bài học này là bản đồ nhanh của 4 loại. Hiểu quy luật giúp đề thi kém đáng sợ hơn nhiều. Bạn có thể làm được!
Type 1: Methods and Control Structures
- You write one or two methods using loops,
if, and simple math onint,double,boolean, andString. - No class to design — the class is given. You just fill in the method body.
- This is the most "plain coding" question. Lessons 1–8 cover everything you need.
Loại 1: Phương thức và Cấu trúc Điều khiển
- Bạn viết một hoặc hai phương thức sử dụng vòng lặp,
if, và toán học đơn giản trênint,double,boolean, vàString. - Không cần thiết kế class — class đã được cung cấp. Bạn chỉ cần điền thân phương thức.
- Đây là câu hỏi "code thuần túy" nhất. Bài 1–8 bao quát tất cả những gì bạn cần.
public class Grades {
// Count the scores that are 60 or more.
public static int countPassing(int[] scores) {
int count = 0;
for (int s : scores) {
if (s >= 60) {
count = count + 1;
}
}
return count;
}
public static void main(String[] args) {
int[] scores = {72, 40, 95, 60, 33};
System.out.println(countPassing(scores)); // 3
}
}
Type 2: Class Design
- You are given a description of a class and must write the whole class.
- That means: instance variables, a constructor, and the methods they ask for.
- Remember
privatefields, the constructor with the same name as the class, andthis.field = field. Lesson 6 covers this.
Loại 2: Thiết kế Class
- Bạn được đưa ra mô tả của một class và phải viết toàn bộ class đó.
- Điều đó có nghĩa là: biến instance, một constructor, và các phương thức họ yêu cầu.
- Nhớ
privatefields, constructor có tên giống như class, vàthis.field = field. Bài 6 bao quát nội dung này.
public class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public int getScore() {
return score;
}
}
Type 3: Array / ArrayList
- You work with an
ArrayList(or sometimes an array) and write code that traverses it. - Common jobs: find a value, count items, remove items, or build a new list.
- Watch the index carefully when you remove while looping. Lessons 9–11 cover this.
Loại 3: Mảng / ArrayList
- Bạn làm việc với một
ArrayList(hoặc đôi khi là mảng) và viết code để duyệt qua nó. - Các công việc thường gặp: tìm giá trị, đếm số lượng mục, xóa mục, hoặc xây dựng danh sách mới.
- Cẩn thận chỉ số khi bạn xóa đang duyệt. Bài 9–11 bao quát vấn đề này.
// Count the Strings longer than 3 letters.
int count = 0;
for (int i = 0; i < words.size(); i++) {
if (words.get(i).length() > 3) {
count++;
}
}
return count;
Type 4: 2-D Array
- You work with a 2-D array (a grid of rows and columns).
- You use nested loops: an outer loop for rows, an inner loop for columns.
- Common jobs: sum a row, sum a column, find the largest value, or count matches. Lesson 12 covers this.
Loại 4: Mảng 2-D
- Bạn làm việc với một mảng 2-D (lưới gồm hàng và cột).
- Bạn sử dụng vòng lặp lồng nhau: vòng lặp ngoài cho hàng, vòng lặp trong cho cột.
- Các công việc thường gặp: tính tổng một hàng, tính tổng một cột, tìm giá trị lớn nhất, hoặc đếm số lần khớp. Bài 12 bao quát nội dung này.
// Add up every value in the grid.
int total = 0;
for (int r = 0; r < grid.length; r++) {
for (int c = 0; c < grid[r].length; c++) {
total += grid[r][c];
}
}
return total;
Exam strategy: read carefully
- Read the whole question first. Underline what the method must return and what its parameters are.
- Look at the example table they give. It shows exactly what your code should produce.
- Copy the method header they give you. Do not change its name, parameters, or return type.
Chiến lược làm bài: đọc kỹ
- Đọc hết câu hỏi trước. Gạch chân những gì phương thức phải trả về và tham số của nó là gì.
- Nhìn vào bảng ví dụ họ đưa ra. Nó cho thấy chính xác code của bạn nên tạo ra kết quả gì.
- sao chép header phương thức họ cung cấp. Đừng thay đổi tên, tham số, hoặc kiểu trả về của nó.
Exam strategy: write methods that work
- Write the base of a loop first, then fill in the body. Get it running in your head step by step.
- Traverse correctly: start the index at
0, stop atlength(orsize()); check the edges. - Use
returnwith the right type. If the header saysint, return anint.
Chiến lược làm bài: viết các phương thức hoạt động
- Viết nền tảng của vòng lặp trước, sau đó điền thân vào. Hãy để nó chạy trong đầu từng bước.
- Duyệt đúng: bắt đầu chỉ số ở
0, dừng lại ởlength(hoặcsize()); kiểm tra các biên. - Sử dụng
returnvới kiểu đúng. Nếu phần đầu hàm ghiint, hãy trả về mộtint.
Exam strategy: small wins add up
- You get points for parts that work, even if the whole method is not perfect. Always write something.
- Use only Java you know from this course. Simple, correct code beats clever code.
- Check your work with the example values from the question before you move on.
Chiến lược làm bài: lợi thế nhỏ cộng dồn
- Bạn nhận điểm cho các phần hoạt động, ngay cả khi toàn bộ phương thức không hoàn hảo. Luôn viết something.
- Chỉ sử dụng Java bạn biết từ khóa học này. Code đơn giản, chính xác thắng code thông minh.
- Kiểm tra lại công việc của bạn với các giá trị ví dụ từ câu hỏi trước khi chuyển sang phần tiếp theo.
You are ready
- The 4 types never change: methods, class design, array/ArrayList, and 2-D array.
- Every skill you need for these four FRQ types is in lessons 1–12. Practice each type a few times and the pattern becomes familiar.
- Stay calm, read carefully, and write the code you know. Good luck on the exam!
Bạn đã sẵn sàng
- 4 loại này không bao giờ thay đổi: phương thức, thiết kế class, mảng/ArrayList, và mảng 2-D.
- Mọi kỹ năng bạn cần cho bốn loại FRQ này nằm trong bài 1–12. Thực hành mỗi loại vài lần và quy律 trở nên quen thuộc.
- Giữ bình tĩnh, đọc kỹ, và viết code bạn biết. Chúc may mắn trong kỳ thi!
Common mistakes
- Match the method header exactly: the return type and the parameters.
- Read the whole prompt before you start coding.
Lỗi thường gặp
- Khớp chính xác header phương thức: kiểu trả về và các tham số.
- Đọc hết prompt trước khi bắt đầu coding.
Now you try
- Try one FRQ-style method yourself — the same shape as Type 1 above.
- Press Check answer to compile and run it on the server.
Bây giờ bạn thử
- Thử một phương thức kiểu FRQ của riêng bạn — cùng cấu trúc như Loại 1 ở trên.
- Nhấn Check answer để biên dịch và chạy nó trên máy chủ.
FRQ practice — Type 1 (Methods). Complete countAtLeast(int[] scores, int limit) so it returns how many values in scores are at least limit (greater than or equal). Use a loop and an if, like the worked example above. · Thực hành FRQ — Loại 1 (Phương thức). Hoàn thành countAtLeast(int[] scores, int limit) để trả về số lượng giá trị trong scores là ít nhất limit (lớn hơn hoặc bằng). Sử dụng vòng lặp và một if, giống như ví dụ giải thích ở trên.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
FRQ practice — Type 2 (Class design). Complete the Rectangle class: store width and height from the constructor, and finish area() so it returns width × height. This is exactly what a Type 2 FRQ asks for. · Thực hành FRQ — Loại 2 (Thiết kế Class). Hoàn thành class Rectangle: lưu trữ width và height từ constructor, và hoàn thành area() để trả về width × height. Đây chính xác là những gì một câu hỏi FRQ Loại 2 yêu cầu.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.