- Desafio de programação relacionado a banco de dados que recebi da MemSQL (hoje SingleStore) em 2013
→ "Adicione um comando mult ao Memcached, um armazenamento chave-valor, em um formato parecido com incr / decr. Vou lhe dar 1 hora."
- Essa é uma excelente pergunta de entrevista técnica porque separa os candidatos de forma clara em 3 tipos
- Tipo 0: pessoas que se assustam com a ideia de ter que mexer em código de verdade. Na prática, elas nem chegariam até aqui, mas não devem ser contratadas
→ Na época, a MemSQL era desenvolvida em C++11, então mexer no Memcached, escrito em C, se alinhava bem com o objetivo.
- Tipo 1: pessoas que olham o problema e dizem "multiplicação é repetição de adição, então acho que dá para repetir o que já existe! Mas aí tem que lidar com os locks..."
→ Depois de se perderem por um bom tempo, não conseguem produzir código funcional e fracassam. Também não são contratadas
- Tipo 2: pessoas que dizem "multiplicação é igual à adição, exceto pelo fato de que onde faz
+ tem que fazer *" e rapidamente fazem um Copy&Paste e trocam + por *
→ As pessoas desse grupo têm uma probabilidade muito alta de serem contratadas
- Os melhores candidatos... como sobra bastante tempo, conseguem lapidar a entrega, verificar se a formatação está consistente, adicionar testes unitários e até revisar as "decisões de design"
Conclusão
- Gosto desse desafio de programação porque ele é uma versão reduzida da programação real
- Ao manter uma grande base de código, sempre acaba havendo código que você não entende completamente ou idiomatismos desnecessários
- Esse problema é perfeito para entrevista porque há uma única resposta correta: mudar
bool incr para int opcode
- Hoje existem dois comandos de operação aritmética (
incr/decr), e a tarefa é expandi-los para três comandos
- Esse desafio foi muito bem elaborado para filtrar candidatos desqualificados e conduzir candidatos qualificados por um caminho promissor
3 comentários
O ponto-chave da questão provavelmente será quão rápido se consegue encontrar o código correspondente.
Parece melhor no sentido de que, em vez de reescrever um programa do zero, trata-se de adicionar funcionalidades a um código já existente (e, além disso, a um projeto open source já conhecido e amplamente usado).
Como era de se esperar no HN... a pessoa que fez a pergunta original da entrevista apareceu e está fazendo um AMA.
https://news.ycombinator.com/item?id=31065143