22 questions · Senior Developer

Senior Java Developer Interview Questions

A hiring manager's question bank for experienced Java engineers — concurrency, the JVM, memory, Spring, and system design. Use these to separate candidates who have read about Java from those who have run it in production.

Hiring a senior Java developer is less about checking whether someone knows the syntax and more about whether they understand what happens beneath it — how the JVM manages memory, how threads actually contend for resources, and how design choices play out under load. At five-plus years, strong candidates can explain not just what a tool does but when it bites you. The questions below are organized by theme so you can probe depth where it matters for your stack. They are written for working interviews: open enough to start a conversation, specific enough that a candidate who has only memorized definitions will run out of road quickly. Pair a few core-language questions with one concurrency scenario and one system-design discussion, and you will get a reliable read on seniority in under an hour. For each question, look for candidates who reason about trade-offs out loud, reference real incidents they have debugged, and can say "it depends" and then explain on what.

How to use these questions

Pick 6-8 questions across two or three categories rather than racing through all of them. Start with a warm-up from Core Language, move into one Concurrency scenario, then a System Design discussion. Treat each as a prompt for a two-way conversation — follow "what" answers with "why" and "when would that break?" The best signal comes from how a candidate reasons under a follow-up they did not rehearse.

Core Language & JVM

  1. Walk me through what happens in memory when a Java object is created and later becomes eligible for garbage collection.
  2. Explain the difference between the stack and the heap, and where local variables, objects, and static fields live.
  3. How do generational garbage collectors work, and when would you tune the young vs. old generation?
  4. What is the difference between == and .equals(), and why must you override hashCode() when you override equals()?
  5. When would you choose an ArrayList over a LinkedList, and what are the real performance implications?
  6. Explain checked vs. unchecked exceptions and your philosophy on when to use each.
  7. What does the volatile keyword guarantee, and what does it not guarantee?

Concurrency & Multithreading

  1. Describe a race condition you have personally debugged and how you fixed it.
  2. When would you use a ConcurrentHashMap over a synchronized HashMap, and how does it achieve better throughput?
  3. Explain the difference between synchronized, ReentrantLock, and an Atomic class — when does each fit?
  4. What problem does the ExecutorService solve over manually creating threads?
  5. How would you diagnose a deadlock in a running production service?
  6. What is the Java Memory Model, and why does it matter for visibility between threads?

Frameworks & Ecosystem

  1. How does Spring dependency injection work under the hood, and what is the difference between singleton and prototype scope?
  2. Explain the N+1 query problem in JPA/Hibernate and how you would detect and fix it.
  3. When would you reach for reactive (WebFlux) over a traditional servlet stack, and what is the cost?
  4. How do you structure a Spring Boot application so it stays testable as it grows?

System Design & Judgement

  1. Design a rate limiter for an API. Walk me through your data structures and failure modes.
  2. How would you make a slow Java service faster — what do you measure first?
  3. Tell me about a time you disagreed with an architectural decision. What did you do?
  4. How do you decide what to unit test vs. integration test in a Java service?
  5. A junior engineer opens a PR with a subtle thread-safety bug. How do you handle the review?

Tips for interviewing Java candidates

  • Favor scenario questions ("describe a time you...") over trivia — senior signal comes from lived experience, not definitions.
  • Let them think out loud on the rate-limiter question; the reasoning matters more than the "right" answer.
  • If a candidate says "it depends," reward it — then ask what it depends on.
  • Probe one topic deeply rather than ten shallowly; depth exposes seniority faster.
  • Watch for candidates who blame past teams for everything — strong seniors own their part of failures.

Frequently asked questions

Hiring Java developers? JuggleHire ranks, screens, and schedules candidates for you.

JuggleHire goes beyond simple job posting. Leverage custom forms, powerful screening filters, and automated social media previews to find the perfect fit for your team.