linguagem
Rust
Rust em entrevista é quase sempre sobre ownership: as regras de borrow (uma referência mutável XOR várias imutáveis), lifetimes, por que isso dá 'fearless concurrency' sem GC, e como `Result` e `Option` forçam tratar erro e ausência em vez de null e exceção.
Tópicos por senioridade
- Em breve
Desafios práticos
Cenários reais pra resolver em voz alta, como numa entrevista de verdade — não é múltipla escolha.
- Cenário: lutando com o borrow checker — `.clone()` é sempre a saída?
Você está começando em Rust e toda vez que o borrow checker reclama, você coloca um `.clone()` e passa. Por que isso é um cheiro, e o que fazer melhor?
Perguntas mais cobradas
ver todas →- Difícil
Ownership e as regras de borrow
Um dono por valor; liberado ao sair de escopo (sem GC). Borrow: N referências imutáveis XOR uma mutável, e nenhuma vive mais que o valor. Elimina data race e use-after-free em compile time.
- Médio
`Result` e `Option` no lugar de null e exceção
`Option<T>` (Some/None) substitui null; `Result<T,E>` (Ok/Err) devolve erro como valor. `?` extrai o Ok ou retorna cedo com o Err. `panic!` só pra irrecuperável.
- Difícil
Segurança de memória sem garbage collector
Liberação determinística no fim do escopo, inserida em compile time pelas regras de ownership. Sem thread de GC → sem pausas → latência previsível. Ciclos: Rc/Arc + Weak.
- Médio
`String` x `&str` (e `Vec<T>` x `&[T]`)
`String`: dona, heap, crescível. `&str`: fatia emprestada de texto que vive em outro lugar. Parâmetro de leitura → `&str` (aceita String, literal, sub-fatia sem alocar). Só receba `String` se precisa da posse.
- Difícil
Traits: dispatch estático (`impl Trait`) x dinâmico (`dyn Trait`)
Trait = comportamento compartilhado (o polimorfismo do Rust). Genérico/`impl Trait`: monomorfização, custo zero, tipo fixo em compile time. `dyn Trait`: vtable, custo pequeno em runtime, permite coleção heterogênea.
- Médio
Cenário: lutando com o borrow checker — `.clone()` é sempre a saída?
`.clone()` cego custa alocação e evita aprender o modelo. Prefira: emprestar (`&T` em parâmetros de leitura), reordenar pra empréstimos não se sobreporem, `Rc`/`Arc`/`Cow` pra compartilhamento real. Clone consciente às vezes é ok.