Are you confident and equipped with the skills you need to pass a Java Interview? We’re here to assist you to consolidate your knowledge and understanding of Java and its advanced concepts with top java interview questions and answers. Before we start we must understand the fundamentals of Java and why it is so much popular in the current industries.

Java is among the popular programming languages used in the IT industry. The primary reason for the large variety of both professionals and beginners in programming is the job prospects that Java expertise offers. This article is dedicated to that similar goal. 

This Java Interview Questions and Answers article we’re going to provide has a list of the most crucial questions along with Answers to Java programming that will help distinguish you during the interview process. Java is used by approximately 10 million developers around the world to create applications for 15 billion devices that support Java. Java is also used to develop applications that incorporate the latest technologies such as Big Data to household devices such as DTH boxes and mobiles.

So, today, Java is used everywhere! Java course in Delhi certification is the most popular certification in the area of programming.

These top 40 crucial fundamental Java interview questions for both freshers and experienced job seekers. Java is a high-level language for programming which was created by James Gosling in the year 1982. It is based on concepts of object-oriented programming. can be used to create large-scale programs. This article will go over all the most popular Core Java interview questions, Advanced Java questions, and Java OOPs interview questions.

Review all the questions to improve your chances of achieving success during the interview. The questions are designed by Techstack Academy.

Techstack Academy offers Java professional courses for both experienced professionals and those who are just starting out. They cover virtually every topic required to become an effective java developer. This training includes all the important concepts related to Java technology with proper explanation and practical representation. This course will be taught by highly experienced trainers who offer internship programs to assist in enhancing your abilities. Techstack Academy is the top java training institute in Delhi that offers a deep understanding of java courses.

Here are some commonly asked Java interview questions for students as well as for the position of a senior java developer.

java interview questions and answers
java interview questions and answers

Top Java Interview Questions And Answers

Q1. What is Java?

Java is a general-purpose programming language that’s object-oriented and class-based. The language for programming is structured in a manner that programmers are able to write code from anywhere and execute it at any time without concern about the computer architecture. It is also known in the form write-once, run everywhere (WORA). Java helps to create applications for a variety of platforms.

When a programmer creates a Java application and compiles it, the code (known as”bytecode”) can be run on a variety of Operating systems including Windows, Linux, and Mac OS.

The objects in Java are like structures found in the c language in that we have to join the same methods and variables. Additionally, Java also supports abstraction and encapsulation. It also provides inheritance and polymorphism that encourages users to create objects.

Java is a major player in numerous areas such as application development, internet development, and creating software tools. Also, it comes with a vast variety of libraries, which makes things simpler. Furthermore, the availability of IDE is a key factor in attracting the interest of developers. IDEs such as Eclipse, IntelliJ, and NetBeans are widely used by developers.

Q2. Why do you call Java a platform-independent language?

If we input a phrase like “javac” or compile a java code in javac, it compiles the code. It also creates an intermediate code known as Byte Code.

This is where Java makes the difference among all programming languages. Java creates an .class file which is thought of as bytes of code. While languages such as C/C++ can generate natively executable programs when they are built, which creates a platform dependency.

Learn more about this topic with java course in India. Byte code is not an executable file. It requires a translator to execute this code. Then, JVM is able to do this. In general, JVM is stored in the main memory of the computer. Java Virtual Machine acts as an interpreter, and it executes the bytes created by javac.

Our program is executed successfully. And Java handles everything with the help of JVM. The byte code produced by compilation of source code would work on any operating system, however, the JVM installed in a machine differs for every operating system. This is why java is classified as a platform-independent language.

Q3. Explain the difference between C++ and Java.

Concept: C++ is not platform-independent; the principle behind C++ programming is “write once, compile anywhere.”

In contrast, because the byte code generated by the Java compiler is platform-independent, it can run on any machine, Java programs are written once and run everywhere.

Languages Compatibility: C++ is a programming language that is based upon C. It is a variant of the C programming language. Many other high-level languages work with C++.

The majority of languages of Java are not compatible. Java is compatible with the languages that are part of C as well as C++.

Library interaction: It has the ability to access the system’s native libraries from C++. Therefore, it’s more efficient to program on the level of the system. 

Java’s native libraries don’t offer direct call support. You can access the Java Native Interface or access the libraries.

Characteristics: C++ distinguishes itself through features that are like procedural and object-oriented languages. The feature that separates Java apart is its automatic garbage collection. Java does not support destructors currently.

The meaning of the type: Primitive and object types within C++ have the identical semantics. Primitive and object classes in Java contrary to what they say are not compatible.

Within the framework in the context of Compiler as well as Interpreter. Java is an interpreted and compiled language. However, C++ is only an interpreted language.

In Java the source code, is the compilation output, which is platform independent bytes code. With C++, the source program is translated into an object code which is later executed to create an output.

Q4. What are the features of the Java Language?

The following features are included in Java Programming Language.

Easy: Java is easy to master. Java’s syntax is built on C++ which makes it easy to write your program within it.

Object-Oriented Language: Java adheres to the object-oriented design principle that permits us to preserve our code as a combination of various types of objects that combine data and behavior.

Portable: Java supports read-once-write-anywhere approach. It is possible to run Java programs on any machine. Java program on every computer. Java program (.java) is converted into bytes (.class) that can quickly run on any machine.

Platform-Independent: Java is a completely platform independent programming language. It differs from other language programming, such as C or C++ which needs an operating system to run. Java has its own platform, on which the program is run. Java does not depend on the operating system in order to be executed.

Secured: Java secures since it doesn’t make use of explicit pointers. Java also has the concept of ByteCode and Exception handling, which helps to make it more secure.

Robust: Java can be described as a powerful programming language because it makes use of powerful memory management. Concepts like automatic garbage collection, Exception handling etc. can make it more durable.

Architecture neutral: Java is architectural neutral, as it’s not tied to architecture. In C the dimensions of data types can be different depending on an architecture (32 bits or 64 bits) however this is not the case with Java.

Translated as: Java uses the Just-in-time (JIT) interpreter in conjunction with the compiler to facilitate program execution.

Advanced Performance: Java has a higher speed than the other traditional interpreted languages due to the fact that Java bytecode can be described as “close” to native code. However, it is less efficient than a language that is compiled (e.g., C ++).

Supports Multithreading: It is possible to write Java applications that perform multiple tasks simultaneously by using multiple threads. The major benefit for multithreading is they don’t take up memory for each thread. It’s a shared memory space. Threads are crucial for Web-based applications, multimedia and other applications.

Distributed: Java can be distributed since it allows users to develop distributed applications using Java. RMI as well as EJB are two of the methods used to create distributed applications. The feature in Java lets us access files using those methods via any computer connected to the internet.

Dynamic Language: Java is a dynamic language. It allows the dynamic load of class. This means that classes are loaded at the moment of need. It also allows functions from the native language, i.e., C and C++. Also, Read Java institute in Delhi for further information.

Q5. What are JDK, JRE, and JVM?

JDK is a part of Java and can be an abbreviation that stands for Java Development Kit. It’s a set with software tools for development as well as supporting libraries, which are integrated together with Java Runtime Environment (JRE) and Java Virtual Machine (JVM). A development environment that allows you to build applications, applets and other components and applets written in the Java programming language. The JDK contains tools in the development and testing of applications that are written using Java. Java programming language, and running using Java.

Java platform. You require the JDK to transform your source code to a format that is compatible with the Java Runtime Environment (JRE) can run. This JDK contains it with the Java Runtime Environment (JRE) and it has an interpreter (java) and the compiler (javac) as well as the archiver (jar) and the documentation generator (Javadoc) as well as other tools for development.

The JRE is the on-disk device that is able to take the Java code, integrate it with the libraries required and launch the JVM to run the program. The JRE includes software and libraries that will allow your Java applications to run. For example, you can use Java class loaders. Java class loader is a part of the Java Runtime Environment. The JDK includes the JRE.

The majority of programs require to run the JRE (Java Runtime Environment) however some programs require the Compiler when running and in this case, you require the JDK. If you’ve got the JDK then you do not need the JRE in addition. Other libraries of base, including international support input/output (I/O) extension mechanism, Beans Java Management Extensions (JMX), Java Native Interface (JNI) Networking, Math Override Mechanism, Security Serialization as well as Java to support XML Processing (XML JAXP).

Java Virtual Machine (JVM) is the runtime engine for Java Platform. Java Platform, which allows programs that are written using Java or any other language to be converted into Java bytes for execution on any machine that runs an native JVM. JVMs can be used in both clients as well as servers and the Web browser is able to activate the JVM whenever it comes across an Java applet.

Java applications are first converted in Java Byte Code(Binary form) and then a specific Java interpreter is used to interpret them on the specific platform. Java ByteCode is the machine language used by the Java virtual machine(JVM). It converts binary byte code that is compiled into a machine language specific to. The JVM serves two main purposes: to allow Java programs to run on any device or operating system (known as the “Write once, run anywhere” principle) as well as to manage and optimize the program’s memory.

Q6. What is the way that Java allows high-performance?

Java enabled high performance through the introduction of JIT which means the Just In Time compiler, JIT allows the compiler to compile the code on demand i.e whatever method is used, only the method block will be compiled making the compilation time-efficient and fast. This means that Java can deliver the highest performance. The efficiency of Java is largely due to its Just-In Time (JIT) compiler as well as support for concurrency. This JIT compiler is part of the Java Runtime Environment. It enhances the performance of Java applications by converting bytecodes into machines natively “just in time” to run.

Q7. What is Typecasting?

Typecasting can be described as the procedure of changing the type of data that is the results of any operation to another type of data. It is among the C language’s key alternatives to stop the unnecessary use of memory. It’s a method to record the value of any operation in a way that uses the limited memory. It’s actually designed to enhance the efficiency of managing memory. It is very easy to convert the value’s data type, however it is important to ensure that the values we convert are the correct ones.

For example, the conversion of a character into an integer might seem odd, but the conversion of the float value to integer is sensible.

Types of Type Casting

Based on the method by which the conversion of of any type of data occurs, the typecasting process has been classified into two kinds that will be explained in the following sections:

1. Implicit Conversion: In this method of typecasting the value of one type of data could be converted to another independently and we won’t have to mention any details. The process can happen by itself or in a way. It typically happens when the variable which is used to store the value is bigger in comparison to the value to be changed. For example, if there is a requirement to convert the value of an integer to a floating value, it is likely to happen because the size of the number is two bytes whereas the float is able to hold a value of up to 4 bytes.


Float a = 7/6

2. Explicit Conversion: When using this type of typecasting, we’re expected to define explicitly the type of data to which we intend to transform any type of value. In contrast to an implicit conversion method, the typecasting needs to specify the data type prior to the operation or value the context in which it is to be changed. This is the case when we need to save the value of a data type that takes up more memory than the variable to be storing it.

For instance the float value occupies 4 bytes whereas the integer consumes only 2 bytes of memory. To store the value of the float in an integer value, we’ll have to include it prior to the float value we wish to convert to an integer. In the end, values after the decimal of the floating value will disappear, and the values prior to the decimal is stored in the variable called integer.

Q8. What is an object in Java?

In the field of object-oriented programming (OOP) objects can be the items you first think about when developing a program. They are also the main components of code that eventually developed out of the procedure. They are essential in OOPs because they are able to invoke a non-static method that isn’t part of the Main Method but present inside the Class and provide the name for the space that is used to store information.

An object keeps its state within fields (variables in certain language programming) and then exposes its behavior by using methods (functions in a few programs). Methods work on the internal state of an object and act as the primary method for communicating between objects.

The first item on this listing is too strict. As an example, you could consider that bank account a thing however it isn’t composed of anything. (Although you and your bank might use paper or other materials to keep track of the account’s balance, it is clear that your account is independent of the material.)

While it’s not important, your account does have features (a balance or interest rate, and an account owner) and you are able to modify your account (deposit money, close it, etc.)) and it is able to perform other things (charge fees for transaction, earn interest).

The final three items on the list appear easy enough. Actually, they all have names:

  • An object is a thing with the same identity (each item is an individual).
  • An object is in its own state (it has different properties that could alter).
  • An object can have behavior (it has the ability to perform actions and also have things done by it).

Example of an object:

Public class Add{

Public static void main(String[] args){

Add add = new Add(); //object creation



Q9. What is the difference in JavaScript as compared to Java?

One of the main distinctions in JavaScript in comparison to Java are:

  • Java is an Object Oriented Programming Language. However, JavaScript is an Object Oriented scripting language.
  • Java code runs in the form of a browser or virtual machine (Applets) in which JavaScript code is executed in the browser.
  • We must compile Java source code into bytecode prior to JVM being able to understand its code, and then execute. JavaScript code is text-based and therefore we don’t have to build it.
  • We utilize JavaScript to carry out browser specific tasks. We utilize Java to develop standalone utility applications, web applications, web-based apps, as well as web-based services.
  • JavaScript is light, however we must install Java and set it up to run.

Q10. What is the reason Java is not an object-oriented language?

Java can support primitive data types like bytes, booleans, char short, int long, float, and double. It is not an absolute object-oriented language.

Q11. What are classloaders in Java Language?

The class loaders are in charge of loading Java classes dynamically onto within the JVM (Java Virtual Machine) at runtime. They’re also part of JRE (Java Runtime Environment). This means that the JVM does not require knowledge about the file system to run Java applications thanks to the class loaders.

Class loaders can be described as an element of the Java Runtime Environment that dynamically loads Java classes into the Java Virtual Machine. The Java runtime system doesn’t need to be aware of files or file systems as a result of classloaders. Java classloaders don’t load in memory all at once, however they are needed by an application.

Loading the very first pure Java classloader will be the task that the bootstrap classloader is responsible for. The classloader of the bootstrap is responsible for loading all the required code to run the fundamental Java Runtime Environment (JRE) which includes classes from Java. util and Java.lang packages.

The Java Class is stored in the form of byte code inside the .class file following the time it is compiling. It loads the classes of its Java application into memory whenever it is needed. It is important to note that the ClassLoader is hierarchical, and as such when there is a need for loading a class it is assigned to the parent loader.

Q12. What types of memory are allocated by JVM?

There are many types of:

Class(Method) Space: Class Area is a storage area for specific structures per class, such as running time constant pools fields, methods data and codes for methods.

Heap: This is the data runtime space in which the memory is assigned to the objects.

Stack: Java Stack stores frames. It stores local variables as well as partial results. It is a key component in method return and method invocation. Each thread has its own private JVM stack, which is created simultaneously with the thread. The frame gets a new one every time a method is invoked. The frame is destroyed after the method invoked has completed.

Program Counter Register: The PC (program counter) register includes an address for the Java virtual machine instruction that is currently being run.

Native Method Stack: This stack contains the native methods utilized in the application.

Q13. Define the public static void main(String args[]) in Java.

primary() is the main() function in Java is the primary entry, the point of entry for every Java program. It’s written in the form of public static main(). This is the same as void main(String[] arguments).

  • public: It can be described as an access modification which specifies who has access to this method. Public implies that this method can be accessed by any class.
  • static: Main() is set to be static in Java in order to be used without having to create an instance of the Class. If main() isn’t made static, it will be thrown by the compiler because the main() will be invoked by the JVM prior to any objects being created and only static methods are able to be directly invoked through the class.
  • void: The void is the type of return used by the method. Void refers to the method that doesn’t give any value.
  • primary: The name of the method that is used by JVM to determine the starting point for an application that has an identifier that is unique to. It is the method through which the primary execution takes place.
  • Arguments: String String args[] This is the argument that is passed to the principal method.

Q14. What do you understand by the constructor?

For Java the term Constructor refers to a piece of code that is like the method. It is invoked whenever an instance of the class is constructed. At the time of calling the constructor the object’s memory is allocated in memory.

It is a particular kind of method used to start the object. Each time an object gets constructed using the new() keyword at least one constructor is referred to. It will call a default constructor in the event that there is no constructor within the class. In this case, the Java compiler will provide the default constructor automatically.

There are two kinds of constructors available in Java one of which is a no-arg constructor and the parameterized constructor.

Default constructor: In Java, the default constructor is one that doesn’t require any inputs. Also default constructors are constructors that have no arguments. They are automatically created in the event that there is no other constructor defined by the end user. The primary purpose of default constructors is to set instance variables using default values. It is also utilized for creating objects.

Parameterized Constructor: Parameterized Constructor, in Java is the constructor that is capable of inputting instance variables using given values. Also, the constructors that accept arguments are referred to as parameterized constructors.

Guidelines to create Java constructor

There are three guidelines that are set by the builder.

  1. Name of the constructor must be identical to the class name.
  2. A Constructor cannot have an specific return type.
  3. A Java constructor can’t be an abstract static and final and not synchronized

Q15. Define Access modifiers and their meaning within Java.

Access modifiers are defined keywords in Java that can be employed to limit access to a constructor, method, class and data member of another class.

Java has four accessibility modifiable:

  • Default: The default classes are accessible inside the package. In default, classes as well as methods and variables are in default scope.
  • Private: The class that is private methods, variables, or methods designated as private may be accessed inside the class but only within.
  • Protected: Protected is accessible by the class in the identical package, or by the sub-class of this package or even within this class.
  • Public: Public methods, classes or variables classified as public are accessible to any method or class.

Q16. What are classes in Java?

We know that Java is an object-oriented programming language. Everything in Java revolves around a particular class.

A class is an ensemble of objects with common characteristics and behaviors.

For instance, we can define the car as a class with features such as seats, steering wheels and brakes. The behavior of the car is mobility. However, we can conclude that Audi having a reg.number 5694 is an object that is part of the class of ‘car’.

It is a brief explanation of classes and objects. We will now be able to comprehend Java and the Java class in greater detail.

Java Class: The most important aspect in Object direction within Java includes that of the class. A class is usually described as the template or blueprint of an object. It is possible to create many objects using an existing class. It is a rational entity that does not take up any space or memory.

It is allocated memory when you create objects of a type of class. A class is a collection of the properties and methods used to determine the behavior and state that its objects exhibit. This defines what data it contains and the methods to act on the data.

A class is a term used to define the shared traits such as the following:

  • The set of attributes/properties
  • The entire set of behavior strategies or methods
  • How do you build an object

Example of a class:

public class Add{   //class name declaration

Int a = 10;

Int b=10;

public void add(){ //method declaration

Int c=a+b;



Q17. What are the new features of Java SE 8?

You can reap the following advantages from Java SE 8 New Features:

  • More concise and easily readable code
  • More Reusable Code
  • More Testable and Maintainable Code
  • Highly Concurrent and Highly Scalable Code
  • Write Parallel Code
  • Write Database Like Operations
  • Better Performance Applications
  • More productive code

Q18. What is the difference between Heap in comparison to Stack Memory in Java. How Java utilizes this.

Stack memory is the part of memory assigned to each program. It was also fixed. However, Heap memory is the part that was not assigned to the Java program, but is available to use by the Java program when it is required, typically during the running time of the program.

Java Makes use of this memory for the following:

  • If we write a Java program, all variables, methods, and so on are saved in the memory stack.
  • When we create an object using the Java program, that item is stored in heap memory. It was then referenced to the memory stack.

Example: Look at the below Java program:

Class Main{

Public void printArray(int[] array){

For (int i:array)



Public static void main(String argos[]){

Int[] array=new int[10];




Main as well as PrintArray are the methods that will become accessible in the stack area along with the variables declared , which will be included in the area of the stack and the object (Integer array with size 10) that we’ve created will be accessible to the Heap area since the space will be assigned to the program during the runtime.

Q19. Does the program work in the event that you write ‘static main void’?

It is true that the code can be executed successfully if it is written in this manner. Because in Java there is no specific rules for the sequence of specifiers

Q20. What is the JIT compiler and platform in Java?

Just-In-Time (JIT) compiler is utilized to enhance the performance. JIT compiles a portion of bytes that share the same functionality simultaneously which reduces the time required for compilation. In this case, the word “compiler” refers to a translator that connects the instruction sets of the Java virtual machine (JVM) to the instruction set of a particular CPU.

A platform is the physical or software environment within which an application executes. There are two kinds of platforms: software-based and hardware-based. Java is a software-based platform.

Q21. When is it appropriate to make use of Super Keywords?

In Java ‘super’ keyword can be described as an identifier variable which refers to an immediate object of a class that is the parent. If you make a new subclass instance it also creates an instance for the class you’re creating that is referenced through the super refer variable.

The applications of Java Super Keyword are

  1. For a reference to an instantaneous instance variable of a parent class using super.
  2. Super() is used to invoke the method used by immediate parents of a class.
  3. Super() can be used to call the constructor for the class that is immediate to it.

Q22. What is inheritance in Java?

An inheritance concept to Java is a term which transfers the property of one class to another such as the bond of father-son. In Java classes, it is possible to acquire attributes and methods from a different class. A class which inherits properties is referred to as the sub-class or child class. That class which traits are passed on is referred to as the superclass or parent class.

In inheritance, the characteristics of the class that are in the beginning are inherited by the classes that have been derived from it.

Syntax of inheritance:

class derived_class extends base_class





General format of inheritance:

class superclass


//super class data variables

//super class member functions


class subclass extends superclass


// subclass data variables

// subclass member functions


Inheritance utilizes Inheritance uses the “extends” keyword to create an derived class, which is created by reusing the class’s base code.

Extends keyword usage in Java:

The extended keyword is used to extend the scope of a class. It indicates that a particular class is taken over by a different class. If you write that class B extends class A, this signifies that class B has inherited the properties (methods or attributes) of class A. In this case, class A is the superclass, or parent class while class B represents the child or subclass.

Types of Inheritance in Java:

The various types of inheritance are:

  • Single Inheritance
  • Multiple Inheritance
  • Multi-Level Inheritance
  • Hierarchical Inheritance
  • Hybrid Inheritance

Single Inheritance: The process of creating subclasses from the same base class is known as single inheritance. In inheritance, we are able to gain access to superclass variables and methods. In addition, we are able to gain access to subclass methods as well as variables via Subclass objects only. We must take care of subclass methods and superclass methods and variables. They must not clash.

Multiple Inheritance in Java: Determining a derived class from a variety of base classes is referred to as “Multiple Inheritance.”. In this instance there’s multiple superclasses and it could be a subclass or two. Multiple inheritance is accessible when you use object-oriented programming using C++, however, it’s not available in Java. Java programmers would like to utilize multiple inheritances in certain situations. Luckily, Java developers have interface ideas that require developers to create multiple inheritance using various interfaces.

Multilevel Inheritance in Java: In Multi-Level inheritance in Java the class extends to a different class that has already been extended from a different class. In the example above when there is an A class which extends class B, which extends class B from a different class C, this is a scenario that can be a case of Multilevel Inheritance. It is possible to take the example of three classes: class Vehicle, class Car and the class SUV. In this case, the class vehicle will be the class of grandfathers. The class car extends the class Vehicle, while the class SUV extends class Car.

Hierarchical Inheritance in Java: With Hierarchical Inheritance with Java In Hierarchical Inheritance in Java, more than one derived class extends a single base class. In other words the multiple child classes extend the single parent class or the single parent class contains several child classes.

Consider, for example, the parent car. Then, think of the child class Audi, BMW and Mercedes. In Hierarchical Inheritance Java the class Audi is a class, as are the class BMW as well as class Mercedes All three extend class Car.

Hybrid Inheritance in Java: Hybrid inheritance within Java is a mixture of inheritances. In this kind of inheritance there are more than one type of inheritance. For instance, if you have classes A and B, which both extend C, and there is another class D which extends class A, this kind of inheritance is referred to as Hybrid Inheritance.

Why? Because we can see clearly that there are two kinds of inheritance here: One Inheritance and Hierarchical.

Q23. Explain the difference between StringBuilder, and the String Buffer.

Variables in strings are saved in a permanent string pool. If the value changes in the string reference it is impossible to remove the previous value. For instance, if the string contains the value “Old,” then adding the new value “New” will not delete the previous value. It will remain there but in a state of dormancy.

In the case of a String Buffer, values are stored in stacks. In the event of a change in the reference to the string the new value is replaced by the old value. It is important to note that the String Buffer is synced (and thus thread-safe) and has a slower speed over the String Builder which is a String Buffer however it isn’t fully synchronized. Therefore, the performance is faster in the String Builder as compared to it is in the String Buffer.

Q24. An exception is a sudden circumstance that occurs during execution. It alters the flow of instructions, which could cause the program’s termination unexpectedly. Explain.

The reason for this can be numerous. A few of them are:

  • Invalid input from the user
  • Device failure
  • Network connection lost
  • Physical Limitations (out of memory)
  • Code errors
  • Open an inaccessible file

Exceptions can be identified and dealt with by the program. If an exception occurs within the method, it is created as an object. The object is known as the object that caused the exception.

It includes information regarding the incident, such as details about the description, name of the event as well as the status of the program at the time the incident occurred.

Java Exception Types

The exception hierarchy has two divisions: runtimeException and the IOException.

1. RuntimeException: A runtime error is caused by an error in programming. They can also be referred to by the name of non-checked errors. These exceptions aren’t evaluated at compile time but at run-time. The most common runtime errors are:

  • Improper use of an API – IllegalArgumentException
  • Null Pointer Access (missing the creation of the variable) NullPointerException
  • Out-of-bounds array access – ArrayIndexOutOfBoundsException
  • Dividing a number with 0 + ArithmeticException

It is possible to think of it as follows. “If it is a runtime exception, it is your fault”.

This NullPointerException wouldn’t have occurred in the event that you checked whether the variable was initially created or not prior to making use of it. An ArrayIndexOutOfBoundsException would not have occurred if you tested the array index against the array bounds.

2. IOException: The term an IOException is also called a checkable exception. They are inspected by the compiler during time of compilation and the programmer is asked to handle the exceptions.

A few examples of checked exceptions include:

  • Trying to open a file that doesn’t exist results in FileNotFoundException
  • The challenge is to find the point of a file

Q25. Explain some important points about classes in Java.

  • In Java we are unable to declare a top-level class to be private. Java provides only public access and default access specifiers to top-level classes. It is possible to declare classes that are not public as private.
  • It is possible to include any of three variables that exist in Java three variables namely local variables, instance and static.
  • There is one publicly accessible class in one program, and its name must be identical to the title of the Java file. There could be multiple private classes in a single Java file.
  • A class that is public is accessible to all classes in all packages.
  • A class that has default access is only visible to classes in the package.
  • You can also apply the non-access modifiers to the class, such as abstract, final and strictfp.
  • It is impossible to make an object or an instance of abstract classes.
  • A child class or subclass can be created from a class once it is declared to be final.
  • A class is not able to be declared as both abstract and final simultaneously.

Declaration of Java Classes: To bring the concept of class into existence, we must declare it. You can declare a class by the help of the class keyword.

The elements in Java Class declaration are:

1. Access Modifiers: We can access Java classes with any access modifiers, such as private, public, and default.

2. Class Name: In Java the term “class name” generally refers to nouns, which must start by using capital letters and not include any spaces.

3. Superclass (if there is one): Name of the parent class superclass, and the subclass is the child class and the child class inherits the properties of its parent by using an extends keyword. A subclass is only able to inherit one parent.

4. Interfaces (if there are any): If there is an interface, you simply add the word interface followed by the name of the interface.

5. Class Body: The body of the class is a part of the declaration for the class and is embedded {}within curly braces inside curly braces.

Q26. What is Lambda Expression?

Lambda Expression is an anonymous function that takes a number of input parameters and produces results. It is an unnamed block of code that can be executed without any designation, and either with or without parameters, and without or with results. This block of code can be executed upon demand.

Lambda Expression contains 3 parts:

  • Parameter List
  • Lambda Expression can contain zero or one or more parameters. It’s optional.Lambda Arrow Operator
  • “->” is also known by its Lambda Arrow operator. It is used to separate the list of parameters and the body.Lambda Expression Body

() -> System.out.println(“Hello World”);

The Lambda Expression does not have parameters, and it does not produce any results. Its format of operation is “java.lang.Runnable” Functional Interface.

Q27. Java is a language that can be considered to be the ultimate programming language for objects?

It’s true when we say that Java is the most complete program that is based on object-oriented design. Because everything in Java is a part of the class. And we are able to access it by creating objects. However, we can also say that Java isn’t an object-oriented language due to its support for primitive data types such as int and float as well as boolean, char double, etc.

We can say that Java is not an entirely object-oriented programming language because it is directly connected to fundamental data classes. The primitive types of data do not directly belong to the classes Integer.

Q28. What do you understand by association, aggregation, copy constructor, marker interface, object cloning?

Association: An Association can be described as an entity that does not have control over the other. For instance an individual can be associated with several banks, and a particular bank may be associated with a variety of individuals, however no one can be the owner of the other.

Aggregation: The term”aggregation” refers to the relation between two classes that can be described as an “whole/part” as well as a “has-a” connection. This type is the most specific type of an association. It includes a reference to another class , and is believed to be owned by the owner of the class.

Copy Constructor: The Copy Constructor used in Java is a constructor that initializes an object using another object from a similar class.

Marker Interface: A blank user interface within Java is known as a Marker Interface. The two terms Serializable as well as Cloneable are two well-known examples of a Marker Interface.

Object Cloning: The ability to create an object with a similar design to the existing object is referred to in the field of Object Cloning using Java. Java offers the Clone() method for cloning an object that is currently in use, offering exactly the same functions as an original object.

Q29. What are the benefits of using Packages in Java?

There are many advantages to creating packages using Java.

  • Packages are designed to avoid name conflicts.
  • The Package gives you easier access control.
  • There are also hidden classes which aren’t visible from the outside but are utilized by the program.
  • It is easier to find the classes that are related.

Q30. Contiguous memory places are generally used to store real values within an array, but not in an ArrayList. Explain.

The majority of arrays contain elements belonging to the primitive data types, such as int, float, and so on. In these cases the array stores these elements in memory contiguous places. Although an ArrayList doesn’t contain the primitive types of data. The arrayList is a reference of the objects in different memory locations, not objects themselves. This is the reason why objects aren’t stored at adjacent memory locations.

Q31. What do you understand by encapsulation in java?

Encapsulation can be described as the wrapping of data into the same unit. It is the process that connects code and its data. Another way to look at Encapsulation is to think of it as an effective shield to prevent data from being accessed through code that isn’t part of the shield.

Each Java class is an example for encapsulation as we write all of the code within the class that connects methods and variables together and conceals their complicated nature by separating them from the other classes. Another instance of encapsulation would be capsules. The capsule is essentially a container for several different combinations of medicines.

Encapsulation in Java is possible through declaring each class’s variables to be private. Offering the public with setter and getter functions to modify and see the values of variables.

Purpose of encapsulation:

  • Protects the code from others
  • Code maintainability


We are declaring ‘a’ as a variable of integer value and it cannot be negative.

Public class Add(){

Int a=10;


If anyone changes the variable as a=-10 then it is bad.

To overcome with this problem we need to follow these below steps:

  • We can make the variable protected or private.
  • Use methods of public accessor like set<property> and get<property>.

So the code now modified as:

public class Add(){

private int a=10; //here the variable is marked as private


The code below shows the getter and setter

Conditions can be provided by setting the variables:

get A(){


Set A(int a){

if(a&gt;0){ //here condition is applied




To encapsulate, we have to make all of the instance variables private, and then create a setter and getter functions for these variables. That will in turn oblige others to use the setters instead of accessing the information directly.

Q32. What is polymorphism in Java?

The term polymorphism means that it can take numerous kinds. In simpler terms we can define polymorphism as the capacity of an information that can be presented in multiple shapes.

Real-life Illustration of Polymorphism: A person has different traits. For instance, a man but also a father, spouse, or an employee. This means that the same person has distinct behavior in various situations. This is known as polymorphism.

Polymorphism is considered to be one of the key features that is a part of Object-Oriented Programming. Polymorphism permits us to execute an action in a variety of ways. Also, it allows you to define a single interface, and then have several implementations. The term “poly” is a reference to many different things, while “morphs” is a reference to forms. which means a variety of forms.

Polymorphism types

In Java polymorphism is generally classified into two kinds:

  • Compile-time Polymorphism
  • Runtime Polymorphism


Public class Manipulate(){ //super class

Public void add(){



Public class Add extends Manipulate(){ //sub class

Public void add(){


Public static void main(String args[]){

Manipulate addition= new Add(); //Manipulate is reference type and Add is reference




By using the reference type Manipule, we can invoke “add()” using the Class “add()” procedure. This capability is known as polymorphism. Polymorphism can be used for overriding and is not applicable to be used for overloading.

Q33. Could you describe the lifecycle of threads within Java?

The thread life cycle includes the following states and is arranged in the following sequence:

  • In the first stage of the thread’s life cycle the thread instance is being created and its start() procedure is still to be called. The thread is considered to be alive right now.
  • Runnable: After calling the begin() method but prior to invoking the run() method it is placed in the state of being runnable. A thread may also be able to be able to return to the runnable state after waking or waiting.
  • Running: The thread is in the running state following the running() procedure is called. This is the moment when the thread starts execution.
  • Non-Runnable: Although the thread may be active, it isn’t in a position to run. In general, it is returned to its runnable state some period of time.
  • Terminated: The thread is in the terminated state when its execute() method has completed its execution. The thread is dead now.

Q34. What is the difference between collection APIs and Stream APIs?

Collection API: It’s accessible from Java 1.2. It’s used to store data (A collection of objects). It is possible to use Spliterator as well as Iterator for iterating elements. It is possible to use the forEach method to perform actions for every element in this stream. It can be used to store an unlimited number of elements. Most commonly, it utilizes an External Iteration method to repeatedly iterate elements like Iterator. Collection Objects are created eagerly. The elements are added to the Collection object after it has completed computation. It is possible to iterate and consume elements of the Collection Object in many instances.

Stream API: It was first included with Java SE 8. It’s used to compute data (Computation on the set of objects). It is not possible to utilize Spliterator and Iterator in order to iterate elements. The Stream API is used to perform a process on the elements of the Collection. The Stream API utilizes internal iteration in order to iterate Elements with forEach method. Stream Object is constructed Lazily. It is possible to create elements in Stream Object without any prior computation. This means that Stream objects can be processed on-demand. It is possible to iterate and consume elements from the Stream Object only once.

Q35. Pointers are utilized in C and C++ languages. What is the reason why Java does not use pointers?

Pointers can be quite complex and are not recommended for beginners in programming. Java concentrates on simplicity of code and the use of pointers may create a challenge. Pointer use can cause mistakes that could be a result. Additionally, security can be compromised when pointers are employed because users can directly access memory using the aid of pointers.

This is why a certain amount of abstraction is offered by not incorporating pointers into Java. Furthermore, the use of pointers could make garbage collection extremely slow and in error. Java makes references because they are not manipulated, in contrast to pointers.

Q36. What is the output of this following program?

class Test


public static void main (String args[])






The output of the following code will be




In the first instance the numbers 20 and 22 are considered numbers and combined to form 42. Their sum of 42 is considered to be the string and then concatenated with that string of Techstack. So, the result will be 42Techstack..

In the second instance, the string Techstack is combined with 20 to form Techstack20, which is then converted into Techstack20 and is then concatenated with 22 to become Techstack2022.

Q37. What is method overloading and method overriding in java language?

Method Overloading: When it comes to Method Overloading, Methods of the same class share the same name however each method should have various parameters, or parameters with different types and in different order.

  • Method Overloading allows you to “add” to or “extend” further to the method’s performance.
  • It is a polymorphism in compile-time.
  • The methods need to be distinct in the signature.
  • It might or may not be necessary to inherit to be included in the Method Overloading.

Let’s look at the code below to better understand the concept:

class Addition{

static int add(int a, int b)


return a+b;


static double add(double a, double b)


return a+b;


public static void main(String args[])






Method Overriding:

  • When it comes to Method Overriding, the subclass is the same one with the same name, and exactly the same amount and type of parameters as well as the identical return type as an overclass.
  • Method Overriding can be used to “Change” the current behavior of the method.
  • It’s a run-time polymorphism.
  • The methods must bear the identical signature.
  • It’s always required to inherit Method Overriding.

Take a look at the code below to get a better understanding of it:

class Car{

void run(){

system.out.println(&ldquo;car is running&rdquo;);


class BMW extends Car{

void run()


system.out.println(“BMW is running safely with 100km”);


public static void main(String args[])


Car b=new Audi();;



Q38. What exactly is the purpose of Collections within Java?

Collection is a framework created to store objects and modify the design to store objects.

Collections can be used to carry out the following functions:

  • Looking for
  • Sorting
  • Manipulation
  • Insertion
  • Elimination

A collection of objects are called collections. All classes and interfaces to collect are included in the Java util program. Below are the Interfaces and Classes available in collections:


  • Collection
  • List
  • Set
  • Map
  • Sorted Set
  • Sorted Map
  • Queue


  • Lists:
  • Array List
  • Vector
  • Linked List


  • Hash set
  • Set of Linked Hash
  • Tree Set


  • Hash Map
  • Hash Table
  • TreeMap
  • Hashed Map Linked Hashed Map


  • Priority Queue

Q39. How can you differentiate the threads from processes?

There are many essential differences that exist between a thread and a process. They are described in this manner:

  • Definition: A Process is an executed instance of a program. Likewise threads are subsets of a program.
  • Changes: A modification made by the process that is parent does not alter the behavior of processes that are dependent on it. But, a change to the main thread may result in adjustments in the behavior of threads in similar processes.
  • Communication: Communication Processes require inter-process communication in order to communicate with other processes, threads are able to directly connect with other threads belonging within the process.
  • Control: Control Processes are managed by operating systems, and can be controlled by only child processes. However threads are controlled by the programmer and have the capability to exercise control over other threads that are part of the same process to which they are a part.
  • Dependence: Processes are distinct entities, while threads are dependent entities
  • Memory: Memory Threads are shared memory spaces. However, processes are run in distinct memory spaces.

Q40. How can we reverse a given string?

This strings can be reversed by using the program below

public class StringRev{

public static void main(String args[]){

string str=”Techstack”;

string reverse = new StringBuffer(str).reverse().toString();

system.out.println(“actual word:%s, Word After reversing is %s”,str,reverse);


public static String reverse(String source){

if(source==null || source.isEmpty()){

Return source;


string reverse=””;

for(int i=source.length()-1;i>=0;i–){



return reverse;



Output will be: 

Actual word: Techstack, Word After reversing is kcatshceT

Some Additional tips for Java Interviews

Java Interview questions and answers are essential to be able to answer prior to taking part in an interview. This helps make sure you are on the right side by getting yourself ready for the interview. You will be able to answer the questions that are asked in your interview with the help of our above article as we cover all the possible important questionnaires for the interviews of java development. 

These questions and answers will help you to study how to become A Java Developer of the present time. Our questions are based on the important concepts of java and advanced java. You are able to understand every answer easily as we provide answers in the most simple formats. These questions are designed by one of the best java experts of the industry, You should prepare all the questions with complete concentration to get the success in the interviews.

If you’re in search of greater understanding of this Java programming language, and details about how to become certified as a skilled developer, look into the Java training and advanced courses programs taught with expert industry professionals from Techstack Academy offer in real-time. In Particular, you should check out our course details in the above menu of courses.

If you’ve got any queries regarding the Java Interview Questions article, you can directly contact us. Our experts will help you at the earliest!

Techstack Academy offers top java courses for students as well as professionals. The best java programs are suitable for those looking to establish their own brand in the area. We offer a variety of courses in java technology with all the important concepts of java advance. The courses are offered in different lengths and each has distinct internship times. You can pick the one according to your needs. If you’re having problems in answering these Java interviews, submit your concerns directly to us. Beyond this Blog If you’d like to be trained by experts in this field. You can choose organized advanced java training in Delhi at Techstack Academy!

We are now at the end of our Java Interview Questions article. The concepts you have learned about in this Java Interview Questions article are among the most sought-after skill areas that employers look for in the Java Professional. These questions from the set of Java Interview Questions will definitely aid you in an interview for your new job. 

Study our blog to be able to answer java questions with confidence. Best of luck with your upcoming Java interview.

Write a comment