A entrevista técnica de 10 minutos [fechada]

37

Eu preciso fazer uma rápida avaliação de dezenas de novos alunos muito rapidamente. Tenho 30 minutos de reunião com cada um deles (em dois ou três dias). Eu quero usar a maior parte do tempo para discutir aspectos não técnicos. Então eu pretendo usar 10 minutos para questões técnicas. As mesmas perguntas para todos eles.

Eles já são contratados (são estudantes), o que eu preciso saber é o nível médio para preparar um treinamento.

Idealmente, a dificuldade must be progressive para definir um nível para cada. O nível I será médio, e farei uma média em cada questão também.

Se você tivesse apenas 10 minutos e 10 perguntas para fazer a um candidato, qual seria o seu top 10?

    
por user2567 04.11.2010 / 12:16
fonte

19 respostas

55

Três perguntas, elaboradas no final da resposta de Eric Lippert aqui :

Pergunta 1:

On a scale of 1 - 10, where do you rate yourself in (name the skill here)? They answer [n], a number between 1 and 10.

Pergunta 2:

What could you learn from someone at level [n+1] ?

Pergunta 3:

What could someone at level [n-1] learn from you?

O fator mais importante em sua decisão é determinar onde um aluno (realisticamente) se coloca , e essas três perguntas ajudarão você a determinar isso rapidamente. Também ajuda a identificar pessoas que possam estar comprometidas pelo efeito Dunning-Kruger (em cada extremidade) , mas isso é outro assunto.

Se alguém puder encontrar a referência a esse método no SO e editar essa postagem para incluir um link, eu realmente aprecio isso.

De qualquer forma, isso deve cair bem abaixo dos dez minutos.

    
por 12.04.2017 / 09:31
fonte
28
  1. O que é uma aula?
  2. O que é um método estático?
  3. O que é herança?
  4. O que é polimorfismo?
  5. O que é uma chave primária?
  6. O que é uma chave estrangeira?
  7. Qual é a diferença entre HTTP GET e HTTP POST?
  8. O que é um serviço da web?
  9. Nomeie algumas estruturas de dados.
  10. Qual é o propósito de um Mapeador Objeto / Relacional?

Sinta-se à vontade para sugerir substituições. Essa lista tem muito espaço para melhorias.

    
por 04.11.2010 / 20:31
fonte
20
  1. Explique os ponteiros!
  2. O que são closures?
  3. Que idiomas você usa no seu tempo livre e por quê?
  4. Fale um pouco sobre transações!
  5. Qual é a diferença entre um intérprete e um JIT?
  6. Explique o básico de um compilador.
  7. O que acontece no nível da memória quando você faz recursão (e o que é diferente quando você tem TCO)
  8. Quais são os conceitos importantes da programação OO (e por que eles são importantes)?
  9. Que novidades você está procurando em casa e por que é interessante?
  10. Explique a diferença entre um processo e um encadeamento.
por 04.11.2010 / 14:39
fonte
16

Minha experiência com os alunos eu começaria do zero - descobri o que as pessoas aprendem na universidade e o que é útil são dois conjuntos bem separados.

Mas como você tem a chance de falar com eles, seria bobagem não aceitar isso.

Minha suposição é que há pouca semelhança em seu histórico, então estou evitando perguntas específicas do idioma. A única exceção que fiz a isso é uma suposição de que eles fizeram algo na Web, mas essa questão poderia ser substituída por algo equivalente se fossem especialistas incorporados ou o que quer que seja.

Você pediu para que eles fossem progressivos, o que eu meio que tentei fazer, mas se minha suposição sobre nenhuma semelhança é correta, perguntas certas / erradas são relativamente complicadas e muito da sua competência virá de quão boas são suas respostas. para questões mais gerais são.

De qualquer forma ...

1) Quais idiomas e tecnologias você foi exposto? Quantos destes (e quais) você gastou mais de 50 horas realmente programando (isso não inclui palestras, tempo de laboratório e assim por diante, mas incluindo projetos e tarefas onde você estava codificando sozinho).

2) Descreva o programa mais complexo que você já escreveu. O que tornou complexo?

3) O que você ensinou na universidade (relacionado à programação) que você realmente não acha que entende direito? Se você acha que entendeu tudo (confira suas notas neste ponto), fale sobre um aplicativo ou um elemento de um aplicativo que você viu que não saberia como codificar e como você poderia começar a pensar nisso. / p>

4) Quais são os princípios básicos da Programação Orientada a Objetos?

5) Fale-me tanto sobre bancos de dados relacionais quanto possível em 1 minuto

6) Para uma aplicação web, descreva um método para manter informações sobre o usuário entre as páginas. Quais vantagens e desvantagens existem para o mecanismo que você descreveu.

7) Escolha uma parte da funcionalidade comumente usada na computação e explique brevemente como ela funciona em um nível programático (por exemplo, criptografia, compactação). Explique também como você tinha que usar essa funcionalidade para implementá-la (aqui eu estaria procurando o fato de que, embora você possa saber como algo funciona, provavelmente é melhor usar uma biblioteca para isso).

EDIT: Reestruturou e adicionou algumas perguntas extras para torná-lo mais progressivo, como solicitado originalmente.

    
por 05.11.2010 / 10:40
fonte
8

Se eles são estudantes e você está querendo saber onde eles estão em seus estudos, não deve haver perguntas ou perguntas que os façam pensar seriamente. Meu conselho seria apenas focar no básico - não há muito sentido em pedir que eles expliquem como a reflexão funciona se eles ainda não estiverem totalmente atualizados sobre objetos e herança.

Aqui estão alguns exemplos de perguntas que poderiam ser usadas e talvez você poderia começar com algo da categoria de conhecimento central e depois se movimentar com base em como elas respondem às perguntas, como testes adaptativos funcionam.

Fundamentos

  1. Quais são alguns dos comandos básicos de controle de fluxo do programa?
  2. Quais são algumas operações lógicas básicas?
  3. Qual é a diferença entre loops while e for?

Core

  1. Explique brevemente a programação orientada a objetos.
  2. Explique brevemente o conceito de herança.
  3. Explique brevemente como funcionam os bancos de dados.
  4. Qual é a palavra-chave enum usada e quando você a usaria?

Avançado

  1. O que você pode me dizer sobre genéricos C # ou modelos C ++?
  2. O que você pode me dizer sobre sobrecarga de operadores?
  3. Qual é a diferença entre uma classe e uma estrutura?
  4. O que você pode me dizer sobre o reflexo no .NET?
por 04.11.2010 / 15:06
fonte
6

Sem uma resposta ao meu comentário acima, essas são coisas que vêm à mente de maneira geral, mas não tenho certeza se consideraria essas técnicas.

  • Que tipo de controle de versão você usou?
  • Você conhece metodologias de desenvolvimento de software, como agile, waterfall, tdd?
  • Qual é o objetivo da documentação no software?
  • Diferença entre idiomas tipificados estaticamente e dinamicamente?
por 04.11.2010 / 12:29
fonte
4

Eu percebo que você está tentando construir o treinamento com base no que eles não sabem, e que você planeja ter vários "baldes" de treinamento para diferentes grupos de alunos. Como você tem apenas dez minutos, por que não fazer uma lista de coisas que você está pensando em incluir no treinamento e fazer essas perguntas específicas. Então você planeja ensiná-los C #. Pergunte se eles sabem bem. Pergunte se eles usaram algum recurso mais recente (LINQ, tipos anuláveis, genéricos, ...). Se houver conteúdo de banco de dados em seu treinamento, faça algumas perguntas sobre isso. No final, você pode ver que um dos tópicos que você planejou é desnecessário, porque todos sabem disso, e alguns outros tópicos são necessários para todos, e assim por diante. Isso é mais prático do que tentar levantar questões que não estão relacionadas com o que você é capaz de treiná-las (tempo de troca de contexto no linux?) Ou não relacionadas ao trabalho que você pretende que elas façam depois de treinadas. .

    
por 04.11.2010 / 14:53
fonte
4

Pergunte a eles a FizzBuzz pergunta

Eles sabiam como codificá-lo? Qual idioma eles usaram? Por que eles codificaram da maneira que fizeram? Eles usaram Recursão? Rotações? Outros métodos / funções? Ponteiros?

Você também pode usar a pergunta como base para outras perguntas (por exemplo, por que você usou Recursion? Como você escreveria isso usando ponteiros?)

Não abrange tudo, mas pode dar uma ideia das suas habilidades de codificação

    
por 23.05.2017 / 14:40
fonte
4

Dez perguntas:

  1. Mostre um loop for que some os valores de uma matriz. Pergunte então o que o pedaço de código faz. [Eles podem ler um loop básico?]

  2. Peça-lhes para escrever um loop for que imprima os números de 1 a 10, separados por vírgulas. [Além de "eles podem fazer isso?" você pode julgar quão repetitivo é o seu código.]

  3. Mostre um trecho de código com duas referências, a e b , apontando para dois objetos diferentes com um campo inteiro x definido como, digamos, 7 e 5 . Em seguida, reatribuir: a = b; , b.z = 9; e, em seguida, peça o valor de a.z . [Eles entendem referências?]

  4. Mostre dois loops for aninhados (usando os índices i e j ), acumulando valores de alguma expressão. No loop mais interno, tenha dois cálculos: double x = Math.pow(2.0, i) e double y = x * j . Peça-lhes para tornar o código mais eficiente. [Eles sabem sobre dependência de loop simples?]

  5. Pergunte o que está errado no exemplo de código A. (Veja abaixo.) [Eles podem pensar logicamente?]

  6. Pergunte a eles o que há de errado no código de amostra B. (Veja abaixo.) [Também sobre raciocínio lógico.]

  7. Peça-lhes para inverter esta condição: (s != null && s.Length != 0) sem usar ! . [Eles conhecem a Lei de DeMorgan?]

  8. Mostre um pedaço de código semelhante aos anúncios antigos do Lint em revistas: peça para eles encontrarem o bug. Por exemplo, sobrecarregando equals em vez de substituí-lo. [Eles são bons advogados de idiomas? Esse tipo de pergunta testa principalmente a experiência: você já viu isso antes?]

  9. Eles podem descrever como realizar uma pesquisa binária por meio de uma matriz ordenada?

  10. Eles podem descrever como um método de classificação pode ser implementado?

Estes podem parecer "muito curtos", mas acredito que, ao avaliar os alunos, você pode achar que os dez minutos são bem curtos. Você realmente quer vê-los fazer alguma codificação. (Parece que você vai fazer o FizzBuzz, baseado em um comentário.)

Se você pode assumir um aluno mais strong, então você também vai querer perguntar alguns dos clássicos, como recursão, invertendo uma lista vinculada, e talvez um curinga avançado, como explicar uma lista XOR, ou quais intuições eles pode ter por que classificar um conjunto de números facilita a compactação do que não classificado.

Exemplo de código A:

if (m != null)
    a = m;
else
    a = null;

Exemplo de código B:

if (x != 0 || x != 1) {
    ...
}
    
por 22.11.2010 / 00:22
fonte
3

Certamente você está fazendo isso da maneira errada. Identifique os agrupamentos nos quais você deseja colocar cada aluno em

por exemplo,

No previous programming experience
Familiar with procedural constructs like variables, loops, branching
familiar with basic object orientated constructs like classes, interfaces, events, inheritance
familiar with using Generics/Templates
familiar with creating Generics/Templates

e assim por diante. Quando você identificar os agrupamentos adequados que dependerão do material do curso, elaborar as perguntas a serem feitas será trivial.

    
por 22.11.2010 / 00:19
fonte
3

Os alunos já estão contratados e você quer montar um programa de treinamento, então parte do negócio é descobrir o quão rápido eles podem aprender (e / ou o que eles sabem: quem se importa com o quê?). Por que não escolher algumas perguntas fáceis, médias e difíceis e dar-lhes de antemão. Por que emboscá-los com perguntas que talvez não saibam, se eles podem ser facilmente aprendidos (por alguns)?

Você verá, ao contrário do que a maioria das pessoas imagina, que muitos dos alunos não se sairão bem mesmo com as perguntas em mãos. Dessa forma, você aprenderá sobre seus alunos, suas conhecimento e sua capacidade de aprender.

    
por 22.11.2010 / 01:36
fonte
2

Crie 5 construções de fluxograma simples e uma lista separada de respostas. Peça-lhes para combinar a imagem com a frase.

Desenhe o seguinte:

  1. se construir
  2. Se Else Construct
  3. Do While Loop
  4. Do loop até
  5. Construção de instrução de caso

Peça-lhes para explicar a diferença entre 1 e 2.
Peça-lhes para explicar a diferença entre 3 e 4. Peça a eles um exemplo de quando uma construção de declaração de caso seria aplicável.

    
por 06.11.2010 / 23:20
fonte
1

Não tenho certeza de que seria possível fazer isso em 10 perguntas em 10 minutos. Talvez dê 5 minutos para dizer o que eles sabem sobre. Então, prepare uma lista de talvez 20 tópicos e escolha 2 ou 3 de coisas que eles mencionaram e 2 ou 3 de coisas que eles não têm.

Por exemplo, você pode começar:

Tell me briefly (you have 5 minutes) how you would produce a simple C# project in Visual Studio from creating it to running it.

Depois disso:

OK, tell me a little more on the following. It's going to be quick-fire, 1 minute per answer, so don't try to be too detailed I just want a feel for what you're familiar with.

Em seguida, faça 5 perguntas do seguinte:

  • Explique o que é uma aula.
  • Qual é a diferença entre uma classe abstrata e uma interface?
  • Explique resumidamente como coleta de lixo funciona em .Net

    ....

  • Como você depura algo se você ter um problema?

  • Yadda-yadda - Tenho certeza que você poderá escolher uma longa lista para escolher dentre as outras respostas
por 04.11.2010 / 15:02
fonte
1

Eu acredito em "auto-avaliação"! Se você explicar para a pessoa a situação exata, ele se encontrará, por exemplo: "você terá que codificar SQL ... com banco de dados de mais de 100 tabelas e 500K + registros, que devem rodar em 4 segundos ...". E se você perguntar a ele: "Você acha que pode fazer isso?" - você receberá uma resposta correta.

Vou passar 5 perguntas sobre as expectativas dos alunos e mais 5 técnicas:

  1. O que você espera deste treinamento?
  2. Qual é o seu nível (isso deve ser específico do domínio)?
  3. O que você deseja ver / aprender durante este treinamento (indique 3 pontos mais importantes)?
  4. Se fizermos exercícios, o que você considera mais útil para você? (oficina, múltipla escolha)?
  5. O que você espera do professor?

Do que você pode ir com algumas questões técnicas como (isso deve estar de acordo com o tópico). para OOP por exemplo:

  1. O que é o encapsulamento?
  2. O que é interface?
  3. Polimorfismo?
  4. Sub-digitação?
  5. Ligação dinâmica?
por 20.11.2010 / 14:51
fonte
1

Estou à procura de solução de problemas, um strong hábito de aprendizagem, desenvolvimento profissional e amplo conhecimento de abordagens.

  1. Posso ver seu portfólio?
  2. Quais são os três últimos livros técnicos que você leu? Por quê?
  3. Qual texto de programação mudou a maneira como você mais pensa? Por quê?
  4. Como você definiria um chicken como um objeto? Como isso se relaciona com outros birds ? Que tal mammals e animals ?
  5. Você pode explicar qualquer um (REST, polimorfismo, álgebra relacional, design de parser, MVC) em termos leigos?
  6. Qual é o software mais interessante (ou melhor) que você criou?
  7. Você pode descrever os idiomas em que você é proficiente de favorito a menos favorito? O que te deixa frustrado com seus idiomas menos favoritos?

Espero que os desenvolvedores:

  • Seja engenhoso e rápido
  • Segure conceitos básicos corretamente
  • Aprenda a desenvolver conceitos avançados
  • Acompanhe o sucesso e o fracasso (aprendendo com isso)
  • Aprenda constantemente, cuidadosamente
  • Comunicar questões complexas simplesmente
  • Mostrar equilíbrio e lógica ao discutir problemas geralmente dogmáticos
por 21.11.2010 / 23:16
fonte
1

A taxonomia de Bloom é útil aqui. Você quer atingir vários níveis de conhecimento, desde a memorização mecânica até a analítica. Isso lhe dá a chance de descobrir onde está seu nível de habilidade. Uma vez que o OP estava procurando por perguntas para os alunos, a lista abaixo não supõe mais conhecimento do que um aluno de 3o ou 4o ano teria (eu espero) possuir.

Conceitual

  1. O que é um estouro de pilha?
  2. Qual é a diferença entre um objeto e uma classe?
  3. Qual é a diferença entre uma função e um método?
  4. Identifique alguns dos pontos strongs e fracos do Quicksort e do Insertion Sort.
  5. Descreva como um programa que você escreveu exibiria todos os valores armazenados em uma árvore binária.

Prático

  1. Você usou um sistema de controle de versão? De que maneiras permite que os membros da equipe colaborem mais efetivamente?
  2. Seu compilador diz "símbolo não identificado". O que isso significa?
  3. O que é uma "violação de segmentação"?
  4. Nomeie algumas estruturas de dados fornecidas pela sintaxe (inserir idioma aqui) ou biblioteca padrão.
  5. Como você encontraria e exibiria todos os endereços de e-mail em 10.000 arquivos?
por 22.11.2010 / 00:58
fonte
1

Já que eles já estão contratados, para uma avaliação rápida eu acho que se deve (junto com questões de programação), deve-se perguntar sobre

  1. Qual é a configuração do sistema em que você trabalhou (configuração de hardware do PC).
  2. Você tentou testar seu código (projeto se trabalhou durante a faculdade) em um sistema operacional diferente.
  3. Você prefere codificar no Windows ou no Linux (se eles trabalharam em outras janelas do SO)
  4. codificação é mais rápida / lenta / melhor depende de sistemas? (sistemas superiores = sentir-se bom fator para codificar como sistemas lentos levam para compilar e todos)
  5. Além disso, pergunte se eles sabem, pelo menos, formatar uma unidade ou instalar o sistema operacional caso ele falhe / não consiga iniciar instintivamente contando com a equipe de TI para obter ajuda (isso é para saber se eles podem lidar com alguma situação do sistema operacional corretamente)

Estas perguntas são apenas para descobrir a sua consciência sobre o sistema que usam durante a programação,

    
por 21.12.2011 / 20:02
fonte
0

Comece nos níveis mais baixos da pilha de software.

  1. O que é BIOS?
  2. Qual é o papel do sistema operacional?
  3. O que é multitarefa? O que é link dinâmico?
  4. Descreva como o código-fonte é transformado em um programa funcional para o idioma de escolha do aluno (exemplo de resposta para o pré-processador C: - > compilador - > vários arquivos objeto - > linker - > executável)
  5. O que é um cache? Estime os tempos de acesso relativo ao cache L1, cache L2, RAM, disco rotacional (ou seja, não SSD).
  6. Enumere as estruturas de dados que você pode implementar sem consultar detalhes na literatura.
  7. Qual é o programa mais complexo que você escreveu? O que tornou complexo?
  8. Explique a recursão em um exemplo de escolha própria.
  9. Por que os programas falham?
  10. Explique o que é uma seção crítica e dê um exemplo de onde ela seria usada.
por 20.11.2010 / 10:01
fonte
0
  1. Uma string é mutável ou imutável?
  2. Qual é a diferença entre uma classe e uma classe estática?
  3. O que é um ponteiro?
  4. Descreva a complexidade.
  5. Qual é a diferença entre uma matriz e uma lista vinculada?
  6. Qual é a diferença entre o Merge Sort e o Quick Sort?
  7. Dada uma planilha com colunas Nome, Endereço, CEP e Número de telefone descrevem como você converteria a planilha para um banco de dados normalizado.
  8. Descreva as diferenças entre os métodos assíncrono e síncrono e as maneiras pelas quais eles precisam ser manipulados.
  9. Como você passaria informações de um aplicativo do lado do servidor para um aplicativo da Web?
  10. Qual é o seu idioma preferido? Quais são alguns dos motivos pelos quais você usaria esse idioma em relação ao X? (por exemplo, por que você desejaria usar o Java em C # e quais são algumas das diferenças fundamentais?)
por 22.11.2010 / 16:27
fonte

Tags