Pregunta de entrevista de Giffgaff

- why did Java introduce wrapper classes and what are they - can you pass primitives to collections - difference between instantiating new Integer(1) and Integer.valueOf(1) - is the string pool limited - what is the contract between equals() and hashCode() - what happens when hashCode() is overridden - is concatenating strings with "+" good practice - what is StringBuilder - what is StringBuffer - is StringBuilder thread safe - what happens when trying to append strings with StringBuilder through multiple threads - how can concurrency problems be solved - how to make an object immutable - what is a singleton and are they scoped - ever dealt with aop