How can you securely serialize and deserialize objects to protect sensitive information during the process?

  • Define custom serialization and deserialization logic with encryption and authentication mechanisms
  • Employ access modifiers such as private and protected for fields and methods
  • Ensure that classes are marked as final to prevent inheritance
  • Use encryption techniques
To securely serialize and deserialize objects to protect sensitive information, you should use encryption techniques. Encrypting the data before serialization and decrypting it after deserialization ensures that the data remains confidential. While access modifiers and marking classes as final provide some level of security, they don't directly address the need for encryption. Custom logic with encryption and authentication is a comprehensive approach to security.

A ________ is a result-bearing computation that can be canceled and can compute the result asynchronously provided by ExecutorService.

  • Callable
  • ExecutorService
  • Runnable
  • Thread
A Callable in Java is a result-bearing computation that can be canceled and can compute the result asynchronously. It is typically used with ExecutorService to perform tasks that return values or throw exceptions.

What is the impact of using a SocketChannel in non-blocking mode over traditional blocking I/O socket communication?

  • a. SocketChannel offers better performance with lower CPU usage.
  • b. Non-blocking SocketChannel can handle only one connection at a time.
  • c. Blocking I/O sockets are more suitable for high-throughput applications.
  • d. Non-blocking SocketChannel improves data integrity.
Using SocketChannel in non-blocking mode (option a) can lead to improved performance with lower CPU usage compared to traditional blocking I/O sockets. Non-blocking SocketChannels can handle multiple connections concurrently. Option c is incorrect because non-blocking SocketChannels are often favored for high-throughput scenarios. Option d is not accurate as data integrity is not directly related to blocking or non-blocking mode.

What is the primary difference between StringBuilder and StringBuffer classes in Java?

  • StringBuffer is not synchronized, making it faster but not thread-safe.
  • StringBuilder has more methods for manipulating strings.
  • StringBuilder is immutable, while StringBuffer is mutable.
  • StringBuilder is synchronized, making it thread-safe but potentially slower.
The primary difference is that StringBuilder is not synchronized, making it faster but not thread-safe, while StringBuffer is synchronized, making it thread-safe but potentially slower. Immutable means unchangeable, which is not true for either class.

Which access modifier allows a member to be accessed from within its own class only?

  • default (no modifier)
  • private
  • protected
  • public
In Java, the private access modifier restricts access to the member to within the same class only. It is used to encapsulate the implementation details and hide them from external classes. The other options allow varying degrees of access to the member from outside the class.

Which interface or class should a class use or extend to create a new thread in Java?

  • Executor
  • Runnable
  • Thread
  • java.lang
In Java, to create a new thread, a class should implement the Runnable interface. The Runnable interface defines a single abstract method, run(), which should be overridden to provide the code that the new thread will execute. The other options are not used for directly creating a new thread.

What is the impact of using PrintWriter in file handling without automatic line flushing?

  • It buffers data and may not immediately write it to the file.
  • It ensures efficient memory usage and high-speed writing to the file.
  • It has no impact on file handling.
  • It throws an error if used without automatic line flushing.
PrintWriter in Java buffers data by default, which means it doesn't immediately write to the file. Without automatic line flushing, you must manually flush the buffer (using flush()), or it may not write data until the buffer is full or the program exits. This buffering can improve performance but may lead to unexpected behavior if you forget to flush.

Which of the following reference data types is used for storing a single character?

  • Character
  • Integer
  • String
  • char
The reference data type Character is used for storing a single character in Java. It is different from the primitive data type char, which also stores a single character but is not a reference data type. String is used to store sequences of characters, and Integer is for integer values.

Deadlocks involving synchronized methods or blocks can potentially be resolved by ________.

  • using fewer threads
  • using more synchronization
  • using more threads
  • using thread priority
Deadlocks occur when two or more threads are blocked, each waiting for a resource that the other holds. To resolve deadlocks involving synchronized methods or blocks, one approach is to use fewer threads or to minimize the usage of synchronized sections to reduce the chances of threads waiting indefinitely, thereby avoiding ________.

Can an interface contain static methods in Java?

  • No
  • Only if it doesn't have any abstract methods.
  • Only if it doesn't have any default methods.
  • Yes
Yes, Java allows interfaces to contain static methods, introduced in Java 8. Static methods in interfaces can be called without creating an instance of the interface and are often used for utility functions or factory methods.