DEV Community

Alex 👨🏼‍💻FullStack.Cafe
Alex 👨🏼‍💻FullStack.Cafe

Posted on • Updated on • Originally published at fullstack.cafe

60 Java and Spring Interview Questions You Must Know

60 Java and Spring Interview Questions You Must Know
A good Java and Spring developer is aways in demand. According to Indeed, there’s currently 29,694 job openings for Java developers and 16,085 for .Net software engineers throughout the US. Follow along and read about latest top Java and Spring Interview Questions.

🔴 Originally published on FullStack.Cafe - Kill Your Tech & Coding Interview

Q1: What is the Difference between JDK and JRE?

Topic: Java
Difficulty: ⭐

The Java Runtime Environment (JRE) is basically the Java Virtual Machine (JVM) where your Java programs are being executed. It also includes browser plugins for applet execution. The Java Development Kit (JDK) is the full featured Software Development Kit for Java, including the JRE, the compilers and tools (like JavaDoc, and Java Debugger), in order for a user to develop, compile and execute Java applications.

🔗 Source: github.com/snowdream

Q2: What is the difference between an Applet and a Java Application?

Topic: Java
Difficulty: ⭐

Applets are executed within a java enabled browser, but a Java application is a standalone Java program that can be executed outside of a browser. However, they both require the existence of a Java Virtual Machine (JVM). Furthermore, a Java application requires a main method with a specific signature, in order to start its execution. Java applets don’t need such a method to start their execution. Finally, Java applets typically use a restrictive security policy, while Java applications usually use more relaxed security policies.

🔗 Source: github.com/snowdream

Q3: What is a JSP Page?

Topic: Java
Difficulty: ⭐

A Java Server Page (JSP) is a text document that contains two types of text: static data and JSP elements. Static data can be expressed in any text-based format, such as HTML or XML. JSP is a technology that mixes static content with dynamically-generated content.

🔗 Source: github.com/snowdream

Q4: What is a Servlet?

Topic: Java
Difficulty: ⭐

The servlet is a Java programming language class used to process client requests and generate dynamic web content. Servlets are mostly used to process or store data submitted by an HTML form, provide dynamic content and manage state information that does not exist in the stateless HTTP protocol.

🔗 Source: github.com/snowdream

Q5: What are pass by reference and pass by value?

Topic: Java
Difficulty: ⭐⭐

When an object is passed by value, this means that a copy of the object is passed. Thus, even if changes are made to that object, it doesn’t affect the original value. When an object is passed by reference, this means that the actual object is not passed, rather a reference of the object is passed. Thus, any changes made by the external method, are also reflected in all places.

🔗 Source: github.com/snowdream

Q6: What are the basic interfaces of Java Collections Framework?

Topic: Java
Difficulty: ⭐⭐

Java Collections Framework provides a well designed set of interfaces and classes that support operations on a collections of objects. The most basic interfaces that reside in the Java Collections Framework are:

  • Collection, which represents a group of objects known as its elements.
  • Set, which is a collection that cannot contain duplicate elements.
  • List, which is an ordered collection and can contain duplicate elements.
  • Map, which is an object that maps keys to values and cannot contain duplicate keys.

🔗 Source: github.com/snowdream

Q7: What differences exist between HashMap and Hashtable?

Topic: Java
Difficulty: ⭐⭐

Both the HashMap and Hashtable classes implement the Map interface and thus, have very similar characteristics. However, they differ in the following features:

  • A HashMap allows the existence of null keys and values, while a Hashtable doesn’t allow neither null keys, nor null values.
  • A Hashtable is synchronized, while a HashMap is not. Thus, HashMap is preferred in single-threaded environments, while a Hashtable is suitable for multi-threaded environments.
  • A HashMap provides its set of keys and a Java application can iterate over them. Thus, a HashMap is fail-fast. On the other hand, a Hashtable provides an Enumeration of its keys.
  • The Hashtable class is considered to be a legacy class.

🔗 Source: github.com/snowdream

Q8: What does System.gc() and Runtime.gc() methods do?

Topic: Java
Difficulty: ⭐⭐

These methods can be used as a hint to the JVM, in order to start a garbage collection. However, this it is up to the Java Virtual Machine (JVM) to start the garbage collection immediately or later in time.

🔗 Source: github.com/snowdream

Q9: What is the difference between Exception and Error in java?

Topic: Java
Difficulty: ⭐⭐

Exception and Error classes are both subclasses of the Throwable class. The Exception class is used for exceptional conditions that a user’s program should catch. The Error class defines exceptions that are not excepted to be caught by the user program.

🔗 Source: github.com/snowdream

Q10: What is an Java Applet?

Topic: Java
Difficulty: ⭐⭐

A Java Applet is program that can be included in a HTML page and be executed in a java enabled client browser. Applets are used for creating dynamic and interactive web applications.

🔗 Source: github.com/snowdream

Q11: What is JDBC?

Topic: Java
Difficulty: ⭐⭐

JDBC is an abstraction layer that allows users to choose between databases. JDBC enables developers to write database applications in Java, without having to concern themselves with the underlying details of a particular database.

🔗 Source: github.com/snowdream

Q12: How are the JSP requests handled?

Topic: Java
Difficulty: ⭐⭐

On the arrival of a JSP request, the browser first requests a page with a .jsp extension. Then, the Web server reads the request and using the JSP compiler, the Web server converts the JSP page into a servlet class. Notice that the JSP file is compiled only on the first request of the page, or if the JSP file has changed.The generated servlet class is invoked, in order to handle the browser’s request. Once the execution of the request is over, the servlet sends a response back to the client. See how to get Request parameters in a JSP.

🔗 Source: github.com/snowdream

Q13: What are Decalarations?

Topic: Java
Difficulty: ⭐⭐

Declarations are similar to variable declarations in Java. Declarations are used to declare variables for subsequent use in expressions or scriptlets. To add a declaration, you must use the sequences to enclose your declarations.

🔗 Source: github.com/snowdream

Q14: What are benefits of using Spring?

Topic: Spring
Difficulty: ⭐⭐

Following is the list of few of the great benefits of using Spring Framework:

  • Lightweight − Spring is lightweight when it comes to size and transparency. The basic version of spring framework is around 2MB.
  • Inversion of control (IOC) − Loose coupling is achieved in spring using the technique Inversion of Control. The objects give their dependencies instead of creating or looking for dependent objects.
  • Aspect oriented (AOP) − Spring supports Aspect oriented programming and enables cohesive development by separating application business logic from system services.
  • Container − Spring contains and manages the life cycle and configuration of application objects.
  • MVC Framework − Spring's web framework is a well-designed web MVC framework, which provides a great alternative to web frameworks such as Struts or other over-engineered or less popular web frameworks.
  • Transaction Management − Spring provides a consistent transaction management interface that can scale down to a local transaction (using a single database, for example) and scale up to global transactions (using JTA, for example).
  • Exception Handling − Spring provides a convenient API to translate technology-specific exceptions (thrown by JDBC, Hibernate, or JDO, for example) into consistent, unchecked exceptions.

🔗 Source: tutorialspoint.com

Q15: What are Spring beans?

Topic: Spring
Difficulty: ⭐⭐

The objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container. These beans are created with the configuration metadata that you supply to the container, for example, in the form of XML <bean/> definitions.

🔗 Source: tutorialspoint.com

Q16: What are ORM's Spring supports?

Topic: Spring
Difficulty: ⭐⭐

Spring supports the following ORM's:

  • Hibernate
  • iBatis
  • JPA (Java Persistence API)
  • TopLink
  • JDO (Java Data Objects)
  • OJB

🔗 Source: tutorialspoint.com

Q17: What is Spring Security?

Topic: Spring
Difficulty: ⭐⭐

Spring Security is a separate module of the Spring framework that focuses on providing authentication and authorization methods in Java applications. It also takes care of most of the common security vulnerabilities such as CSRF attacks.

To use Spring Security in web applications, you can get started with a simple annotation: @EnableWebSecurity.

🔗 Source: developersbook.com

Q18: What is Circular Queue and why will you use one?

Topic: Data Structures
Difficulty: ⭐⭐⭐

Circular Queue is a linear data structure in which the operations are performed based on FIFO (First In First Out) principle and the last position is connected back to the first position to make a circle. It is also called Ring Buffer. Circular queue avoids the wastage of space in a regular queue implementation using arrays.

🔗 Source: programiz.com

Q19: What does “program to interfaces, not implementations” mean?

Topic: Design Patterns
Difficulty: ⭐⭐⭐

Coding against interface means, the client code always holds an Interface object which is supplied by a factory.

Any instance returned by the factory would be of type Interface which any factory candidate class must have implemented. This way the client program is not worried about implementation and the interface signature determines what all operations can be done.

This approach can be used to change the behavior of a program at run-time. It also helps you to write far better programs from the maintenance point of view.

🔗 Source: tutorialspoint.com

Q20: What is Observer pattern?

Topic: Design Patterns
Difficulty: ⭐⭐⭐

Observer pattern (also known as Publish-Subscribe Pattern) is used when there is one-to-many relationship between objects such as if one object is modified, its dependent objects are to be notified automatically. Observer pattern falls under behavioral pattern category.

An object with a one-to-many relationship with other objects who are interested in its state is called the subject or publisher. The observers are notified whenever the state of the subject changes and can act accordingly. The subject can have any number of dependent observers which it notifies, and any number of observers can subscribe to the subject to receive such notifications.

Observer pattern uses two actor classes:

  • The Observer (os Subscriber) abstract class provides an update() method which will be called by the subject to notify it of the subject’s state change.
  • The Subject (or Publisher) class is also an abstract class and defines four primary methods: attach(), detach(), setState(), and notify()

🔗 Source: sitepoint.com

Q21: Can you access non static variable in static context?

Topic: Java
Difficulty: ⭐⭐⭐

A static variable in Java belongs to its class and its value remains the same for all its instances. A static variable is initialized when the class is loaded by the JVM. If your code tries to access a non-static variable, without any instance, the compiler will complain, because those variables are not created yet and they are not associated with any instance.

🔗 Source: github.com/snowdream

Q22: Does Java support multiple inheritance?

Topic: Java
Difficulty: ⭐⭐⭐

No, Java does not support multiple inheritance. Each class is able to extend only on one class, but is able to implement more than one interfaces.

🔗 Source: github.com/snowdream

Q23: Explain different ways of creating a thread. Which one would you prefer and why?

Topic: Java
Difficulty: ⭐⭐⭐

There are three ways that can be used in order for a Thread to be created:

  • A class may extend the Thread class.
  • A class may implement the Runnable interface.
  • An application can use the Executor framework, in order to create a thread pool.

The Runnable interface is preferred, as it does not require an object to inherit the Thread class. In case your application design requires multiple inheritance, only interfaces can help you. Also, the thread pool is very efficient and can be implemented and used very easily.

🔗 Source: github.com/snowdream

Q24: What’s a deadlock?

Topic: Java
Difficulty: ⭐⭐⭐

A condition that occurs when two processes are waiting for each other to complete, before proceeding. The result is that both processes wait endlessly.

🔗 Source: github.com/snowdream

Q25: What is difference between fail-fast and fail-safe?

Topic: Java
Difficulty: ⭐⭐⭐

The Iterator's fail-safe property works with the clone of the underlying collection and thus, it is not affected by any modification in the collection. All the collection classes in java.util package are fail-fast, while the collection classes in java.util.concurrent are fail-safe. Fail-fast iterators throw a ConcurrentModificationException, while fail-safe iterator never throws such an exception.

🔗 Source: github.com/snowdream

Q26: What is Java Priority Queue?

Topic: Java
Difficulty: ⭐⭐⭐

The PriorityQueue is an unbounded queue, based on a priority heap and its elements are ordered in their natural order. At the time of its creation, we can provide a Comparator that is responsible for ordering the elements of the PriorityQueue. A PriorityQueue doesn’t allow null values, those objects that doesn’t provide natural ordering, or those objects that don’t have any comparator associated with them. Finally, the Java PriorityQueue is not thread-safe and it requires O(log(n)) time for its enqueing and dequeing operations.

🔗 Source: github.com/snowdream

Q27: When is the finalize() called? What is the purpose of finalization?

Topic: Java
Difficulty: ⭐⭐⭐

The finalize method is called by the garbage collector, just before releasing the object’s memory. It is normally advised to release resources held by the object inside the finalize method.

🔗 Source: github.com/snowdream

Q28: What is structure of Java Heap?

Topic: Java
Difficulty: ⭐⭐⭐

The JVM has a heap that is the runtime data area from which memory for all class instances and arrays is allocated. It is created at the JVM start-up. Heap memory for objects is reclaimed by an automatic memory management system which is known as a garbage collector. Heap memory consists of live and dead objects. Live objects are accessible by the application and will not be a subject of garbage collection. Dead objects are those which will never be accessible by the application, but have not been collected by the garbage collector yet. Such objects occupy the heap memory space until they are eventually collected by the garbage collector.

🔗 Source: github.com/snowdream

Q29: What are the restrictions imposed on Java applets?

Topic: Java
Difficulty: ⭐⭐⭐

Mostly due to security reasons, the following restrictions are imposed on Java applets:

  • An applet cannot load libraries or define native methods.
  • An applet cannot ordinarily read or write files on the execution host.
  • An applet cannot read certain system properties.
  • An applet cannot make network connections except to the host that it came from.
  • An applet cannot start any program on the host that’s executing it.

🔗 Source: github.com/snowdream

Q30: What are Scriptlets?

Topic: Java
Difficulty: ⭐⭐⭐

In Java Server Pages (JSP) technology, a scriptlet is a piece of Java-code embedded in a JSP page. The scriptlet is everything inside the tags. Between these tags, a user can add any valid scriplet.

🔗 Source: github.com/snowdream

Q31: State the features of an interface.

Topic: OOP
Difficulty: ⭐⭐⭐

An interface is a template that contains only the signature of methods. The signature of a method consists of the numbers of parameters, the type of parameter (value, reference, or output), and the order of parameters. An interface has no implementation on its own because it contains only the definition of methods without any method body. An interface is defined using the interface keyword. Moreover, you cannot instantiate an interface. The various features of an interface are as follows:

  • An interface is used to implement multiple inheritance in code. This feature of an interface is quite different from that of abstract classes because a class cannot derive the features of more than one class but can easily implement multiple interfaces.
  • It defines a specific set of methods and their arguments.
  • Variables in interface must be declared as public, static, and final while methods must be public and abstract.
  • A class implementing an interface must implement all of its methods.
  • An interface can derive from more than one interface.

🔗 Source: indiabix.com

Q32: What does SOLID stand for? What are its principles?

Topic: Software Architecture
Difficulty: ⭐⭐⭐

S.O.L.I.D is an acronym for the first five object-oriented design (OOD) principles by Robert C. Martin.

  • S - Single-responsiblity principle. A class should have one and only one reason to change, meaning that a class should have only one job.
  • O - Open-closed principle. Objects or entities should be open for extension, but closed for modification.
  • L - Liskov substitution principle. Let q(x) be a property provable about objects of x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T.
  • I - Interface segregation principle. A client should never be forced to implement an interface that it doesn't use or clients shouldn't be forced to depend on methods they do not use.
  • D - Dependency Inversion Principle. Entities must depend on abstractions not on concretions. It states that the high level module must not depend on the low level module, but they should depend on abstractions.

🔗 Source: scotch.io

Q33: What are the DRY and DIE principles?

Topic: Software Architecture
Difficulty: ⭐⭐⭐

In software engineering, Don't Repeat Yourself (DRY) or Duplication is Evil (DIE) is a principle of software development.

🔗 Source: stackoverflow.com

Q34: Is it better to return NULL or empty values from functions/methods where the return value is not present?

Topic: Software Architecture
Difficulty: ⭐⭐⭐

Returning null is usually the best idea if you intend to indicate that no data is available.

An empty object implies data has been returned, whereas returning null clearly indicates that nothing has been returned.

Additionally, returning a null will result in a null exception if you attempt to access members in the object, which can be useful for highlighting buggy code - attempting to access a member of nothing makes no sense. Accessing members of an empty object will not fail meaning bugs can go undiscovered.

🔗 Source: stackoverflow.com

Q35: Explain Bean lifecycle in Spring framework

Topic: Spring
Difficulty: ⭐⭐⭐

Following is sequence of a bean lifecycle in Spring:

  • Instantiate − First the spring container finds the bean's definition from the XML file and instantiates the bean..
  • Populate properties − Using the dependency injection, spring populates all of the properties as specified in the bean definition.
  • Set Bean Name − If the bean implements BeanNameAware interface, spring passes the bean's id to setBeanName() method.
  • Set Bean factory − If Bean implements BeanFactoryAware interface, spring passes the beanfactory to setBeanFactory() method.
  • Pre Initialization − Also called postprocess of bean. If there are any bean BeanPostProcessors associated with the bean, Spring calls postProcesserBeforeInitialization() method.
  • Initialize beans − If the bean implements IntializingBean,its afterPropertySet() method is called. If the bean has init method declaration, the specified initialization method is called.
  • Post Initialization − If there are any BeanPostProcessors associated with the bean, their postProcessAfterInitialization() methods will be called.
  • Ready to use − Now the bean is ready to use by the application.
  • Destroy − If the bean implements DisposableBean , it will call the destroy() method .

🔗 Source: tutorialspoint.com

Q36: What is Controller in Spring MVC framework?

Topic: Spring
Difficulty: ⭐⭐⭐

Controllers provide access to the application behavior that you typically define through a service interface. Controllers interpret user input and transform it into a model that is represented to the user by the view. Spring implements a controller in a very abstract way, which enables you to create a wide variety of controllers.

🔗 Source: tutorialspoint.com

Q37: What is Aspect?

Topic: Spring
Difficulty: ⭐⭐⭐

An Aspect is a module which has a set of APIs providing cross-cutting requirements. For example, a logging module would be called AOP aspect for logging. An application can have any number of aspects depending on the requirement. In Spring AOP, aspects are implemented using regular classes (the schema-based approach) or regular classes annotated with the @Aspect annotation (@AspectJ style).

🔗 Source: tutorialspoint.com

Q38: What is the typical Bean life cycle in Spring Bean Factory Container?

Topic: Spring
Difficulty: ⭐⭐⭐

Bean life cycle in Spring Bean Factory Container is as follows:

  • The spring container finds the beans definition from the XML file and instantiates the bean.

  • Using the dependency injection, spring populates all of the properties as specified in the bean definition

  • If the bean implements the BeanNameAware interface, the factory calls setBeanName() passing the beans ID.

  • If the bean implements the BeanFactoryAware interface, the factory calls setBeanFactory(), passing an instance of itself.

  • If there are any BeanPostProcessors associated with the bean, their post- ProcessBeforeInitialization() methods will be called.

  • If an init-method is specified for the bean, it will be called.

  • Finally, if there are any BeanPostProcessors associated with the bean, their postProcessAfterInitialization() methods will be called.

🔗 Source: developersbook.com

Q39: How to handle exceptions in Spring MVC Framework?

Topic: Spring
Difficulty: ⭐⭐⭐

Spring MVC Framework provides the following ways to help us achieving robust exception handling.

  1. Controller Based – We can define exception handler methods in our controller classes. All we need is to annotate these methods with @ExceptionHandler annotation.
  2. Global Exception Handler – Exception Handling is a cross-cutting concern and Spring provides @ControllerAdvice annotation that we can use with any class to define our global exception handler.
  3. HandlerExceptionResolver implementation – For generic exceptions, most of the times we serve static pages. Spring Framework provides HandlerExceptionResolver interface that we can implement to create global exception handler. The reason behind this additional way to define global exception handler is that Spring framework also provides default implementation classes that we can define in our spring bean configuration file to get spring framework exception handling benefits.

🔗 Source: journaldev.com

Q40: What is Spring IoC Container?

Topic: Spring
Difficulty: ⭐⭐⭐

Inversion of Control (IoC) is the mechanism to achieve loose-coupling between Objects dependencies. To achieve loose coupling and dynamic binding of the objects at runtime, the objects define their dependencies that are being injected by other assembler objects. Spring IoC container is the program that injects dependencies into an object and makes it ready for our use.

Spring Framework IoC container classes are part of org.springframework.beans and org.springframework.context packages and provides us different ways to decouple the object dependencies.

Some of the useful ApplicationContext implementations that we use are;

  • AnnotationConfigApplicationContext: For standalone java applications using annotations based configuration.
  • ClassPathXmlApplicationContext: For standalone java applications using XML based configuration.
  • FileSystemXmlApplicationContext: Similar to ClassPathXmlApplicationContext except that the xml configuration file can be loaded from anywhere in the file system.
  • AnnotationConfigWebApplicationContext and XmlWebApplicationContext for web applications.

🔗 Source: journaldev.com

Q41: Is the DispatcherServlet instantiated via an application context?

Topic: Spring
Difficulty: ⭐⭐⭐

No, the DispatcherServlet is instantiated by Servlet containers like Tomcat or Jetty. You must define the DispatcherServlet into the web.xml file as shown below.

You can see that load-on-startup tag is 1, which means DispatcherServlet is instantiated when you deploy the Spring MVC application to Tomcat or any other Servlet container. During instantiation, it looks for a file servlet-name-context.xml and then initializes beans defined in this file.

🔗 Source: dzone.com

Q42: What is the purpose of the session scope?

Topic: Spring
Difficulty: ⭐⭐⭐

The purpose of the session scope is to create an instance of the bean for an HTTP Session. This means the same bean can serve multiple requests if it is scoped in session. You can define the scope of a Spring bean using scope attribute or the @Scope annotation in a Spring MVC application.

🔗 Source: dzone.com

Q43: What is the difference between a synchronized method and a synchronized block?

Topic: Java
Difficulty: ⭐⭐⭐⭐

In Java programming, each object has a lock. A thread can acquire the lock for an object by using the synchronized keyword. The synchronized keyword can be applied in a method level (coarse grained lock) or block level of code (fine grained lock).

🔗 Source: github.com/snowdream

Q44: How do you ensure that N threads can access N resources without deadlock?

Topic: Java
Difficulty: ⭐⭐⭐⭐

A very simple way to avoid deadlock while using N threads is to impose an ordering on the locks and force each thread to follow that ordering. Thus, if all threads lock and unlock the mutexes in the same order, no deadlocks can arise.

🔗 Source: github.com/snowdream

Q45: What is Perm Gen space in Heap?

Topic: Java
Difficulty: ⭐⭐⭐⭐

Perm Gen stands for permanent generation. It is the space on Java Heap that holds meta-data describing user classes (classes that are not part of the Java language). Examples of such meta-data are objects describing classes and methods and they are stored in the Permanent Generation. Applications with large code-base can quickly fill up this segment of the heap which will cause java.lang.OutOfMemoryError: PermGen no matter how high your -Xmx (maximum size of the memory allocation pool) and how much memory you have on the machine.

🔗 Source: github.com/snowdream

Q46: What is RMI?

Topic: Java
Difficulty: ⭐⭐⭐⭐

The Java Remote Method Invocation (Java RMI) is a Java API that performs the object-oriented equivalent of remote procedure calls (RPC), with support for direct transfer of serialized Java classes and distributed garbage collection. Remote Method Invocation (RMI) can also be seen as the process of activating a method on a remotely running object. RMI offers location transparency because a user feels that a method is executed on a locally running object.

🔗 Source: github.com/snowdream

Q47: Explain different types of inheritance.

Topic: OOP
Difficulty: ⭐⭐⭐⭐

Inheritance in OOP is of four types:

  • Single inheritance - Contains one base class and one derived class
  • Hierarchical inheritance - Contains one base class and multiple derived classes of the same base class
  • Multilevel inheritance - Contains a class derived from a derived class
  • Multiple inheritance - Contains several base classes and a derived class

All .NET languages supports single, hierarchical, and multilevel inheritance. They do not support multiple inheritance because in these languages, a derived class cannot have more than one base class. However, you can implement multiple inheritance in.NET through interfaces.

🔗 Source: indiabix.com

Q48: What is GOD class and why should we avoid it?

Topic: Software Architecture
Difficulty: ⭐⭐⭐⭐

The most effective way to break applications it to create GOD classes. That are classes that keeps track of a lot of information and have several responsibilities. One code change will most likely affect other parts of the class and therefore indirectly all other classes that uses it. That in turn leads to an even bigger maintenance mess since no one dares to do any changes other than adding new functionality to it.

🔗 Source: stackoverflow.com

Q49: What bean scopes does Spring support? Explain them.

Topic: Spring
Difficulty: ⭐⭐⭐⭐

The Spring Framework supports following five scopes, three of which are available only if you use a web-aware ApplicationContext.

  • singleton − This scopes the bean definition to a single instance per Spring IoC container.
  • prototype − This scopes a single bean definition to have any number of object instances.
  • request − This scopes a bean definition to an HTTP request. Only valid in the context of a web-aware Spring ApplicationContext.
  • session − This scopes a bean definition to an HTTP session. Only valid in the context of a web-aware Spring ApplicationContext.
  • global-session − This scopes a bean definition to a global HTTP session. Only valid in the context of a web-aware Spring ApplicationContext.

🔗 Source: tutorialspoint.com

Q50: What is Weaving?

Topic: Spring
Difficulty: ⭐⭐⭐⭐

Weaving is the process of linking aspects with other application types or objects to create an advised object.

🔗 Source: tutorialspoint.com

Q51: What is the difference between concern and cross-cutting concern in Spring AOP?

Topic: Spring
Difficulty: ⭐⭐⭐⭐

  • Concern − Concern is behavior which we want to have in a module of an application. Concern may be defined as a functionality we want to implement. Issues in which we are interested define our concerns.
  • Cross-cutting concern − It's a concern which is applicable throughout the application and it affects the entire application. e.g. logging , security and data transfer are the concerns which are needed in almost every module of an application, hence are cross-cutting concerns.

🔗 Source: tutorialspoint.com

Q52: What are some benefits of using Spring Transactions?

Topic: Spring
Difficulty: ⭐⭐⭐⭐

  • Provide a consistent programming model across different transaction APIs such as JTA, JDBC, Hibernate, JPA, and JDO
  • Support declarative transaction management
  • Provide a simpler API for programmatic transaction management than some complex transaction APIs such as JTA
  • Integrate very well with Spring’s various data access abstractions

🔗 Source: baeldung.com

Q53: What is Aspect-Oriented Programming?

Topic: Spring
Difficulty: ⭐⭐⭐⭐

Aspects enable the modularization of cross-cutting concerns such as transaction management that span multiple types and objects by adding extra behavior to already existing code without modifying affected classes.

🔗 Source: baeldung.com

Q54: What is Spring WebFlux?

Topic: Spring
Difficulty: ⭐⭐⭐⭐

Spring WebFlux is Spring’s reactive-stack web framework, and it’s an alternative to Spring MVC. In order to achieve this reactive model and be highly scalable, the entire stack is non-blocking.

🔗 Source: baeldung.com

Q55: Compare @Component (v2.5) versus @Bean (v 3.0)

Topic: Spring
Difficulty: ⭐⭐⭐⭐

Would it have been possible to re-use the @Component annotation instead of introducing @Bean annotation?


@Component and @Bean do two quite different things, and shouldn't be confused.

  • @Component (and @Service and @Repository) are used to auto-detect and auto-configure beans using classpath scanning. There's an implicit one-to-one mapping between the annotated class and the bean (i.e. one bean per class). Control of wiring is quite limited with this approach, since it's purely declarative.

  • @Bean is used to explicitly declare a single bean, rather than letting Spring do it

To answer your question:
Sure, probably; but they chose not to, since the two are quite different. Spring's already confusing enough without muddying the waters further.

🔗 Source: stackoverflow.com

Q56: What's the difference between the Dependency Injection and Service Locator patterns?

Topic: Design Patterns
Difficulty: ⭐⭐⭐⭐⭐

  • With the ServiceLocator, the class is still responsible for creating its dependencies. It just uses the service locator to do it.
  • Service locators hide dependencies - you can't tell by looking at an object whether it hits a database or not (for example) when it obtains connections from a locator.
  • With DI, the class is given it's dependencies. It neither knows, nor cares where they come from.

One important result of this is that the DI example is much easier to unit test -- because you can pass it mock implementations of its dependent objects. You could combine the two -- and inject the service locator (or a factory), if you wanted.

🔗 Source: stackoverflow.com

Q57: What are the layers of RMI Architecture?

Topic: Java
Difficulty: ⭐⭐⭐⭐⭐

The RMI architecture consists of the following layers:

  • Stub and Skeleton layer: This layer lies just beneath the view of the developer. This layer is responsible for intercepting method calls made by the client to the interface and redirect these calls to a remote RMI Service.
  • Remote Reference Layer: The second layer of the RMI architecture deals with the interpretation of references made from the client to the server’s remote objects. This layer interprets and manages references made from clients to the remote service objects. The connection is a one-to-one (unicast) link.
  • Transport layer: This layer is responsible for connecting the two JVM participating in the service. This layer is based on TCP/IP connections between machines in a network. It provides basic connectivity, as well as some firewall penetration strategies.

🔗 Source: github.com/snowdream

Q58: What is the difference between association, aggregation and composition?

Topic: OOP
Difficulty: ⭐⭐⭐⭐⭐

  • Association is a relationship where all objects have their own lifecycle and there is no owner.

Let's take an example of Teacher and Student. Multiple students can associate with single teacher and single student can associate with multiple teachers, but there is no ownership between the objects and both have their own lifecycle. Both can be created and deleted independently.

  • Aggregation is a specialised form of Association where all objects have their own lifecycle, but there is ownership and child objects can not belong to another parent object.

Let's take an example of Department and teacher. A single teacher can not belong to multiple departments, but if we delete the department, the teacher object will not be destroyed. We can think about it as a “has-a” relationship.

  • Composition is again specialised form of Aggregation and we can call this as a “death” relationship. It is a strong type of Aggregation. Child object does not have its lifecycle and if parent object is deleted, all child objects will also be deleted.

Let's take again an example of relationship between House and Rooms. House can contain multiple rooms - there is no independent life of room and any room can not belong to two different houses. If we delete the house - room will automatically be deleted.

Let's take another example relationship between Questions and Options. Single questions can have multiple options and option can not belong to multiple questions. If we delete the questions, options will automatically be deleted.

🔗 Source: stackoverflow.com

Q59: What are some of the best practices for Spring Framework?

Topic: Spring
Difficulty: ⭐⭐⭐⭐⭐

  1. Avoid version numbers in schema reference, to make sure we have the latest configs.
  2. Divide spring bean configurations based on their concerns such as spring-jdbc.xml, spring-security.xml.
  3. For spring beans that are used in multiple contexts in Spring MVC, create them in the root context and initialize with listener.
  4. Configure bean dependencies as much as possible, try to avoid autowiring as much as possible.
  5. For application-level properties, the best approach is to create a property file and read it in the spring bean configuration file.
  6. For smaller applications, annotations are useful but for larger applications, annotations can become a pain. If we have all the configuration in XML files, maintaining it will be easier.
  7. Use correct annotations for components for understanding the purpose easily. For services use @Service and for DAO beans use @Repository.
  8. Spring framework has a lot of modules, use what you need. Remove all the extra dependencies that get usually added when you create projects through Spring Tool Suite templates.
  9. If you are using Aspects, make sure to keep the join pint as narrow as possible to avoid advice on unwanted methods. Consider custom annotations that are easier to use and avoid any issues.
  10. Use dependency injection when there is an actual benefit, just for the sake of loose-coupling don’t use it because it’s harder to maintain.

🔗 Source: journaldev.com

Q60: How does autowiring work in Spring?

Topic: Spring
Difficulty: ⭐⭐⭐⭐⭐

First, and most important - all Spring beans are managed - they "live" inside a container, called "application context".

Second, each application has an entry point to that context. Web applications have a Servlet, JSF uses a el-resolver, etc. Also, there is a place where the application context is bootstrapped and all beans - autowired. In web applications this can be a startup listener.

Autowiring happens by placing an instance of one bean into the desired field in an instance of another bean. Both classes should be beans, i.e. they should be defined to live in the application context.

What is "living" in the application context? This means that the context instantiates the objects, not you. I.e. - you never make new UserServiceImpl() - the container finds each injection point and sets an instance there.

🔗 Source: stackoverflow.com

Thanks 🙌 for reading and good luck on your interview!
Please share this article with your fellow devs if you like it!
Check more FullStack Interview Questions & Answers on 👉 www.fullstack.cafe

Top comments (5)

Collapse
 
osklyar profile image
Oleg Sklyar

A set of questions to test how well a candidate memorises random, mostly irrelevant stuff.

If you are an interviewer, no matter at which level of your or candidate seniority, do not ask Spring questions even in a Java interview. Do not ask trivia questions on any programming language either. Both yield exactly zero signal about general cognitive ability of a candidate.

And if you are a candidate being asked a lot of this stuff: do you want to be a builder putting up brick walls (as this is what the company really expects when they expect you to know or remember most of this stuff) or do you want to be an engineer and of relevance beyond this immediate job opportunity?

Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard • Edited

I think you are overthinking this.

"60 questions THAT YOU MUST KNOW"

Is MUST here used in the sense of a RTC?
If you were a boss, youldn't you give the job to someone smart and able to get things done, but score only 29/60 on your list of thins that HE MUST KNOW?

You can do the job correctly without knowing any of this at first.

If you can do the job, them there are companies happy to have you.

I will play the Evil advocate here and give you the counter-argument for hiring someone who doesn't know all of this.


Q1: What is the Difference between JDK and JRE?
some people are bad at acroynms and good developers

Q2: What is the difference between an Applet and a Java Application?
if you don't know what an Applet is, it just means that you are not old

Q3: What is a JSP Page?
Q3: You can be a Spring dev and not care about JSP

Q4: What is a Servlet?
Q4: Can be trivially found in the JavaDoc

Q5: What are pass by reference and pass by value?
Q5: If a dev doesn't know this, 30s a training can fix the problem

Q6: What are the basic interfaces of Java Collections Framework?
Q6: Not a red flag. Could be that I'm hiring a good C# backend developer that wants to learn Java

Q7: What differences exist between HashMap and Hashtable?
Q7: I didn't know this but I'm a good developer

Q8: What does System.gc() and Runtime.gc() methods do?
Q8: Can be trivially searched in the Javadoc

Q9: What is the difference between Exception and Error in java?
Q9: I javadoc this all the time, can't remember for reasons, not a problem

Q10: What is an Java Applet?

Q10: I know what a Java Applet only because I'M old
Q11: Can be found in 10s in Google
Q12: Can be learned real fast, not an issue.
Q13: Just a vocabulary question, not an issue.
Q14: Someone smart can visit the Spring homepage and figure this out.
Q15: Just a vocabulary question
Q16: Easy to Google
Q17: I didn't know this when I started doing Spring development
Q18: Javadoc
Q19: Can be learned with Wikipedia quickly
Q20: Can be learned with Wikipedia quickly
Q21: If someone fails at this, it's probably for a vocabulary question more than anything
Q22: A good backend developer that knows another programming language will learn this like really fast
Q23: tutorial "java how to create a thread"
Q24: important programming concept, but who knows all of them? Not me
Q25: important programming concept, but who knows all of them? Not me
Q26: easy to javadoc
Q27: again it's fine if a C# dev has to learn this
on the job
Q28: important programming concept, but who kmows them all? not me
Q29: Not really useful if you don't do Java applets
Q30: I had no idea and that was fine
Q31: Well I can hire a dev that can't answer this
Q32: A dev could know this perfectly what SOLID means and try to apply everwhere where it doesn't make sense, that would be a bad dev
Q33: Those principles are sometimes true, sometimes wrong
Q34: The right answer is it depends
Q35: Javadoc
Q36: Can be learned
Q37: You can build lots of stuff without Aspect
Q38: Javadoc
Q39: Google is your friend
Q40: Javadoc
Q41: Javadoc
Q42: Javadoc
Q42: Javadoc
Q43: Javadoc
Q44: Important programming concept, but who knows them all? Not me
Q45: I didn't know this and was hired anyway
Q46: You can build good software without RMI
Q47: Important programming concept, but who knows them all?
Q48: The Android team didnt avoid GOD classes and they were super successfull
Q49: Javadoc
Q50: You can build software without weaving
Q51: You can build software without AOP
Q52: Important programming concept etc
Q53: You can build software etc
Q54: I didn't know what WebFlux was when I started
Q55: Trivia question
Q56: Most good devs don't know this and that's fine
Q57: I don't think your boss cares about RMI
Q58: Important programming concept etc...
Q59: Best practices are often wrong
Q60: The important thing is to use autowiring as little as possible

Collapse
 
michelemauro profile image
michelemauro

You'll be surprised how many candidates, even some that later refused a proposal on the economics, couldn't correctly answer "#1: What is the Difference between JDK and JRE?". It's been very depressing to watch, interview after interview.

Collapse
 
shostarsson profile image
Rémi Lavedrine

That is an interesting article.
I am planning to do something similar about Security. So I see what could be a good way to start.

Collapse
 
gossie profile image
André Schreck

There are some really interesting questions.
Concerning Q34 I would add a third option, which in my opinion is the best one. Returning an empty java.util.Optional. That way the API implies that the result might be empty and there is no risk of a NullPointerException.