What is the difference between a synchronized block and a synchronized method?
- Synchronized blocks are used for asynchronous programming.
- Synchronized blocks can be used to synchronize multiple sections of code within the same method.
- Synchronized methods are more efficient than synchronized blocks.
- Synchronized methods can only be used to synchronize the entire method.
The key difference between a synchronized block and a synchronized method is that synchronized blocks can be used to synchronize multiple sections of code within the same method, providing more fine-grained control over synchronization. In contrast, synchronized methods synchronize the entire method. Synchronized methods are not necessarily more efficient than synchronized blocks; their efficiency depends on the specific use case.
You are developing a payroll system. How would you design a class for storing employee details and ensuring that some sensitive information (like salary) cannot be accessed directly from the object?
- Define private instance variables for employee details, including salary, and provide public get and set methods for accessing and modifying the salary.
- Define public instance variables for employee details and make the salary variable final.
- Define public static variables for employee details, including salary, and use the 'protected' access modifier.
- Use the 'volatile' keyword for sensitive information like salary.
To ensure that sensitive information like salary cannot be accessed directly from the object, you should define private instance variables for employee details and provide public get and set methods for salary. This follows the principle of encapsulation, which restricts direct access to sensitive data. The other options do not provide adequate security for sensitive information.
The ________ method of the String class returns the index within this string of the first occurrence of the specified character, starting the search at the specified index.
- indexOf(char ch)
- indexOf(char ch, int fromIndex)
- lastIndexOf(char ch)
- lastIndexOf(char ch, int fromIndex)
The lastIndexOf(char ch, int fromIndex) method of the String class is used to find the index of the last occurrence of the specified character within the string, starting the search from the given index fromIndex. The other options are related to the indexOf method but don't perform the same task.
Which of the following is a primitive data type in Java?
- ArrayList
- Boolean
- String
- int
In Java, primitive data types are basic data types that store single values. int is one of the primitive data types and is used to store integer values. String, ArrayList, and Boolean are not primitive data types; they are reference data types or classes.
Imagine a situation where you need to insert a large dataset (for example, 10,000 rows) into a database using JDBC. How would you optimize this process to ensure that it is done efficiently and does not consume excessive resources?
- Disable database constraints temporarily during the insertion process.
- Execute individual INSERT statements in a loop for each row in the dataset.
- Increase the database transaction isolation level to SERIALIZABLE for the insertion operation.
- Use batch processing with prepared statements to insert multiple rows in a single database call.
Batch processing with prepared statements is the most efficient way to insert a large dataset into a database using JDBC. It reduces the overhead of multiple database calls by grouping multiple insertions into a single call. Executing individual INSERT statements in a loop is resource-intensive and not recommended for large datasets. Disabling database constraints can compromise data integrity. Increasing the transaction isolation level to SERIALIZABLE is not needed for a simple insertion operation.
The collect() method in the Stream API is a type of ________ operation.
- Intermediate
- Stateful
- Stateless
- Terminal
The collect() method is a terminal operation in the Stream API. It is used to accumulate the elements of a stream into a collection, such as a List or Set. Terminal operations are those that trigger the processing of the stream and produce a final result.
In a real-world application managing user profiles, how might parameterized constructors be used to quickly initialize user objects with provided details during registration?
- Parameterized constructors are not used for user profile initialization.
- Parameterized constructors are used for data retrieval from the database.
- Parameterized constructors are used to create admin profiles with elevated privileges.
- Parameterized constructors can accept user details as parameters and create user objects with initialized data during registration.
Parameterized constructors can be utilized in a user profile management system to quickly initialize user objects during the registration process. These constructors accept user details (e.g., username, email, password) as parameters, allowing you to create user objects with pre-populated data, making registration more efficient and straightforward.
Lambda expressions are used primarily to define the implementation of ________ interfaces.
- Abstract
- Functional
- Interface
- Marker
Lambda expressions in Java are primarily used to define the implementation of functional interfaces. A functional interface is an interface that has only one abstract method. Lambda expressions provide a concise way to implement the single abstract method of such interfaces.
Which of the following expressions will result in a value of true?
- "Java" == "java"
- (4 + 6) * 2 == 20
- 10 != 10
- 5 > 3
The expression 5 > 3 is true because 5 is indeed greater than 3. The other options are not true: 10 != 10 is false (since 10 is equal to 10), (4 + 6) * 2 == 20 is true (since 10 equals 20), and "Java" == "java" is false because string comparison in Java is case-sensitive.
Which of the following functional interfaces in Java utilizes Lambda expressions?
- AbstractClass
- FunctionalInterface
- Runnable
- Serializable
The Runnable interface in Java can be implemented using lambda expressions. It's a functional interface with a single abstract method run(). This allows you to use lambda expressions for tasks that can be executed concurrently. Lambda expressions simplify the creation of anonymous classes for such tasks.