Interview questions and Answers for JAVA, Basics of JAVA, Core JAVA.
Java interview questions and answers. Core java interview questions, OOPs interview
questions, String Handling interview questions, Multithreading interview questions,
collection interview questions, JDBC interview questions etc.
1. Features of JAVA?
- Object-Oriented – java is based on object-oriented programming where the class and
methods describe about the state and behavior of object.
- Portable – Java program gets converted into Java Byte Codes that can be executed
on any platform without any dependency.
- Platform independent – java works on “write once and run anywhere” as it supports
multiple platforms like Windows, Linux, Mac, Sun Solaris, etc.
- Robust – Java has a strong memory management as there is no pointer allocations.
It has automatic garbage collection that prohibits memory leaks.
- Interpreted – java compiler converts the codes into Java Byte Codes which are then
interpreted and executed by Java Interpreter.
2. OOPS Concepts in Java?
Java is based on Object Oriented Programming Concepts, following are some of the
OOPS concepts implemented in java programming.
3. Difference between JDK and JRE and JVM
- JDK - Java Development Kit is the core component of Java Environment and provides
all the tools, executables and binaries required to compile, debug and execute a
Java Program. JDK is a platform specific software and thats why we have separate
installers for Windows, Mac and Unix systems. We can say that JDK is superset of
JRE since it contains JRE with Java compiler, debugger and core classes. Current
version of JDK is 1.7 also known as Java 7.
- JVM - JVM is the heart of java programming language. When we run a program, JVM
is responsible to converting Byte code to the machine specific code. JVM is also
platform dependent and provides core java functions like memory management, garbage
collection, security etc. JVM is customizable and we can use java options to customize
it, for example allocating minimum and maximum memory to JVM. JVM is called virtual
because it provides a interface that does not depend on the underlying operating
system and machine hardware. This independence from hardware and operating system
is what makes java program write-once run-anywhere.
- JRE - JRE is the implementation of JVM, it provides platform to execute java programs.
JRE consists of JVM and java binaries and other classes to execute any program successfully.
JRE doesn’t contain any development tools like java compiler, debugger etc. If you
want to execute any java program, you should have JRE installed but we don’t need
JDK for running any java program.
4. What is Java Virtual Machine?
Java Virtual Machine (JVM) is the heart of java programming language. JVM is responsible
for converting byte code into machine readable code. JVM is not platform independent,
thats why you have different JVM for different operating systems. We can customize
JVM with Java Options, such as allocating minimum and maximum memory to JVM. It’s
called virtual because it provides an interface that doesn’t depend on the underlying
5. What is the main method in Java?
main() method is the entry point of any standalone java application. The syntax
of main method is public static void main(String args). Java main method is public
and static so that Java runtime can access it without initializing the class. The
input parameter is an array of String through which we can pass runtime arguments
to the java program.
6. What is overloading and overriding in java?
When we have more than one method with the same name in a single class but the arguments
are different, then it is called as method overloading. Overriding concept comes
in picture with inheritance when we have two methods with same signature, one in
parent class and another in child class. We can use @Override annotation in the
child class overridden method to make sure if parent class method is changed, so
as child class.
7. What is Exception in Java?
Exception is an error event that can happen during the execution of a program and
disrupts it’s normal flow. Exception can arise from different kind of situations
such as wrong data entered by user, hardware failure, network connection failure
etc. Java Exception handling framework is used to handle runtime errors only, compile
time errors are not handled by exception handling framework.
8. What are the throw, try-catch-finally Exception Handling Keywords in Java?
- throw: Sometimes we explicitly want to create exception object and then throw it
to halt the normal processing of the program. throw keyword is used to throw exception
to the runtime to handle it.
- throws: When we are throwing any checked exception in a method and not handling
it, then we need to use throws keyword in method signature to let caller program
know the exceptions that might be thrown by the method. The caller method might
handle these exceptions or propagate it to it’s caller method using throws keyword.
We can provide multiple exceptions in the throws clause and it can be used with
main() method also.
- try-catch: We use try-catch block for exception handling in our code. try is the
start of the block and catch is at the end of try block to handle the exceptions.
We can have multiple catch blocks with a try and try-catch block can be nested also.
catch block requires a parameter that should be of type Exception.
- finally: finally block is optional and can be used only with try-catch block. Since
exception halts the process of execution, we might have some resources open that
will not get closed, so we can use finally block. finally block gets executed always,
whether exception occurrs or not.
9. What are important methods of Java Exception Class?
- String getMessage() – This method returns the message String of Throwable and the
message can be provided while creating the exception through it’s constructor.
- String getLocalizedMessage() – This method is provided so that subclasses can override
it to provide locale specific message to the calling program. Throwable class implementation
of this method simply use getMessage() method to return the exception message.
- synchronized Throwable getCause() – This method returns the cause of the exception
or null id the cause is unknown.
- String toString() – This method returns the information about Throwable in String
format, the returned String contains the name of Throwable class and localized message.
- void printStackTrace() – This method prints the stack trace information to the standard
error stream, this method is overloaded and we can pass PrintStream or PrintWriter
as argument to write the stack trace information to the file or stream.
10. What is difference between throw and throws in Java?
throws keyword is used with method signature to declare the exceptions that the
method might throw whereas throw keyword is used to disrupt the flow of program
and handing over the exception object to runtime to handle it.
11. Can we overload main method?
Yes, we can have multiple methods with name “main” in a single class. However if
we run the class, java runtime environment will look for main method with syntax
as public static void main(String args).
12. What is Java Package and which package is imported by default?
Java package is the mechanism to organize the java classes by grouping them. The
grouping logic can be based on functionality or modules based. A java class fully
classified name contains package and class name. For example, java.lang.Object is
the fully classified name of Object class that is part of java.lang package. java.lang
package is imported by default and we don’t need to import any class from this package
13. What are access modifiers?
Java provides access control through public, private and protected access modifier
keywords. When none of these are used, it’s called default access modifier. A java
class can only have public or default access modifier. Read Java Access Modifiers
to learn more about these in detail.
14. What is static keyword?
tatic keyword can be used with class level variables to make it global i.e all the
objects will share the same variable. static keyword can be used with methods also.
A static method can access only static variables of class and invoke only static
methods of the class.
15. What is finally and finalize in java?
inally block is used with try-catch to put the code that you want to get executed
always, even if any exception is thrown by the try-catch block. finally block is
mostly used to release resources created in the try block. finalize() is a special
method in Object class that we can override in our classes. This method gets called
by the garbage collector when the object is getting garbage collected. This method
is usually overridden to release system resources when the object is garbage collected.
16. What is an interface in JAVA?
Interfaces are core part of java programming language and used a lot not only in
JDK but also java design patterns, most of the frameworks and tools. Interfaces
provide a way to achieve abstraction in java and used to define the contract for
the subclasses to implement.
17. What is an abstract class in JAVA?
Abstract classes are used in java to create a class with some default method implementation
for subclasses. An abstract class can have abstract method without body and it can
have methods with implementation also.
18. What is the difference between abstract class and interface?
- abstract keyword is used to create abstract class whereas interface is the keyword
- Abstract classes can have method implementations whereas interfaces can’t.
- A class can extend only one abstract class but it can implement multiple interfaces.
- We can run abstract class if it has main() method whereas we can’t run an interface.
19. What is Classloader in Java?
Java Classloader is the program that loads byte code program into memory when we
want to access any class. We can create our own classloader by extending ClassLoader
class and overriding loadClass(String name) method.
20. What is ternary operator in java?
Java ternary operator is the only conditional operator that takes three operands.
It’s a one liner replacement for if-then-else statement and used a lot in java programming.
We can use ternary operator if-else conditions or even switch conditions using nested
21. What is break and continue statement?
We can use break statement to terminate for, while, or do-while loop. We can use
break statement in switch statement to exit the switch case. You can see the example
of break statement at java break. We can use break with label to terminate the nested
22. What is default constructor?
No argument constructor of a class is known as default constructor. When we don’t
define any constructor for the class, java compiler automatically creates the default
no-args constructor for the class. If there are other constructors defined, then
compiler won’t create default constructor for us.
23. What is Garbage Collection in JAVA?
Garbage Collection is the process of looking at heap memory, identifying which objects
are in use and which are not, and deleting the unused objects. In Java, process
of deallocating memory is handled automatically by the garbage collector. We can
run the garbage collector with code Runtime.getRuntime().gc() or use utility method
System.gc(). For a detailed analysis of Heap Memory and Garbage Collection,
24. What is difference between Heap and Stack Memory?
- Heap memory is used by all the parts of the application whereas stack memory is
used only by one thread of execution.
- Whenever an object is created, it’s always stored in the Heap space and stack memory
contains the reference to it. Stack memory only contains local primitive variables
and reference variables to objects in heap space.
Memory management in the stack is done in LIFO manner whereas it’s more complex
in Heap memory because it’s used globally.
25. What is JDBC API?
Java DataBase Connectivity API allows us to work with relational databases. JDBC
API interfaces and classes are part of java.sql and javax.sql package. We can use
JDBC API to get the database connection, run SQL queries and stored procedures in
the database server and process the results. JDBC API is written in a way to allow
loose coupling between our Java program and actual JDBC drivers that makes our life
easier in switching from one database to another database servers easily.
26. What is JDBC Connection?
JDBC Connection is like a Session created with the database server. You can also
think Connection is like a Socket connection from the database server.
27. What is the use of JDBC DriverManager class?
JDBC DriverManager is the factory class through which we get the Database Connection
object. When we load the JDBC Driver class, it registers itself to the DriverManager,
28. What is JDBC PreparedStatement?
JDBC PreparedStatement object represents a precompiled SQL statement. We can use
it’s setter method to set the variables for the query.
29. What is JDBC ResultSet?
JDBC ResultSet is like a table of data representing a database result set, which
is usually generated by executing a statement that queries the database.
30. What is the difference between execute, executeQuery, executeUpdate?
- Statement execute(String query) is used to execute any SQL query and it returns
TRUE if the result is an ResultSet such as running Select queries. The output is
FALSE when there is no ResultSet object such as running Insert or Update queries.
We can use getResultSet() to get the ResultSet and getUpdateCount() method to retrieve
the update count.
- Statement executeQuery(String query) is used to execute Select queries and returns
the ResultSet. ResultSet returned is never null even if there are no records matching
the query. When executing select queries we should use executeQuery method so that
if someone tries to execute insert/update statement it will throw java.sql.SQLException
with message “executeQuery method can not be used for update”.
- Statement executeUpdate(String query) is used to execute Insert/Update/Delete (DML)
statements or DDL statements that returns nothing. The output is int and equals
to the row count for SQL Data Manipulation Language (DML) statements. For DDL statements,
the output is 0.