O que devo esperar de uma avaliação técnica para C ++? [fechadas]

10

Me pediram para fazer um teste / avaliação técnica para um trabalho como desenvolvedor júnior, principalmente usando C ++. Este é o meu primeiro teste / avaliação e dura 2 horas.

Meu C ++ está um pouco enferrujado, pois tenho feito projetos recentemente em PHP.

Esta é uma empresa do Reino Unido, no entanto, acho que os testes técnicos dos candidatos serão praticamente os mesmos em todos os lugares.

O que devo esperar de um desses testes?

pão de forma
fonte
11
Esta pergunta é para PHP, mas as respostas se aplicam: programmers.stackexchange.com/questions/73654/…
Eric Wilson

Respostas:

5

É C ++, então você pode esperar qualquer coisa, quero dizer REALMENTE qualquer coisa.

Geralmente, isso envolve perguntas complicadas e algum tipo de pergunta de polimorfismo.

Mas poderia ser algo simples também.

Esteja pronto para responder a uma pergunta sobre algo como "por que você tornaria um destruidor virtual", o que é "volátil", "projeta uma classe" para algum problema irrealista, "implementa uma lista vinculada", "inverte uma string" etc.

Codificador
fonte
Eu adicionaria "Para que é mutableusada a palavra - chave?" para a categoria qualquer coisa.
Tom
5

Se esse é um teste C ++ puro (ou seja, não é um teste Windows / MFC / C ++ gerenciado), passe algumas horas ou um dia com o Effective C ++ de Scott Meyer e você deve se sair muito bem. Ele não abrange modelos e o STL, mas se eles estivessem interessados ​​nisso, provavelmente não estariam fazendo um teste de duas horas. Já faz alguns anos, mas eu costumava entrevistar desenvolvedores de C ++ frequentemente. Embora as idéias no Effective C ++ sejam fundamentais para a programação em C ++, apenas cerca de dez por cento dos candidatos as conheciam.

Kevin Cline
fonte
11
+1 para recomendação de livros - e pule o livro C ++ mais eficaz de Scott Meyer. Quando eu costumava entrevistar programadores, eu também olhava para a honestidade intelectual (você tenta blefar ou admite que não sabe), sabe o que não sabe e sabe onde encontrar uma resposta. (Se entrevistar alguém que afirma ter trabalhado em C ++, as perguntas serão muito mais difíceis). Se não houvesse nada sugerindo habilidades de programação em outras línguas em seu currículo, eu também pediria que você escrevesse um programa simples e verifique se você cobriu os casos de canto corretamente.
MZB
Sou formado em computação, fui ensinado a fazer programas no console em C ++, fui ensinado a implementar árvores de classificação binária e listas duplamente vinculadas etc. como implementá-los. O cargo é para um graduado, então não sei o que eles esperam de mim, porque não tenho uma experiência real de vida profissional em C ++.
bearbread
4

Bem, depende de saber se eles vão deixar você usar o google. : P

Eu geralmente me saio muito bem em testes técnicos, desde que eu possa usar as ferramentas ao meu redor. Quando eles querem que eu codifique as cegas é quando eu tiver problemas. Portanto, o melhor conselho que posso dar é o código cego em casa ... Lembre-se de coisas triviais que tomamos como garantidas, porque podemos verificá-las facilmente se não lembrarmos.

Além disso, geralmente verifique as habilidades específicas de que precisam, portanto, se você souber no que estará trabalhando, concentre-se nisso.

(Isso é, na minha experiência geral, eu não sou do Reino Unido)

AJC
fonte
E a teoria, polimorfismo, herança. Eu só sei que a teoria de que a partir de apenas a graduação, mas eu não sei como implementá-lo em C ++
bearbread
A implementação deles não é tão difícil, você provavelmente pode revisá-los muito rapidamente. A parte importante é saber quando é apropriado usá-los, quando você vai precisar. Eles são mais um padrão funcional do que um pré-requisito real. O que quero dizer é que você pode fugir sem usá-los, mas seria esperado que você os conhecesse, se necessário.
AJC 02/02
@ bearbread: a teoria em si não vale muito. leia sobre padrões de design e tente implementá-los.
Karoly Horvath
Eu sei padrões de design como MVC para PHP, é isso que você quer dizer?
bearbread
1

Prática de kata de código Escolha um algoritmo simples (buffer de anel, torre de Hanói, pesquisa binária, qualquer que seja) e codifique-o do zero. Em seguida, faça-o novamente na próxima vez, e na próxima vez, e na próxima vez, e na próxima vez, e assim por diante. Veja como você pode aprimorá-los a cada iteração.

Sardathrion - contra o abuso de SE
fonte
11
+1. Faça isso também com um amigo um pouco mais experiente. Se revezam para programar, vocês dois aprenderão algo novo.
Tom
0

É verdade que você pode esperar qualquer coisa.

Eles disseram que o teste era C ++, mas talvez seja realmente o subconjunto C do C ++ que eles usam em seus testes (você usará matrizes de char em vez de cadeias de caracteres de biblioteca padrão). Isso será difícil de saber.

Se for realmente C ++, aconselho você a ver o básico:

  • Classes, variáveis, matrizes
  • referências, ponteiros (e por que você não os deve usar por padrão)
  • o uso da palavra-chave const
  • Conceitos de objetos orientados (herança, polimorfismo ...)
  • Modelos

então:

  • Usos padrão da biblioteca (std :: string, std :: vector, containers, ...)
Nikko
fonte
0

O que foi publicado tem sido ótimo até agora, mas vou acrescentar algo e uma história! Eu diria praticar aplicando o que você sabe em C ++ a problemas no domínio da empresa de software. É ótimo se você conhece todos os detalhes do C ++, mas se você não pode aplicar a um problema, é inútil para a empresa. Como essa é uma posição de desenvolvedor júnior, eu não acho que eles esperariam que você soubesse tudo sobre C ++.

Fiz meu primeiro teste técnico para meu primeiro trabalho de desenvolvedor na semana passada e fiquei surpreso com o que encontrei. Eu estava esperando algo como o FizzBuzz ou algo mais básico (isso era para Java, aliás), mas o que eu achei foi que eles me deram um arquivo e me fizeram analisá-lo em um novo formato, que é a parte do trabalho. Além disso, eles me deixaram usar o Google e suas próprias bibliotecas. Resumindo, você precisa conhecer C ++, mas se quiser saber como será o teste, dê uma olhada no domínio da posição para a qual está se candidatando e trabalhe na implementação de C ++ para algo nesse domínio.

Jetti
fonte
Eu acho que <1% dos programadores de C ++ conhecem tudo da linguagem :) Basta considerar todos os casos de comportamento indefinido / não especificado / definido por implementação como um exemplo.
0

Você está:

  1. Escrevendo código
  2. tomando múltipla escolha
  3. Entrevista presencial

Ao escrever código

Eles esperam que você saiba (e use):

  • RAII
  • A regra dos três
  • Entenda os ponteiros inteligentes

Eles provavelmente testarão você em:

  • Herança
  • Funções virtuais
  • Serialização para / de um fluxo
  • sobrecarregar os operadores aritméticos (geralmente não usados ​​na vida real, mas fáceis de fazer um teste).

Se você tiver azar, eles podem pensar

  • Herança múltipla e classes base virtuais é algo que você deve saber.
    • Não é, mas algumas pessoas ficam loucas.

Ao fazer múltipla escolha

  • Compreender toda a terminologia OO
  • Conheça as maneiras C ++ de implementar o OO

Entrevista Pessoal

  • Todos acima.
  • Conhecimento de recursão
  • Como converter recursão em um loop
  • Como estimar a complexidade do Big O ()
  • Os algoritmos de classificação padrão (não apenas bolhas).
Martin York
fonte
11
Sou programador C em vez de C ++, por isso não conheço a conversa ... mas nunca ouvi falar da RIAA e da regra de três. No entanto, ouvi falar do RAII (a aquisição de recursos é a inicialização, ou seja, seu destruidor deve limpar sua própria bagunça) e sei que se o seu código precisar de um ctr de cópia, operador de atribuição de sobrecarga ou destruidor, ele precisará dos três. Parece-me que uma entrevista que é uma trivialidade brega na gíria de programação, em vez de um teste de suas habilidades, diz algo ruim sobre a empresa.
11
E igualmente, se eles perguntarem sobre herança múltipla e recursão, eu assumiria que a base de código deles é uma grande bagunça. Se eles esperam que você conheça todos os algoritmos comuns de classificação do nada, como desenrolar a recursão, serialização de objetos etc., também diz algo ruim sobre a empresa. Eles não esperam que seus desenvolvedores sejam robôs? No mundo real, você procura essas coisas antes de usá-las. Mesmo que eu conheça a teoria por trás de todas essas coisas, eu ainda as procuraria, apenas para ter certeza de usar a solução ideal em vez de algo assim - então eu vim comigo mesma.
@Lundin: Você não precisa conhecer os nomes sedosos, mas precisa conhecer os princípios, ao mencioná-los aqui, fica fácil procurar. Você precisa conhecer os algoritmos de classificação porque precisa saber qual usar e quando (e mais importante por que) (coisas que os robôs não podem fazer, mas os seres humanos fazem muito bem).
Martin York
Não há nada inerentemente errado com recursão ou herança múltipla. O problema é que os desenvolvedores estão usando demais (e fazendo incorretamente). Alguns problemas só podem ser resolvidos (facilmente) usando a recursão (analisando primeiro a profundidade da estrutura da árvore).
Martin York
@Lundin: Veja devblog.seomoz.org/2011/10/679
Martin York
-1

Eu cheguei na minha última entrevista:

Diferença entre passar um objeto para uma função por valor / referência / ponteiro e onde e por que você faria isso.

Troque os 2 últimos 8 bits de um número inteiro, por exemplo, RGBA para RGAB.

O que é RIAA?

Defina a meta-programação de modelos: você pode fazer uma pergunta em termos de "resolver este problema com o TMP .."

O que é mutável, volátil, const etc etc etc significa? conhece todas as palavras-chave.

herança múltipla .... novamente e novamente.

Multiencadeamento: consumidor do produtor e objetos de memória compartilhada em buffer.

Mais algumas questões de periferia:

Agregação e composição UML

Padrões de design: implemente um singleton ... Quais são os componentes comuns do MVC?

Pepe
fonte