100% found this document useful (3 votes)
9K views22 pages

AP Computer Science A Practice Test 2018

This document contains a practice exam for the AP Computer Science A exam in 2018. It includes 15 multiple choice questions covering topics like conditionals, inheritance, arrays, sorting algorithms, and string methods. The questions test concepts like code equivalence, class relationships, array manipulation, algorithm efficiency, and mathematical expressions in code. The document provides the questions, answer options, and no additional context.

Uploaded by

Kelvin W
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (3 votes)
9K views22 pages

AP Computer Science A Practice Test 2018

This document contains a practice exam for the AP Computer Science A exam in 2018. It includes 15 multiple choice questions covering topics like conditionals, inheritance, arrays, sorting algorithms, and string methods. The questions test concepts like code equivalence, class relationships, array manipulation, algorithm efficiency, and mathematical expressions in code. The document provides the questions, answer options, and no additional context.

Uploaded by

Kelvin W
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

AP CSA Practice Exam 2018

Barbara Ericson
Georgia Tech

1. Which of the following code segments is equivalent to the code below?

if (x >= 1) x = x * 3;
if (x > 3) x = 0;

(A) x = 0;
(B) if (x > 1) x = 0;
(C) if (x > 3) x = 0;
(D) if (x >=1) x = 0;
(E) none of the above

2. Consider the following class definitions.

public class Student {


public String getFood() {
return "Pizza";
}
public String getInfo() {
return "Studying";
}
}
public class GradStudent extends Student {
public String getFood() {
return "Taco";
}
public String getInfo() {
super.getInfo();
return "Eating";
}
}

What is printed when the following code is executed?


Student s = new GradStudent();
System.out.println(s.getInfo());

(A) Pizza
(B) Taco
(C) Studying
(D) Eating
(E) Studying
Eating
3. Given the following code which of the answers best describes the conditions needed
for temp to be true when it is returned?

boolean temp = false;


int count = 0;
for (int testVal : a)
{
if (testVal == val)
{
temp = true;
return temp;
}
}
return temp;

(A) Whenever the first element in a is equal to val


(B) Whenever a contains any element which equals val.
(C) Whenever more than 1 element in a is equal to val.
(D) Whenever exactly 1 element in a is equal to val.
(E) Whenever the last element in a is equal to val.

4. Consider the following code segment.


List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.set(1,"c");
list.add(2, "d");
list.set(2, "e");
list.add("g");
System.out.println(list);

What is printed as a result of executing the code segment?

(A) [a, c, e, d, g]
(B) [c, e, d, b, g]
(C) [a, c, e, g]
(D) [a, b, e, d, g]
(E) [a, c, e, d, b, g]

5. Given the following class declarations:

public class Car {


private String make;

public Car(String theMake) {


make = theMake; }
public String getMake() {
return make;
}
}

public class ElectricCar extends Car {

public ElectricCar() {
super("Ford");
}
public ElectricCar(String theMake) {
super(theMake);
}
}

Which of the following will cause a compile time error?

(A) Car myCar = new Car();


(B) Car myCar1 = new ElectricCar();
(C) ElectricCar myCar2 = new ElectricCar("Ford");
(D) Car myCar3 = new Car("Ford");
(E) Car myCar4 = new ElectricCar("Toyota");

6. Given the following declarations.

public class Vechicle {


public void test(Car x, SportsCar y) {}
}

public class Car extends Vechicle {


}

public class SportsCar extends Car {


}
Also consider the following code that appears in a different class.

Vechicle v = new Vechicle();


Car c = new Car();
SportsCar sporty = new SportsCar();

Which of the following is a correct call to test?

(A) v.test(sporty,v);
(B) sporty.test(c,c);
(C) v.test(sporty,c);
(D) sporty.test(sporty,v);
(E) c.test(sporty,sporty);
7. When is the following Boolean expression true (a and b are integers)?

(a < b) && !(b > a)

(A) Always true


(B) Never true
(C) a=b
(D) a<b
(E) a>b

8. The following incomplete method is intended to sort the array a in ascending order.

public void sort() {


int maxCompare = a.length - 1;
int lIndex = 0;
int temp = 0;

for (int i = maxCompare; i > 0; i--) {


lIndex = i;
for ( /* missing code */ ) {

if (a[j] > a[lIndex]) {


lIndex = j;
}
}

temp = a[i];
a[i] = a[lIndex];
a[lIndex] = temp;
}

Which of the following could be used to replace /* missing code */ in the


code above so that the method always sorts the array a in ascending order?

(A) int j = i - 1; j >= 0; j--


(B) int j = i + 1; j < a.length; j++
(C) int j = i; j < a.length; j++
(D) int j = i; j >= 0; j--
(E) int j = i - 1; j > 0; j--
9. Which of the following code will produce the following output?

1
22
333
4444

I.
for (int i = 1; i < 5; i++) {
for (int j = i; j > 0; j--) {
System.out.print(i+1);
}
System.out.println();
}
II.
for (int i = 0; i < 5; i++) {
for (int j = 0; j < i; j++) {
System.out.print(i);
}
System.out.println();
}
III.
for (int i = 1; i <= 5; i++) {
for (int j = i; j > 0; j--) {
System.out.print(i);
}
System.out.println();
}
IV.
for (int i = 1; i < 6; i++) {
for (int j = 0; j < i; j++) {
System.out.println(i);
}
}
V.
for (int i = 0; i < 5; i++) {
for (int j = 0; j < i; j++) {
System.out.print(i+1);
}
System.out.println();
}
(A) I
(B) II
(C) III
(D) IV
(E) V

10. Consider the following code segment.

int i = a random number such that 1 <= i <= n;

for (int a = 2; a <= i; a++)


for (int b = 1; b < i; b++)
System.out.println("*");

What is the minimum number of times that * will be printed?

(A) 0
(B) 1
(C) 2
(D) n - 1
(E) n - 2

11. Given the following class declarations.

public class Animal {


// constructors not shown
public void eat()
{ // code not shown
}
}

public class Dog extends Animal {


// constructors not shown
public void growl()
{ // code not shown
}
}

Assume that the following declaration is in a different class.


Animal d = new Dog();

Which of the following will compile without error?


I. d.eat();
II. d.growl();
III. ((Dog) d).growl();
(A) I only
(B) II only
(C) III only
(D) I and III only
(E) I, II, and III

12. Given the following method and what would the result be when m is executed?
public void m(int[][]p) {
int height = p.length;
for (int row = 0; row < height / 2; row++) {
for (int col = 0; col <p[0].length; col++) {
p[row][col] = p[height - row - 1][col];
}
}
}

(A) Copies the values from the top half to the bottom half of the 2D array
(B) Copies the values from the left halt to the right half of the 2D array
(C) Copies the values from the bottom half to the top half of the 2D array
(D) Copies the values from the right half to the left half of the 2D array
(E) All values remain the same.

13. Consider the following code segment:


int p = 5;
int q = 2;
int sum = 0;

while (p <= 8)
{
sum += p % q;
p++;
q++;
}
What is the value of sum after the code is executed?
(A) 1
(B) 0
(C) 13
(D) 7
(E) 4
14. What is the output from mystery(4321) when mystery is defined as follows:

//precondition: x >=0
public static void mystery (int x) {

System.out.print(x % 10);
if ((x / 10) != 0) {
mystery(x / 10);
}
}

(A) 12344321
(B) 1234
(C) 4321
(D) 43211234
(E) 32144123

15. Which of the following reasons for using an inheritance hierarchy are valid?

I. Methods from a superclass can be used in a subclass without rewriting or


copying code.
II. Objects from subclasses can be passed as arguments to a method designed for
the superclass
III. Objects from subclasses can be stored in the same array
IV. All of the above
V. None of the above
(A) I and II
(B) I and III
(C) IV
(D) V
(E) I only

16. Which of the following correctly shows the iterations of an ascending (from left to
right) insertion sort on an array with the following elements: {7,3,8,5,2}?

(A) {3,7,8,5,2}, {3,7,8,5,2}, {3,5,7,8,2}, {2,3,5,7,8}


(B) {2,3,8,5,7}, {2,3,8,5,7}, {2,3,5,8,7}, {2,3,5,7,8}
(C) {3,7,8,5,2}, {3,5,7,8,2}, {2,3,5,7,8}
(D) {2,3,8,5,7}, {2,3,5,8,7}, {2,3,5,7,8}
(E) {2,7,3,8,5}, {2,3,7,8,5}, {2,3,5,7,8}
17. Which of the following would be the correct result from the following expression?

12310 - 128 + 1012 + D16

(A) 130
(B) 133
(C) 131
(D) 132
(E) 136

18. Consider the following code segment:

public static boolean check(String s)


{
return s.length() >= 2 &&
(s.substring(0,1).equals(s.substring(1,2)) ||
check(s.substring(1)));
}

Pick the answer below that best describes all the cases when this method will return
true.

(A) s contains two or more of the same characters


(B) s contains two or more of the same characters in a row
(C) s starts with two or more of the same characters
(D) s ends with two or more of the same characters
(E) s contains only two characters

19. Consider the following code segment.


for (int k = 0; k < 20; k = k + 1)
{
if (k % 2 == 1)
System.out.print((k + 1) + " ");
}

What is printed as a result of executing the code segment?

(A) 1 3 5 7 9 11 13 15 17 19
(B) 0 2 4 6 8 10 12 14 16 18
(C) 2 4 6 8 10 12 14 16 18 20
(D) 3 6 9 12 15 18
(E) 0 2 4 6 8 10 13 14 16 18 20
20. Consider the following partial class definitions.

public class C1 {
private int num;
private String name;

public C1(int theNum) {


num = theNum;
}

public C1(String theName) {


name = theName;
}
// other methods not shown
}

public class C2 extends C1 {


// methods not shown
}

Which of the following constructors are valid for C2?


I. public C2 () { }
II. public C2 (int quan) {super (quan); }
III. public C2 (String label) { super(label); }

(A) All three are valid


(B) II only
(C) III only
(D) II and III
(E) None are valid

21. Which of the following statements about interfaces is (are) true?

I. One interface can inherit from another


II. All methods declared in an interface are abstract methods (can’t have a
method body).
III. All methods declared in an interface are public methods.

(A) II only
(B) III only
(C) I and II only
(D) I, II, and III
(E) I only
22. Consider the following code segment

public static void test(int[] a, int y)


{
if (a.length > 1)
a[1] = a[1] * 2;
y = y * 2;
}

What are the values of s and b after the following has executed?
int[] s = {3,4};
int b = 4;
test(s,b);

(A) s={3, 8}; b=4;


(B) s={3, 4}; b=4;
(C) s={6, 4}; b=4;
(D) s={3, 8}; b=8;
(E) s={6, 8}; b=8;

23. Consider the following code segment.

String str = "012345";


for (int i = 0; i < str.length() - 1; i++) {
System.out.print(str.substring(i, i+2));
}

What is printed as a result of executing this code segment?

(A) 012345
(B) 0112233445
(C) 001122334455
(D) 012123234345
(E) You will get an IndexOutOfBoundsException

24. A two-dimensional array is used to represent a matrix. The declaration is below:

private int[][] matrix = new int[2][3];

public static void changeMatrix(int[][] matrix) {


for (int y = 0; y < matrix.length; y++)
for (int x = 0; x < matrix[y].length; x++)
if(y==x)
matrix[y][x] = Math.abs(matrix[y][x]);
}

If matrix is initialized to be: {{-1, -2, 3},{4, -5, 6}}. What will the values in matrix be
after changeMatrix(matrix) is called?
(A) {{4, -5, 6},{-1, -2, 3}}
(B) {{4, 5, 6},{1, 2, 3}}
(C) {{1, 2, 3},{4, 5, 6}}
(D) {{-1, -2, 3},{4, -5, 6}}
(E) {{1, -2, 3},{4, 5, 6}}

25. Given the following partial class definitions:

public class Book implements Comparable


{ // code for class
}
public class Dictionary extends Book
{ // code for class
}

Which declaration will result in a compiler error?

(A) Book b = new Book();


(B) Dictionary d = new Book();
(C) Comparable c = new Book();
(D) Book b2 = new Dictionary ();
(E) Comparable c2 = new Dictionary();

26. Consider the following code segment

for(int i = 0; i <= 3; i++)


{
for(int j = 1; j <= 5; j+=2)
{
System.out.println("*");
}
}

How many times will a ‘*’ be printed?

(A) 3
(B) 6
(C) 9
(D) 12
(E) 15
27. What is printed when the following main method is executed?

public class Searcher


{
private int[] arr = {1,3,5,8,9};

public int mystery(int low, int high, int num) {


int mid = (low + high) / 2;
if (low > high) {
return -1; }
else if (arr[mid] < num) {
return mystery(mid + 1, high, num); }
else if (arr[mid] > num) {
return mystery(low, mid - 1, num); }
else return mid;
}

public static void main(String[] args)


{
Searcher s = new Searcher();
System.out.println(s.mystery(0,4,8));
}
}

(A) -1
(B) 0
(C) 1
(D) 2
(E) 3

28. What are the values of a and b after the for loop finishes?

int a = 10;
int b = 3;
int t = 0;
for (int i = 1; i < 4; i++)
{
t = a;
a = i + b;
b = t - i;
}

(A) a = 5 and b = -2
(B) a = 6 and b = 7
(C) a = 6 and b = 3
(D) a = 12 and b = 1
(E) a = 5 and b = 8
29. Consider the following method. What value is returned from a call of mystery(5)?

public static int mystery(int n)


{
if (n == 0)
return 1;
else
return 3 * mystery (n - 1);

A) 243
B) 0
C) 3
D) 81
E) 27

30. Given the following class declarations. Assume that Parent p = new
Child(); appears in a client program. What is the result of the call p.m1()?

public class Parent {


public void m1() {
System.out.print("pm1");
m2();
}
public void m2() {
System.out.print("pm2");
}
}

public class Child extends Parent {


public void m1() {
super.m1();
System.out.print("cm1");
}
public void m2() {
super.m2();
System.out.print("cm2");
}
}

(A) pm1pm2cm1cm2
(B) pm1pm2
(C) pm1pm2cm2cm1
(D) pm1cm1
(E) pm1
31. Which of the following correctly shows the iterations of an ascending (from left to
right) selection sort on an array with the following elements: {6,3,8,5,1}?

(A) {3,6,8,5,1}, {3,5,6,8,1}, {1,3,5,6,8}


(B) {1,3,8,5,6}, {1,3,8,5,6}, {1,3,5,8,6}, {1,3,5,6,8}
(C) {3,6,8,5,1}, {3,6,8,5,1}, {3,5,6,8,1}, {1,3,5,6,8}
(D) {1,3,8,5,6}, {1,3,5,8,6}, {1,3,5,6,8}
(E) {1,6,3,8,5}, {1,3,6,8,5}, {1,3,5,6,8}

32. Given the following method.


public static int test(int[] a, int v)
{
for (int i = 0; i < a.length; i++)
{
if (a[i] == v)
return i;
else return -1;
}
}

What would test return if a = {0,2,3,4} and v = 2?


(A) 0
(B) 1
(C) 2
(D) -1
(E) The code will not compile

33. Given the following code:

String s1 = new String("bye");


String s2 = new String("bye now");
String s3 = s2.substring(0,3);
String s4 = new String("bye");

Which of the following would return true?

I. s1.equals(s3)
II. s1 == s4
III.s1.equals(s4)

(A) I and III only


(B) II and III only
(C) I only
(D) II only
(E) III only
34. What is the output from the following code?
String s = "Computer Science is fun!";
String s1 = s.substring(0,8);
String s2 = s1.substring(1);
String s3 = s2.substring(1,3);
System.out.println(s3);

(A) mput
(B) mpu
(C) mp
(D) omp
(E) om

35. Given the following code:

public static int mystery(String str)


{
if (str.length() == 0) return 1;
else
{
if (str.substring(0,1).equals("a")) return 1 +
mystery(str.substring(1));
else return mystery(str.substring(1));
}
}

What will it return when called with mystery("aacabab")?

(A) 1
(B) 2
(C) 3
(D) 4
(E) 5
36. If you have a parent class Animal that has a method speak() which returns "Awk"
and you have children classes that do the following:

Cat has a speak method that returns "Meow"


Bird has a speak method that returns "Tweet"
Dog has a speak method that returns "Woof"
Pig doesn’t have a speak method
Cow has a speak method that returns "Moo"

What is the output from looping through this array of animals and asking each to speak()?

Animal[] a = { new Cat(), new Cow(), new Dog(), new Pig(), new Bird() }

(A) Awk Awk Awk Awk Awk


(B) This will have runtime errors
(C) Meow Moo Woof Oink Awk
(D) Meow Moo Woof Awk Awk
(E) Meow Moo Woof Awk Tweet

37. Which of the following is (are) true?

I. Insertion sort takes longer when the array is sorted in ascending order and you
want it sorted in descending order.

II. Mergesort uses recursion.

III. Selection sort takes less time to execute if the array is already sorted in the
correct order.

(A) I only
(B) II only
(C) III only
(D) I and II only
(E) I , II, and III
38. Consider the following method.

public static boolean outOfRange(int value){


if (value < 0 || value > 100)
return true;
else
return false;
}

Which of the following code segments would return the same values as
outOfRange?

I. if (value < 0)
{
if (value > 100)
return true;
else
return false;
}
else
return false;

II. if (value < 0)


return true;
else if (value > 100)
return true;
else
return false;

III. if (value >= 0)


return false;
else if (value <= 100)
return false;
else
return true;

(A) I only
(B) II only
(C) III only
(D) I and III
(E) II and III
39. Given the following values for a 2D array m and the following code

1 1 1 1

1 2 3 4

2 2 2 2

2 4 6 8

int sum = 0;
for (int k = 0; k < m.length; k++) {
sum = sum + m[m.length-1-k][1];
}

What is the value of sum after this code executes?

(A) 6
(B) 9
(C) 10
(D) 4
(E) 20
40. Consider the following method.

public static void sample(int num1, int num2) {


int result = 99;
if (num1 == num2) {result = 0;}
else if (num1 > num2){result = 1;}
else {result = -1;}
System.out.println(result);
}

Which of the following methods will print the same result as the method above no
matter what values are passed for num1 and num2?

I.
public static void method1(int num1, int num2) {
int result=99;

if (num1 == num2) {result = 0;}


else {
if(num1 > num2) {result = 1;}
else {result = -1;}
}
System.out.println(result);
}

II.
public static void method2(int num1, int num2) {
int result = 99;

if (num1 == num2) {result = 0;}


if (num1 >= num2) {result = 1;}
else {result = -1;}
System.out.println(result);
}

III.
public static void method3(int num1, int num2) {
int result = 99 ;

if (num1 == num2) {result = 0;}


if (num1 > num2) {result = 1;}
if (num1 < num2) {result = -1;}
System.out.println(result);
}

(A) I and III


(B) I only
(C) II only
(D) II and III
(E) I, II, and III
2018 A Exam Answers
Barb Ericson
Georgia Tech

1 E – logic and conditionals


2 D – inheritance and overriding and what is returned – Student and GradStudent
3 B - 1-d arrays and prog fund
4 C - list processing
5 A - constructors and inheritance – Car and ElectricCar and constructors
6 E - oo concepts – passing parameters and subclasses
7 B – complex conditional, logic, and DeMorgans
8 A – selection sort with missing code
9 B – pick code that outputs values – nested for loops
10 A –nested loop and minimum number of times it will execute
11 D - OO concepts – which will compile – inheritance and compile-time type
12 C – 2D array – media comp inspired
13 D - tracing a while loop
14 B – recursion / and %
15 C – OO – inheritance hierarchy
16 A - insertion sort and tracing how it changes the array
17 C - binary, decimal, hex, octal, 123 – 10 = 113 + 5 = 118 + 13 = 131
18 B – recursion with strings and substring
19 C – general for loop and prog fund
20 D – OO constructors
21 D - OO interfaces – is this still valid with Java 8?
22 A – pass by value and array reference and conditional
23 B - string, for loop, and substring
24 E - 2d array and nested loops
25 B - OO concepts var declarations and interfaces
26 D - nested loop counts of execution
27 E – binary search – tracing the result and returning the index of the target value
28 E – for loop and prog fund and tracing
29 A - recursion power of 3
30 C - OO concepts – super and which method is called on a child object
31 B - selection sort
32 E - loop may not execute and thus no return so code will not compile
33 A – strings and equals vs ==
34 C - strings and substrings
35 E – recursion and strings and substrings – with an error in the base case
36 E - OO – polymorphism
37 D – sorting
38 B – complex conditional
39 B – two-dimensional array and a loop
40 A - conditionals – prog fund
Java Visualizer URL to help you understand the answer
1. https://goo.gl/pKD6jM
2. https://goo.gl/4HHzRX
3. https://goo.gl/PR6Vri
4. https://goo.gl/NEhcGV
5. https://goo.gl/47Ca4K
6. https://goo.gl/wEwh9L
7. https://goo.gl/38fEgt
8. https://goo.gl/vGzXqJ
9. https://goo.gl/8tdSaM
10. https://goo.gl/jMzXaQ
11. https://goo.gl/rQXibm
12. https://goo.gl/iJR8T9
13. https://goo.gl/bYDkYm
14. https://goo.gl/CcDsRk
15. none
16. https://goo.gl/jrvPfv
17. none
18. https://goo.gl/aNnhZY
19. https://goo.gl/uN6bJW
20. https://goo.gl/XcmjRW
21. none
22. https://goo.gl/UTsq3w
23. https://goo.gl/oVVpg8
24. https://goo.gl/a4UJVB
25. https://goo.gl/g3gR9Q
26. https://goo.gl/VzqZCE
27. https://goo.gl/SX5SsJ
28. https://goo.gl/SHbWH8
29. https://goo.gl/XKtBUL
30. https://goo.gl/nQ5s8X
31. https://goo.gl/6RjbCs
32. https://goo.gl/a1STmX
33. https://goo.gl/XrHY87
34. https://goo.gl/adjHGQ
35. https://goo.gl/RDHrVv
36. https://goo.gl/hWUWT6
37. none
38. https://goo.gl/1AvXRW
39. https://goo.gl/BAPvQ5
40. https://goo.gl/yyQ6Sx

You might also like