
- •Contents at a Glance
- •Contents
- •About the Authors
- •About the Technical Reviewer
- •Acknowledgments
- •Introduction
- •Oracle Java Certifications: Overview
- •FAQ 1. What are the different levels of Oracle Java certification exams?
- •FAQ 4. Is OCPJP 7 prerequisite for other Oracle certification exams?
- •FAQ 5. Should I take the OCPJP 7 or OCPJP 6 exam?
- •The OCPJP 7 Exam
- •FAQ 7. How many questions are there in the OCPJP 7 exam?
- •FAQ 8. What is the duration of the OCPJP 7 exam?
- •FAQ 9. What is the cost of the OCPJP 7 exam?
- •FAQ 10. What are the passing scores for the OCPJP 7 exam?
- •FAQ 11. What kinds of questions are asked in the OCPJP 7 exam?
- •FAQ 12. What does the OCPJP 7 exam test for?
- •FAQ 13. I’ve been a Java programmer for last five years. Do I have to prepare for the OCPJP 7 exam?
- •FAQ 14. How do I prepare for the OCPJP 7 exam?
- •FAQ 15. How do I know when I’m ready to take the OCPJP 7 exam?
- •Taking the OCPJP 7 Exam
- •FAQ 16. What are my options to register for the exam?
- •FAQ 17. How do I register for the exam, schedule a day and time for taking the exam, and appear for the exam?
- •The OCPJP 7 Exam: Pretest
- •Answers with Explanations
- •Post-Pretest Evaluation
- •Essentials of OOP
- •FunPaint Application: An Example
- •Foundations of OOP
- •Abstraction
- •Encapsulation
- •Inheritance
- •Polymorphism
- •Class Fundamentals
- •Object Creation
- •Constructors
- •Access Modifiers
- •Public Access Modifier
- •Private Access Modifier
- •Protected and Default Access Modifier
- •Overloading
- •Method Overloading
- •Constructor Overloading
- •Overload resolution
- •Points to Remember
- •Inheritance
- •Runtime Polymorphism
- •An Example
- •Overriding Issues
- •Overriding: Deeper Dive
- •Invoking Superclass Methods
- •Type Conversions
- •Upcasts and Downcasts
- •Casting Between Inconvertible Types
- •Using “instanceof” for Safe Downcasts
- •Java Packages
- •Working with Packages
- •Static Import
- •Summary
- •Abstract Classes
- •Points to Remember
- •Using the “final” Keyword
- •Final Classes
- •Final Methods and Variables
- •Points to Remember
- •Using the “static” Keyword
- •Static Block
- •Points to Remember
- •Flavors of Nested Classes
- •Static Nested Classes (or Interfaces)
- •Points to Remember
- •Inner Classes
- •Points to Remember
- •Local Inner Classes
- •Points to Remember
- •Anonymous Inner Classes
- •Points to Remember
- •Enum Data Types
- •Points to Remember
- •Summary
- •Interfaces
- •Declaring and Using Interfaces
- •Points to Remember
- •Abstract Classes vs. Interfaces
- •Choosing Between an Abstract Class and an Interface
- •Object Composition
- •Composition vs. Inheritance
- •Points to Remember
- •Design Patterns
- •The Singleton Design Pattern
- •Ensuring That Your Singleton Is Indeed a Singleton
- •The Factory Design Pattern
- •Differences Between Factory and Abstract Factory Design Patterns
- •The Data Access Object (DAO) Design Pattern
- •Points to Remember
- •Summary
- •Generics
- •Using Object Type and Type Safety
- •Using the Object Class vs. Generics
- •Container Implementation Using the Object Class
- •Container Implementation Using Generics
- •Creating Generic Classes
- •Diamond Syntax
- •Interoperability of Raw Types and Generic Types
- •Generic Methods
- •Generics and Subtyping
- •Wildcard Parameters
- •Limitations of Wildcards
- •Bounded Wildcards
- •Wildcards in the Collections Class
- •Points to Remember
- •The Collections Framework
- •Why Reusable Classes?
- •Basic Components of the Collections Framework
- •Abstract Classes and Interfaces
- •Concrete Classes
- •List Classes
- •ArrayList Class
- •The ListIterator Interface
- •The LinkedList Class
- •The Set Interface
- •The HashSet Class
- •The TreeSet Class
- •The Map Interface
- •The HashMap Class
- •Overriding the hashCode() Method
- •The NavigableMap Interface
- •The Queue Interface
- •The Deque Interface
- •Comparable and Comparator Interfaces
- •Algorithms (Collections Class)
- •The Arrays Class
- •Methods in the Arrays Class
- •Array as a List
- •Points to Remember
- •Summary
- •Generics
- •Collections Framework
- •Processing Strings
- •String Searching
- •The IndexOf() Method
- •The regionMatches() Method
- •String Parsing
- •String Conversions
- •The Split() Method
- •Regular Expressions
- •Understanding regex Symbols
- •Regex Support in Java
- •Searching and Parsing with regex
- •Replacing Strings with regex
- •String Formatting
- •Format Specifiers
- •Points to Remember
- •Summary
- •Reading and Writing from Console
- •Understanding the Console Class
- •Formatted I/O with the Console Class
- •Special Character Handling in the Console Class
- •Using Streams to Read and Write Files
- •Character Streams and Byte Streams
- •Character Streams
- •Reading Text Files
- •Reading and Writing Text Files
- •“Tokenizing” Text
- •Byte Streams
- •Reading a Byte Stream
- •Data Streams
- •Writing to and Reading from Object Streams: Serialization
- •Serialization: Some More Details
- •Points to Remember
- •Summary
- •A Quick History of I/O APIs
- •Using the Path Interface
- •Getting Path Information
- •Comparing Two Paths
- •Using the Files Class
- •Checking File Properties and Metadata
- •Copying a File
- •Moving a File
- •Deleting a File
- •Walking a File Tree
- •Revisiting File Copy
- •Finding a File
- •Watching a Directory for Changes
- •Points to Remember
- •Summary
- •Introduction to JDBC
- •The Architecture of JDBC
- •Two-Tier and Three-Tier JDBC Architecture
- •Types of JDBC Drivers
- •Setting Up the Database
- •Connecting to a Database Using a JDBC Driver
- •The Connection Interface
- •Connecting to the Database
- •Statement
- •ResultSet
- •Querying the Database
- •Updating the Database
- •Getting the Database Metadata
- •Points to Remember
- •Querying and Updating the Database
- •Performing Transactions
- •Rolling Back Database Operations
- •The RowSet Interface
- •Points to Remember
- •Summary
- •Define the Layout of the JDBC API
- •Connect to a Database by Using a JDBC driver
- •Update and Query a Database
- •Customize the Transaction Behavior of JDBC and Commit Transactions
- •Use the JDBC 4.1 RowSetProvider, RowSetFactory, and RowSet Interfaces
- •Introduction to Exception Handling
- •Throwing Exceptions
- •Unhandled Exceptions
- •Try and Catch Statements
- •Programmatically Accessing the Stack Trace
- •Multiple Catch Blocks
- •Multi-Catch Blocks
- •General Catch Handlers
- •Finally Blocks
- •Points to Remember
- •Try-with-Resources
- •Closing Multiple Resources
- •Points to Remember
- •Exception Types
- •The Exception Class
- •The RuntimeException Class
- •The Error Class
- •The Throws Clause
- •Method Overriding and the Throws Clause
- •Points to Remember
- •Custom Exceptions
- •Assertions
- •Assert Statement
- •How Not to Use Asserts
- •Summary
- •Introduction
- •Locales
- •The Locale Class
- •Getting Locale Details
- •Resource Bundles
- •Using PropertyResourceBundle
- •Using ListResourceBundle
- •Loading a Resource Bundle
- •Naming Convention for Resource Bundles
- •Formatting for Local Culture
- •The NumberFormat Class
- •The Currency Class
- •The DateFormat Class
- •The SimpleDateFormat Class
- •Points to Remember
- •Summary
- •Introduction to Concurrent Programming
- •Important Threading-Related Methods
- •Creating Threads
- •Extending the Thread Class
- •Implementing the Runnable Interface
- •The Start( ) and Run( ) Methods
- •Thread Name, Priority, and Group
- •Using the Thread.sleep() Method
- •Using Thread’s Join Method
- •Asynchronous Execution
- •The States of a Thread
- •Two States in “Runnable” State
- •Concurrent Access Problems
- •Data Races
- •Thread Synchronization
- •Synchronized Blocks
- •Synchronized Methods
- •Synchronized Blocks vs. Synchronized Methods
- •Deadlocks
- •Other Threading Problems
- •Livelocks
- •Lock Starvation
- •The Wait/Notify Mechanism
- •Let’s Solve a Problem
- •More Thread States
- •timed_waiting and blocked States
- •waiting State
- •Using Thread.State enum
- •Understanding IllegalThreadStateException
- •Summary
- •Using java.util.concurrent Collections
- •Semaphore
- •CountDownLatch
- •Exchanger
- •CyclicBarrier
- •Phaser
- •Concurrent Collections
- •Apply Atomic Variables and Locks
- •Atomic Variables
- •Locks
- •Conditions
- •Multiple Conditions on a Lock
- •Use Executors and ThreadPools
- •Executor
- •Callable, Executors, ExecutorService, ThreadPool, and Future
- •ThreadFactory
- •The ThreadLocalRandom Class
- •TimeUnit Enumeration
- •Use the Parallel Fork/Join Framework
- •Useful Classes of the Fork/Join Framework
- •Using the Fork/Join Framework
- •Points to Remember
- •Summary
- •Using java.util.concurrent Collections
- •Applying Atomic Variables and Locks
- •Using Executors and ThreadPools
- •Using the Parallel Fork/Join Framework
- •Chapter 3: Java Class Design
- •Chapter 4: Advanced Class Design
- •Chapter 5: Object-Oriented Design Principles
- •Chapter 6: Generics and Collections
- •Chapter 7: String Processing
- •Chapter 8: Java I/O Fundamentals
- •Chapter 9: Java File I/O (NIO.2)
- •Chapter 10: Building Database Applications with JDBC
- •Chapter 11: Exceptions and Assertions
- •Chapter 12: Localization
- •Chapter 13: Threads
- •Chapter 14: Concurrency
- •OCPJP7 Exam (1Z0-804 a.k.a. Java SE 7 Programmer II) Topics
- •OCPJP 7 Exam (1Z0-805, a.k.a. Upgrade to Java SE 7 Programmer) Topics
- •Answers and Explanations
- •Answer Sheet
- •Answers and Explanations
- •Index

APPENDIX A
Exam Topics
This appendix lists the topics for the following two certification exams:
•Java SE 7 Programmer II exam (a.k.a. exam number 1Z0-804):
OCAJP 7 certification + 1ZO-804 pass = Oracle Certified Professional, Java SE 7 Programmer (OCPJP 7) certification
•Upgrade to Java SE 7 Programmer exam (a.k.a. exam number 1Z0-805):
Earlier version (OCPJP 5 or OCPJP 6 or any SCJP) certification + 1ZO-805 pass = Oracle
Certified Professional, Java SE 7 Programmer (OCPJP 7) certification
We show how the exam topics map to the chapters in this book (denoted “G&S” for Ganesh and Sharma) in parentheses beside the topic headings below.
OCPJP7 Exam (1Z0-804 a.k.a. Java SE 7 Programmer II) Topics
While preparing the reader equally for the Z10-804 or Z10-805 exam paths to OCPJP 7 certification, this book is organized to mirror the topics of the more comprehensive exam, the 1Z0-804. The exam topics in the 1Z0-804 syllabus map to the chapters in this book in a one-to-one correspondence as indicated in the parentheses below. We wish to thank Oracle Corporation for providing permission to use of their exam topics in this appendix.
1.Java Class Design (G&S Chapter 3)
1.1.Use access modifiers: private, protected, and public.
1.2.Use override methods.
1.3.Use overload constructors and other methods appropriately.
1.4.Use the instanceof operator and casting.
1.5.Use virtual method invocation.
1.6.Use override methods from the Object class to improve the functionality of your class.
1.7.Use package and import statements.
507
APPENDIX A ■ Exam Topics
2.Advanced Class Design (G&S Chapter 4)
2.1.Identify when and how to apply abstract classes.
2.2.How to construct abstract Java classes and subclasses.
2.3.Use the static and final keywords.
2.4.Create top-level and nested classes.
2.5.Use enumerated types.
3.Object-Oriented Design Principles (G&S Chapter 5)
3.1.Write code that declares, implements, and/or extends interfaces.
3.2.Choose between interface inheritance and class inheritance.
3.3.Develop code that implements “is-a” and/or “has-a” relationships.
3.4.Apply object composition principles.
3.5.Design a class using the Singleton design pattern.
3.6.Write code to implement the DAO pattern.
3.7.Design and create objects using a factory, and use factories from the API.
4.Generics and Collections (G&S Chapter 6)
4.1.Create a generic class.
4.2.Use the diamond syntax to create a collection.
4.3.Analyze the interoperability of collections that use raw type and generic types.
4.4.Use wrapper classes and autoboxing.
4.5.Create and use a List, a Set, and a Deque.
4.6.Create and use a Map.
4.7.Use java.util.Comparator and java.lang.Comparable.
4.8.Sort and search arrays and lists.
5.String Processing (G&S Chapter 7)
5.1.Search, parse, and build strings.
5.2.Search, parse, and replace strings by using regular expressions, using expression patterns for matching limited to . (dot), * (star), + (plus), ?, \d, \D, \s, \S, \w, \W, \b. \B, [], ().
5.3.Format strings using the formatting parameters %b, %c, %d, %f, and %s in format strings.
508
APPENDIX A ■ Exam Topics
6.Exceptions and Assertions (G&S Chapter 11)
6.1.Use throw and throws statements.
6.2.Use the try statement with multi-catch and finally clauses.
6.3.Autoclose resources with a try-with-resources statement.
6.4.Create custom exceptions.
6.5.Test invariants by using assertions.
7.Java I/O Fundamentals (G&S Chapter 8)
7.1.Read and write data from the console.
7.2.Use streams to read and write files.
8.Java File I/O (NIO.2) (G&S Chapter 9)
8.1.Use the Path class to operate on file and directory paths.
8.2.Use the Files class to check, delete, copy, or move a file or directory.
8.3.Read and change file and directory attributes.
8.4.Recursively access a directory tree.
8.5.Find a file by using the PathMatcher class.
8.6.Watch a directory for changes by using WatchService.
9.Building Database Applications with JDBC (G&S Chapter 10)
9.1.Define the layout of the JDBC API.
9.2.Connect to a database by using a JDBC driver.
9.3.Update and query a database.
9.4.Customize the transaction behavior of JDBC and commit transactions.
9.5.Use the JDBC 4.1 RowSetProvider, RowSetFactory, and RowSet interfaces.
10.Threads (G&S Chapter 13)
10.1.Create and use the Thread class and the Runnable interface.
10.2.Manage and control thread lifecycle.
10.3.Synchronize thread access to shared data.
10.4.Identify potential threading problems.
509
APPENDIX A ■ Exam Topics
11.Concurrency (G&S Chapter 14)
11.1.Use java.util.concurrent collections.
11.2.Apply atomic variables and locks.
11.3.Use Executors and ThreadPools.
11.4.Use the parallel Fork/Join framework.
12.Localization (G&S Chapter 12)
12.1.Read and set the locale by using the Locale object.
12.2.Build a resource bundle for each local.
12.3.Load a resource bundle in an application.
12.4.Format text for localization by using NumberFormat and DateFormat.
OCPJP 7 Exam (1Z0-805, a.k.a. Upgrade to Java SE 7 Programmer) Topics
This book covers all the topics covered on the upgrade exam—the alternative path to OCPJP 7 certification—in the chapters indicated in the parentheses.
1.Language Enhancements (G&S Chapters 6, 11)
1.1.Use String in the switch statement.
1.2.Use binary literals and numeric literals with underscores.
1.3.Use try-with-resources.
1.4.Use multi-catch in exception statements.
1.5.Use the diamond operator with generic declarations.
1.6.Use more precise rethrow in exceptions.
2.Design Patterns (G&S Chapter 5)
2.1.Design a class using the Singleton design pattern.
2.2.Identify when and how to use composition to solve business problems.
2.3.Write code to implement the DAO pattern.
2.4.Design a class that uses the Factory design pattern.
510
APPENDIX A ■ Exam Topics
3.Database Applications with JDBC (G&S Chapter 10)
3.1.Describe the JDBC API.
3.2.Identify the Java statements required to connect to a database using JDBC.
3.3.Use the JDBC 4.1 RowSetProvider, RowSetFactory, and new RowSet interfaces.
3.4.Use JDBC transactions.
3.5.Use the proper JDBC API to submit queries and read results from the database.
3.6.Use JDBC PreparedStatement and CallableStatement.
4.Concurrency (G&S Chapters 13, 14)
4.1.Identify potential threading problems.
4.2.Use java.util.concurrent collections.
4.3.Use atomic variables and locks.
4.4.Use Executors and ThreadPools.
4.5.Use the parallel Fork/Join framework.
5.Localization (G&S Chapter 12)
5.1.Describe the advantages of localizing an application.
5.2.Define what a locale represents.
5.3.Read and set the locale by using the Locale object.
5.4.Build a resource bundle for each locale.
5.5.Call a resource bundle from an application.
5.6.Select a resource bundle based on locale.
5.7.Format text for localization by using NumberFormat and DateFormat.
6.Java File I/O (NIO.2) (G&S Chapter 9)
6.1.Use the Path class to operate on file and directory paths.
6.2.Use the Files class to check, delete, copy, or move a file or directory.
6.3.Read and change file and directory attributes.
6.4.Recursively access a directory tree.
6.5.Find a file by using the PathMatcher class.
6.6.Watch a directory for changes by using WatchService.
511

Appendix B
Mock Test – 1
The questions in this mock test are designed per the requirements of the OCPJP 7 exam pattern and its standard. The questions in the real exam will not be equally distributed based on exam topics and you’ll get questions in a random order. Further, when you take the real exam, you’ll find that some of the questions are unintuitive or
confusing. For instance, you may find questions 22, 23, and 26 to be incomplete or confusing and that is intentional.
Take the test as if it were your real OCPJP 7 exam. Best of luck.
Time: 2 hours 30 minutes |
No. of questions: 90 |
1.Consider the following code snippet:
if(i == 10.0) System.out.println("true");
Which one of the following declarations of the variable i will compile without errors and print true when the program executes?
a)int i = 012;
b)int i = 10.0f;
c)int i = 10L;
d)int i = 10.0;
2.Consider the following program: import java.math.BigDecimal; class NumberTest {
public static void |
main(String []args) { |
|
|
Number [] numbers = new Number[4]; |
|
||
numbers[0] |
= new Number(0); |
// NUM |
|
numbers[1] |
= new Integer(1); |
|
|
numbers[2] |
= new Float(2.0f); |
|
|
numbers[3] |
= new BigDecimal(3.0); |
// BIG |
|
for(Number |
num : numbers) { |
|
|
System.out.print(num + " "); |
|
||
} |
|
|
|
} |
|
|
|
}
513
Appendix B ■ Mock Test – 1
Which one of the following options correctly describes the behavior of this program?
a)Compiler error in line marked with comment NUM because Number cannot be instantiated.
b)Compiler error in line marked with comment BIG because BigDecimal does not inherit from Number.
c)When executed, this program prints the following: 0 1 2.0 3.
d)When executed, this program prints the following: 0.0 1.0 2.0 3.0.
3.Consider the following code segment:
StringBuffer strBuffer = new StringBuffer("This, that, etc.!"); System.out.println(strBuffer.replace(12, 15, "etcetera"));
Which one of the following options correctly describes the behavior of this code segment?
a)This code segment: This, that, etcetera.!
b)This code segment: This, that, etcetera!
c)This code segment: This, that, etc.
d)This program throws in an ArrayIndexOutOfBoundsException.
4.Consider the following program:
class SBAppend {
public static void main(String []args) { Object nullObj = null;
StringBuffer strBuffer = new StringBuffer(10);
strBuffer.append("hello "); strBuffer.append("world "); strBuffer.append(nullObj); strBuffer.insert(11, '!'); System.out.println(strBuffer);
}
}
Which one of the following options correctly describes the behavior of this program?
a)This program prints the following: hello world!
b)This program prints the following: hello world! null
c)This program throws a NullPointerException.
d)This program throws an InvalidArgumentException.
e)This program throws an ArrayIndexOutOfBoundsException.
5.Consider the following code segment:
Boolean b = null; System.out.println(b ? true : false);
514
Appendix B ■ Mock Test – 1
Which one of the following options correctly describes the behavior of this code segment?
a)This code will result in a compiler error since a reference type (of type Boolean) cannot be used as part of expression for condition check.
b)This code will result in a throwing a NullPointerException.
c)This code will print true in console.
d)This code will print false in console.
6.What will be the output of the following program?
class Base {
public Base() { System.out.println("Base");
}
}
class Derived extends Base { public Derived() {
System.out.println("Derived");
}
}
class DeriDerived extends Derived { public DeriDerived() {
System.out.println("DeriDerived");
}
}
class Test {
public static void main(String []args) { Derived b = new DeriDerived();
}
}
a)Base Derived DeriDerived
b)Derived DeriDerived
c)DeriDerived Derived Base
d)DeriDerived Derived
515
Appendix B ■ Mock Test – 1
7.Consider the following code segment:
MODIFIER class SomeClass { }
Which three of the following modifiers, when replaced instead of MODIFIER, will compile cleanly?
a)public
b)protected
c)private
d)abstract
e)final
f)static
8.Consider the following class definition:
class Point {
private int x = 0, y; public Point(int x, int y) {
this.x = x; this.y = y;
}
// DEFAULT_CTOR
}
Which one of the following definitions of the Point constructor can be replaced without compiler errors in place of the comment DEFAULT_CTOR?
a) |
public Point() { |
|
this(0, 0); |
|
super(); |
|
} |
|
|
b) |
public Point() { |
|
super(); |
|
this(0, 0); |
|
} |
|
|
c)private Point() {
this(0, 0);
}
d)public Point() {
this();
}
e)public Point() {
this(x, 0);
}
516
Appendix B ■ Mock Test – 1
9.Consider the following program:
class Base {
public Base() { System.out.print("Base ");
}
public Base(String s) { System.out.print("Base: " + s);
}
}
class Derived extends Base {
public Derived(String s) { |
||
super(); |
// |
Stmt-1 |
super(s); |
// |
Stmt-2 |
System.out.print("Derived ");
}
}
class Test {
public static void main(String []args) { Base a = new Derived("Hello ");
}
}
Select three correct options from the following list:
a)Removing Stmt-1 will make the program compilable and it will print the following: Base Derived.
b)Removing Stmt-1 will make the program compilable and it will print the following: Base: Hello Derived.
c)Removing Stmt-2 will make the program compilable and it will print the following: Base Derived.
d)Removing both Stmt-1 and Stmt-2 will make the program compilable and it will print the following: Base Derived.
e)Removing both Stmt-1 and Stmt-2 will make the program compilable and it will print the following: Base: Hello Derived.
10.You want to use the static member MYCONST belonging to class A in abc.org.project package. Which one of the following statements shows the correct use of static import feature?
a)static import abc.org.project.A;
b)static import abc.org.project.A.MYCONST;
c)import static abc.org.project.A;
d)import static abc.org.project.A.MYCONST;
517
Appendix B ■ Mock Test – 1
11.Which one of the following programs compiles without any errors and prints “hello world” in console?
a)import static java.lang.System.out.println; class StaticImport {
public static void main(String []args) { println("hello world");
}
}
b)import static java.lang.System.out; class StaticImport {
public static void main(String []args) { out.println("hello world");
}
}
c)import static java.lang.System.out.*; class StaticImport {
public static void main(String []args) { out.println("hello world");
}
}
d) import static java.lang.System.out.*;
class StaticImport {
public static void main(String []args) { println("hello world");
}
}
12.Consider the following program and choose the right option from the given list:
class Base {
public void test() {
protected int a = 10; |
// #1 |
} |
|
} |
|
|
|
class Test extends Base { |
// #2 |
public static void main(String[] args) { |
|
System.out.printf(null); |
// #3 |
} |
|
} |
|
|
|
a)The compiler will report an error at statement #1.
b)The compiler will report an error at statement #2.
c)The compiler will report errors at statement #3.
d)The program will compile without any error.
518
Appendix B ■ Mock Test – 1
13.Consider the following program and choose the correct option from the list of options:
class Base {
public void test() {}
}
class Base1 extends Base { public void test() {
System.out.println("Base1");
}
}
class Base2 extends Base { public void test() {
System.out.println("Base2");
}
}
class Test {
public static void main(String[] args) {
Base obj = new Base1(); |
|
((Base2)obj).test(); |
// CAST |
}
}
a)The program will print the following: Base1.
b)The program will print the following: Base2.
c)The compiler will report an error in the line marked with comment CAST.
d)The program will result in an exception (ClassCastException).
14.Consider the following program:
class Outer { class Inner {
public void print() {
System.out.println("Inner: print");
}
}
}
class Test {
public static void main(String []args) { // Stmt#1
inner.print();
}
}
519
Appendix B ■ Mock Test – 1
Which one of the following statements will you replace in place of // Stmt#1 to make the program compile and run successfully to print “Inner: print” in console?
a)Outer.Inner inner = new Outer.Inner();
b)Inner inner = new Outer.Inner();
c)Outer.Inner inner = new Outer().Inner();
d)Outer.Inner inner = new Outer().new Inner();
15.Consider the following program:
public class Outer {
private int mem = 10;
class Inner {
private int imem = new Outer().mem; // ACCESS1
}
public static void main(String []s) {
System.out.println(new Outer().new Inner().imem); // ACCESS2
}
}
Which one of the following options is correct?
a)When compiled, this program will result in a compiler error in line marked with comment ACCESS1.
b)When compiled, this program will result in a compiler error in line marked with comment ACCESS2.
c)When executed, this program prints 10.
d)When executed, this program prints 0.
16.Consider the following program:
interface EnumBase { }
enum AnEnum implements EnumBase { // IMPLEMENTS_INTERFACE ONLY_MEM;
}
class EnumCheck {
public static void main(String []args) { if(AnEnum.ONLY_MEM instanceof AnEnum) {
System.out.println("yes, instance of AnEnum");
}
if(AnEnum.ONLY_MEM instanceof EnumBase) { System.out.println("yes, instance of EnumBase");
}
if(AnEnum.ONLY_MEM instanceof Enum) { // THIRD_CHECK System.out.println("yes, instance of Enum");
}
}
}
520
Appendix B ■ Mock Test – 1
Which one of the following options is correct?
a)This program results in a compiler in the line marked with comment IMPLEMENTS_INTERFACE.
b)This program results in a compiler in the line marked with comment THIRD_CHECK.
c)When executed, this program prints the following:
yes, instance of AnEnum
d)When executed, this program prints the following: yes, instance of AnEnum
yes, instance of EnumBase
e)When executed, this program prints the following: yes, instance of AnEnum
yes, instance of EnumBase yes, instance of Enum
17.Which of the following statements are true with respect to enums? (Select all that apply.)
a)An enum can have private constructor.
b)An enum can have public constructor.
c)An enum can have public methods and fields.
d)An enum can implement an interface.
e)An enum can extend a class.
18.Consider the following program and predict the behavior:
class base1 {
protected int var;
}
interface base2 {
int var = 0; // #1
}
class Test extends base1 implements base2 { // #2 public static void main(String args[]) {
System.out.println("var:" + var); // #3
}
}
a)The program will report a compilation error at statement #1.
b)The program will report a compilation error at statement #2.
c)The program will report a compilation error at statement #3.
d)The program will compile without any errors.
521
Appendix B ■ Mock Test – 1
19.Consider the following program:
class WildCard { interface BI {}
interface DI extends BI {} interface DDI extends DI {}
static class C<T> {}
static void foo(C<? super DI> arg) {}
public static void main(String |
[]args) { |
foo(new C<BI>()); |
// ONE |
foo(new C<DI>()); |
// TWO |
foo(new C<DDI>()); |
// THREE |
foo(new C()); |
// FOUR |
} |
|
} |
|
|
|
Which of the following options are correct? |
|
a)Line marked with comment ONE will result in a compiler error.
b)Line marked with comment TWO will result in a compiler error.
c)Line marked with comment THREE will result in a compiler error.
d)Line marked with comment FOUR will result in a compiler error.
20.Consider the following definitions:
interface BI {}
interface DI extends BI {}
The following options provide definitions of a template class X. Which one of the options specifies class X with a type parameter whose upper bound declares DI to be the super type from which all type arguments must be derived?
a)class X <T super DI> { }
b)class X <T implements DI> { }
c)class X <T extends DI> { }
d)class X <T extends ? & DI> { }
21.Consider the following program:
class base1{}
class base2{}
interface base3{}
interface base4{}
522
Appendix B ■ Mock TesT – 1
// Stmt
public static void main(String args[]){
}
}
Which one of the following statements will compile without errors if replaced in place of the line marked with comment Stmt?
a)class Test extends base1, base2 implements base3, base4 {
b)class Test extends base1 implements base3, base4 {
c)class Test extends base1 implements base3 implements base4 {
d)class Test extends base1, extends base2 implements base3, base4 {
22.In the context of Singleton pattern, which one of the following statements is true?
a)A Singleton class must not have any static members.
b)A Singleton class has a public constructor.
c)A Factory class may use Singleton pattern.
d)All methods of the Singleton class must be private.
23.In the context of DAO pattern, which one of the following classes could be playing a role of TransferObject:
a)ImageManager
b)ImageFactory
c)Image
d)ImageProcessor
24.Which one of the following object-oriented concepts describes has-a relationship?
a)Inheritance
b)Composite pattern
c)Inner classes
d)Composition
25.Consider the following program: class ClassA {}
interface InterfaceB {} class ClassC {}
class Test extends ClassA implements InterfaceB { String msg;
ClassC classC;
}
523

Appendix B ■ Mock Test – 1
Which one of the following statements is true?
a)Class Test is related with ClassA with a has-a relationship.
b)Class Test is related to ClassC with a composition relationship.
c)Class Test is related with String with an is-a relationship.
d)Class ClassA is related with InterfaceB with an is-a relationship.
26.Consider the following UML diagram of a class program and choose a right option:
a)The class exhibits low cohesion.
b)The class implements Singleton pattern.
c)The class implements DAO pattern.
d)The class exhibits low coupling.
27.Consider the following program:
import java.util.Comparator; import java.util.Arrays;
class CountryComparator implements Comparator<String> { public int compare(String country1, String country2) {
return country2.compareTo(country2); // COMPARE_TO
}
}
public class Sort {
public static void main(String[] args) {
String[] brics = {"Brazil", "Russia", "India", "China"}; Arrays.sort(brics, null);
for(String country : brics) { System.out.print(country + " ");
}
}
}
524
Appendix B ■ Mock Test – 1
Which one of the following options correctly describes the behavior of this program?
a)The program results in a compiler error in the line marked with the comment COMPARE_TO.
b)The program prints the following: Brazil Russia India China.
c)The program prints the following: Brazil China India Russia.
d)The program prints the following: Russia India China Brazil.
e)The program throws the exception InvalidComparatorException.
f)The program throws the exception InvalidCompareException.
g)The program throws the exception NullPointerException.
28.Which one of the following class definitions will compile without any errors?
a)class P<T> {
static T s_mem;
}
b) class Q<T> { T mem;
public Q(T arg) { mem = arg;
}
}
c) class R<T> { T mem;
public R() {
mem = new T();
}
}
d) class S<T> { T []arr;
public S() {
arr = new T[10];
}
}
29.Which one of the following class/interface supports “retrieval if elements based on the closest match to a given value or values?”
a)EnumSet
b)HashSet
c)AbstractSet
d)NavigableSet
525
Appendix B ■ Mock Test – 1
30.In a class that extends ListResourceBundle, which one of the following method definitions correctly overrides the getObject() method of the base class?
a)public String[][] getContents() {
return new Object[][] { { "1", "Uno" }, { "2", "Duo" }, { "3", "Trie" }};
}
b)public Object[][] getContents() {
return new Object[][] { { "1", "Uno" }, { "2", "Duo" }, { "3", "Trie" }};
}
c)private List<String> getContents() {
return new ArrayList (Arrays.AsList({ { "1", "Uno" }, { "2", "Duo" }, { "3", "Trie" }});
}
d)protected Object[] getContents(){
return new String[] { "Uno", "Duo", "Trie" };
}
31.Which one of the following interfaces declares a single method named iterator()? (Note: Implementing this interface allows an object to be the target of the for-each statement.)
a)Iterable<T>
b)Iterator<T>
c)Enumeration<E>
d)ForEach<T>
32.Which one of the following options is best suited for generating random numbers in a multi-threaded application?
a)Using java.lang.Math.random()
b)Using java.util.concurrent.ThreadLocalRandom
c)Using java.util.RandomAccess
d)Using java.lang.ThreadLocal<T>
33.Consider the following program:
import java.util.*;
class ListFromVarargs {
public static <T> List<T> asList1(T... elements) { ArrayList<T> temp = new ArrayList<>();
for(T element : elements) { temp.add(element);
}
return temp;
}
526
Appendix B ■ Mock Test – 1
public static <T> List<?> asList2(T... elements) { ArrayList<?> temp = new ArrayList<>();
for(T element : elements) { temp.add(element);
}
return temp;
}
public static <T> List<?> asList3(T... elements) { ArrayList<T> temp = new ArrayList<>();
for(T element : elements) { temp.add(element);
}
return temp;
}
public static <T> List<?> asList4(T... elements) { List<T> temp = new ArrayList<T>();
for(T element : elements) { temp.add(element);
}
return temp;
}
}
Which of the asList definitions in this program will result in a compiler error?
a)The definition of asList1 will result in a compiler error.
b)The definition of asList2 will result in a compiler error.
c)The definition of asList3 will result in a compiler error.
d)The definition of asList4 will result in a compiler error.
e)None of the definitions (asList1, asList2, asList3, asList4) will result in a compiler error.
34.Consider the following program:
import java.util.*;
class TemplateType {
public static void main(String []args) { List<Map<List<Integer>, List<String>>> list =
new ArrayList<>(); // ADD_MAP Map<List<Integer>, List<String>> map = new HashMap<>();
list.add(null); |
// |
ADD_NULL |
list.add(map); |
|
|
list.add(new HashMap<List<Integer>, |
||
List<String>>()); |
// ADD_HASHMAP |
527
Appendix B ■ Mock Test – 1
for(Map element : list) { |
// |
ITERATE |
System.out.print(element + |
" "); |
|
} |
|
|
}
}
Which one of the following options is correct?
a)This program will result in a compiler error in line marked with comment ADD_MAP.
b)This program will result in a compiler error in line marked with comment ADD_HASHMAP.
c)This program will result in a compiler error in line marked with comment ITERATE.
d)When run, this program will crash, throwing a NullPointerException in line marked with comment ADD_NULL.
e)When run, this program will print the following: null {} {}
35.Consider the following program:
class Base<T> { }
class Derived<T> { }
class Test {
public static void main(String []args) { // Stmt #1
}
}
Which statements can be placed in the place of //Stmt#1 and the program remains compilable (choose two):
a)Base<Number> b = new Base<Number>();
b)Base<Number> b = new Derived<Number>();
c)Base<Number> b = new Derived<Integer>();
d)Derived<Number> b = new Derived<Integer>();
e)Base<Integer> b = new Derived<Integer>();
f)Derived<Integer> b = new Derived<Integer>();
36.Consider the following program:
class Base<T> { }
class Derived<T> { }
class Test {
public static void main(String []args) { //Stmt#1
}
}
528
Appendix B ■ Mock Test – 1
Which statements can be placed in the place of //Stmt#1 and the program remains compilable (select all that apply)?
a)Base<? extends Number> b = new Base<Number>();
b)Base<? extends Number> b = new Derived<Number>();
c)Base<? extends Number> b = new Derived<Integer>();
d)Derived<? extends Number> b = new Derived<Integer>();
e)Base<?> b = new Derived<Integer>();
f) Derived<?> b = new Derived<Integer>();
37.Which of the following statements are true about java.sql.Savepoint? (select all that apply)
a)Savepoint is a point within the current transaction that can be referenced from the Connection.rollback() method
b)When a transaction is rolled back to a savepoint all changes made after that savepoint are undone.
c)Savepoints must be named. It is not possible to have "unnamed savepoints".
d)java.sql.Savepoint is an abstract class; it is implemented by the classes such as JDBCSavepoint, ODBCSavepoint, and TransactionSavepoint in the java.sql package.
38.Consider the following program and choose the appropriate option:
import java.util.*;
class Test {
public static void main(String []args) {
Set<Integer> set = new LinkedHashSet<Integer>(); //#1 LinkedHashSet<Integer> set2 = new HashSet<Integer>(); //#2 SortedSet<Integer> set3 = new TreeSet<Integer>(); //#3 SortedSet<Integer> set4 = new NavigableSet<Integer>(); //#4
}
}
a)Statements #1 and #2 will compile successfully.
b)Statements #1 and #3 will compile successfully.
c)Statements #1, #2, and #3 will compile successfully.
d)Statements #2 and #4 will compile successfully.
39.Consider the following program:
import java.util.*;
class Test {
public static void main(String []args) { Set<Integer> set = new TreeSet<Integer>();
529
Appendix B ■ Mock Test – 1
set.add(5);
set.add(10);
set.add(3);
set.add(5);
System.out.println(set);
}
}
What will be the output of this program?
a)[5, 10, 3, 5]
b)[5, 10, 3]
c)[3, 5, 10]
d)[10, 5, 3]
40.Which of the following statements are true about classes relating to formatting date and time for local cultures? (select all that apply)
a)java.text.Format is the abstract base class that supports formatting of locale sensitive information such as date, time, and currency
b)java.text.CustomTimeFormat allows you to define custom patterns for processing time for specific locales.
c)java.text.NumberFormat derives from the java.text.Format class; it is the base class for processing numbers, currency, etc. in a locale sensitive way.
d)java.text.DateFormat derives from the java.text.Format class; it is the base class for processing date and time information based on locale.
41.Consider the following program and choose the appropriate option:
import java.util.*; |
|
|
|
|
|
class Test { |
|
|
public static void main(String []args) { |
|
|
Map<String, |
int> map = |
|
new |
HashMap<int, String>(); |
//#1 |
Map<String, |
String> map2 = |
|
new |
HashMap<String, String>(); |
//#2 |
Map<String, |
String> map3 = new HashMap<>(); |
//#3 |
Map<> map4 = new HashMap<String, String>(); |
//#4 |
|
} |
|
|
} |
|
|
|
|
|
a)Statement #1 and #2 will compile successfully.
b)Statement #2 and #3 will compile successfully.
c)Statement #3 and #4 will compile successfully.
d)Statement #4 and #1 will compile successfully.
530
Appendix B ■ Mock Test – 1
42.Consider the following program and predict the output:
import java.util.*;
class Test {
public static void main(String []args) {
Map<Integer, String> map = new TreeMap<Integer, String>(); map.put(5, "5");
map.put(10, "10"); map.put(3, "3"); map.put(5,"25"); System.out.println(map);
}
}
a){5=5, 10=10, 3=3, 5=25}
b){10=10, 3=3, 5=25}
c){3=3, 5=5, 5=25, 10=10}
d){3=3, 5=25, 10=10}
e){3=3, 5=5, 10=10}
43.Consider the following program and predict the output:
import java.util.*;
class Test {
public static void main(String []args) { Deque<Integer> deque = new LinkedList<>(); deque.add(10);
deque.add(20);
deque.peek();
deque.peek(); deque.peek(); //#1 System.out.println(deque);
}
}
a)[10, 20]
b)[20, 10]
c)[]
d)NoSuchElementException thrown when executing the line #1.
44.Which of the following classes in the java.util.concurrent.atomic package inherit from java.lang.Number? (Select all that apply).
a)AtomicBoolean
b)AtomicInteger
c)AtomicLong
d)AtomicFloat
e)AtomicDouble
531
Appendix B ■ Mock Test – 1
45.Consider the following program and predict the output:
import java.util.HashSet;
class Student{
public Student(int r) { rollNo = r;
}
int rollNo;
}
class Test {
public static void main(String[] args){ HashSet<Student> students = new HashSet<>(); students.add(new Student(5)); students.add(new Student(10));
System.out.println(students.contains(new Student(10)));
}
}
a)This program prints the following: true.
b)This program prints the following: false.
c)This program results in a compiler error.
d)This program throws NoSuchElementException.
46.Which of the following statements are true regarding resource bundles in the context of localization? (select all that apply)
a)java.util.ResourceBundle is the base class and is an abstraction of resource bundles that contain locale-specific objects.
b)java.util.PropertyResourceBundle is a concrete subclass of java.util. ResourceBundle that manages resources for a locale using strings provided in the form of a property file.
c)Classes extending java.util.PropertyResourceBundle must override the getContents() method which has the return type Object [][].
d)java.util.ListResourceBundle defines the getKeys() method that returns enumeration of keys contained in the resource bundle.
47.Consider the following program and predict the output:
import java.util.HashSet;
class Student{
public Student(int r) { rollNo = r;
}
532
Appendix B ■ Mock TesT – 1
int rollNo;
public int hashCode(){ return rollNo;
}
}
class Test {
public static void main(String[] args){ HashSet<Student> students = new HashSet<>(); students.add(new Student(5));
Student s10 = new Student(10); students.add(s10);
System.out.println(students.contains(new Student(10))); System.out.println(students.contains(s10));
}
}
a)false true
b)false false
c)true false
d)true true
48.Which of the following statements are true regarding the classes or interfaces defined in the java.util.concurrent package?
a)The Executor interface declares a single method execute(Runnable command) that executes the given command at sometime in the future.
b)The Callable interface declares a single method call() that computes a result.
c)The Exchanger class provides a “synchronization point at which threads can pair and swap elements within pairs”.
d)The TimeUnit enumeration represents time duration and is useful for specifying timing parameters in concurrent programs.
49.Consider the following program and predict the output: import java.util.*;
class Test {
public static void main(String []args) { List<Integer> intList = new ArrayList<>();
intList.add(10); |
|
intList.add(20); |
|
List list = intList; |
|
list.add("hello"); |
// ADD_STR |
533
Appendix B ■ Mock Test – 1
for(Object o : list) { System.out.print(o + " ");
}
}
}
a)This program will not print any output and will throw ClassCastException.
b)This program will first print 10 and 20 and then throw ClassCastException.
c)This program will result in a compiler error in line marked with comment ADD_STR.
d)This program will print 10, 20, and hello.
50.Which TWO of the following options provide assignments that will compile without errors?
a)Map<String, String> map1 = new NavigableMap<>();
b)Map<String, String> map2 = new IdentityHashMap<>();
c)Map<String, String> map3 = new Hashtable<>();
d)Map<String, String> map4 = new ConcurrentMap<>();
51.Consider the following program:
import java.util.*;
class AsList {
public static void main(String []args) { String hello = "hello";
String world = "world";
StringBuffer helloWorld = new StringBuffer(hello + world);
List<String> list =
Arrays.asList(hello, world, helloWorld.toString()); helloWorld.append("!");
list.remove(0); // REMOVE System.out.println(list);
}
}
Which one of the following options is correct?
a)When compiled, this program will result in a compiler error in linked marked with comment REMOVE.
b)When run, this program will crash with throwing the exception UnsupportedOperationException when executing the line marked with comment REMOVE.
c)When run, this program will print the following output: [hello, world, helloworld]
d)When run, this program will print the following output: [world, helloworld!]
e)When run, this program will print the following output: [world, helloworld]
534
Appendix B ■ Mock Test – 1
52.Consider the following program and predict the output:
class Test {
public static void main(String []args) { String s = new String("5"); System.out.println(1+10+s+1+10);
}
}
a)11511
b)1105110
c)115110
d)27
53.Consider the following program and predict the output:
class Test {
public static void main(String []args) { String s = new String("5");
System.out.println(1.0+10.5+s+(1.0+10.5));
}
}
a)11.5511.5
b)11.551.010.5
c)1.010.551.010.5
d)11.55(1.010.5)
e)11.55(11.5)
54.Consider the following program:
class Printf {
public static void main(String []args) { System.out.printf("%3.4s %n", "hello world"); System.out.printf("%05d", 123);
}
}
Which one of the following options correctly provides the output of this program?
a)lo 05123
b)hell 0123
c)hello 123
535
Appendix B ■ Mock Test – 1
d)hell 00123
e)hello world 123
55.Consider the following program:
class PrintlnTest {
public static void main(String[] args) { String two = "2"; System.out.println("1 + 2 + 3 + 4 = "
+ 1 + Integer.parseInt(two) + 3 + 4); // PARSE
}
}
Which one of the following options correctly describes the behavior of this program?
a)When compiled, this program will give a compiler error in line marked with comment PARSE for missing catch handler for NumberFormatException.
b) |
When executed, the program prints the following: 1 |
+ 2 |
+ 3 |
+ 4 |
= 1234. |
c) |
When executed, the program prints the following: 1 + 2 + 3 + 4 = 10. |
||||
d) |
When executed, the program prints the following: 1 |
+ 2 |
+ 3 |
+ 4 |
= 127. |
e) |
When executed, the program prints the following: 1 + 2 + 3 + 4 = 19. |
f)When executed, the program throws a NumberFormatException in the line marked with comment PARSE.
56.Consider the following program and predict the output:
class Test {
public static void main(String []args) { int a = 7, b = 10;
System.out.printf("no:%2$s and %1$s", a, b); System.out.printf("\nno:2$s and 1$s", a, b);
}
}
a)no:10 and 7 no:2$s and 1$s
b)no:7 and 10 no:2$s and 1$s
c)no:10 and 7 no:10 and 7
d)no:7 and 10 no:7 and 10
e)This program will result in compiler error(s).
536
Appendix B ■ Mock Test – 1
57.Consider the following program and predict the output (ignore any empty lines in the output):
class Test {
public static void main(String[] s) { String quote = "aba*abaa**aabaa***";
String [] words = quote.split("a\\**", 10); for (String word : words) {
System.out.println(word);
}
}
}
a)ab aba *aaba
**
b)b b b
c)aba*aba aaba
d)This program throws a runtime exception.
58.Consider the following program and predict the output:
import java.util.regex.*;
class Test {
public static void main(String[] args) { String str1 = "xxzz";
String str2 = "xyz"; String str3 = "yzz";
Pattern pattern = Pattern.compile("(xx)*y?z{1,}"); Matcher matcher = pattern.matcher(str1); System.out.println(matcher.matches()); System.out.println(pattern.matcher(str2).matches()); System.out.println(
Pattern.compile("(xx)*y?z{1,}"). matcher(str3).matches());
}
}
a)true false true
b)true false false
537
Appendix B ■ Mock Test – 1
c)false false false
d)false false true
e)true true true
59.Consider the following program and predict the output:
import java.util.regex.*;
class Test {
public static void main(String[] args) { String str = "OCPJP 2013 OCPJP7";
Pattern pattern = Pattern.compile("\\b\\w+\\D\\b");
Matcher matcher = pattern.matcher(str); while(matcher.find()) {
System.out.println(matcher.group());
}
}
}
a)OCPJP 2013 OCPJP7
b)OCPJP 2013
c)OCPJP OCPJP7
d)This program does not result in any output.
60.Consider the following program and predict the output:
import java.util.regex.*;
class Test {
public static void main(String[] args) { String str =
"Suneetha N.=9876543210, Pratish Patil=9898989898"; Pattern pattern =
Pattern.compile("(\\w+)(\\s\\w+)(=)(\\d{10})"); Matcher matcher = pattern.matcher(str);
String newStr = matcher.replaceAll("$4:$2,$1"); System.out.println(newStr);
}
}
538
Appendix B ■ Mock Test – 1
a)9876543210: N.,Suneetha, 9898989898: Patil,Pratish
b)Suneetha N.=9876543210, Pratish Patil=9898989898
c)Suneetha N.=9876543210, 9898989898: Patil,Pratish
d)This program throws a runtime exception.
61.Which of the following TWO statements are true about the pre-defined streams
System.in, System.out, and System.err?
a)System.in is of type InputStream.
b)System.in is of type FileReader.
c)System.out is of type OutputStream.
d)System.err is of type ErrorStream.
e)Both System.out and System.err are of type PrintStream.
f)Both System.out and System.err are of type FileWriter.
62.Consider the following program:
import java.io.*;
class CloseableImpl implements Closeable { public void close() throws IOException {
System.out.println("In CloseableImpl.close()");
}
}
class AutoCloseableImpl implements AutoCloseable { public void close() throws Exception {
System.out.println("In AutoCloseableImpl.close()");
}
}
class AutoCloseCheck {
public static void main(String []args) {
try (Closeable closeableImpl = new CloseableImpl(); AutoCloseable autoCloseableImpl
=new AutoCloseableImpl()) {
}catch (Exception ignore) {
//do nothing
}
finally {
// do nothing
}
}
}
539
Appendix B ■ Mock Test – 1
Which one of the following options correctly shows the output of this program when the program is executed?
a)This program does not print any output in console.
b)This program prints the following output: In AutoCloseableImpl.close()
c)This program prints the following output: In AutoCloseableImpl.close()
In CloseableImpl.close()
d)This program prints the following output: In CloseableImpl.close()
In AutoCloseableImpl.close()
63.Consider the following code snippet and choose the best option:
public static void main(String []files) { try (FileReader inputFile =
new FileReader(new File(files[0]))) { // #1
}
catch (FileNotFoundException | IOException e) { // #2 e.printStackTrace();
}
}
a)The code snippet will compile without any errors.
b)The compiler will report an error at statement #1.
c)The compiler will report an error at statement #2.
d)The compiler will report errors at statements #1 and #2.
64.Consider the following code segment:
while( (ch = inputFile.read()) != VAL) { outputFile.write( (char)ch );
}
Assume that inputFile is of type FileReader, and outputFile is of type FileWriter, and ch is of type char. The method read() returns the character if successful, or VAL if the end of the stream has been reached. What is the correct value of this VAL checked in the while loop for end-of-stream?
a)-1
b)0
c)255
d)Integer.MAX_VALUE
e)Integer.MIN_VALUE
540
Appendix B ■ Mock Test – 1
65.Consider the following program and predict the output:
import java.io.*;
class USPresident implements Serializable{
private static final long serialVersionUID = 1L; @Override
public String toString() {
return "US President [name=" + name +
", period=" + period + ", term=" + term + "]";
}
public USPresident(String name, String period, String term) { this.name = name;
this.period = period; this.term = term;
}
private String name; private String period;
private static transient String term;
}
class TransientSerialization {
public static void main(String []args) { USPresident usPresident = new USPresident
("Barack Obama", "2009 to --", "56th term"); System.out.println(usPresident);
try (ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream("USPresident.data"))){ oos.writeObject(usPresident);
}catch(IOException ioe) {
//ignore
}
try(ObjectInputStream ois = new ObjectInputStream (new FileInputStream("USPresident.data"))){ Object obj = ois.readObject();
if(obj != null && obj instanceof USPresident){ USPresident presidentOfUS = (USPresident)obj; System.out.println(presidentOfUS);
}
}catch(IOException ioe) {
//ignore
}catch (ClassNotFoundException e) {
//ignore
}
}
}
541
Appendix B ■ Mock Test – 1
a)US President [name=Barack Obama, period=2009 to --, term=56th term] US President [name=Barack Obama, period=2009 to --, term=56th term]
b)US President [name=Barack Obama, period=2009 to --, term=56th term] US President [name=Barack Obama, period=2009 to --, term=null]
c)This program will result in a compiler error.
d)This program will result in a runtime exception.
66.Which one of the following statements true?
a)If you do not specify serialVersionUID while in serialization, your class will not compile
b)If you do not specify serialVersionUID while in serialization, JVM will work across all platforms and JVM implementations.
c)If you are implementing an Externalizable interface, you need not specify serialVerionUID.
d)If a class is serialized and you try to serialize it again, the JVM will not serialize it due to the same serialVersionUID.
67.Consider the following program:
import java.io.*;
class CopyFile {
public static void main(String []files) { if(files.length != 2) {
System.err.println
("Incorrect syntax. Usage: Copy SrcFile DstFile"); System.exit(-1);
}
String srcFile = files[0]; String dstFile = files[1];
try (BufferedReader inputFile
=new BufferedReader(new FileReader(srcFile)); BufferedWriter outputFile
=new BufferedWriter(new FileWriter(dstFile))) { int ch = 0;
inputFile.skip(6);
while( (ch = inputFile.read()) != -1) { outputFile.write( (char)ch );
}
outputFile.flush();
}catch (IOException exception) { System.err.println("Error "
+exception.getMessage());
}
}
}
Assume that you have a file named HelloWorld.txt with the following contents:
Hello World!
542
Appendix B ■ Mock TesT – 1
This program is invoked from the command-line as:
java CopyFile HelloWorld.txt World.txt
Which one of the following options correctly describes the behavior of this program (assuming that both srcFile and dstFile are opened successfully)?
a)The program will throw an IOException because skip() is called before calling read().
b)The program will result in creating the file World.txt with the contents “World!” in it.
c)This program will result in throwing CannotSkipException.
d)This program will result in throwing IllegalArgumentException.
68.Consider the following program: import java.nio.file.*;
class SubPath {
public static void main(String []args) {
Path aPath = Paths.get("C:\\WINDOWS\\system32\\config\\systemprofile\\ Start Menu\\Programs\\Accessories\\Entertainment\\Windows Media Player"); System.out.println(aPath.subpath(3, 4));
}
}
Which one of the following options is correct?
a)This program prints the following: config\systemprofile.
b)This program prints the following: config.
c)This program prints the following: systemprofile.
d)This program prints the following: system32\config.
e)This program throws an IllegalArgumentException.
69.Consider the following code segment:
Path testFilePath = Paths.get("C:\\WINDOWS\\system32\\config\\.\\systemprofile\\Start Menu\\Programs\\Accessories\\Entertainment\\..\\..");
System.out.println("It's normalized absolute path is: " + testFilePath.normalize().toAbsolutePath());
Which one of the following options correctly provides the output of this code segment?
a)C:\\WINDOWS\\system32\\config\\systemprofile\\Start
Menu\\Programs\\Accessories\\Entertainment\\
b)C:\WINDOWS\system32\config\systemprofile\Start
Menu\Programs\Accessories\Entertainment\
c)C:\WINDOWS\system32\config\systemprofile\Start Menu\Programs
d)C:\WINDOWS\system32\systemprofile\Start
Menu\Programs\Accessories\Entertainment\
543
Appendix B ■ Mock Test – 1
70.Consider the following program and predict the output:
class Base {
protected void finalize() { System.out.println("in Base.finalize");
}
}
class Derived extends Base { protected void finalize() {
System.out.println("in Derived.finalize");
}
}
class Test {
public static void main(String []args) { Derived d = new Derived();
d = null; Runtime.runFinalizersOnExit(true);
}
}
a)This program prints the following: in Base.finalize.
b)This program prints the following: in Derived.finalize.
c)This program throws a CannotRunFinalizersOnExitException.
d)This program throws a NullPointerException.
71.Consider the following program and predict the output:
class Test {
private static int mem = 0; public static void foo() {
try {
mem = mem + 1;
}
catch(Exception e) { e.printStackTrace();
}
finally {
mem = mem + 1;
}
}
public static void main(String []args) { foo();
System.out.println(mem);
}
}
544
Appendix B ■ Mock Test – 1
a)0
b)1
c)2
d)3
72.Consider the following program:
class Base {
public void foo() {
assert true; |
// ASSERT_BASE |
}
}
class Derived extends Base { public void foo() {
assert false; // ASSERT_DERIVED
}
}
class AssertionCheck {
public static void main(String []args) { try {
Base base = new Base(); base.foo();
}
catch(Exception e) {
base = new Derived(); base.foo();
}
}
}
From the command line, this program is invoked as follows:
java -ea -da:Derived AssertionCheck
Which one of the following options correctly describes the behavior of this program when it is run?
a)This program crashes throwing an AssertionError in line marked with comment ASSERT_BASE.
b)This program crashes throwing an AssertionError in line marked with comment ASSERT_DERIVED.
c)This program first prints “Caught exception” and then crashes throwing an AssertionError in line marked with comment ASSERT_DERIVED.
d)This program completes execution normally without producing any output or throwing any exceptions.
545
Appendix B ■ Mock Test – 1
73.Consider the following code segment:
try (BufferedReader inputFile
=new BufferedReader(new FileReader(srcFile)); BufferedWriter outputFile
=new BufferedWriter(new FileWriter(dstFile))) { // TRY-BLOCK int ch = 0;
while( (ch = inputFile.read()) != -1) { outputFile.write( (char)ch );
}
} catch (FileNotFoundException
| IOException exception) { // MULTI-CATCH-BLOCK System.err.println("Error in opening or processing file "
+ exception.getMessage());
}
Assume that srcFile and dstFile are Strings. Which one of the following options correctly describes the behavior of this program?
a)This program will get into an infinite loop because the condition check for end-of-stream (checking != -1) is incorrect.
b)This program will get into an infinite loop because the variable ch is declared as int instead of char.
c)This program will result in a compiler error in line marked with comment TRY-BLOCK because you need to use , (comma) instead of ; (semi-colon) as separator for opening multiple resources.
d)This program will result in a compiler error in line marked with comment MULTI-CATCH-BLOCK because IOException is the base class for
FileNotFoundException.
74.Consider the following program and replace the statement #1 and #2 with appropriate declarations:
import java.io.Console;
class Login {
public static void main(String []args) { Console console = System.console(); if(console != null) {
//#1
//#2
userName = console.readLine("Enter your username: "); password = console.readPassword("Enter password: "); System.out.println(userName + " ," + password);
}
}
}
546
Appendix B ■ Mock Test – 1
a)String userName = null; char[] password = null;
b)String userName = null; String password = null;
c)char[] userName = null; String password = null;
d)char[] userName = null;
char[] password = null;
75.Assuming that file is a String variable, which one of the following statements is NOT a valid statement?
a)BufferedReader inputFile = new BufferedReader(new FileReader(file));
b)FileReader inputFile = new FileReader(file);
c)FilterReader fr = new FilterReader(file);
d)FilterReader fr = new PushbackReader(new FileReader(file));
76.Consider the following snippet:
try (FileReader inputFile = new FileReader(file)) { //#1
System.out.print( (char)ch );
}
}
Which one of the following statements can be replaced in the place of statement #1?
a)while( (ch = inputFile.read()) != null) {
b)while( (ch = inputFile.read()) != -1) {
c)while( (ch = inputFile.read()) != 0) {
d)while( (ch = inputFile.read()) != EOF) {
77.Among the given options, which two options will compile successfully:
a)BufferedReader br =
new BufferedReader(new FileReader(srcFile)); br.getChannel();
b)RandomAccessFile raf =
new RandomAccessFile(srcFile, "rw+"); raf.getChannel();
c)FileInputStream ifr =
new FileInputStream(srcFile); ifr.getChannel();
d)DataInputStream dis =
new DataInputStream(new FileInputStream("temp.data")); dis.getChannel();
547
Appendix B ■ Mock Test – 1
78.Consider the following program and predict the output (the following files exist in the
given path File09.java, File0.java, FileVisitor1.java, FileVisitor1.class):
class MyFileFindVisitor extends SimpleFileVisitor<Path> { private PathMatcher matcher;
public MyFileFindVisitor(String pattern) { matcher =
FileSystems.getDefault().getPathMatcher(pattern);
}
public FileVisitResult visitFile
(Path path, BasicFileAttributes fileAttributes){ find(path);
return FileVisitResult.CONTINUE;
}
private void find(Path path) {
Path name = path.getFileName(); if(matcher.matches(name))
System.out.println
("Matching file:" + path.getFileName());
}
public FileVisitResult preVisitDirectory
(Path path, BasicFileAttributes fileAttributes){ find(path);
return FileVisitResult.CONTINUE;
}
}
class FileTreeWalkFind {
public static void main(String[] args) {
Path startPath = Paths.get("d:\\workspace\\test\\src"); String pattern = "glob:File[0-9]+.java";
try {
Files.walkFileTree
(startPath, new MyFileFindVisitor(pattern)); System.out.println("File search completed!");
} catch (IOException e) { e.printStackTrace();
}
}
}
a)File09.java
File0.java
FileVisitor1.java
File search completed!
b) File09.java
File0.java
File search completed!
548
Appendix B ■ Mock Test – 1
c)File0.java
File search completed!
d)File search completed!
79.Which one of the following statements is NOT correct in the context of NIO.2?
a)While finding files/directories, the default pattern format is glob; hence, you need not start the search-pattern from "glob:".
b)You can specify the search pattern either in glob format or in regex format.
c)Glob format is a subset of the regex pattern format.
d)There will be no error or runtime exception if you specify a wrong glob search pattern.
80.Which one of the following statements will compile without errors?
a)Locale locale1 = new Locale.US;
b)Locale locale2 = Locale.US;
c)Locale locale3 = new US.Locale();
d)Locale locale4 = Locale("US");
e)Locale locale5 = new Locale(Locale.US);
81.Consider the following program:
import java.util.*;
class Format {
public static void main(String []args) { Formatter formatter = new Formatter();
Calendar calendar = Calendar.getInstance(Locale.US); calendar.set(/* year =*/ 2012,
/* month = */ Calendar.FEBRUARY, /* date = */ 1); formatter.format("%tY/%tm/%td",
calendar, calendar, calendar); System.out.println(formatter);
}
}
Which one of the following options is correct?
a)The program throws a MissingFormatArgumentException.
b)The program throws an UnknownFormatConversionException.
c)The program prints the following: 2012/02/01.
d)The program prints the following: 12/Feb/01.
549
Appendix B ■ Mock Test – 1
82.Which one of the following statements is correct with respect to Closeable and
AutoCloseable interfaces?
a)Interface Closeable extends AutoCloseable and defines one method, close().
b)Interface Autocloseable extends Closeable and defines one method, close().
c)Interface Closeable extends AutoCloseable and does not define any method.
d)Interface AutoCloseable extends Closeable and does not define any method.
e)Closeable and AutoCloseable interfaces do not share any inheritance relationship.
83.Which one of the following code snippets shows the correct usage of try-with-resources statement?
a)public static void main(String []files) {
try (FileReader inputFile
= new FileReader(new File(files[0]))) { //...
}
catch(IOException ioe) {}
}
b)public static void main(String []files) {
try (FileReader inputFile
= new FileReader(new File(files[0]))) { //...
}
finally {/*...*/} catch(IOException ioe) {}
}
c)public static void main(String []files) {
try (FileReader inputFile
= new FileReader(new File(files[0]))) { //...
}
catch(IOException ioe) {} finally {/*...*/}
}
d)public static void main(String []files) {
try (FileReader inputFile
= new FileReader(new File(files[0]))) { //...
}
}
550
Appendix B ■ Mock Test – 1
84.Consider the following program and predict the output:
class MyThread extends Thread { public MyThread(String name) {
this.setName(name);
start();
System.out.println("in ctor " + getName());
}
public void start() {
System.out.println("in start " + getName());
}
public void run() {
System.out.println("in run " + getName());
}
}
class Test {
public static void main(String []args) { new MyThread("oops");
}
}
a)in start oops in ctor oops
b)in start oops in run oops in ctor oops
c)in start oops in ctor oops in run oops
d)in ctor oops in start oops in run oops
85.Which one of the following methods returns a Future object?
a)The overloaded submit() method declared in the ExecutorService interface.
b)The execute() method declared in the Executor interface.
c)The call() method declared in the Callable interface.
d)The run() method declared in the Runnable interface.
551
Appendix B ■ Mock Test – 1
86.Consider the following program:
import java.util.concurrent.locks.*;
class LockUnlock {
public static void main(String []args) { Lock lock = new ReentrantLock(); try {
System.out.print("Lock 1 "); lock.lock();
System.out.print("Critical section 1 "); System.out.print("Lock 2 ");
lock.lock(); |
// LOCK_2 |
|
System.out.print("Critical section 2 "); |
||
} finally { |
|
|
lock.unlock(); |
|
|
System.out.print("Unlock 2 |
"); |
|
lock.unlock(); |
// UNLOCK_1 |
|
System.out.print("Unlock 1 |
"); |
|
} |
|
|
}
}
Which one of the following options is correct?
a)This program will throw an IllegalMonitorStateException in the line marked with comment LOCK_2.
b)This program will throw an IllegalMonitorStateException in the line marked with comment UNLOCK_1.
c)This program will throw an UnsupportedOperationException in the line marked with comment UNLOCK_1.
d)This program prints the following: Lock 1 Critical section 1 Lock 2 Critical section 2 Unlock 2 Unlock 1.
87.Consider the following program:
import java.util.concurrent.locks.*;
class LockUnlock {
public static void main(String []args) { Lock lock1 = new ReentrantLock(); Lock lock2 = new ReentrantLock(); try {
System.out.println("Going to lock..."); lock1.lock();
System.out.println("In critical section"); } finally {
lock2.unlock(); System.out.println("Unlocking ...");
}
}
}
552
Appendix B ■ Mock TesT – 1
Which one of the following options is correct?
a)This program will print the following: “Going to lock…”
“In critical section” Unlocking …
b)This program will print the following: “Going to lock…”
“In critical section”
and then terminate normally.
c)This program will print the following: “Going to lock…”
“In critical section”
and then enter into a deadlock because lock2.unlock() waits for lock2 to get locked first.
d)This program will throw an IllegalMonitorStateException.
88.Consider the following program:
import java.util.concurrent.Semaphore;
class ATMRoom {
public static void main(String []args) {
Semaphore machines = new Semaphore(2); //#1 new Person(machines, "Mickey");
new Person(machines, "Donald"); new Person(machines, "Tom"); new Person(machines, "Jerry"); new Person(machines, "Casper");
}
}
class Person extends Thread { private Semaphore machines;
public Person(Semaphore machines, String name) { this.machines = machines;
this.setName(name);
this.start();
}
public void run() { try {
System.out.println(getName()
+" waiting to access an ATM machine"); machines.acquire(); System.out.println(getName()
+" is accessing an ATM machine"); Thread.sleep(1000);
553
Appendix B ■ Mock Test – 1
System.out.println(getName()
+ " is done using the ATM machine"); machines.release();
} catch(InterruptedException ie) { System.err.println(ie);
}
}
}
Which one of the options is true if you replace the statement #1 with the following statement?
Semaphore machines = new Semaphore(2, true);
a)The exact order in which waiting persons will get the ATM machine cannot be predicted.
b)The ATM machine will be accessed in the order of waiting persons (because of the second parameter in semaphore constructor).
c)It will not compile since second parameter in semaphore instantiation is not allowed.
d)It will result in throwing an IllegalMonitorStateException.
89.A couple of friends are waiting for some more friends to come so that they can go to a restaurant for dinner. Which synchronization construct could be used here to programmatically simulate this situation?
a)Exchanger
b)Lock
c)CyclicBarrier
d)RecursiveAction
90.An application establishes connection with a database, which returns a resultset containing two identical column names. You are using ResultSet to retrieve the associated values. In this context, which statement is true?
a)You can retrieve both the column values using column names.
b)You can retrieve both the column values using column names; however, you need to specify the column names using the column index (i.e. column-name:column-index).
c)You cannot use column names to retrieve both the values; you need to use column index to do it.
d)Both options b and c will work.
554
Appendix B ■ Mock Test – 1
Answer Sheet
|
|
|
|
|
|
Question No |
Answer |
Question No |
Answer |
Question No |
Answer |
1 |
|
31 |
|
61 |
|
2 |
|
32 |
|
62 |
|
3 |
|
33 |
|
63 |
|
4 |
|
34 |
|
64 |
|
5 |
|
35 |
|
65 |
|
6 |
|
36 |
|
66 |
|
7 |
|
37 |
|
67 |
|
8 |
|
38 |
|
68 |
|
9 |
|
39 |
|
69 |
|
10 |
|
40 |
|
70 |
|
11 |
|
41 |
|
71 |
|
12 |
|
42 |
|
72 |
|
13 |
|
43 |
|
73 |
|
14 |
|
44 |
|
74 |
|
15 |
|
45 |
|
75 |
|
16 |
|
46 |
|
76 |
|
17 |
|
47 |
|
77 |
|
18 |
|
48 |
|
78 |
|
19 |
|
49 |
|
79 |
|
20 |
|
50 |
|
80 |
|
21 |
|
51 |
|
81 |
|
22 |
|
52 |
|
82 |
|
23 |
|
53 |
|
83 |
|
24 |
|
54 |
|
84 |
|
25 |
|
55 |
|
85 |
|
26 |
|
56 |
|
86 |
|
27 |
|
57 |
|
87 |
|
28 |
|
58 |
|
88 |
|
29 |
|
59 |
|
89 |
|
30 |
|
60 |
|
90 |
|
|
|
|
|
|
|
555