How can one ensure that a particular section of code does not have concurrent access by multiple threads?

  • Use ReentrantLock from java.util.concurrent package.
  • Use Thread.sleep() to create delays.
  • Use synchronized keyword on the method.
  • Use volatile keyword for variables.
To ensure that a particular section of code does not have concurrent access by multiple threads, you can use the ReentrantLock class from the java.util.concurrent package. This allows you to create a lock that multiple threads can use to synchronize access to a critical section of code. Unlike synchronized methods, it provides more fine-grained control over locking.

How does the wait() method differ from the sleep() method when working with threads?

  • wait() and sleep() are interchangeable; there is no difference.
  • wait() and sleep() have no impact on thread execution.
  • wait() is used for inter-thread communication and releases the lock, while sleep() pauses the thread and retains the lock.
  • wait() is used for pausing the thread and retains the lock, while sleep() is used for inter-thread communication and releases the lock.
In Java, the wait() method is used for inter-thread communication and is typically used with synchronization mechanisms like synchronized blocks. It releases the lock and allows other threads to execute, whereas sleep() pauses the thread but retains the lock, making it unsuitable for inter-thread communication.

The operator ______ is used to invert the value of a boolean expression.

  • !
  • &&
  • +
  • ==
In Java, the ! (logical NOT) operator is used to invert or negate the value of a boolean expression. It changes true to false and vice versa, making it a fundamental operator for boolean logic in Java.

The InputStream and OutputStream classes are part of the ________ package.

  • java.io
  • java.lang
  • java.streams
  • java.util
The InputStream and OutputStream classes are part of the java.io package in Java. These classes are used for reading and writing data in a byte-oriented manner, making them essential for I/O operations.

When a thread tries to access a synchronized block of code in an object, it must first obtain the ________ on the object.

  • Lock
  • Monitor
  • Semaphore
  • Semaphore
When a thread tries to access a synchronized block in Java, it must first obtain the "Lock" on the object. This ensures that only one thread can execute the synchronized code block at a time, preventing race conditions.

The ________ method of URL class provides the port number of the URL.

  • fetchPortNumber()
  • getPort()
  • obtainPort()
  • retrievePort()
The correct answer is getPort(). In Java, the URL class provides the getPort() method, which allows you to obtain the port number of a URL. This is useful when working with network-related tasks where you need to know the port associated with a particular URL.

Which operators are overloaded for the String class in Java?

  • * (repetition)
  • + (concatenation)
  • - (subtraction)
  • / (division)
In Java, the + operator is overloaded for the String class, allowing you to concatenate strings using the + operator. Other operators like *, -, and / are not overloaded for String and would result in compilation errors if used inappropriately.

Which of the following sorting algorithms is most efficient in terms of average-case time complexity?

  • Bubble Sort
  • Insertion Sort
  • Quick Sort
  • Selection Sort
Quick Sort is known for its efficiency in terms of average-case time complexity. It has an average-case time complexity of O(n log n) and is often faster than other sorting algorithms like Bubble Sort, Selection Sort, and Insertion Sort, which have worse average-case time complexities. Quick Sort's efficiency is achieved through a divide-and-conquer approach.

What will be the output of the following code: int x = 10; x *= 3;?

  • x is assigned the value 0
  • x is assigned the value 10
  • x is assigned the value 13
  • x is assigned the value 30
In this code, x is first assigned the value 10, and then the compound assignment operator *= multiplies it by 3. So, x will be assigned the value 30. The other options are incorrect as they don't represent the correct result of the code.

Which of the following statements about the String data type in Java is incorrect?

  • Strings can be compared using the == operator to check if they have the same content.
  • Strings can be created using string literals, such as "Hello, World!".
  • Strings in Java are a sequence of characters and are represented by the String class.
  • Strings in Java are mutable, meaning their content can be changed after creation.
The incorrect statement is that strings in Java can be reliably compared using the == operator. In Java, the == operator compares references for objects, not their content. To compare the content of two strings, you should use the equals() method. The other options accurately describe aspects of the String data type.