P
prepair.app
Começar entrevista →
EnglishУкраїнськаРусскийDeutsch
🔷

Senior C++Perguntas de entrevista C++

Senior · 5+ anos de experiência

As entrevistas de C++ avaliam três coisas: se você entende o modelo de objetos, se pode ser confiável no gerenciamento de memória, e se sabe o que a biblioteca padrão realmente custa. Aqui estão as perguntas mais frequentes, cada uma com uma resposta modelo. Senior: arquitetura, trade-offs, mentoria e tomada de decisão.

Experimente — sem necessidade de conta
Preparando sua pergunta…

Temas para se preparar

Memória, ponteiros e RAII
OOP, funções virtuais e vtable
Move semantics e a regra dos cinco
Templates e metaprogramação
Contêineres STL e complexidade
Concorrência e data races

5 perguntas de nível Senior com respostas

1

Como cache misses moldam a forma como você organiza os dados?

Resposta

Um miss para a memória principal custa da ordem de algumas centenas de ciclos, então uma estrutura teoricamente melhor pode perder feio para um array contíguo. Isso leva a organizar os dados de acordo com como serão percorridos — structure-of-arrays quando você acessa um campo através de muitos objetos, empacotar os campos quentes juntos, e evitar perseguir ponteiros no loop interno. False sharing é o mesmo problema invertido: duas threads escrevendo em variáveis diferentes na mesma linha de cache se serializam sobre ela, e a solução é padding até uma linha de cache.

2

Quando lock-free vale a pena, e qual a diferença para wait-free?

Resposta

Lock-free garante que alguma thread progride; wait-free garante que toda thread progride num número limitado de passos. Lock-free vale a pena sob contenção real numa estrutura pequena e bem entendida — uma fila, um contador — onde um mutex domina de forma mensurável. Não vale a pena por padrão: o código é difícil de escrever corretamente, difícil de testar, e um mutex bem usado é rápido no caso sem contenção, então a resposta honesta geralmente começa com uma medição.

3

Explique o memory ordering em `std::atomic`.

Resposta

seq_cst é o padrão e dá uma única ordem total entre todas as threads — correto, e o mais fácil de raciocinar. Os pares acquire/release estabelecem um happens-before entre o store que libera e o load que adquire, que é o que um lock faz internamente e é suficiente para a maioria dos padrões produtor-consumidor. relaxed só garante atomicidade, sem ordem, e é apropriado para coisas como um contador de estatísticas. Enfraquecer o ordering é uma otimização medida, não um ponto de partida.

4

Um projeto leva vinte minutos para compilar. Como você ataca isso?

Resposta

Meça primeiro — quais translation units e quais headers dominam. Depois corte o grafo de headers: forward declarations em vez de includes, PIMPL nas classes amplamente incluídas, e tirar os templates dos headers onde o custo de instanciação é real. Depois vêm as vitórias mecânicas — precompiled headers, ccache, paralelismo, unity builds, e um linker como lld ou mold. Módulos resolvem isso corretamente onde a toolchain está pronta para eles.

5

O código está mais lento do que deveria. Qual é o seu método?

Resposta

Comece com uma medição reproduzível, porque a intuição sobre performance em C++ erra com frequência suficiente para ser perigosa. Faça profiling para encontrar onde o tempo realmente vai, depois olhe o algoritmo antes das microotimizações. Verifique o que o otimizador fez em vez de assumir — o código gerado responde perguntas que ler o fonte não consegue. E controle o ambiente: flags de compilação, caches quentes, frequency scaling e ruído de outros processos, senão eles vão produzir números que não são reais.

🦎

Só ler as respostas não basta

Numa entrevista de verdade você fala sob pressão. O Cam faz essas mesmas perguntas, avalia cada resposta e mostra exatamente o que melhorar.

Praticar entrevista de Senior C++ →
Grátis · 3 entrevistas por mês

Outros níveis — C++

Junior C++Middle C++Todas as perguntas de C++

Outras especializações

🔍Senior QA Manual🤖Senior QA AutomationSenior Java Backend🐍Senior Python Backend🐘Senior PHP Backend🦫Senior Go Backend🟢Senior Node.js Backend💎Senior Ruby on Rails🟨Senior JavaScript⚛️Senior React Frontend