Depois de um tempo, estamos contratando novamente e estou revendo testes para programadores; alguns deles estão um pouco desatualizados. Quais são algumas das perguntas do tipo FizzBuzz para desenvolvedores da Web e SQL? Isto é, não muito trivial, mas ainda solucionável em cinco a dez minutos com caneta e papel e sem o Google?
Normalmente, elimino cerca de dois terços ou mais dos candidatos com base no currículo e, em seguida, todos, com exceção de alguns bons candidatos, em uma entrevista de uma hora (que pode ser por telefone). Nesse momento, o candidato está escrevendo um teste de personalidade e tem a chance de escrever um pouco do código semelhante ao FizzBuzz. Portanto, não estou tentando eliminar um monte de candidatos, mas estou tentando validar minha avaliação inicial de que o candidato é contratável e capaz de codificar.
Respostas:
Eu vejo o FizzBuzz como um teste para ver se as pessoas realmente sabem o que afirmam saber em seu currículo. Eu não usaria isso como algo além de uma pergunta para eliminar candidatos que não sabem do que estão falando.
Uma substituição SQL adequada seria apenas pedir ao candidato que escrevesse uma instrução SQL, como selecionar os campos Nome de duas tabelas unidas que começam com A. É simples e demonstra que o candidato realmente tem algum conhecimento de SQL.
Para um desenvolvedor da Web, eu apenas pediria ao FizzBuzz. Só porque você está programando para a Web não significa que você não deve ter a capacidade de executar lógica de programação básica
Se você estiver procurando por perguntas reais da entrevista, há muitas perguntas on-line que você pode encontrar com uma pesquisa rápida. Encontrei mais do que gostaria de listar, levando 10 segundos com o Google.
fonte
Aqui está uma resposta que eu dei a uma pergunta muito semelhante (possivelmente duplicada) que foi fechada neste site.
Nível extremamente fácil: Dada uma tabela de funcionários com as colunas EmpID, Nome, Sobrenome, HireDate e TerminationDate: escreva uma consulta para retornar todos os funcionários que ainda trabalham para a empresa com sobrenomes começando com "Smith", classificados por sobrenome e primeiro nome.
Nível fácil Dada a tabela Funcionário acima, além de uma nova tabela "Análises anuais" com as colunas EmpID e ReviewDate: escreva uma consulta para retornar todos os funcionários que nunca tiveram uma revisão classificada por HireDate.
Nível médio
Dada a tabela de funcionários acima, escreva uma consulta para calcular a diferença (em dias) entre o funcionário com menos e o cargo ainda trabalhando para a empresa?
Nível difícil Dada a tabela de funcionários acima, escreva uma consulta para calcular o período mais longo (em dias) que a empresa passou sem contratar ou demitir ninguém.
Nível mais difícil
Usando novamente as mesmas tabelas, escreva uma consulta que retorne cada funcionário e, para cada linha / funcionário, inclua o maior número de funcionários que trabalhavam para a empresa a qualquer momento durante seu mandato e a primeira data em que o máximo foi atingido. Pontos extras por não usar cursores.
fonte
Que tal o próprio fizzbuzz? Aqui está uma versão do Oracle:
fonte
Acho que as pessoas tendem a ter muitos problemas ao trabalhar com o tempo por algum motivo, de modo que pode ser um bom lugar para fazer um pequeno teste.
Algo assim:
Parte 1: Crie uma função que calcule o enésimo ou último dia da semana em um determinado mês - ou seja; a primeira, terceira e última terça-feira do próximo mês.
Parte 2 (se desejado): crie tabelas para armazenar expressões temporais para planejamentos recorrentes. Os agendamentos podem ser "no nono dia da semana de um ou mais meses" ou "no nono dia de um ou mais meses" ou "a cada nove dias a partir da data".
Por exemplo, os 15 de cada mês, a última quarta-feira de cada março, o último dia de cada mês, a cada 17 dias, de 2 de dezembro de 2008, etc.
fonte