1.1 Java
Java is a high-level, object-oriented, platform-independent programming language designed for developing a wide range of applications. It was introduced by sun microsystems in 1995(now owned by oracle). Java uses a combinations of compiler & interpreter to convert code into bytecode which can run on any device with a Java Virtual Machine(JVM), making it is high portable.
1.2 JEE (Jakarta EE)
JEE (Jakarta EE) is a set of specifications extending Java SE with features for enterprise development. It includes APIs for web services, distributed computing, and messaging. Technologies like Servlets, JSP, EJB, and JPA are part of JEE. It is mainly used for building large-scale, scalable, and secure web-based enterprise applications.
1.3 Servlets
Servlets are Java classes that handle HTTP requests and generate responses on a web server. They operate on the server side and are part of the Java EE specification. Servlets help build dynamic web applications and can interact with databases, APIs, and business logic. They form the core of many Java web frameworks, including Spring MVC.
1.4 JSP (JavaServer Pages)
JSP is a server-side technology that allows embedding Java code directly into HTML pages. It simplifies the creation of dynamic web content by using special tags like <% %> for logic. JSPs are translated into Servlets at runtime by the server. They are often used in MVC architectures for view rendering.
🔹 2. Spring Framework & Modules
2.1 Spring Core
Spring Core provides the foundation for the entire Spring Framework. It includes features like Inversion of Control (IoC) and Dependency Injection (DI), which help manage object lifecycles and dependencies. It enables loose coupling and testability of code. The ApplicationContext and BeanFactory are key components of Spring Core.
2.2 Spring JDBC
Spring JDBC is a module of the Spring Framework that provides a simplified and consistent approach for interacting with relational databases using JDBC (Java Database Connectivity).
Rather than writing verbose and error-prone boilerplate code (like manually managing connections, statements, and exceptions), Spring JDBC provides abstractions and templates (especially JdbcTemplate) to reduce complexity and improve productivity.
2.3 Spring DAO
Spring DAO is a design pattern implementation provided by the Spring Framework to abstract and encapsulate all interactions with the data source. It ensures a clean separation between business logic and data persistence logic and supports a variety of persistence technologies like JDBC, Hibernate, JPA, iBatis, etc.
2.4 Spring ORM
Spring ORM provides integration with Object Relational Mapping (ORM) tools like Hibernate, JPA, and MyBatis. It simplifies ORM configuration, transaction management, and exception handling. It also supports declarative transaction management and consistent exception hierarchy. This module allows seamless interaction between Java objects and database tables.
2.5 Spring Security
Spring Security is a powerful and customizable authentication and access control framework. It provides out-of-the-box support for common security practices such as login, logout, CSRF, and method-level security. It integrates well with Spring MVC and REST APIs. It supports security for both web and enterprise applications.
2.6 Spring AOP (Aspect Oriented Programming)
Spring AOP allows separation of cross-cutting concerns like logging, security, and transactions from business logic. It uses aspects, advice, and pointcuts to weave additional behavior into existing code at runtime. Spring AOP is based on proxy patterns and integrates seamlessly with the Spring container. It improves modularity and code reuse.
2.7 Spring MVC
Spring MVC is a web framework built on the Model-View-Controller pattern. It separates application concerns: the model (data), view (UI), and controller (logic). Spring MVC supports RESTful web services, form handling, validation, and easy integration with templates like Thymeleaf. It’s widely used in enterprise web applications.
2.8 Spring Web MVC
This refers specifically to the web-based portion of Spring MVC, focusing on handling HTTP requests and returning views or data. It involves controllers (@Controller), request mappings, form submissions, and response rendering. It can return HTML, JSON, XML, etc., and is well-suited for full-stack or RESTful APIs.
2.9 Spring Boot
Spring Boot simplifies Spring application development by offering default configurations, embedded servers, and production-ready features. It eliminates much of the boilerplate and XML configuration. With annotations like @SpringBootApplication, developers can quickly build and deploy Spring apps. It’s ideal for microservices architecture.
-------------------------------------------------------
Features of Spring
-
Spring is a open source, light weight framework to develop all kinds of Java, JEE and other applications in framework style.
-
Spring supports POJO/POJI model programming.
-
Spring supports both XML, annotations based configurations.
-
Spring allows to develop standalone, desktop, two tier, web, distributed, enterprise applications.
-
Inversion of Control (IoC)
Spring uses the technique called Inversion Of Control, also known as Dependency Injection (DI).
Spring manages object creation and wiring, promoting loose coupling.
-
Spring supports Aspect-Oriented Programming (AOP) and separates cross-cutting concerns (like logging, security) from business logic.
AOP reduces code duplication and enhances modularity.
-
Spring provides a powerful containers like BeanFactory and ApplicationContext to manage bean lifecycle and dependencies.
-
Spring comes with MVC framework and built-in support for developing web applications using the Spring MVC module. It follows Model-View-Controller architecture.
-
Transaction Management
Spring provides a generic abstraction layer for transaction management. It supports declarative & programmatic transactions.
Spring can integrate with various transaction APIs like JTA, JDBC, Hibernate.
-
Spring easily integrate with other frameworks like Hibernate, JPA, Struts, JSF and so on.
Spring also supports integration with technologies like JMS, JDBC, Mail etc.
-
Spring Security provides authentication, authorization, and protection against common attacks (like CSRF).
-
Testability
Spring dependency injection makes it easier to test components in isolation using tools like JUnit or Mockito.
-
Spring Boot is a Spring extension, it simplifies Spring application development.
Spring Boot is having auto-configuration, REST APIs, embedded servers such as Tomcat, Jetty etc. And it provides opinionated starter POM to simplify our maven configuration.
What are the scopes in Spring Framework
-
In Spring framework, a "scope" defines the life cycle and visibility of a bean within the application context.
Spring supports several bean scopes like:
singleton, prototype, request, session, application and websocket.
-
Singleton scope is the default scope in Spring framework. Singleton scope is nothing but, a single instance of the bean is created and shared across the entire spring container.
-
Whereas with prototype scope, a new instance of the bean is created every time it is requested from the container.
-
Web-aware Spring applications supports additional scopes like request, session, application, websocket.
-
Request scope is nothing but, a new bean instance is created for each HTTP request.
-
Session scope is nothing but, a single bean instance is created and shared per HTTP session.
-
Whereas application scope, a single bean instance is created and shared per ServletContext.
-
Whereas websocket scope, a single bean instance is created and shared per websocket session.
These scopes allow developers to manage bean instances appropriately based on the specific requirements of their applications.
Bean Life Cycle in Spring Bean Container
In the spring framework, the life cycle of the bean undergoes from instantiation to destruction.
The stages of the spring bean life cycle are:
-
Instantiation
-
Property population
-
Aware interfaces (optional)
-
Initialization callbacks
-
Post-initialization processing
-
Bean usage
-
Destruction callbacks
-
Post-destruction processing
1) Instantiation:
The spring container creates an instance of the bean using its constructor or a factory method.
2) Property population:
The container injects dependencies into the bean’s properties, either through setter method or direct field access.
3) Aware interfaces (optional):
If the bean implements any of the spring Aware interfaces (e.g., BeanNameAware, BeanFactoryAware), the container calls the corresponding methods to provide relevant information.
4) Initialization Callbacks:
-
If the bean implements the InitializingBean interface, the container invokes its afterPropertiesSet() method.
-
Alternatively, if an initialization method is specified using the @PostConstruct annotation or via XML configuration, the container calls this method.
5) Post-Initialization Processing:
Bean post-processors (BeanPostProcessor implementations) can modify the bean instance before it is made available to clients.
6) Bean Usage:
The bean is ready for use by the application and can handle client requests.
7) Destruction Callbacks:
-
If the bean implements the DisposableBean interface, the container invokes the destroy() method.
-
Alternatively, if a destruction method is specified using the @PreDestroy annotation or via XML configuration, the container calls this method.
8) Post-Destruction Processing:
Bean post-processors can perform cleanup operations after the bean has been destroyed.
🔹 3 Persistence
3.1 Hibernate
Hibernate is an ORM (Object Relational Mapping) framework for Java. It maps Java objects to relational database tables and handles CRUD operations, caching, and lazy loading. Hibernate abstracts JDBC boilerplate code and supports HQL (Hibernate Query Language). It integrates well with Spring ORM and JPA.
3.2 JPA (Java Persistence API)
JPA is a Java specification for managing relational data using object-relational mapping. It defines annotations and interfaces for ORM, while Hibernate is one of its implementations. JPA supports entity management, JPQL (Java Persistence Query Language), and declarative queries. It's widely used in enterprise applications for database interaction.
1) Why do you need ORM tools like Hibernate?
ORM tools like Hibernate is that it can develop the database persisting logic.
-
Hibernate has a support of automatic generation of primary keys.
-
Hibernate has introduced, its own query language called HQL, it is database independent.
-
Hibernate has implicit connection pooling.
So, Hibernate reduces burden of a database server. Apart from implicit pooling we can apply explicit connection pool to Hibernate to increase the performance.
-
Hibernate has all unchecked exceptions.
-
Hibernate has caching mechanism. It means whenever an object is loaded from the database then it will be stored in local cache memory.
So, for next time when we are trying to load same object from the database, it will be loaded from local cache memory.
It reduces no. of round trips b/w a java application and database.
-
Hibernate supports associations. It means we can put relationships like one-to-many, many-to-one, many-to-many between objects.
-
Hibernate supports inheritance. It means whenever we save a derived class object, Hibernate automatically stores its base class data into the database.
-
Hibernate supports collections (i.e., list, set, map).
-
Hibernate has provided a special kind of classes, called dialect classes and these classes will internally take care about generation of SQL commands related to the database. Hibernate has provided a separate dialect class for each database.
-
Hibernate has provided lazy loading.
It increases the performance of application whenever we are working with relationships in Hibernate.
Q2) What is the general flow of hibernate communication with RDBS?
-
Load the hibernate configuration file and create configuration object: it will load all hbm mapping files automatically because file can be configured in configuration file.
-
Create SessionFactory from configuration object.
-
Create one session from sessionfactory.
-
Create HQL Query.
-
Execute query to get list containing java objects.
Q3) What role does the session interface play in hibernate?
-
Session is not a thread safe.
-
Session is light weight.
-
Session interface holds JDBC connection.
-
Session interface holds db transaction.
-
Holds a mandatory (first-level) cache of persistent objects, used when navigating the object graph or looking up objects by identifiers.
Session session = new Configuration().config().buildSessionFactory().openSessionFactory();
Q4) What role does the sessionFactory interface play in hibernate?
-
Hibernate application get instance of session from sessionFactory.
-
SessionFactory is not light weight.
-
SessionFactory is thread safe.
-
Single SessionFactory for whole application.
-
If application access multiple database then for one database one sessionFactory.
Q5) How to configure mapping file in hibernate?
🔹 4 Web Services & Testing
4.1 RESTful Web Services
REST (Representational State Transfer) is an architectural style for designing stateless web services. It uses standard HTTP methods (GET, POST, PUT, DELETE) for communication. REST APIs are easy to develop with Spring Boot using @RestController, @GetMapping, etc. They return data in formats like JSON or XML.
4.2 JUnit & Mockito
JUnit is a unit testing framework for Java applications. It allows developers to write repeatable tests and validate functionality. Mockito is used for mocking dependencies in unit tests, enabling isolation of the class under test. Together, they support Test-Driven Development (TDD) and improve code quality.
4.3 Maven & Gradle
Maven and Gradle are build tools for managing project dependencies, compiling code, and packaging applications. Maven uses XML (pom.xml) for configuration, while Gradle uses Groovy/Kotlin DSL (build.gradle). Both support plugins, lifecycle phases, and integration with CI/CD pipelines. Gradle is known for its performance and flexibility.
🔹 5 Methodologies & Lifecycle
5.1 SDLC (Software Development Life Cycle)
SDLC is a structured process followed during software development. It includes phases like requirements gathering, design, implementation, deployment, testing, and maintenance. SDLC models include Waterfall, Agile, and Spiral. It ensures systematic and efficient development of high-quality software.
5.2 Agile
Agile is an iterative and incremental software development methodology that emphasizes flexibility, collaboration, and customer feedback. It breaks development into small units called sprints. Agile promotes continuous integration, adaptive planning, and fast delivery. Tools like Jira and Scrum boards are commonly used in Agile teams.
🔹 6 DevOps & Cloud-Native
6.1 Microservices
Microservices is an architectural style application. It has collection of loosely coupled, independently deployable services, and each service is responsible for a specific business function. Each service is responsible for a specific functionality. It promotes scalability, fault isolation, and continuous delivery. Technologies like Spring Boot and Docker are often used in microservice development.
6.2 Docker
Docker is a platform for developing, shipping, and running applications in containers. Containers package code and dependencies together, ensuring consistency across environments. Docker enables isolation, resource efficiency, and easy deployment. It integrates with CI/CD tools and orchestrators like Kubernetes.
6.3 Kubernetes
Kubernetes is a container orchestration platform that automates deployment, scaling, and management of containerized applications. It supports rolling updates, service discovery, load balancing, and self-healing. Kubernetes abstracts infrastructure and allows managing clusters effectively. It's widely used in cloud-native and microservice architectures.
🔹 7 Databases
7.1 MSSQL
Microsoft SQL Server is a relational database management system developed by Microsoft. It supports SQL queries, stored procedures, transactions, and user-defined functions. It’s used for managing large volumes of structured data and integrates well with .NET and Java applications.
7.2 MySQL
MySQL is a popular open-source relational database system. It uses Structured Query Language (SQL) for accessing and managing data. MySQL is known for speed, reliability, and ease of use. It’s widely used in web applications, especially those built with Java, PHP, and Python.
7.3 Oracle
Oracle Database is a powerful, enterprise-grade relational database system. It supports advanced features like PL/SQL, partitioning, clustering, and high availability. It's widely used in banking, telecom, and enterprise applications. Oracle offers commercial and cloud-based database services.
7.4 MongoDB
MongoDB is a NoSQL document-based database that stores data in flexible, JSON-like BSON format. It supports dynamic schemas, indexing, and powerful querying. MongoDB is ideal for big data, real-time analytics, and applications needing flexible schemas. It integrates well with Java using official drivers and Spring Data MongoDB.
🔹 8 Tools & Monitoring
8.1 SonarQube
SonarQube is a static code analysis tool that inspects code quality, security vulnerabilities, and technical debt. It provides real-time feedback and integrates with CI/CD pipelines. SonarQube supports multiple languages including Java. It helps maintain clean, secure, and maintainable code.
8.2 Jira
Jira is an issue tracking and project management tool developed by Atlassian. It's widely used for Agile development, supporting Scrum and Kanban boards. Jira enables tracking of bugs, features, tasks, and sprints. It integrates with other tools like Confluence, Git, Jenkins, and Bitbucket.
8.3 Log4j
Log4j is a Java-based logging utility that allows configurable logging at runtime. It supports different logging levels (INFO, DEBUG, ERROR, etc.) and output destinations (console, file, database). It helps monitor application behavior and diagnose issues. Log4j 2 is the latest version with better performance and flexibility.
8.4 Instana
Instana is an application performance monitoring (APM) tool that provides real-time observability. It monitors microservices, containers, infrastructure, and distributed traces. Instana uses AI to detect performance anomalies. It helps DevOps and SRE teams maintain system health and user experience.
8.5 Elasticsearch
Elasticsearch is a distributed, RESTful search and analytics engine based on Apache Lucene. It allows full-text search, structured queries, and real-time data analytics. It's often used with Logstash and Kibana (ELK Stack). Elasticsearch powers search functionality in large-scale applications.
8.6 Kibana
Kibana is a visualization tool for Elasticsearch data. It lets users build interactive dashboards, charts, and graphs. Kibana is part of the ELK (Elasticsearch, Logstash, Kibana) stack. It helps developers and analysts understand trends and monitor logs in real-time.
8.7 Rancher
Rancher is an open-source platform for managing Kubernetes clusters. It simplifies cluster provisioning, monitoring, and user access control. Rancher supports multi-cloud environments and enhances Kubernetes with a user-friendly UI. It’s ideal for DevOps teams managing containerized workloads.
🔹 9 Frontend Technologies
9.1 HTML (Hyper Text Markup Language)
HTML is the standard markup language used to structure content on the web. It defines elements like headings, paragraphs, links, images, and forms. Browsers interpret HTML to render user interfaces. HTML5 is the latest version, supporting multimedia, semantic tags, and better accessibility.
9.2 CSS (Cascading Style Sheets)
CSS is used to style HTML elements by controlling layout, colors, fonts, spacing, and responsiveness. It allows separating content (HTML) from design. CSS supports media queries for mobile responsiveness and can be extended using preprocessors like SCSS and LESS. Combined with HTML and JavaScript, it forms the core of front-end development.
9.3 JavaScript
JavaScript is a dynamic, interpreted language that runs in browsers to make web pages interactive. It supports event-driven, functional, and object-oriented programming. JavaScript powers features like form validation, dynamic content loading, and user interactivity. It is also widely used on the server-side with Node.js.
9.4 AngularJS
AngularJS is a front-end JavaScript framework developed by Google for building dynamic single-page applications (SPAs). It uses two-way data binding, dependency injection, and directives to simplify DOM manipulation and logic. Although now succeeded by Angular 2+, AngularJS is still used in legacy projects.
🔹 10 Version Control & CI/CD
10.1 CI/CD Pipeline (Continuous Integration / Continuous Deployment)
CI/CD is a DevOps practice where code changes are automatically built, tested, and deployed to production. CI ensures code integration with automated builds/tests, while CD automates deployment. Tools like Jenkins, GitLab CI, and GitHub Actions help set up CI/CD pipelines. It improves release speed, quality, and feedback loops.
10.2 Git
Git is a distributed version control system that helps track changes in source code during software development. It enables collaboration, branching, merging, and history tracking. Developers use Git commands (e.g., commit, push, pull) to manage repositories. Platforms like GitHub, GitLab, and Bitbucket enhance Git with UI and cloud storage.
11. Apache Kafka
Apache Kafka is a distributed messaging system and event streaming platform designed for high-throughput, fault-tolerant, real-time data pipelines and event-driven applications. It works on a publish-subscribe model, where producers send messages to topics, and consumers receive them. Kafka is widely used for real-time data streaming, supporting scalable and durable communication between systems.
