Níveis de isolamento de transação no PostgreSQL
Pergunta
Explique os níveis de isolamento de transação do PostgreSQL e qual problema cada um resolve (dirty read, non-repeatable read, phantom read).
Resposta esperada
Read Uncommitted (não implementado de fato no Postgres, se comporta como Read Committed) permitiria dirty reads. Read Committed, o padrão, evita dirty reads mas permite non-repeatable reads e phantom reads. Repeatable Read evita dirty e non-repeatable reads, mas o Postgres também evita phantom reads nesse nível via MVCC (mais forte que o padrão SQL exige). Serializable garante que o resultado é equivalente a executar as transações uma de cada vez, ao custo de mais falhas de serialização que exigem retry.
Por que perguntam isso
Pergunta de nível sênior: testa se o candidato conhece MVCC além do nome. Uma resposta forte cita que o Postgres implementa Repeatable Read de forma mais rígida que o padrão SQL — detalhe que só quem já leu a documentação ou debugou um caso real sabe.