AP Computer Science A: چیزهایی که واقعاً اهمیت دارند
یک راهنمای عملی برای امتحان AP CS A — آنچه مورد آزمایش قرار میگیرد، نقاط چگونه از دست میروند، و کجا باید تمرکز خود را روی بقیه زمان مطالعه بگذارید.
امتحان AP Computer Science A دانشآموزانی را پاداش میدهد که عجیبوغریبهای Java را به خوبی میشناسند، نه تنها دانشآموزانی که برنامهنویسی را به صورت انتزاعی درک میکنند. دو بخش، هر بخش 90 دقیقه: 40 سؤال تستی که 50% نمره شما را تشکیل میدهند، و 4 سؤال پاسخ آزاد که 50% دیگر را تشکیل میدهند. بیشتر دانشآموزان نقاط را در بخش پاسخ آزاد نه به این دلیل که مفهوم را درک نمیکنند، بلکه به این دلیل از دست میدهند که Java syntax را تحت فشار زمان اشتباه استفاده میکنند.
چهار سؤال پاسخ آزاد تصادفی نیستند
College Board ساختار FRQ را سالها ثابت نگه داشته است. سؤال 1 تقریباً همیشه متدها و ساختارهای کنترلی روی یک کلاس است. سؤال 2 شامل کلاسی است که interface را پیادهسازی کند یا کلاس دیگری را توسعه دهد. سؤال 3 دستکاری آرایه 2D است. سؤال 4 ArrayList یا سایر کلاسهای collection را پوشش میدهد. دانستن این موارد در پیش معنی میدهد که میتوانید هر نوع سؤال را بهطور خاص تمرین کنید بهجای انجام مسائل عمومی "AP CS practice".
برای سؤال 3 بهخصوص، الگوی nested-loop را برای پیمایش آرایه 2D هم row-major و هم column-major حفظ کنید:
for (int row = 0; row < arr.length; row++) {
for (int col = 0; col < arr[row].length; col++) {
// process arr[row][col]
}
}
مُقیِّمان (که "Readers" نامیده میشوند) از rubric استفاده میکنند که برای خطوط خاصی از منطق درست اعتبار جزئی میدهند، حتی اگر پاسخ نهایی شما اشتباه باشد. نوشتن return null; بهعنوان placeholder وقتی روی متدی که object برمیگرداند گیر میخورید، بیشتر از اینکه آن را خالی بگذارید ارزش دارد.
تلههای تستی که سال به سال ظاهر میشوند
سؤالات درباره == در مقابل .equals() برای مقایسه String تقریباً در هر امتحانی ظاهر میشوند. == مراجع را برای objects مقایسه میکند؛ .equals() محتوا را مقایسه میکند. این به دانشآموزان سر میخورد زیرا string literal pool Java گاهی == را برای رشتههایی برمیگرداند که از نظر منطقی نباید از نظر مرجع برابر باشند، که دقیقاً نوع gotcha است که امتحان دوست دارد آن را آزمایش کند.
Operator precedence و integer division تلههای دیگری هستند که مکرر ظاهر میشوند. 7 / 2 به 3 نه 3.5 ارزیابی میشود، زیرا هر دو operand int هستند. یک operand را به double تبدیل کنید، مانند (double) 7 / 2، تا نتیجه اعشاری را بگیرید. سؤالات همچنین آزمایش میکنند که چه اتفاقی میافتد وقتی int و double را در expressions بدون explicit cast ترکیب کنید — بدانید که Java بهصورت خودکار در حسابی mixed ترویج میدهد اما وقتی نتیجه double را برای متغیر int باز اختصاص دهید حذف میکند.
Inheritance و polymorphism وزن بیشتری نسبت به آنچه به نظر میرسد دارند
Big Idea 4 (Class و Object Oriented Programming) در هر دو بخش ظاهر میشود، نه تنها در سؤالات مختص inheritance. تفاوت بین overriding و overloading را درک کنید، و بدانید که Java متدهای overridden را در runtime بر اساس نوع object واقعی نه نوع reference اعلامشده حل میکند:
Animal a = new Dog();
a.makeSound(); // calls Dog's version, not Animal's
این runtime polymorphism است، و امتحان با دادن مرجع یک نوع اشارهکننده به object کلاس فرزند آن را آزمایش میکند، سپس میپرسد کدام متد واقعاً اجرا میشود. Static methods و instance variables از این قانون پیروی نمیکنند — آنها بر اساس نوع اعلامشده حل میشوند، و این تمایز یک تله مورد علاقه امتحان است.
Array و ArrayList mechanics که باید خودکار باشند، نه جستجوشده
در طول امتحان به مستندات Java دسترسی نخواهید داشت. اینها را بدون تردید حفظ کنید:
array.length(بدون پرانتز، یک field است)list.size()(پرانتز، یک method است)list.add(index, element)همه چیز را به راست شیفت میدهدlist.remove(index)همه چیز را به چپ شیفت میدهد و عنصر حذفشده را برمیگرداند- حذف elements از ArrayList در حین iteration پیشرو با for-each loop
ConcurrentModificationExceptionپرتاب میکند؛ بهجای آن هنگام حذف با indexed loop بهعقب iterate کنید
آن نقطه آخر واقعاً یکی از bugs منطقی شایعترین در پاسخهای FRQ است، و Readers آن را دائماً میبینند.
چگونه دو هفته آخر خود را بگذرانید
FRQهای کامل گذشته را تحت شرایط زمانی واقعی انجام دهید — College Board امتحانهای واقعی گذشته را همراه با scoring guidelines منتشر میکند که دقیقاً نشان میدهند نقاط چگونه اعطا شدهاند. scoring guidelines را دقیق بخوانید؛ آنها نشان میدهند که partial credit واقعاً چقدر دقیق است، گاهی تا یک متغیر صحیح اعلامشده. برای تستی multiple choice، زمان review را روی recursion tracing و 2D array indexing متمرکز کنید، زیرا اینها جایی است که اشتباهات بیدقتی بیشترین نقاط را نسبت به سادگی مفهوم زیرین هزینه میکنند.
اگر میخواهید Java fundamentals را زیر این همه چیز بهطور محکمتری بسازید، یا مثالهای کارشدهای از classes، inheritance، و array manipulation را step by step شکستهشده ببینید، Python و Computer Science segments کتابخانه Korra Studio را برای تمرین ساختارمند بیشتر بررسی کنید.
با کمک هوش مصنوعی نوشتهشده، بازبینی و منتشرشده توسط Michal Pilch (CISSP)، Korra Studio.
این یکی از یادداشتهای پایگاه دانش Korra Studio است — پلتفرم هر موضوع را با مربی یکبهیک جفت میکند.
شروع رایگانarrow_forward