JAVA interview. Essential topics

This article is kind of a publication of my personal note. I started to collect this list of topics when was asked to help to interview a lot of guys for the Java Full-Stack Developer roles. Although, after that, I added a lot of new words when I was on the opposite side.

The keywords below actually are not ready-to-use questions but rather the tech interview plan that hopefully won’t let you forget to ask about some important things.

Java SE and JVM questions

  1. Concurrency: Sleep vs wait, volatile, ThreadLocal, Synchronized: in terms of block and method, thread-safe collections, Thread Pools, callable/runnable, process vs thread.
  2. Java Memory Model, CMS vs G1 GCs, weak references, object references life cycle in JVM: young and old generations, etc., class loading stages
  3. Memory leaks in Java: when and how happens, ways to prevent
  4. Final keyword: diff between usage for fields, methods, and classes. What exactly it restricts.
  5. The BigO for basic operations with data structures: binary search trees, r/b trees, hash tables, lists, etc. Diff between LinkedList and ArrayList, between HashMap and TreeMap. How and why the HashSet implementation uses the HashMap under the hood
  6. Lambdas. Functional interfaces: Supplier and Consumer
  7. Primitives vs wrapper classes: int vs Integer etc. What the proses and conses: space, usage, restrictions.
  8. Reflection: goals and benefits. Annotations: how to create; what the target and retention. How to process, AOP.

Around the Java

  1. Spring Framework: what the default scope of the bean, bean life-cycle, what is the IoC, existing types of DI, Spring vs Spring Boot, Spring MVC specific annotations, Spring Security. How to prevent popular vulnerabilities using it? Experience with other Spring modules?
  2. Hibernate: SessionFactory vs Session: scopes, time of living, cache levels and their goals, transaction management
  3. JProfiler: Use cases. Approach to figure out the performance bottlenecks on the production, memory leaks. VisualVM, JMX.
  4. TDD: principles, pros vs cons. Types of tests. JUnit functionality, Mockito

Other back-end questions

  1. SOLID, KISS, DRY what does really mean «the clean code». The composition or the inheritance.
  2. DBs: ACID, non-clustered vs clustered indexes, data structures are for indexes in RDBMSs, SQL vs PL/SQL, sharding. Why we need document-oriented or column-oriented DBs.
  3. Algorithms: Binary search logic, top-popular leetcode or hackerrank problems: adjust cells in the matrix, gas stations; single or dual linked list, dynamic programming principles, deep-first search vs breadth-first search, etc.
  4. Redis, Memcached: supplied data structures, clusters, etc. Cassandra vs Redis: pros and cons.
  5. Design patterns: builder vs factory method, the chain of responsibility vs command pattern, observer vs pub/sub, singleton vs prototype, etc.
  6. Distributed design: SOA, N-tier, event-driven vs message-driven, streaming, sharding. AMQP vs MQTT, Kafka vs RabbitMQ, load balancing logics: session stick, round-robin, etc., CQRS principles.
  7. HTTP(S): how it works to protect the transferring data, what the logic of OAuth(2) implementation. What the handshake process in terms of HTTP?
  8. Docker, K8s. What the goal of containerization, benefits, and restrictions.

Hope you enjoyed it! If you think some of these topics are useless to talk about at the interview or I forgot to mention something key-valued, let’s discuss. 😉

Deep enough in Java, a newbie with Kotlin and Swift, 8Y in software development from 14 in IT overall. Still believe I can improve the world