Notifications

No notifications

/Phase 4

Practice Plan & Project Ideas

You've covered the language; now build muscle memory. This page is a curated grind-list — LeetCode + HackerRank problems organised by topic, plus four real-world project ideas (Spring Boot REST API, Android app, CLI tool, JavaFX GUI) that take you from "I know Java" to "I can ship Java."

On this page

Detailed Theory

# Practice Plan & Project Ideas

How to use this

  • Solve 2-3 problems a day for 4 weeks → you'll cover 60+ patterns.
  • Always implement first without Streams/Optional, then refactor with them. You'll really feel the difference.
  • For every solution, write the time + space complexity in a comment. This is what interviews actually ask.

Phase 1 — Fundamentals (warm-up, ~1 week)

Strings, arrays, simple loops, basic recursion.

  • Easy — Two Sum, Reverse String, Valid Palindrome, Best Time to Buy and Sell Stock, Contains Duplicate, Maximum Subarray (Kadane).
  • HackerRank Java domain — "Introduction" track end-to-end (15 problems).

Phase 2 — Collections + HashMap patterns (~1 week)

Frequency counts, two-pointer, sliding window, prefix sums.

  • Group Anagrams, Valid Anagram, Top K Frequent Elements, Longest Substring Without Repeating Characters, Longest Consecutive Sequence, Subarray Sum Equals K, Product of Array Except Self.

Phase 3 — OOP + Design (~1 week)

Build small systems with classes, interfaces, polymorphism.

  • LRU Cache, LFU Cache, Design HashMap, Design Tic-Tac-Toe, Design Twitter, Min Stack, Implement Queue using Stacks.

Phase 4 — Streams + Functional (~1 week)

Re-solve any 10 of the above using Stream API + Optional + records. Goal: zero for loops, zero null.

HackerRank Java tracks (excellent for muscle memory)

trackdifficultywhat it covers
IntroductionEasyprint, loops, conditionals, IO
StringsEasyStringBuilder, regex, manipulation
Data StructuresEasy-MedList, Map, Stack, Queue, BitSet
Object OrientedMedinheritance, abstract, interfaces
Exception HandlingEasy-Medtry/catch, custom exceptions
AdvancedMed-Hardreflection, generics, prepared statements
FunctionalMedlambdas, streams, method refs

> Link: https://www.hackerrank.com/domains/java

LeetCode Java starter list (top 30)

Arrays / Hash: Two Sum · Best Time to Buy and Sell Stock · Contains Duplicate · Product of Array Except Self · Maximum Subarray · Group Anagrams · Top K Frequent · Longest Consecutive Sequence

Two pointers / Sliding window: Valid Palindrome · Three Sum · Container With Most Water · Longest Substring Without Repeating Characters · Minimum Window Substring

Stack / Queue: Valid Parentheses · Min Stack · Daily Temperatures · Largest Rectangle in Histogram

Linked List: Reverse Linked List · Linked List Cycle · Merge Two Sorted Lists · Reorder List

Trees: Maximum Depth of Binary Tree · Same Tree · Invert Binary Tree · Binary Tree Level Order Traversal · Validate BST · Lowest Common Ancestor

DP starter: Climbing Stairs · House Robber · Coin Change

Project ideas — pick ONE and finish it

1. Spring Boot REST API + Postgres

Build a TODO / blog / bookshelf API with full CRUD, JWT auth, validation, pagination. Deploy to Render or Fly.io.

Stack: Spring Boot 3 · Spring Data JPA · Postgres · Flyway · MapStruct · JUnit 5 + Testcontainers.

Stretch: WebSocket notifications, OpenAPI docs (springdoc), Docker compose.

2. Android app (Kotlin or Java)

Pick something simple and shippable: habit tracker, expense splitter, exam timetable.

Stack: Android Studio · Jetpack Compose · Room (SQLite) · Retrofit · Hilt.

3. JavaFX desktop tool

A native desktop GUI — Markdown editor with live preview, JSON formatter, Pomodoro timer.

Stack: JavaFX 21 · FXML · CSS · Gluon Scene Builder.

4. CLI utility

A polished command-line tool — disk usage scanner, log file analyser, image batch resizer.

Stack: picocli (argument parsing) · jansi (colours) · GraalVM native-image (compile to a single executable, no JVM needed!).

What "done" looks like

  • ✅ Code on GitHub with a README that has install/run instructions and a screenshot/GIF.
  • ✅ At least 30% test coverage.
  • ✅ Continuous Integration set up (GitHub Actions: build + test on every push).
  • ✅ Deployed (web app) or downloadable (desktop/CLI/Android APK).
Ship it, then put it on your résumé and LinkedIn. That's it — you're a Java developer.