What symbol is used in the syntax of a Lambda expression in Java?

  • ->
  • ::
  • =>
  • {}
In Java, the syntax of a lambda expression uses the -> symbol. It separates the lambda parameters from the lambda body and is a distinctive feature of lambda expressions, making them easy to identify in code.

What is the maximum number of interfaces a Java class can implement?

  • 1
  • 2 or more
  • 3 or more
  • Unlimited
A Java class can implement an unlimited number of interfaces. This allows for multiple inheritance of method signatures, where the class must provide implementations for all the methods declared in the interfaces it implements.

Deadlock occurs when two or more threads are blocked forever, each waiting for the other to ________.

  • acquire
  • complete
  • join
  • release
Deadlock in multithreading occurs when two or more threads are waiting for resources acquired by each other. They cannot proceed as they are both holding resources the other needs, resulting in a deadlock situation.

The method ________ is used to remove all the mappings from a Map.

  • clear()
  • eraseAll()
  • removeAll()
  • removeMappings()
In Java, the clear() method is used to remove all the mappings from a Map. It does not remove the map itself but makes it empty, removing all key-value pairs. The other options do not perform this specific function.

A ______ block can be used to define customized serialization logic.

  • finalization
  • synchronized
  • try-catch
  • writeObject
In Java, the writeObject block is used to define customized serialization logic for an object. It allows you to control how an object is serialized when it's written to an output stream. The other options are not used for custom serialization logic.

When would you prefer byte streams over character streams while performing I/O operations in Java?

  • When dealing with binary data and non-text files, such as images or audio.
  • When working with XML or HTML files that contain text and tags.
  • When you need to perform text-based operations, like reading and writing characters.
  • When you want to handle file I/O in a platform-independent manner.
Byte streams are suitable for reading and writing binary data, while character streams are used for handling text data. Byte streams are ideal for handling non-text files, like images or audio, where individual bytes matter. Character streams are used for text files and automatically handle character encoding.

Which class allows you to read lines of text from a file?

  • BufferedReader
  • FileReader
  • InputStreamReader
  • Scanner
The BufferedReader class is commonly used for reading lines of text from a file in Java. It provides methods like readLine() that allow you to read a complete line of text at a time. While other classes like FileReader and Scanner can also be used for reading files, BufferedReader is preferred for its efficiency and ease of use when reading lines of text.

Which index of a multi-dimensional array represents the row index in Java?

  • First index
  • It depends on the array's dimensions.
  • Second index
  • Third index
In Java, for a multi-dimensional array, the first index represents the row index. For a 2D array, it represents the row number, and for a 3D array, it represents the depth along the first dimension. The other indices represent the columns (2nd index), and if applicable, additional dimensions.

________ is an interface in JDBC, which can be used to move a cursor in the result set in both directions.

  • PreparedStatement
  • ResultSet
  • ResultSetMetaData
  • Statement
The ResultSet interface in JDBC is used to retrieve data from a database query result. It allows you to move a cursor in the result set in both directions, forward and backward, and retrieve data from the current row. This is especially useful when you need to navigate and process the result set efficiently.

How would you handle a situation where a task submitted to ExecutorService is stuck or running for too long?

  • There is no way to handle a stuck task in Java; it must be manually terminated by killing the JVM process.
  • You can cancel the task using the cancel method of the Future object returned when submitting the task.
  • You can increase the task timeout setting to give it more time to complete.
  • You can use the ExecutorService.shutdownNow() method to forcefully terminate all running tasks and shut down the service.
When a task is stuck or running for too long, you can handle it by canceling the task using the cancel method of the Future object returned when submitting the task. This allows graceful termination of the task without affecting the entire application. Other options, like forcefully shutting down the ExecutorService or modifying the task's timeout settings, may have unintended consequences.

Envision a situation where thread safety is a priority in your application. How can Lambda expressions be designed to minimize synchronization issues or shared mutability?

  • By avoiding Lambda expressions altogether and relying on traditional synchronized methods for thread safety.
  • By using Lambda expressions within synchronized blocks to ensure that critical sections of code are protected against concurrent access.
  • By using nested Lambda expressions that share mutable variables across threads.
  • By using volatile variables and Lock objects within Lambda expressions to manage thread safety.
Lambda expressions can be designed to promote thread safety by using synchronized blocks or other synchronization mechanisms within the Lambda body. This ensures that critical sections of code are protected from concurrent access, reducing synchronization issues and potential race conditions. It's crucial to be cautious when using shared mutable variables within Lambda expressions to avoid thread safety problems.

What is the key difference between the poll() and remove() methods when used with a Queue in Java?

  • poll() returns null if the queue is empty, while remove() throws an exception.
  • poll() removes and returns the head of the queue if it's not empty, while remove() removes and returns the head but throws an exception if the queue is empty.
  • poll() removes and returns the head of the queue if it's not empty, while remove() returns null if the queue is empty.
  • poll() and remove() have the same behavior when used with a Queue.
In Java, the poll() method is used to retrieve and remove the head of a queue. If the queue is empty, it returns null. On the other hand, the remove() method also removes the head of the queue but throws a NoSuchElementException if the queue is empty. So, option (b) is the correct answer, with the explanation that the key difference is in the handling of empty queues.