Devo fazer uma avaliação rápida de dezenas de novos alunos muito rapidamente. Tenho 30 minutos de reunião com cada um deles (em dois ou três dias). Quero usar a maior parte do tempo para discutir aspectos não técnicos. Então, planejo usar 10 minutos para perguntas técnicas. As mesmas perguntas para todos eles.
Eles já estão todos 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 um. No nível eu medirei, e também medirei em cada questão.
Se você tivesse apenas 10 minutos e 10 perguntas a serem feitas a um candidato, quais seriam seus 10 melhores?
Respostas:
Três perguntas, elaboradas no final da resposta de Eric Lippert aqui :
Questão 1:
Questão 2:
Questão 3:
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 podem ser comprometidas pelo efeito Dunning-Kruger (em ambos os lados), mas esse é outro tópico.
Se alguém puder encontrar a referência a esse método no SO e editar esta postagem para incluir um link, eu realmente aprecio isso.
De qualquer forma, isso deve cair bem menos de dez minutos.
fonte
Sinta-se livre para sugerir substituições, esta lista tem muito espaço para melhorias.
fonte
fonte
Minha experiência com os alunos 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.
Minha suposição é que há pouca semelhança em seus antecedentes, por isso estou evitando perguntas específicas do idioma. A única exceção que fiz a isso é a suposição de que eles fizeram algo na Web, mas essa pergunta pode ser substituída por algo equivalente se forem especialistas em incorporação ou o que for.
Você pediu que eles fossem progressivos, o que eu tentei fazer, mas se minha suposição de que nenhuma semelhança é correta, as perguntas certas / erradas são relativamente complicadas e grande parte de sua competência virá de quão boas são suas respostas para questões mais gerais. perguntas são.
De qualquer forma...
1) Em quais idiomas e tecnologias você foi exposto? Quantas delas (e quais) você passou mais de 50 horas realmente programando (que não inclui palestras, tempo de laboratório e assim por diante, mas inclui projetos e tarefas em que você estava codificando sozinho).
2) Descreva o programa mais complexo que você já escreveu. O que o tornou complexo?
3) O que você ensinou na universidade (relacionado à programação) que você realmente acha que não entende direito? Se você acha que entendeu tudo (verifique as notas deles neste momento), fale sobre um aplicativo ou elemento de um aplicativo que você viu que não saberia codificar e como poderá começar a pensar sobre isso.
4) Quais são os princípios básicos da programação orientada a objetos?
5) Conte-me o máximo possível sobre bancos de dados relacionais em 1 minuto
6) Para um aplicativo 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 nível programático (por exemplo, criptografia, compactação). Explique também como você tinha que usar essa funcionalidade que a implementaria (aqui eu procuraria o fato de que, embora você saiba como algo funciona, provavelmente é melhor procurar uma biblioteca para ele).
EDIT: reestruturado e adicionado algumas perguntas extras para torná-lo mais progressivo, como originalmente solicitado.
fonte
Se esses estudantes são estudantes e você deseja avaliar onde eles estão nos estudos, realmente não deve haver perguntas complicadas ou perguntas que os façam pensar muito. Meu conselho seria apenas focar no básico - não há muito sentido em pedir que expliquem como a reflexão funciona se eles ainda não estão totalmente atualizados sobre os objetos e a herança.
Aqui estão alguns exemplos de perguntas que podem ser usadas e você pode começar com algo da categoria de conhecimento principal e, em seguida, mudar com base em como eles respondem às perguntas, como o teste adaptativo .
Fundamentos
Testemunho
enum
usada a palavra - chave e quando você a utilizaria?Avançado
fonte
Sem uma resposta ao meu comentário acima, essas são as coisas que vêm à mente de um modo geral, mas não tenho certeza se as consideraria técnicas.
fonte
Sei que você está tentando criar o treinamento com base no que eles não sabem, e que planeja ter vários "baldes" de treinamento para diferentes grupos de estudantes. Como você tem apenas dez minutos, por que não fazer uma lista das coisas que está pensando em incluir no treinamento e fazer essas perguntas específicas. Então você planeja ensiná-los C #. Pergunte se eles o conhecem bem. Pergunte se eles usaram recursos mais recentes (LINQ, tipos anuláveis, genéricos, ...). Se houver conteúdo do banco de dados em seu treinamento, faça algumas perguntas sobre isso. No final, você pode perceber 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 criar perguntas que não estejam relacionadas ao que você
fonte
Faça a pergunta FizzBuzz
Eles sabiam como codificá-lo? Que 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ê não usou / não recursão? Como você escreveria isso usando ponteiros?)
Não abrange tudo, mas pode lhe dar uma idéia das habilidades de codificação
fonte
Dez perguntas:
Mostra um loop for que soma os valores de uma matriz. Pergunte então o que o trecho de código faz. [Eles podem ler um loop básico?]
Peça que eles escrevam 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 código deles.]
Mostre um pedaço de código com duas referências
a
eb
, apontando para dois objetos diferentes com um campo inteirox
definido como, digamos,7
e5
. Em seguida, transferir:a = b;
,b.z = 9;
e, em seguida, pedir o valora.z
. [Eles entendem referências?]Mostrar dois aninhados para loops (usando índices
i
ej
), acumulando valores de alguma expressão. No loop mais interno, tenha dois cálculos:double x = Math.pow(2.0, i)
edouble y = x * j
. Peça a eles para tornar o código mais eficiente. [Eles sabem sobre dependência de loop simples?]Pergunte a eles o que há de errado no exemplo de código A. (Veja abaixo.) [Eles podem pensar logicamente?]
Pergunte a eles o que há de errado no exemplo de código B. (Veja abaixo.) [Também no pensamento lógico.]
Peça-lhes para inverter esta condição:
(s != null && s.Length != 0)
sem usar!
. [Eles conhecem a lei de DeMorgan?]Mostre um trecho de código semelhante aos antigos anúncios do Lint nas revistas: peça para encontrar o bug. Por exemplo, sobrecarregando em
equals
vez de substituí-lo. [Eles são bons advogados de linguagem? Esse tipo de pergunta costuma ser um teste de experiência: você já viu essa pergunta antes?]Eles podem descrever como executar uma pesquisa binária através de uma matriz classificada?
Eles podem descrever como um método de classificação pode ser implementado?
Podem parecer "muito curtos", mas acredito que, para avaliar os alunos, você pode achar que os dez minutos são bastante apertados. Você realmente quer vê-los fazendo alguma codificação. (Parece que você fará o FizzBuzz, com base em um comentário.)
Se você puder assumir um aluno mais forte, também poderá perguntar a alguns clássicos, como recursão, reversão de uma lista vinculada e talvez um curinga avançado como explicar uma lista XOR ou que intuições eles podem ter. por que classificar um conjunto de números facilita a compactação do que a não ordenada.
Amostra de código A:
Amostra de código B:
fonte
Certamente você está fazendo isso da maneira errada. Identifique os agrupamentos em que você deseja colocar cada aluno
por exemplo
e assim por diante. Quando você identificar os grupos adequados que dependerão do material do curso, descobrir quais perguntas será trivial.
fonte
Os alunos já estão contratados e você deseja configurar um programa de treinamento, portanto, parte do acordo é descobrir com que rapidez eles podem aprender (e / ou o que sabem: quem se importa com quem?). Por que não escolher algumas perguntas fáceis, médias e difíceis e entregá-las com antecedência. Por que emboscá-los com perguntas que talvez não saibam, se podem ser facilmente aprendidas (por alguns)?
Você verá, ao contrário do que muitas pessoas imaginam, que muitos dos alunos não se sairão muito bem, mesmo com as perguntas em mãos. Dessa forma, você aprenderá sobre seus alunos, seus conhecimentos e sua capacidade de aprender.
fonte
Crie 5 construções simples de fluxograma e uma lista separada de respostas. Peça-lhes para combinar a imagem com a frase.
Desenhe o seguinte:
Peça que expliquem a diferença entre 1 e 2.
Peça que explique a diferença entre 3 e 4.
Peça um exemplo de quando uma Construção de Declaração de Caso seria aplicável.
fonte
Não tenho certeza de que seria possível fazer isso em 10 perguntas em 10 minutos. Talvez dê cinco minutos para contar o que eles sabem sobre .net. Depois, faça uma lista preparada de talvez 20 tópicos e escolha 2 ou 3 das coisas que eles mencionaram e 2 ou 3 das coisas que eles não mencionaram.
Por exemplo, você pode começar:
Então, depois disso:
Em seguida, faça 5 perguntas para o seguinte:
Explique brevemente como a coleta de lixo funciona no .Net
....
Como você depura algo se você tiver um problema?
fonte
Eu acredito em "auto-avaliação"! Se você explicar à pessoa a situação exata, ela se encontrará, por exemplo: "você terá que codificar SQL ... com banco de dados com mais de 100 tabelas e 500K + registros, que precisam ser executados em menos de 4 segundos ...". E se você perguntar a ele: "Você acha que pode fazer isso?" - você receberá uma resposta correta.
Passarei 5 perguntas sobre as expectativas dos alunos e 5 mais técnicas:
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:
fonte
Estou procurando solução para problemas, um forte hábito de aprendizado, desenvolvimento profissional e amplo conhecimento de abordagens.
chicken
como um objeto? Como isso se relaciona com os outrosbirds
? Que talmammals
eanimals
?Espero que os desenvolvedores:
fonte
A taxonomia de Bloom é útil aqui. Você deseja atingir uma variedade de níveis de conhecimento, variando de memorização mecânica a analítica. Isso lhe dá a chance de descobrir onde está o nível de habilidade deles. Como o OP estava procurando perguntas para os alunos, a lista abaixo não supõe mais conhecimento do que um aluno do terceiro ou quarto ano (espero) possua.
Conceptual
Prático
fonte
Como eles já foram contratados, para uma avaliação rápida, acho que devemos (juntamente com as questões de programação), devemos perguntar sobre
Essas perguntas são apenas para descobrir sua conscientização sobre o sistema usado durante a programação,
fonte
Comece dos níveis mais baixos da pilha de software e suba.
fonte
fonte