
Padrões de design em Rust
Builder pattern, newtype, RAII, typestate, padrões de tratamento de erros, padrões de mutabilidade interior
1Qual é a principal vantagem do pattern Builder em Rust em comparação com um construtor com muitos parâmetros?
Qual é a principal vantagem do pattern Builder em Rust em comparação com um construtor com muitos parâmetros?
Resposta
O Builder pattern permite uma construção de objetos legível e flexível encadeando métodos fluentes. Em Rust, ele evita erros relacionados à ordem dos parâmetros, permite valores padrão e torna o código autodocumentado. Diferente de um construtor com muitos argumentos posicionais, o Builder torna cada campo explícito através do nome do seu método.
2No pattern Newtype, qual problema resolve envolver um tipo primitivo em uma tuple struct?
No pattern Newtype, qual problema resolve envolver um tipo primitivo em uma tuple struct?
Resposta
O pattern Newtype cria um tipo distinto no nível do sistema de tipos, evitando confusões entre valores semanticamente diferentes mas do mesmo tipo subjacente. Por exemplo, UserId(u64) e ProductId(u64) são incompatíveis em compile time, evitando bugs onde um ID de produto seria passado onde um ID de usuário é esperado. Esse pattern tem custo zero em runtime graças à garantia de representação de memória idêntica.
3Como o pattern RAII garante a liberação de recursos em Rust?
Como o pattern RAII garante a liberação de recursos em Rust?
Resposta
RAII (Resource Acquisition Is Initialization) vincula o ciclo de vida de um recurso ao scope de uma variável. Em Rust, o trait Drop é chamado automaticamente quando um valor sai do scope, garantindo a liberação determinística de recursos sem garbage collector. Esse pattern é fundamental para arquivos, conexões de rede, locks e qualquer recurso que exija uma limpeza explícita.
Qual é o princípio do pattern Typestate para codificar os estados de um objeto no sistema de tipos?
Qual padrão de tratamento de erros é recomendado para propagar erros com contexto adicional?
+17 perguntas de entrevista
Outros temas de entrevista Rust
Fundamentos de Rust
Ownership & Borrowing
Structs & Enums
Tratamento de erros
Coleções
Módulos e Pacotes
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macros
Serde e serialização
Unsafe Rust
Traits avançados
Lifetimes Avançados
Type System
Tokio & Async I/O
Otimização de Desempenho
Memory Management
Web Frameworks
Database Integration
Domine Rust para sua proxima entrevista
Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.
Comece gratis