Domanda di colloquio di Uber

Explain the Java Memory Model and how it relates to the volatile and synchronized keywords.