Pergunta de entrevista da empresa Uber

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