Pergunta de entrevista da empresa Foundation Source

Qual a diferença entre setImmediate, setTimeout e setInterval?