5 pasos para resolver un problema complejo

«¿Cómo diseñaría un sistema similar a Instagram donde los usuarios puedan publicar fotos y desplazarse por las fotos de sus amigos?» Mi corazón comienza a acelerarse. Siento que se me cae el estómago. Empiezo a tropezar con mis palabras. ¿Te suena familiar?

Es común sentirse completamente abrumado durante las entrevistas técnicas, especialmente cuando se le pide que resuelva una pregunta y no tiene ni idea de por dónde empezar. Fue solo una vez que comencé a investigar cómo resolver problemas complejos que tuve más confianza en mis habilidades para entrevistar.

Las preguntas de la entrevista técnica generalmente están destinadas a evaluar sus habilidades para resolver problemas, por lo que comprender cómo resolver problemas puede ayudarlo a decodificar muchos problemas. Aquí hay cinco pasos que puede seguir para resolver un problema complejo de entrevista técnica.

1. Comprender el problema

Antes de comenzar a resolver el problema, haga una pausa y pregúntese: «¿Entiendo cuál es el problema?» Si la respuesta es negativa, debe solicitar una aclaración. Además, muchas preguntas se dejan intencionalmente incompletas ya que el entrevistador quiere ver su capacidad para deducir qué información falta.

Una buena forma de asegurarse de que comprende el problema es reiterarlo al entrevistador.

“Tengo un gráfico con un ciclo y necesito encontrar el borde roto y eliminarlo. ¿Es esto correcto?» Si dice que sí, puede pasar al paso dos. Si dicen que no pida una aclaración.

2. Enumere los requisitos funcionales

Enumerar los requisitos funcionales (o las cosas que su solución debe incluir absolutamente) lo ayudará a comprender el problema, garantizar que no se desvíe de los diferentes aspectos del problema e identificar la información que falta.

Por ejemplo, si tiene la tarea de diseñar y codificar un desplazamiento infinito para una aplicación estilo Instagram, algunos de los requisitos funcionales podrían ser:

  • Los usuarios deben ver las fotos de sus amigos en orden cronológico inverso (la más reciente primero).
  • Queremos reducir el tiempo para pintar por primera vez (cuando el usuario ve por primera vez una interfaz de usuario «completa», por lo que la carga diferida es una buena opción.
  • Queremos solicitar un máximo de 30 fotos a la vez.

Pensar en estos requisitos del sistema le permitirá concentrarse en las tareas más importantes. Trate de no quedar atrapado en los requisitos no funcionales o requisitos que no son obligatorios para resolver este problema en particular. Algunos ejemplos de requisitos no funcionales pueden ser:

  • Los usuarios pueden actualizar la configuración de su cuenta
  • Los usuarios deberían poder ver las fotos que les gustan a sus amigos y que comentan.
  • Los usuarios pueden enviar mensajes a otros usuarios

Si bien 30 o 45 minutos pueden parecer mucho tiempo, vuela cuando está resolviendo un problema, por lo que es imperativo que cumpla con los requisitos funcionales.

3. Enumere las posibles soluciones

Una vez que sepa lo que necesita para diseñar y codificar, piense en algunas soluciones diferentes. ¿Hay alguna estructura de datos que necesite utilizar? Si es así, ¿cuáles son los beneficios y las desventajas de cada uno? Exprese sus pensamientos en voz alta y escriba algunos caminos posibles que pueda tomar.

Una vez que tenga dos o tres posibilidades, elija la solución con la que se sienta más cómodo codificando. Si no es la solución más eficaz u óptima, está bien. Dígalo en voz alta.

«Sé que usar un bucle for anidado para ordenar la matriz no es eficaz porque compara todos los elementos con todos los demás, pero me gustaría comenzar aquí y optimizar una vez que obtengo algo». No hay nada de malo en codificar una solución de fuerza bruta primero y optimizarla en segundo lugar.

4. Optimice su solución

Si tiene tiempo, optimice su código. ¿Puede eliminar el bucle for anidado y buscar una solución O (n log n)? Si no tiene tiempo, indique explícitamente que reconoce que esta solución no funciona y que le hubiera gustado refactorizarla para usar la clasificación por combinación o la clasificación rápida en lugar de la clasificación por burbujas.

También debe buscar formas de mejorar la accesibilidad si se está entrevistando para un puesto de desarrollador frontend. ¿Escribió algún código HTML, CSS o JavaScript que podría impedir inadvertidamente que algunos usuarios accedan a su aplicación? Si es así, ¡es hora de refactorizar!

Reemplace sus divs con elementos de referencia semántica como <nav> y <main> o use atributos aria para garantizar el cumplimiento del lector de pantalla y verifique que no esté usando display: none para ocultar visualmente elementos en la interfaz de usuario (lo elimina del DOM ¡y los lectores de pantalla no se darán cuenta de que existe!).

Los entrevistadores siempre quieren ver que eres consciente del rendimiento y la accesibilidad. Demostrar que presta especial atención a estas áreas lo elevará por encima de la competencia.

5. Pruebe su solución

Incluso si «sabe» que su solución es 110% correcta, pruébela. Piense en los casos extremos. ¿Qué sucede con su código cuando se le pasa un argumento que no esperaba? ¿Se rompe? Si es así, refactorice.

Por ejemplo, si tengo la tarea de buscar un número específico en una matriz, ¿qué tipo de situaciones podría encontrar? A continuación, se muestran algunas situaciones para las que podría querer probar:

  • El número existe en la matriz.
  • El número no existe en la matriz
  • La matriz está vacía
  • El argumento pasado no es un número

Probar su código es una necesidad absoluta durante una entrevista técnica. Si no tiene tiempo para realizar la prueba, puede informarle a su entrevistador que tendría pruebas escritas para los escenarios X, Y y Z si tuviera tiempo adicional.

Con los cinco pasos anteriores, puede abordar cualquier problema que se le presente durante una entrevista técnica. Recuerde que el entrevistador no necesariamente espera que obtenga la solución correcta (o incluso una solución completa), sino que quiere concentrarse en sus capacidades de resolución de problemas. Exprese sus pensamientos en voz alta y sea honesto con su entrevistador si se queda perplejo. Un buen entrevistador quiere que usted tenga éxito y debe hacer todo lo que esté a su alcance para ayudarlo.

Subscríbete y recibe nuevas noticias

devnow

Autor desde: August 12, 2020

Deje su comentario

EN ES