All Articles

Under the Hood: Building a Custom HashMap in Java

Understanding Design URL Shortener in Java

Understanding Design Parking Lot in Java

Understanding Design Twitter in Java

Understanding Design Hit Counter in Java

Understanding LRU Cache in Java

Understanding Palindrome Partitioning in Java

Understanding N-Queens in Java

Understanding Word Search in Java

Understanding Permutations in Java

Understanding Subsets in Java

Understanding Assign Cookies in Java

Understanding Non-overlapping Intervals in Java

Understanding Merge Intervals in Java

Understanding Gas Station in Java

Understanding Jump Game in Java

Understanding Edit Distance in Java

Understanding Longest Increasing Subsequence in Java

Understanding House Robber in Java

Understanding Coin Change in Java

Understanding Climbing Stairs in Java

Understanding Sliding Window Maximum in Java

Understanding Implement Queue using Stacks in Java

Understanding Evaluate Reverse Polish Notation in Java

Understanding Min Stack in Java

Understanding Valid Parentheses in Java

Understanding Symmetric Tree in Java

Understanding Diameter of Binary Tree in Java

Understanding Lowest Common Ancestor (LCA) in Java

Understanding Level Order Traversal in Java

Understanding Invert Binary Tree in Java

Understanding Remove Nth Node From End in Java

Understanding Palindrome Linked List in Java

Understanding Merge Two Sorted Lists in Java

Understanding Detect Cycle in Linked List in Java

Understanding Reverse a Linked List in Java

Understanding Roman to Integer in Java

Understanding Longest Common Prefix in Java

Understanding Group Anagrams in Java

Understanding Longest Palindromic Substring in Java

Understanding Valid Anagram in Java

Understanding Trapping Rain Water in Java

Understanding Rotate Array in Java

Understanding Move Zeroes in Java

Understanding Maximum Subarray (Kadane's Algorithm) in Java

Understanding Two Sum in Java

ExecutorService vs. CompletableFuture in Java: A Layman's Guide

Choosing the Right Java Lock: Synchronized, ReentrantLock, ReadWriteLock, and StampedLock

Understanding Duplicate Strings in Java Heap: Immutability vs. Uniqueness

Understanding JVM Heap Dumps: A Layman's Guide to HPROF Files

JVM is Hung in Production: Step-by-Step Troubleshooting Guide

Unit and Integration Testing in Spring Boot: A Simple Guide

Java Memory Management and Garbage Collection: A Simple Guide

Sorting Maps by Value in Java Streams: A Simple Guide

Understanding Polymorphism and Method Overriding: A Simple Guide

Building a Web Link Spam Analyzer in Java: A Simple Guide

Shuffling Lists in Java using Collections.shuffle()

Understanding Blank Final Variables in Java

Serialization and Class Inheritance in Java

Understanding Java Serialization & the Transient Keyword

Advanced Java Enums: Constant-Specific Class Bodies & Overrides

How to Create Threads in Java: Extending Thread vs. Implementing Runnable

Understanding Java Semaphores: Rate Limiting & Concurrency Control

Alternating Odd & Even Numbers using ExecutorService in Java

Constructing the Minimum Possible Number using Counting Sort

Understanding JDBC Database Connectivity in Java

Implementing Custom Iterator and Iterable in Java

BigDecimal vs. Double for Financial Calculations in Java

Finding the Most Frequent IP Address in Log Files

Tape Equilibrium Split Sum Minimization in Java

Finding the Longest Binary Gap in Java

How to Ensure Zero Data Loss in Apache Kafka

Handling Message Ordering in Kafka Across Partitions

Designing a Kafka-Based Order Processing System

How to Implement a Dead Letter Queue (DLQ) in Kafka

Common Apache Kafka Pitfalls and How to Avoid Them

Common Kafka Architecture and Design Patterns

Important Kafka Metrics to Monitor in Production

Introduction to Apache Kafka Security: Authentication & Authorization

Handling Schema Evolution in Kafka with Schema Registry

Kafka Delivery Semantics: At-Most-Once, At-Least-Once, Exactly-Once

Why Kafka is Moving to KRaft (Raft Metadata Mode) from ZooKeeper

Understanding Log Compaction in Apache Kafka

What is Kafka Connect? Source vs. Sink Connectors

What is a State Store in Kafka Streams?

Kafka Streams: KStream vs. KTable Explained Simply

Kafka Streams vs. Kafka Consumer: Which Should You Use?

How Kafka Achieves High Throughput (Zero-Copy & Sequential I/O)

Key Consumer Configurations for High Throughput in Kafka

Key Producer Configurations for High Throughput in Kafka

What Happens When a Kafka Broker Goes Down?

Why min.insync.replicas is Crucial for Kafka Durability

How Apache Kafka Replication and Leader Election Work

Kafka Consumer Commits: commitSync vs. commitAsync

Kafka auto.offset.reset: Earliest vs. Latest Explained Simply

Understanding Kafka Consumer Rebalancing and How to Minimize It

What is Apache Kafka and Why is it Used?

The Core Components of Apache Kafka Explained

Apache Kafka vs. RabbitMQ: Understanding the Differences

Understanding Kafka Topics and Partitioning Mechanics

What is an Offset in Kafka and How is it Managed?

How to Choose the Right Number of Partitions in Kafka

Inside the Kafka Producer: Architecture and Internal Flow

Understanding Kafka Producer ACKs Settings and Trade-offs

What is an Idempotent Producer in Kafka?

How Kafka Consumers and Consumer Groups Work

Understanding Java Inner Classes: Member, Local, and Anonymous

Understanding Java Static Nested Classes and Nested Interfaces

Class Initialization Sequences in Java Inheritance

Mutating Map Keys and the HashSet Removal Gotcha

How Map Sorting Works with and without Java Streams

Sorted Sets (TreeSet) and Custom Comparator Gotchas in Java

LeetCode: Reversing a 32-bit Integer and Preventing Overflow

Sorting Lists Based on Element Occurrences in Java

Solving HackerRank's Min-Max Sum Challenge in Java

Solving HackerRank's Plus-Minus Ratio Challenge in Java

Finding Target Sum Pairs Using Complements HashSet in Java

Understanding Java Exception Propagation

How to Use throw, throws, and Custom Exceptions in Java

Java Multiple Catch Blocks and the Finally Execution Trap

Java Exception Rules in Method Overriding

Reading and Writing Files in Java: The Classic IO Way

Building a Custom Filter Reader: The Decorator Pattern in Java IO

Modern File Manipulation in Java: Introduction to NIO.2

Java 8 Streams Recipes for Common Programming Tasks

Deep Dive into Java 8 Method References

Understanding Generic Classes and Methods in Java

Demystifying Java Generics Wildcards and Bounded Types

Understanding Built-In Annotations in Java

How to Create and Read Custom Annotations in Java

Understanding the Basics of Java Enums

Mastering Advanced Java Enums: Fields and Constructors

Understanding String Equality in Java

Demystifying the equals() and hashCode() Contract in Java

Understanding Java Class Initialization Order and Blocks

Finding the Longest Consecutive Increasing Chain in Java

Summing Up to a Target Sum in Java

How ArrayList Works Under the Hood

Rotating Arrays in Java

Finding the Top K Elements

Maximizing Stock Profits

Detecting Loops in a Linked List

Reversing a Linked List

Understanding Balanced Parentheses

Flatmapping Min/Max & Diamond Inheritance

Flattening 2D Arrays in Java

Sorting by Multiple Fields

Understanding Anagram Grouping

Understanding Strings as HashMap Keys

Demystifying Java's equals() and hashCode() Contract

Demystifying Java's Synchronized Keyword

Printing Odd & Even Numbers using Two Threads

Understanding Java's Synchronized Deadlocks

Understanding Java Deadlocks

Demystifying Java's Builder Design Pattern

Demystifying String Permutations

Reversing Strings While Preserving Space Positions

Understanding Java's Wait and Notify

Understanding Java's Producer-Consumer Pattern

Demystifying Java's Thread Pool

Demystifying the Bridge and Torch Problem

Understanding Java's CompletableFuture

Demystifying Java's ForkJoinPool