Before generics, a list could hold anything, and a wrong cast only failed at runtime. Generics like List<String> let the compiler catch type mistakes early and remove the need for casts. Use them whenever you write a container or utility method that should work for many types. Interviewers sometimes ask about type erasure and wildcards such as ? extends T, so know the basics.