1. Pre-modular vs module-aware class loaders
    1. String pool vs Constant pool vs Symbol pool
    1. How StringBuffer differs from String
    1. The concatenation (pooling) problem with String
    1. Why Java doesn't support multiple inheritance
    1. No virtual keyword in Java, and how it stays efficient
    1. Commonly used annotations and why they exist
    1. What are concrete classes in Java?
    1. What is an abstract class, and when does a class become abstract?
    1. When and where to use final, and what it does
    1. How constructor chaining is done in Java
    1. Accessing the parent class's methods and constructor with super
    1. Sealed, non-sealed and final classes
    1. Overriding toString(), and why we avoid console I/O inside class methods