# Tentative Topical Coverages for Mid Term

Topic(s)Suggested Readings
Java SE EssentialsChapters 1-5 (review of essentials)
Object-Oriented Programming (OOP) conceptsChap. 6
Arrays and ArraylistsChap. 7
Abstraction, Inheritance, PolymorphismChap. 10
Stream I/O file processing, Exception HandlingChap. 9,11
Generics, Collections (intro only)Chap. 17,18

# Sample

  1. Which of these is an incorrect array declaration?

    • intarr[] = newint[5]
    • int[] arr = new int[5]
    • int arr[] = new int[5]
    • int arr[] = int [5] new


  2. What will this code print?

    int arr[] = new int [5];
    • 0
    • value stored in arr[0]
    • 00000
    • Class name@hashcode in hexadecimalform
  3. What is the output of this program?

    class array_output {
    	public static void main(String args[]) {
    		int array_variable [] = new int[10];
    		for (int i = 0; i < 10; ++i)  {
    			array_variable[i] = i;
    			System.out.print(array_variable[i] + " ");
    • 0 2 4 6 8
    • 1 3 5 7 9
    • 0 1 2 3 4 5 6 7 8 9
    • 1 2 3 4 5 6 7 8 9 10
  4. Look at the following code.

    Integer myNumber = new Integer(5);
    int var = myNumber;

    What is true about the second statement?

    • The statement performs autoboxing.
    • It results in an error because you can't assign a wrapper class to a primitive variable.
    • The statement performs unboxing.
    • The statement performs unwrapping.

    详解 Java 的自动装箱与拆箱 (Autoboxing and unboxing)

    • 该语句执行自动装箱。
    • 由于无法将包装器类分配给原始变量,因此会导致错误。
    • 该语句执行拆箱。✔️
    • 该语句执行解包。
  5. Which is the valid declaration within an interface definition?

    • public double methoda();
    • public final double methoda();
    • static void methoda(double d1);
    • protected void methoda(double d1);


  6. A private base method can be overridden by some derived public method.


  7. Which of these keywords is not a part of exception handling?

    • try
    • finally
    • thrown
    • catch


  8. The process of converting one date type to another is called .

    • Translating
    • Casting
    • Compiling
    • Declaring


    • 翻译
    • 强制转换 ✔️
    • 编译
    • 声明
  9. Which of the following is the correct declaration statement in java program?

    • int num = int[5]
    • int num = new num[5]
    • int[] num = new int[5]
    • None

    以下哪项是 Java 程序中正确的声明语句?

  10. What line of code should replace the missing statement to make this program compile?

    /* Missing Statement ? */
    public class foo {
    	public static void main(String[]args) throws Exceptionn {
    		java.io.PrintWriter out = new java.io.PrintWriter(); 
    		new java.io.OutputStreamWriter(System.out); 
    • No statement required.
    • import java.io.*;
    • include java.io.*;
    • import java.io.PrintWriter;


  11. method is used to find the nth no. of character of given string s1.

    • 1.index(n)
    • s1.substring(n)
    • s1.length()
    • s1.charAt(n)

    方法用于查找给定字符串 s1 的第 n 个字符。

  12. Which of these can be overloaded?

    • Methods
    • Constructors
    • both a and b
    • None can be overloaded


  13. The concept of multiple inheritance is implemented in Java by?

    I. Extending two or more classes.
    II. Extending one class and implementing one or more interfaces.
    III. Implementing two or more interfaces.

    • Only (II)
    • (I) and (II)
    • (II) and (III)
    • Only (I)
    • Only (III)

    Java 的多重继承概念是通过?实现的

    • 扩展两个或多个类。
    • 扩展一个类、实现一个或多个接口。 ✔️
    • 实现两个或多个接口。 ✔️
  14. Private members of a class are inherited in the sub class.


  15. A method of a super class with a default access modifier can be overridden as protected or public but not as private.

    具有默认访问修饰符的父类方法,可以覆盖为 protected 或 public,但不能是 private。

  16. What will be the output of the following program?

    class X  {
    	void method(int a) {
    	void method(double d)  {
    class Y extends X {
    	void method(double d) {
    public class MainClass {	
    	public static void main(String[] args)  {
    		new Y().method(100);
    • ONE
    • TWO
    • THREE
    • ONE TWO
    • Error
  17. If a superclass does not have a default constructor, then a class that inherits from it,

    • must call one of the constructors that the superclass does have
    • must contain the default constructor for the superclass
    • does not inherit the data member fields from the superclass
    • must initialize the superclass values


    • 必须调用父类确实具有的构造函数之一 ✔️
    • 必须包含父类的默认构造函数
    • 不继承父类的数据成员字段
    • 必须初始化超类值
  18. The binary search algorithm

    • will cut the portion of the array being searched in half each time the loop fails to locate the search value
    • will have an average of N/2 comparisons, where N is the number of elements in the array
    • is less efficient than the sequential search algorithm


    • 每次循环未能找到搜索值时,将被搜索数组的部分切成一半 ✔️
    • 将平均进行 N/2 次比较,其中 N 是数组中元素的数量
    • 效率较低比顺序搜索算法

# Coding and Definitions

  1. What are some advantages of using Generic types? List some example.

    Advantages: use cases - Type safety at runtime + avoids costs (code duplication!).
    优点:用例 - 运行时类型安全 + 避免成本(代码重复!)。
    Ex. Casting issues give compile time errors if elements aren't proper possible generic datatypes.
    Generics work around this by typechecking at compile time to prevent ClassCastExceptions!
    泛型通过在编译时进行类型检查,来避免 ClassCastExceptions,来解决此问题!
    Without generics/typecheck
    没有泛型 / 类型检查

    List<String> list = new ArrayList();
    	Object obj1 = list.get(0);
    	String obj2 =  list.get(0);
    	Integer obj3 = list.get(0);  //compile error! Can't convert String to Integer
  2. Why do you suppose a class level generic variable cannot be static?

    Using generics, type parameters are not allowed to be static, as the static variable is shared amongst objects so compiler can not determine which type to used.

  3. What are some basic differences between an Array and ArrayList?

    Array 和 ArrayList 之间有哪些基本区别?
    The array represents a basic functionality whereas the ArrayList is part of collection framework in Java.
    数组 Array 代表基本功能,而 ArrayList 是 Java 中 collection 框架的一部分。
    Therefore array members are accessed using [], whilst an ArrayList has a set of methods to access elements and have the ability to modify them.
    因此,数组成员使用 [] 访问,而 ArrayList 具有一组访问元素,并具有修改元素的能力。
    Arraylists are also dynamic in memory and can grow and shrink at runtime.
    Arraylist 在内存中也是动态的,并且可以在运行时增长和缩小。

  4. What is the major difference between an abstract class and an interface?

    Abstract class is more expensive to use, as there is a look-up to do when you inherit from them. Can define a behavior for common classes.
    An interface is a contract, a generic pattern of methods with just signatures allowing any class implement its methods in a way that it wishes to do.

  5. Define Polymorphism? What are some of its abilities/usefulness?

    多态的定义?它的一些功能 / 用处是什么?
    Means a state of having many shapes or the capacity to take on various forms (sub types). Ability to describe and process objects of various types and classes through a single, uniform interface (base object).
    Polymorphism is a OOPs concept where one name can have many forms. For example, you have a smartphone for communication. The communication mode you choose could be anything. It can be a call, a text message, a picture message, mail, etc. So, the goal is common that is communication, but their approach is different. This is called Polymorphism.
    多态是一个 OOPs 概念,其中一个名称可以具有多种形式。 例如,您有用于通信的智能手机。 您选择的通信模式可以是任何一种。 它可以是呼叫,短信,图片消息,邮件等。因此,目标很普遍,那就是沟通,但他们的方法不同。 这称为多态。

        Employee <-- HourlyEmployee
        Employee <-- SalariedEmployee
        class Employee{
            -empCode : int
            -firstName : String
            -lastName: String
            +pay() : double
        class HourlyEmployee{
            -rate : double
            -workingHours : double
            +pay() : double
        class SalariedEmployee {
        	-commisionRate : double
            -grossSales : double
            -basic : double
            +pay() : double
  6. Create and define a method called popList that gets passed an arraylist called list that will accept any numeric value type passed in. The method definition should assign 5 integers to the arraylist via a loop storing the values of 1,2,3,4 and 5 respectively.

    创建并定义一个名为 popList 的方法,该方法将传递一个名为 list 的 arraylist 数组列表,该列表将接受传入的任何数值类型。该方法定义应通过存储 1,2,3,4 和 5 的循环,分别将 5 个整数分配给 arraylist。

    static void popList (ArrayList<Number> list) {
    	for( int i=1; i<=list.size(); ++i)
  7. Code the sort method below to sort an arraylist in ascending order? (DO NOT USE ANY PRE DEFINED METHODS)

    编写下面的 sort 方法对数组列表进行升序排序?(请勿使用任何预先定义的方法)

    public class aListClass{
    	public static void main(String[] args) {
    		ArrayList<Integer> values = new ArrayList<>();
    		for (int i = 0; i < values.size(); i++)
    	public static void sort(ArrayList<Integer> aList) {
    		int temp;
    		for (int i = 0; i < aList.size() - 1; i++) {
    			for (int j = i + 1; j < aList.size(); j++) {
    				if (aList.get(i) > (aList.get(j))) {
    					temp = aList.get(i); 
    					aList.set(i, aList.get(j)); // swap
    					aList.set(j, temp);		  // values

# Review

  1. Methods that operate on an object's fields are called

    • Private methods
    • Instance methods
    • Instance variables
    • Public methods


    • 私人方法
    • 实例方法 ✔️
    • 实例变量
    • 公开方法
  2. A constructor

    • Has return type of void
    • Always accepts two arguments
    • Always has an access specifier of private
    • Has the same name as the class


    • 返回类型为 void
    • 一律接受两个参数
    • 始终具有私有的访问说明
    • 与类同名 ✔️
  3. To develop a program to solve a problem, you start by .

    • analyzing the problem
    • implementing the solution in Java
    • designing the algorithm
    • entering the solution into a computer system

    要开发解决问题的程序,您首先需要从 开始。

    • 分析问题 ✔️
    • 用 Java 实现解决方案
    • 设计算法
    • 将解决方案输入计算机系统
  4. Declaring a class level variable as static means .

    • access is obtainable only thru a class object
    • any method (static, instance) can have access
    • no methods can have access
    • none of the above


    • 访问只能通过类对象获得
    • 任何方法(静态,实例)都可以访问 ✔️
    • 没有方法可以访问
    • 以上都不是
  5. In an interface all methods have

    • public access
    • packaged access
    • private access
    • protected access


    • public 访问权限 ✔️
    • packaged 访问权限
    • private 访问权限
    • protected 访问权限
  6. The binary search algorithm

    • will cut the portion of the array being searched in half each time the loop fails to locate the search value
    • will have an average of N/2 comparisons, where N is the number of elements in the array
    • is less efficient than the sequential search algorithm
    • will have a maximum number of comparisons equal to the number of elements in the array


    • 每次循环未能找到搜索值时,将被搜索数组的一部分切成两半 ✔️
    • 将具有 N/2 个比较的平均值,其中 N 是数组中元素的数量
    • 比顺序搜索算法效率低
    • 将具有的最大比较数量等于数组中元素的数量
  7. The declaration

    ArrayList<int> aL = new ArrayList<int>();
    • compiles and runs correctly, but is not recommended
    • allows the programmer to create an ArrayList that holds integer types
    • causes a compile-time error
    • compiles correctly, but causes an exception to be thrown at run time
    • 正确编译并运行,但不建议
    • 允许程序员创建一个保存整数类型的 ArrayList
    • 导致编译时错误 ✔️
    • 正确编译,但导致在运行时引发异常
  8. Another term for an object of a class is:

    • access specifier
    • instance
    • member
    • method


    • 访问说明符
    • 实例 ✔️
    • 成员
    • 方法
  9. In a Binary Search routine, the array item in the middle of the array portion is at subscript position

    • (lower + upper)/2
    • (upper - lower)/2
    • (lower - upper)/2
    • lower + upper/2


  10. Which class is related to all the exceptions that cannot be caught?

    • Error
    • Exception
    • RuntimeException
    • All of the mentioned

    Runtime errors cannot be caught generally. Error class is used to catch such errors/exceptions.
    通常无法捕获运行时错误。 Error 类用于捕获此类错误 / 异常。

  11. For the following code, which statement is not true?

    public class Sphere {
    	private double radius;
    	public double x;
    	private double y;
    	private double z;
    • z is available to code that is written outside the Sphere class
    • radius, x, y, and z are called members of the Sphere class
    • x is available to code that is written outside the Sphere class
    • radius is not available to code written outside the Sphere class


    • z 可用于在 Sphere 类之外编写的代码 ✔️
    • radius,x,y 和 z 被称为 Sphere 类的成员
    • x 可用于在 Sphere 类之外编写的代码
    • radius 不适用于在 Sphere 类之外编写的代码
  12. The following statement creates an ArrayList object. What is the purpose of the <String> notation?

    ArrayList<String> arr = new ArrayList<String>();
    • It specfies that everything store for the arr object will be converted to a String;
    • It specfies that String objects may not be stored in the ArrayList object;
    • It specfies that only String objects may be stored in the ArrayList object;
    • It specfies that the get method will only return String ob.

    以下语句创建一个 ArrayList 对象。 <String> 表示法的目的是什么?

    • 确定将所有存储在 arr 对象中的东西都转换为 String
    • 确定 String 对象可能不存储在 ArrayList 对象中;
    • 规定只有 String 对象可以存储在 ArrayList 对象中; ✔️
    • 它指定 get 方法将仅返回 String ob
  13. What would be the results of the following code?

    final int SIZE = 5;
    int[] array1 = new int[SIZE];
    // ... Code that will put values in array1
    int value = 0;
    for (int a = 0; a <= array1.length; a++) {
    	value += array1[a];
    • value contains the lowest value in array1
    • value contains the sum of all the values in array1
    • value contains the highest value in array1
    • This would cause the program to crash


    • 值包含 array1 中的最小值
    • value 包含 array1 中所有值的总和
    • 值包含 array1 中的最大值
    • 这会导致程序崩溃 ✔️
      a <= array1.length - 1
  14. What is Data Hiding, how why is it important, in other words, why consider it for any instance fields of a class?

    • What is Data Hiding:
      Allows direct access and any allowed changes to the objects internal data by the class object itself.
      Create private fields to allow for data hiding.
    • how why is it important?
      Data hiding is important because classes are typically used as components in large software systems, involving a team of programmers.
      Data hiding helps enforce the integrity of an object's internal data.
  15. Distinguish between a no-argument constructor and a default constructor. How are constructors distinguished from normal methods of a class?

    A constructor that does not accept arguments is known as a no-arg constructor. It usually intializes class level variables.
    不接受参数的构造函数称为无参数构造函数。 它通常初始化类级别的变量。
    The default constructor is a constructor that the Java compiler adds to your code if no explicit constructor is available. The default constructor is consider a no-arg constructor.
    默认构造函数是 Java 编译器在没有显式构造函数可用时,将其添加到您的代码中的构造函数。 默认构造函数被视为无参数构造函数。
    Ex. no-arg constructor programmer defined
    例如 无参数构造函数程序员定义

    public Rectangle() {
    	length = width = 1.0;
  16. The method getMax shown below is supposed to return the position of the largest value in the portion of an array between 0 and last, inclusive:

    int getMax(int array[], int last) {
    	int max = 0;
    	for (int k = 1; k <= last; k++) {
    		// Code is Missing
    	return max;

    The missing code is

    • if (array[k] > array[max]) k = max;
    • if (array[k] > array[max]) max = k;
    • if (array[k] > max) return max;
    • if (array[k] > array[max]) return max;

    getMax 应该返回数组位置介于 0last 之间的最大值。

  17. If you want to share code among several closely related classes, you expect to have common functions in a class and want to defer implementations of some other functions to derived classes, then we need to use .

    • An abstract class
    • An interface
    • either A or B


  18. What is the output of this program?

    public static void main(String args[]) {
    	ArrayList obj = new ArrayList();
    	obj.ensureCapacity(8); //increase capacity of object
    • 1
    • 2
    • 4
    • 8
  19. Which collection does not allow duplicates on its elements?

    • list
    • arrayList
    • set
    • linkedlist


  20. Consider a class that uses the following variables to implement an array-based stack:

    String [] s = new String[100];
    int top = 0;

    code syntax/logic for adding an item x to the stack can be written as

    • if (top == s.length)
        	throw new RuntimeException("Overflow");
        else {
        	top ++;
        	s[top] = x;
    • if (top < s.length) {
      	s[top] = x;
      	throw new RuntimeException("Overflow");
    • if (top < 0) throw new IndexOutBoundsException()
      	s[top] = x;
      	top ++;
    • s.add(top, x);

    将项目 x 添加到堆栈的代码语法 / 逻辑可以写成?

  21. A constructor is a method that is automatically called when an object is created.


  22. In Java, you do not use the new operator when you use a(n):

    • array size declarator
    • initialization list
    • two-dimensional array
    • all choices are correct

    在 Java 中,当使用 a(n) 时,请勿使用 new 运算符:

    • 数组大小声明符
    • 初始化列表 ✔️
    • 二维数组
    • 所有选择都是正确的
  23. When you are working with a , you are using a storage location that holds a piece of data.

    • primitive variable
    • reference variable
    • numeric literal
    • binary number

    使用 时,您使用的是一个存储数据的存储位置。

    • 基本变量 ✔️
    • 参考变量
    • 数字文字
    • 二进制数
  24. The following UML diagram entry setBalance(h : double) : void ,this is a method with a parameter of data type and does not return a value.

    • public, double
    • public, float
    • private, float
    • private, double

    UML 图条目是一个方法,其参数类型为数据类型,并且不返回值。

  25. Explain the feature of overload.

    Two or more methods in a class may have the same name and they have different parameter lists.

  26. What is wrong with the following code?

    public class ClassB extends ClassA {
    	public ClassB() {
    		int init = 10;
    • Nothing is wrong with the code.
    • The method super is not defined.
    • The call to the method super must be the first statement in the constructor.
    • No values may be passed to super.


    • 代码没有错。
    • 未定义方法 super。
    • 对方法 super 的调用必须是构造函数中的第一条语句。 ✔️
    • 不能将任何值传递给 super。
  27. 补充下列代码,要求返回最大值

    Public static int myList (ArrayList<Integer> arr){
    	//return the greatest integer value in the ArrayList
    	return Collections.max(arr);
  28. 填写下列代码,实现参数值得交换。

    public static void main(String[] args) {
    	List<Integer> list= new ArrayList<>();
    	swap(list, 0, 1);
    public static void swap(List<Integer> a, int i, int j) {
    	int tmp = a.get(i);
    	a.set(i, a.get(j));
    	a.set(j, tmp);