Pregunta de entrevista para Ingeniero de software

¿Cuándo elegirías un hash map en lugar de un árbol binario de búsqueda balanceado?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

Elige un hash map cuando solo necesitas búsquedas, inserciones y borrados por clave y quieres tiempo constante en promedio. Elige un árbol balanceado cuando necesitas orden: recorridos por rango, la clave más cercana o iterar en orden, todo en tiempo logarítmico. Los árboles además te dan un peor caso predecible, mientras que un hash map puede degradarse mucho con un hash malo o atascarse en un redimensionado en el peor momento.

Por qué lo preguntan los entrevistadores

Esto sirve para ver si eliges estructuras de datos a propósito o tiras de diccionario por reflejo. El entrevistador quiere oír que conectas el patrón de acceso con la estructura, que sabes que el rendimiento de un hash map es un promedio y no una garantía, y que reconoces cuándo el orden, las consultas por rango o una latencia acotada en el peor caso hacen que el árbol sea la opción correcta.

Cómo estructurar tu respuesta

  • Enuncia las operaciones en las que cada estructura es de verdad buena.
  • Liga la elección al patrón de acceso de la pregunta.
  • Menciona el comportamiento en el peor caso, no solo el promedio.
  • Da un ejemplo en el que cambiaste de una a otra.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Mi opción por defecto es un hash map, porque la mayor parte del tiempo hago búsquedas puntuales por id y el tiempo constante en promedio es difícil de batir. Ahora bien, en cuanto el requisito implica orden, cambio. Cualquier cosa del tipo dame todos los eventos entre dos marcas de tiempo, o encuéntrame la siguiente clave después de esta, es una consulta por rango, y un hash map no puede hacerlo sin recorrerlo todo. Eso pide un árbol o, en la práctica, una estructura ordenada con búsqueda binaria. También pienso en la cola. Las búsquedas hash son constantes en promedio, pero una función de hash mala o un rehash pueden dispararse, y dentro de un presupuesto de latencia eso me importa. En una funcionalidad de leaderboard que construí empezamos con un diccionario de usuario a puntuación y luego teníamos que ordenar todo en cada lectura. En cuanto pasamos a un sorted set en Redis, las lecturas se volvieron logarítmicas y el endpoint dejó de caerse en pico. Los mismos datos, otro patrón de acceso, otra estructura.

¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.

Mira cómo funciona

Preguntas de seguimiento que puedes esperar

  • ¿Qué le pasa a un hash map cuando muchas claves colisionan?
  • ¿Cómo implementarías una caché LRU?
  • ¿Cuándo encaja mejor un trie que cualquiera de las dos?

Más preguntas para Ingeniero de software

Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.

Predecir mis preguntas

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot