Very strong knowledge of core Java: class loading, garbage collection, Java collections API, Reflections API, Java 8 Streams and Functional Programming. Strong knowledge of software design principles: MVC, data structures, graph data, algorithms, design patterns, multithreading, caching, recursion.