Cómo se lleva a cabo una entrevista para programadores, qué preguntan

¿Qué información personal necesitas preparar y qué respuestas debes tener en mente para superar con éxito una entrevista?
Demostrar tus habilidades concretas durante una entrevista es distinto de simplemente tenerlas. La primera entrevista para un puesto de programador puede generar estrés, sin importar tu experiencia. Durante este proceso, es normal olvidar detalles simples y enfrentarse a preguntas desconcertantes.

Aunque eliminar por completo los nervios puede ser difícil, una buena preparación puede ayudar a reducirlos. En esta guía, exploraremos juntos cómo prepararte de manera efectiva para una entrevista.

Es importante que tengas en cuenta que una entrevista puede extenderse más allá de una hora y en algunas empresas, pueden requerirse múltiples rondas. A veces, estas rondas se llevan a cabo de manera consecutiva, convirtiéndose en una maratón de varias horas, o se programan en días diferentes.

Cada entrevista es única, ya que los entrevistadores pueden tener enfoques ligeramente distintos. La dirección del diálogo, los errores del entrevistador y los temas discutidos pueden variar considerablemente. Además, las preguntas pueden diferir incluso dentro de una misma especialización, dependiendo de la empresa. Las grandes empresas tienden a realizar preguntas más fundamentales, mientras que las más pequeñas pueden centrarse en habilidades aplicadas específicas para el puesto.

El proceso de entrevista también varía según tu experiencia previa. Si cuentas con experiencia anterior, es probable que te pregunten sobre proyectos pasados. En caso contrario, es posible que evalúen tu inteligencia general a través de pruebas específicas.

Así que, ¡prepárate y adelante! Estamos aquí para ayudarte en todo lo que necesites.

Temas clave
Sobre ti. Experiencia anterior.

Generalmente la entrevista comienza con una presentación. En este punto, están echando un vistazo a quién eres, evaluando tu idoneidad en general y buscando puntos de conexión para futuras conversaciones. Es ideal que tengas proyectos reales en tu historial en los que hayas participado. Los proyectos educativos con código en GitHub también son bienvenidos.

Durante esta etapa, es crucial estar preparado para responder a las siguientes preguntas:
  • ¿Cuál fue el último libro de programación que leíste?
  • ¿De qué te enorgulleces más como programador?
  • ¿Cuál fue el problema más difícil (interesante) que resolviste en un proyecto anterior o durante tu formación?
  • ¿Cómo probaste la funcionalidad del código? (Idealmente, si puedes escribir pruebas automáticas)
  • ¿Cómo se estructuraba el proceso de desarrollo en tu trabajo anterior, si es que lo había?
  • ¿Por qué decidiste dejar tu trabajo anterior?
  • ¿Dónde te ves en 5 años?

Recomendaciones
  • Crea varios proyectos en GitHub.
  • Responde las preguntas descritas anteriormente para ti mismo.
  • Familiarízate con las ideas de programación extrema.
Problemas
Problemas de heurística o imaginación

Hay una categoría de problemas que solían ser populares en las entrevistas. Microsoft fue el primero en hacerlo, y muchos otros lo siguieron. Aquí hay algunos ejemplos:
  • ¿Por qué las tapas de alcantarilla son redondas?
  • ¿Cuántas pelotas de tenis caben en un autobús?
  • ¿Cuántos afinadores de pianos hay en el mundo?
  • ¿Cómo moverías el monte Fuji?
  • Si una mecha de cordón Bickford arde durante una hora, ¿cómo hacer que se queme en media hora?
Las preguntas de entrevista pueden ser fascinantes para discutir con amigos, pero su valor para evaluar las habilidades de un desarrollador es cuestionable. A menudo, estas preguntas se basan más en la imaginación y la intuición que en la lógica pura, lo que puede desconcertar a los entrevistados. Aunque pueden mostrar cómo funciona el cerebro de una persona, también pueden generar estrés y confusión.

Es importante tener en cuenta que muchas empresas líderes han dejado de utilizar estas preguntas en sus entrevistas, prefiriendo en su lugar evaluar habilidades más directamente relacionadas con el trabajo. Sin embargo, dado que aún pueden surgir en algunas entrevistas, puede ser útil reflexionar sobre ellas con anticipación, ya sea con amigos o en comunidades en línea como Códica.

Recomendaciones
  • Lee el libro "Cómo mover el monte Fuji"
  • Encuentra listas de preguntas similares y trata de responderlas
Problemas de lógica

Este es otro tipo de problemas. Tienen respuestas bastante concretas y se basan en la lógica formal. Por ejemplo:
  • ¿Cuántas veces al día se cruzan las manecillas del reloj?
  • ¿Qué ángulo hay entre la manecilla de las horas y la manecilla de los minutos si el reloj marca las 15:15?
  • Megamente tiene dos bolas de vidrio idénticas. ¿Cuántos lanzamientos como mínimo se necesitan para determinar a partir de qué piso del edificio de 100 pisos las bolas se rompen?
El problema de la tapa de alcantarilla puede parecer absurdo a primera vista, pero en realidad encierra un desafío algorítmico significativo. Resolver este tipo de problemas de manera regular puede ser beneficioso para mejorar habilidades como el pensamiento algorítmico, trabajar con sistemas de numeración, operaciones lógicas y matemáticas.
Recomendaciones
  • Aprende a resolver problemas lógicos.
Enlaces
  • braingames es un sitio y una comunidad para resolver este tipo de problemas.
Algoritmos y estructuras de datos

En esta etapa, pueden pedirte que implementes la inversión de una lista enlazada o que realices una clasificación de burbuja. Cosas más complicadas no te pedirán que las escribas, pueden preguntarlas verbalmente. Por ejemplo:
  • ¿Cómo encontrar el número faltante en una matriz ordenada que contiene valores del 1 al 100?
  • ¿Cuál es la diferencia entre O(1) y O(n)?
  • ¿Cuál es la complejidad algorítmica de la búsqueda binaria?
  • ¿Cómo determinar si hay un ciclo en una lista enlazada?
  • ¿Cómo combinar eficientemente dos matrices ordenadas?
No debes asustarte de esta sección, nadie te pedirá un profundo conocimiento de algoritmos y todo lo que leíste en Knuth. Es suficiente leer un libro y practicar un poco. En cualquier caso, esta experiencia no será en vano, una estructura de datos adecuada en el código hará tu vida mucho más fácil.

Recomendaciones
  • Recuerda los logaritmos. Son necesarios para evaluar la complejidad. Esta es la única matemática obligatoria para los libros de algoritmos.
  • Estudia los algoritmos básicos (están en el libro de los enlaces).
  • Estudia las estructuras de datos básicas (están en el libro de los enlaces).
  • Escribe una clasificación de burbuja.
  • Aprende sobre las tablas hash.
  • Aprende a realizar una búsqueda binaria.
  • Estudia los árboles balanceados.
  • Aprende la notación Big O, aprende a determinar la complejidad de algoritmos simples.
Enlaces
Sistemas operativos y redes

Esto incluye una amplia gama de temas, como el dominio de la línea de comandos, la comprensión de TCP/IP, HTTP, DNS, el bucle de eventos y mucho más.
Por lo general, estas preguntas no se hacen directamente. Principalmente se inventan varias historias o situaciones. Ejemplos de preguntas:
Recomendaciones
  • Lee un libro sobre sistemas operativos.
  • Cambia a Linux (por ejemplo, Ubuntu).
  • Estudia las redes a nivel básico: TCP/IP, DNS, HTTP.
Operaciones con números

Problemas populares sobre sistemas de numeración y operaciones de bits.
  • ¿Cómo determinar si un número es par sin realizar una división?
  • ¿Cómo intercambiar dos variables sin usar una tercera variable?
Recomendaciones
  • Estudia los sistemas de numeración.
  • Estudia las operaciones de bits.
Problemas de resolución de problemas

El tipo de problema más interesante. Estos problemas modelan una situación real. Tendrás que encontrar una solución dentro de ciertas restricciones. Por ejemplo:
  • ¿Cómo implementar un editor para que abra archivos de cualquier tamaño a la misma velocidad?
Escribir código
Cuanto menos experiencia tengas, mayor será la probabilidad de que te pidan que escribas código. Por lo general, te piden que lo hagas en papel o en un entorno como repl.it. Tienes 10-20 minutos para resolver el problema. Aquí hay algunos ejemplos:
  • Escribe un programa que imprima los números del 1 al 100 en la pantalla. En lugar de los números que son múltiplos de tres, el programa debe imprimir la palabra "Fizz", y en lugar de los números que son múltiplos de cinco, la palabra "Buzz". Si un número es divisible por tres y cinco, el programa debe imprimir la palabra "FizzBuzz".
  • Escribe un programa que invierta una cadena. Proporciona varias formas de hacerlo.
  • Escribe un programa que verifique el equilibrio de los paréntesis en una cadena.
  • Implementa un programa que elimine un directorio con todos los archivos y directorios contenidos (un problema recursivo)
Durante la resolución, pueden pedirte que reflexiones en voz alta sobre el problema. El entrevistador quiere seguir tu proceso de pensamiento.

Estos problemas muestran qué tan bien funciona la lógica de una persona, cómo piensa algorítmicamente, cómo maneja las construcciones básicas del lenguaje. Te permiten filtrar a los candidatos débiles, pero no ayudan a identificar a los fuertes.

En Internet, hay docenas de servicios especializados en este tipo de problemas. Asegúrate de incluirlos en tu lista de preparación. Aprende a resolver problemas de nivel fácil con los ojos cerrados. Esta habilidad te ayudará no solo a pasar las entrevistas, sino también en la programación real.
Recomendaciones
  • Practica escribir código en papel.
  • Intenta razonar en voz alta mientras resuelves problemas algorítmicos.
  • Encuentra una plataforma conveniente y perfecciona tus habilidades.
Enlaces
Conocimientos aplicados
Aquí se incluye un gran grupo de preguntas sobre las tecnologías con las que tendrás que trabajar.

Generales
  • Bases de datos. SQL. Pueden pedirte que escribas una consulta. Por lo general, están interesados en el conocimiento de las uniones (joins).
  • POO. A nivel básico, se refiere a la capacidad de crear clases y modelar.
  • Los desarrolladores web pueden preguntar sobre la API del DOM.
Específicos

Aquí se evalúa el conocimiento de bibliotecas, frameworks, peculiaridades de los lenguajes. En Internet, especialmente en GitHub, hay listas para cada pila posible.
Leer otros artículos de Guías
Lea otros artículos relevantes del mundo de la tecnología y el espíritu empresarial.