Coding interviews

Una guía sobre los procesos actuales en entrevistas de código

Gabriel Miranda

coding

cooking

making music

drawing

¿Por qué entrevistas de código?

¿Qué orientación tiene la charla?

A nivel entrevista

Entrevistas de programación y lógica algorítmica

A nivel entrevistadx

Desarrolladores de cualquier nivel

Tipos de entrevista

Live coding

En editor o pizarra

Project coding

A desarrollar con una fecha límite

¿Qué espera el/la entrevistador/a?

Ideal

Que se contesten todos los interrogantes de la manera más correcta y performante a la primera

Real / Común

Conocer las capacidades de razonamiento y resolución de problemas del entrevistadx.

¿Prepararme o no?

Short answer. Yes.

Preparación

Elección del lenguaje

Uso de memoria y procesamiento

Complejidad espacio-temporal


var arr = ['pepa', 'juana', 'maría'];

var arr = ['pepa', 'juana', 'maría'];


var arr = [
  'pepa',
  'juana',
  'maría',
  ...
];

function calcularDecimalDePi(n) { ... }

calcularDecimalDePi(3)

function calcularDecimalDePi(n) { ... }

calcularDecimalDePi(837456923874)

while (true) {
  console.log('😱');
}

Big-O notation

Forma de representar la complejidad de una función


var arr = ['pepa', 'juana', 'maría'];

function findIndex(myArr, index) {
  var result;
  for (var i = 0; i < myArr.length; i++) {
    if (i === index) {
       result = myArr[i];
    }
  }
  return result;
}

var arr = ['pepa', 'juana', 'maría'];

function findIndex(myArr, index) {
  return myArr[index];
}

Estructuras de datos

  • Strings & Arrays
  • Hashmaps
  • Linked lists
  • Stacks & Queues
  • Trees & Graphs

Cracking the code interview ftw

Algoritmos

  • OOP
  • Recursion
  • Binary search
  • Sorting and search
  • Functional

Cracking the code interview ftw

Práctica

Websites

codility, hackerrank, topcoder, coding game

Real people

compañerxs de trabajo, conocidxs, mentores

Board

pizarra, pizarrón, tabletas digitalizadoras

Durante la entrevista

Ask, ask, ask

Primera regla, pedí definición, pensá casos extraños, llevalo hasta lo más recóndito de la entrevista y reventalo a preguntas.

Try, try, try.

Segunda regla, jamás digas "no puedo", "nunca lo hice". Intentalo, es mejor que quedarse de brazos cruzados.

Think out loud

Para mí es una tercera regla, aunque es bastante complicada. Tratá de pensar en voz alta, ayuda mucho al entrevistador a darse cuenta que estás pensando una solución y como pensas.

Test, test, test.

¿Cómo asegurarse que tus respuestas son correctas?


function plusTwo(n) {
  return n + 2;
}

if (plusTwo(2) === 4) {
  console.log('Test passed!');
} else {
  console.log('Test failed!');
}

Resolución de problemas

Múltiples soluciones, múltiples pasos.

Fast answers

Las primeras respuestas casi nunca son las más correctas, pero sin importar eso, es bueno dar la primer respuesta rápido. A problemas simples, soluciones simples.


class ValueTracker {
  values = [];
  addValue(n) {
    this.values.push(n);
  }
  getMean() {
    var sum = 0;
    for (var i = 0; i < this.values.length; i++) {
      sum += this.values[i];
    }
    return sum / this.values.length;
  }
}

class ValueTracker {
  sum = 0;
  quantity = 0;
  addValue(n) {
    this.sum += n;
    this.quantity++;
  }
  getMean() {
    return sum / quantity;
  }
}

Respuestas incorrectas

Desmitificando las respuestas incorrectas. ¿Qué hacer en caso de enfrentarse a esta situación?

Be enthusiastic, be confident

Almost there.

¡Gracias a todxs!

Coding interviews

By Gabriel Miranda