Testes de programação

Esse ano que passou (2019) apliquei para muitas vagas como desenvolvedor e reparei que houve uma mudança na abordagem. Antes você envia seu CV, esperava uma entrevista e talvez algum tipo de desafios para ter a “certeza” que você sabe programar. Agora, eu envio o CV e já recebo um link de um “desafio” de programação para a vaga pretendida.

O teste geralmente é uma serie de exercícios que você deve completar em um tempo máximo. Os testes são feitos no site de terceiros com uma IDE com descrição do problema e alguns casos de teste para o programador se guiar na implementação. Os desafios na maioria das vezes é implementar algum algoritmo e a partir dessa implementação você é avaliado em alguns pontos. O qualified.io por exemplo exibe esses pontos na sua página:

Em um desses desafios me pediram para implementar um algoritmo que compacta intervalos (1,2,3,4,10 = 1-4, 10). Foi muito divertido fazer esse desafio, principalmente podendo escolher Go como linguagem de implementação e já tendo feito algo semelhante na postagem sobre baixar anime usando o R + irc. Abaixo a minha implementação:

package challenge // import "qualified.io/challenge"

import "fmt"

// seqSeeker runs list and return the longest sequence found
func seqSeeker(list []int) []int {
  seq := []int{}
  for i := 1; i < len(list); i++ {
    if list[i] == list[i-1] + 1 {
      seq = append(seq, list[i])
    } else {
      break
    }
  }
  return seq
}

func Solution(list []int) string {
  r := ""
 
  for i := 0; i < len(list); i++ {
    if i > 0 {
      r += ","
    }
    if seq := seqSeeker(list[i:]); len(seq) >= 2 {
      r += fmt.Sprintf("%d-%d", list[i], seq[len(seq)-1])
      // increment the len(seq) cuz we need to skip elements who are part of sequence
      i += len(seq)
    } else {
      r += fmt.Sprintf("%d", list[i])
    }
  }
  
  return r
}

Esse desafio e mais outros dois para serem concluídos em cinco horas me renderam a pontuação de 85% (imagino carinha feliz aqui) e me levou para a próxima etapa que era marcar a data de uma entrevista. Fiquei bem impressionado como eles confiam na plataforma para selecionar o candidato para uma entrevista sem revisão humana dos códigos. Fica aqui o ponto de reflexão. A minha habilidade como programador web é medida de forma correta usando esses algoritmos ? Já estou empregado a alguns meses e o mais próximo desses desafios que cheguei foi escrever um less(a, b) para implementação de um sort em uma struct.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s