Sail E0 Webinar

MCQs

Total Questions : 97 | Page 1 of 10 pages
Question 1.

Which statement is true for the class java.util.ArrayList?


  1.    The elements in the collection are ordered.
  2.    The collection is guaranteed to be immutable.
  3.    The elements in the collection are guaranteed to be unique.
  4.    The elements in the collection are accessed using a unique key.
 Discuss Question
Answer: Option A. -> The elements in the collection are ordered.

Yes, always the elements in the collection are ordered.

Question 2.

Which of the following are true statements?

    1. The Iterator interface declares only three methods: hasNext, next and remove.

    2. The ListIterator interface extends both the List and Iterator interfaces.

    3. The ListIterator interface provides forward and backward iteration capabilities.

    4. The ListIterator interface provides the ability to modify the List during iteration.

    5. The ListIterator interface provides the ability to determine its position in the List.



  1.    2, 3, 4 and 5
  2.    1, 3, 4 and 5
  3.    3, 4 and 5
  4.    1, 2 and 3
 Discuss Question
Answer: Option B. -> 1, 3, 4 and 5

The ListIterator interface extends the Iterator interface and declares additional methods to 

provide forward and backward iteration capabilities, List modification capabilities, and the 

ability to determine the position of the iterator in the List.


Question 3.
x = 0;
if (x1.hashCode() != x2.hashCode() ) x = x + 1;
if (x3.equals(x4) ) x = x + 10;
if (!x5.equals(x6) ) x = x + 100;
if (x7.hashCode() == x8.hashCode() ) x = x + 1000;
System.out.println("x = " + x);


and assuming that the equals() and hashCode() methods are properly implemented,if the



output is "x = 1111", which of the following statements will always be true?


  1.    x2.equals(x1)
  2.    x3.hashCode() == x4.hashCode()
  3.    x5.hashCode() != x6.hashCode()
  4.    x8.equals(x7)
 Discuss Question
Answer: Option B. -> x3.hashCode() == x4.hashCode()

By contract, if two objects are equivalent according to the equals() method, then the hashCode()

method must evaluate them to be ==.

Option A is incorrect because if the hashCode() values are not equal, the two objects must not be

 equal.

Option C is incorrect because if equals() is not true there is no guarantee of any result from hash

Code().

Option D is incorrect because hashCode() will often return == even if the two objects do not evaluate to equals() being true.


Question 4.

Which two statements are true about comparing two instances of the same class, given that the equals() and hashCode() methods have been properly overridden?

    1. If the equals() method returns true, the hashCode() comparison == must return true.

    2. If the equals() method returns false, the hashCode() comparison != must return true.

    3. If the hashCode() comparison == returns true, the equals() method must return true.

    4. If the hashCode() comparison == returns true, the equals() method might return true.


  1.    1 and 4
  2.    2 and 3
  3.    3 and 4
  4.    1 and 3
 Discuss Question
Answer: Option A. -> 1 and 4

(1) is a restatement of the equals() and hashCode() contract. (4) is true because if the hash

Code() comparison returns ==, the two objects might or might not be equal.

(2) and (3) are incorrect because the hashCode() method is very flexible in its return values, 

and often two dissimilar objects can return the same hash code value.


Question 5.

What two statements are true about properly overridden hashCode() and equals() methods?

    1. hashCode() doesn't have to be overridden if equals() is.

    2. equals() doesn't have to be overridden if hashCode() is.

    3. hashCode() can always return the same value, regardless of the object that invoked it.

    4. equals() can be true even if it's comparing different objects.


  1.    1 and 2
  2.    2 and 3
  3.    3 and 4
  4.    1 and 3
 Discuss Question
Answer: Option C. -> 3 and 4

(3) and (4) are correct.

(1) and (2) are incorrect because by contract hashCode() and equals() can't be overriddenunless both are overridden.


Question 6.

Which of the following statements about the hashcode() method are incorrect?

    1. The value returned by hashcode() is used in some collection classes to help locate objects.

    2. The hashcode() method is required to return a positive int value.

    3. The hashcode() method in the String class is the one inherited from Object.

    4. Two new empty String objects will produce identical hashcodes.


  1.    1 and 2
  2.    2 and 3
  3.    3 and 4
  4.    1 and 4
 Discuss Question
Answer: Option B. -> 2 and 3

(2) is an incorrect statement because there is no such requirement.

(3) is an incorrect statement and therefore a correct answer because the hashcode for a string 

is computed from the characters in the string.


Question 7.
class Test1
{
public int value;
public int hashCode() { return 42; }
}
class Test2
{
public int value;
public int hashcode() { return (int)(value^5); }
}


which statement is true?


  1.    class Test1 will not compile.
  2.    The Test1 hashCode() method is more efficient than the Test2 hashCode() method.
  3.    The Test1 hashCode() method is less efficient than the Test2 hashCode() method.
  4.    class Test2 will not compile.
 Discuss Question
Answer: Option C. -> The Test1 hashCode() method is less efficient than the Test2 hashCode() method.

The so-called "hashing algorithm" implemented by class Test1 will always return the same value, 

42, which is legal but which will place all of the hash table entries into a single bucket, the most 

inefficient setup possible.

Option A and D are incorrect because these classes are legal.

Option B is incorrect based on the logic described above.


Question 8.

Which statement is true for the class java.util.HashSet?


  1.    The elements in the collection are ordered.
  2.    The collection is guaranteed to be immutable.
  3.    The elements in the collection are guaranteed to be unique.
  4.    The elements in the collection are accessed using a unique key.
 Discuss Question
Answer: Option C. -> The elements in the collection are guaranteed to be unique.

Option C is correct. HashSet implements the Set interface and the Set interface specifies 

collection that contains no duplicate elements.

Option A is wrong. HashSet makes no guarantees as to the iteration order of the set; in 

particular, it does not guarantee that the order will remain constant over time.

Option B is wrong. The set can be modified.

Option D is wrong. This is a Set and not a Map.


Question 9.


What will be the output of the program?


public static void main(String[] args)
{
Object obj = new Object()
{
public int hashCode()
{
return 42;
}
};
System.out.println(obj.hashCode());
}
  1.    42
  2.    Runtime Exception
  3.    Compile Error at line 2
  4.    Compile Error at line 5
 Discuss Question
Answer: Option A. -> 42

This code is an example of an anonymous inner class. They can be declared to extend another 

class or implement a single interface. Since they have no name you can not use the "new" 

keyword on them.

In this case the annoynous class is extending the Object class. Within the {} you place the methods 

you want for that class. After this class has been declared its methods can be used by that object 

in the usual way e.g. objectname.annoymousClassMethod()


Question 10.


What will be the output of the program?


TreeSet map = new TreeSet();
map.add("one");
map.add("two");
map.add("three");
map.add("four");
map.add("one");
Iterator it = map.iterator();
while (it.hasNext() )
{
System.out.print( it.next() + " " );
}
  1.    one two three four
  2.    four three two one
  3.    four one three two
  4.    one two three four one
 Discuss Question
Answer: Option C. -> four one three two

TreeSet assures no duplicate entries; also, when it is accessed it will return elements in natural 

order, which typically means alphabetical.


Latest Videos

Latest Test Papers