What is the difference between JDK, JRE, and JVM?
- JDK (Java Development Kit) is a software development kit used to develop Java applications. JRE (Java Runtime Environment) is the runtime environment for executing Java applications. JVM (Java Virtual Machine) is the virtual machine that runs Java bytecode.
What are the main principles of object-oriented programming (OOP)?
- The main principles of OOP are encapsulation, inheritance, and polymorphism. Encapsulation refers to the bundling of data with the methods that operate on that data. Inheritance allows a class to inherit properties and behavior from another class. Polymorphism allows objects to be treated as instances of their parent class.
What is the difference between an abstract class and an interface in Java?
- An abstract class can have both abstract and concrete methods, while an interface can only have abstract methods. A class can implement multiple interfaces, but it can only inherit from one abstract class.
What is the purpose of the "static" keyword in Java?
- The "static" keyword is used to create class-level variables and methods that can be accessed without creating an instance of the class. Static variables are shared among all instances of the class, while static methods can be called without instantiating the class.
What is the difference between the "final," "finally," and "finalize" keywords in Java?
- The "final" keyword is used to declare constants, make a method not overrideable, or make a class not inheritable. The "finally" block is used to execute code after a try-catch block, regardless of whether an exception is thrown. The "finalize" method is called by the garbage collector before reclaiming an object's memory.
What is the difference between "==" and ".equals()" in Java?
- The "==" operator is used to compare the references of two objects, while the ".equals()" method is used to compare the contents of two objects. For objects, the ".equals()" method should be overridden to provide a meaningful comparison.
What is the difference between checked and unchecked exceptions in Java?
- Checked exceptions are checked at compile time and must be either caught or declared in the method's throws clause. Unchecked exceptions are not checked at compile time and do not need to be caught or declared.
What is the purpose of the "transient" keyword in Java?
- The "transient" keyword is used to indicate that a field should not be serialized when the object is serialized. This is useful for fields that contain sensitive or temporary data.
What is the difference between the "StringBuilder" and "StringBuffer" classes?
- Both classes are used to manipulate strings, but "StringBuilder" is not synchronized and is therefore more efficient in single-threaded environments. "StringBuffer" is synchronized and is used in multi-threaded environments.
What is the difference between the "throw" and "throws" keywords in Java?
- The "throw" keyword is used to explicitly throw an exception, while the "throws" keyword is used to declare that a method may throw a particular type of exception.
What is the purpose of the "volatile" keyword in Java?
- The "volatile" keyword is used to indicate that a variable's value may be modified by multiple threads. This ensures that changes to the variable are visible to all threads.
What is the difference between the "super" and "this" keywords in Java?
- The "super" keyword is used to refer to the superclass of a class, while the "this" keyword is used to refer to the current instance of a class.
What is the difference between an ArrayList and a LinkedList in Java?
- An ArrayList is implemented as a resizable array, while a LinkedList is implemented as a doubly linked list. ArrayLists are more efficient for random access, while LinkedLists are more efficient for insertions and deletions.
What is the purpose of the "assert" keyword in Java?
- The "assert" keyword is used to test assumptions about the state of the program. It is typically used for debugging and is disabled by default at runtime.
What is the purpose of the "enum" keyword in Java?
- The "enum" keyword is used to define a fixed set of constants. It is often used to represent a set of related constants, such as the days of the week or the months of the year.
What is the difference between method overloading and method overriding in Java?
- Method overloading is the process of defining multiple methods in a class with the same name but different parameters. Method overriding is the process of redefining a method in a subclass with the same signature as a method in its superclass.
What is the purpose of the "finalize" method in Java?
- The "finalize" method is called by the garbage collector before reclaiming an object's memory. It can be used to perform cleanup operations before an object is garbage collected.
What is the purpose of the "strictfp" keyword in Java?
- The "strictfp" keyword is used to ensure that floating-point calculations are performed identically on all platforms. It can be used to achieve platform-independent results for floating-point operations.
What is the purpose of the "package" statement in Java?
- The "package" statement is used to declare the package to which a class belongs. It is used to organize classes into namespaces and prevent naming conflicts.
What is the purpose of the "this" keyword in Java?
- The "this" keyword is used to refer to the current instance of a class. It is often used to disambiguate between instance variables and parameters with the same name.
What is the purpose of the "instanceof" operator in Java?
- The "instanceof" operator is used to test whether an object is an instance of a particular class or interface. It returns true if the object is an instance of the specified type, and false otherwise.
What is the purpose of the "autoboxing" and "unboxing" features in Java?
- Autoboxing is the process of automatically converting a primitive type to its corresponding wrapper class, and unboxing is the process of automatically converting a wrapper class to its corresponding primitive type.
What is the purpose of the "static import" feature in Java?
- The "static import" feature allows static members of a class to be imported directly into another class, making it possible to access those members without qualifying them with the class name.
What is the purpose of the "try-with-resources" statement in Java?
- The "try-with-resources" statement is used to automatically close resources that implement the AutoCloseable interface, such as streams, when they are no longer needed.
What is the purpose of the "lambda expression" feature in Java?
- Lambda expressions are used to create anonymous functions in Java. They are often used to pass behavior as an argument to a method, such as with the "forEach" method of the Iterable interface.
What is the purpose of the "default method" feature in Java interfaces?
- Default methods allow interfaces to provide a default implementation for a method. This allows interfaces to evolve without breaking existing implementations.
What is the purpose of the "method reference" feature in Java?
- Method references are a shorthand syntax for creating lambda expressions that directly invoke a method or constructor. They can be used to make code more concise and readable.
What is the purpose of the "var" keyword in Java?
- The "var" keyword is used to declare local variables with inferred types. It was introduced in Java 10 to reduce boilerplate code and improve readability.
What is the purpose of the "sealed classes" feature in Java?
- Sealed classes restrict which classes can extend them. This can be useful for creating hierarchies of classes with a limited set of subclasses.
How do you handle exceptions in Java, and what are the best practices for exception handling?
- I handle exceptions using try-catch blocks to catch and handle specific exceptions, and I use the "throws" clause to declare that a method may throw a particular type of exception. I follow best practices such as logging exceptions, providing meaningful error messages, and handling exceptions at an appropriate level in the application.
These questions and answers cover a wide range of topics relevant to a Java developer role and can help candidates prepare for interviews in this field.