25 pontos por xguru 2022-04-19 | 3 comentários | Compartilhar no WhatsApp
  • 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

 
minhoryang 2022-04-20

O ponto-chave da questão provavelmente será quão rápido se consegue encontrar o código correspondente.

 
hongminhee 2022-04-19

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).

 
xguru 2022-04-19

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