Skip to main content
Link
Menu
Expand
(external link)
Document
Search
Copy
Copied
Backend Engineering Notes
Backend Engineering Notes
Java
Core Concepts
static import
Immutable Classes
Method Overriding - Rules
BigDecimal
Exception-Handling
Custom Exceptions
Java-17
Records (Java 16+)
Sealed Classes (Java 17)
Pattern Matching (instanceof & switch)
Switch Expressions
Text Blocks (Java 15+)
Helpful NullPointerExceptions (Java 14+)
Java-8
Optional
Lambda Expressions
Functional Interfaces
Default & Static Methods in Java Interfaces
Stream API
Team & Player Objects
Team Utility
Programs – Java
Array
Move 0's to End of Number
Find '#words' in array[sentences]
MissingNumberInArray
Strings
Run Length Encoding of String
AnagramCheck
Frequency of Words
First Repeating Char
Filter Integers From List of Strings
ReverseVowels
SmallestAndLargestWord
LongestSubstring with K distinct characters
FirstNonRepeatingChar
LengthOfLongestSubstring
Java8+ Employee
Sorting Problems
Nth Highest Salary
Grouping Problems
Map
Sort a map by Key
Sort a map by Values
Thread Programs
Print1To100 using 3 threads
Memory-Management
JVM Architecture
Garbage Collection (GC)
OutOfMemoryError Handling & Heap Dump Analysis
Preventing Memory Leaks
Threads
Thread Lifecycle
Creating Threads
start() vs run()
Daemon vs User Threads
Thread Priority
Synchronization
JavaMemoryModel, volatile
Concurrency
Executor
ExecutorService
ThreadPoolExecutor
Executors
Thread Pools & Executors
Runnable vs Callable
Future
CompletableFuture (java8)
Collection Framework
Collections Framework – Hierarchy
Collection (I)
Collections Utility Class
List Interface
ArrayList (C)
LinkedList(C)
Vector (C)
Set (I)
HashSet (C)
LinkedHashSet (C)
SortedSet (I)
NavigableSet (I)
TreeSet (C)
Map (I)
HashMap (C)
WeakHashMap (C)
IdentityHashMap (C)
ConcurrentHashMap (C)
Fail-Fast vs Fail-Safe Iterators
CopyOnWriteArrayList
Spring
Spring Boot
How Spring Boot Works (End-to-End)
Core
IoC vs DI
ApplicationContext vs BeanFactory
Bean Lifecycle
Bean Scopes
Profiles
Transactions
How Transactional works internally
AOP
Advice Types
Web
Validations
API Versioning
Async
Spring Data JPA
Repositories
Derived Query Methods
JPQL and Native Queries
Entity Lifecycle
Entity Relationships
Fetch and Cascade Types
Embeddable and Embedded
Pagination and Sorting
N+1 Query Problem
Hibernate Cache
Hibernate Session APIs
Cache
Caching Concepts and Usage
Security
Why Security Exists
Authentication vs Authorization
Security Filter Chain
JWT Authentication
OAuth2
Observability
Spring Boot Actuator
Annotations
ConfigurationProperties
Conditional
Enumerated
Scheduled
Stereotype Annotations
Microservices
Microservices Design Patterns
Microservices Components List
Scalability
Service Registry & Discovery
API Gateway
Spring Cloud Gateway Setup
Centralized Configuration
Resilience4j
Circuit Breaker
Retry
Rate Limiter
TimeLimiter
Bulkhead Pattern
Combining Resilience4j Patterns
Inter-Service Communication
RestTemplate
Transactional Boundaries
REST
REST Basics
HTTP Status Codes
REST Controllers in Spring Boot
Request Handling
Response Handling
ResponseEntity (unknow type vs Strong Typed)
Exception & Error Handling
DTO Mapping Strategies
Design Patterns
SOLID Principles
Creational Patterns
Singleton Pattern
Factory Method Pattern
Abstract Factory Pattern
Builder Pattern
Prototype Pattern
Behavior Patterns
Strategy Design Pattern
Observer Design Pattern
Database
SQL
Aggregation Functions
GROUP BY & HAVING
JOINS
Indexes in RDBMS
Transaction Fundamentals & ACID Principles
X vs Y
Exceptions
Checked Exceptions vs Unchecked Exceptions
ClassNotFoundException vs NoClassDefFoundError
StackOverflowError vs OutOfMemoryError
throw vs throws
try-catch vs try-with-resources
RuntimeException vs Exception
IllegalArgumentException vs IllegalStateException
Collections
List vs Set
ArrayList vs LinkedList
HashSet vs TreeSet
HashMap vs Hashtable
HashMap vs ConcurrentHashMap
HashMap vs TreeMap
List vs Array
Enumeration vs Iterator vs ListIterator
Set vs Map
Comparable vs Comparator
Collection vs Collections
Map vs Dictionary
Fail-fast vs Fail-safe Iterator
Vector vs ArrayList
HashMap vs LinkedHashMap
TreeSet vs TreeMap
HashMap vs WeakHashMap vs IdentityHashMap
EnumMap vs HashMap
Streams
map vs flatMap (Java 8 Streams)
List.sort() vs stream().sorted()
stream() vs parallelStream()
forEach() vs forEachOrdered()
filter() vs map()
collect() vs forEach()
findFirst() vs findAny()
toList() vs collect(Collectors.toList())
limit() vs skip()
Lazy vs Eager Evaluation
Intermediate vs Terminal Operations
String
OOPS
Abstract Class vs Interface
Heap vs Stack
equals() vs hashCode()
Java transient vs JPA Transient
Git
git cherry-pick
git log
git rebase
git squash
git merge
git tag
Regular Expressions
Kafka
Messaging & Event‑Driven Fundamentals
Messaging Vs Event‑Driven
Message
Producer
Consumer
Broker
Topic
Partition
Consumer Group
Offset
Kafka Lag
Delivery Guarantees
Retry, Backoff & DLT
Inbox and Outbox Pattern
Kafka Storage and Internals
server.properties
application.yaml kafka
End-to-End Kafka + Spring Boot
Kafka Rebalancing
Testing
Testing Fundamentals
JUnit 5
Mockito
Spring Boot Testing
Bank Terminology
Retail Accounts & Deposits
Corporate Accounts & Deposits
Nostro Accounts
International Transfer
Collections and Recovery
Search Backend Engineering Notes
GitHub Repository
Backend Engineering Notes
Testing
Table of contents
Testing Fundamentals
JUnit 5
Mockito
Spring Boot Testing