Pregunta de entrevista de Ocado Group

Multithreading: What is a deadlock? How do you avoid synchronisation problems among threads? How do you avoid deadlocks?