No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

5 pasos para resolver problemas de programación durante entrevistas

5/11
Recursos

Aportes 14

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

¿Cómo resolver un problema de programación? 🚀💚

Antes de preguntarnos sobre el cómo poder resolver el problema, que tecnología me gusta más.

Nuestra mejor forma de atacar retos de este tipo es, “Entender el que voy a hacer” porque si lo sabemos podemos diseñar una mejor solución preguntando y escuchando a nuestros reclutadores.
.

Hacer preguntas 📑

(Entendamos el “¿Qué vamos a hacer?”)

  1. Hacer preguntas es la mejor forma de aclarar un problema
  2. Hay problemas ambiguos y a veces solo conocemos la primera parte
    1. Preguntarnos siempre por cómo podemos interpretar las entradas y salidas nos otorga una mejor visión del problema
    2. Si vamos a asumir algo, hay que charlarlo con el equipo, explicando por qué podríamos partir de ello para que nuestra función opere.

Ejemplos:

  • ¿Qué pasa si mi lista está vacía?
  • ¿Podría haber elementos repetidos?
  • ¿Qué pasa si el tipo de dato es erróneo?

.

Identificar casos de uso 👽 (incluso los extraños)

  • ¿Qué pasó si nos salimos de un entorno controlado?
  • Nuestro algoritmo solo con ciertas entradas causa un error y debemos identificarlo 🕵️.

.
Ejemplo:
.
Te imaginas trabajar sobre un sistema que maneje vacaciones de empleados en el cual solo se le permiten tomar 4 días de vacaciones de forma consecutiva y que justo en el mes de Febrero de ese año sea un año bisiesto.
.
Un empleado toma sus días a finales de mes, nuestro sistema programa su regreso a labores hasta el 1 de Marzo, todo pareciera okay hasta aquí.
.
Pero en realidad los días máximos permitidos no fueron 4, y se le otorgaron 5 😨 dando un día extra por este factor extraño.
.
¿Te imaginas otro caso que puedas suceder? Déjamelo en este comentario para saber si te ha tocado un reto de este estilo y cómo lo resolviste 👇.

.

Diseñar la solución 🧩 (aún no implementarla)

.

💡Diseñar es muy diferente a implementar

❌ Jamás correr a programar de una sin haber entendido el problema, esto es la receta perfecta para no pasar con excelencia nuestra entrevista.

.
Al diseñar una solución como un software engineer nuestro trabajo es identificar los atributos de calidad que nos importa realmente para cada solución:

  • Tiempo
  • Escalabilidad
  • Velocidad

.
💡 La mejor forma de abordar los problemas es usar fuerza bruta (una solución no tan óptima) pero que me empiece a encaminar al resultado, una vez tengamos eso podemos refactorizar y optimizar sobre los atributos que necesitamos.

.
💡 Otra forma es usando divide y conquista, desglosa el problema grande en problemas más chicos, este nos ayuda a:

  • Evitar la frustración de querer resolver un problema grande y complejo
  • Nos enfoca en una pequeña pieza que si la solucionamos podemos integrarla con otras piezas para solucionar algo más grande.

.
Nota: Los reclutadores son nuestros amigos y los mejores aliados 🤝

  • Platica con ellos
  • Haz preguntas
  • Usa tus soft skills para combatir el problema
  • Involúcralos en todo el proceso y usa ejemplos
  • Piensa en voz alta y explica tus ideas sobre un posible camino a la solución.

.

Implementar 🚀 (ahora sí)

Ve la mejor forma en la que pueda pasar tu diseño a la implementación, añadiendo comunicación por bloques y creando el código más limpio posible.

.
Fun fact 😁: Es normal equivocarse, los nervios nos traicionan y hasta les comparto que una vez de los nervios recorrí un arreglo completo de números para sacar el máximo valor 🤣 en vez de usar la función max() ya existente y hacerlo en una línea.

.
Parece chiste, pero es anécdota, déjame un comentario con alguna experiencia similar que te haya pasado para reírnos juntos y aprender de ella 😁.

.

Probar el código 🧪

  • Las pruebas de escritorio son tus mejores aliadas
  • Da ejemplos que recorran nuestro flujo de la solución y explicar cómo a lo largo del proceso nuestra entrada se va modificando hasta llegar a nuestra solución deseada.
  • La comunicación con ellos es constate, es normal que salgan errores y que platiques con ellos qué opciones se te ocurren para solucionarlos, eso da muchos puntos 😁.

En este curso les seguiré dejando tips que me han servido en procesos de entrevista, y que ustedes puedan aplicar 😁

lo único que espero es poder tener la paz y confianza que refleja la profe Camila durante la entrevista, casi siempre entro en pánico.

Excelente profe!!.. Yo aplico la de preguntar e interactuar con el entrevistador, pero lo de tomarse el tiempo para analizar un poco mas a fondo el desafio antes de empezar a programar es muy util😁

Ella transmite mucha tranquilidad.

Gracias profe Camila. Yo veo estas recomendaciones muy importantes para crecer en la empresa en la que estoy actualmente.

Justamente cada uno de esos pasos los vi aplicados en una entrevista que tuve, y precisamente fallé en cada una de ellas por no conocer éste proceso (excepto la implementación jaja).
Pero si me dio mucha dificultad querer hablar al mismo tiempo que pensar en programar, además de que también lo primero que hice fue comenzar a escribir código, conforme probaba, le preguntaba o como que se aburría mi entrevistador por el silencio y me hablaba y yo que ya me había olvidado que estaba presente u.u
Cada una de las cosas que nos acaba de enseñar Camila, son súper importantes y sobre todo súper verdaderas!
Me muero por aplicar a otra entrevista y mejorar.

Está buenísimo el curso y la forma de explicar está de 10

Tratar al entrevistador como un companero, no se me habia ocurrido

Buenos consejos

Anotada la metodologia. me pareció genial esta clase esto cambia bastante la manera como realizare las entrevistas.

Tener empatía con lo que ve el entrevistador y ser mas estructurado.

Excelentes pasos profesora y el tip de preguntar.

Estos pasos son valiosos!! Están bien explicados, tener en cuenta los diferentes contextos que se puedan dar en una entrevista técnica, pero puedo decir que es una guía estándar para que podamos superar una entrevista. Es una clase top.
Key points: 1. Understand the problem 1. Corner cases 2. Upper and lower input limits 3. Non-cases 2. Design the solution 1. Do not implement yet 2. Diagrams (visual and/or talked through are ok) 3. Yup, now go code it up. 4. Test out your code, run it manually and verbally. Pro tips: * Do not rush throughout the process. * Involve the interview in all steps as you progress.

Espero que los aplique cuando nos enseñe, no como esos que dicen como resolverlo con diseño y saltan al código sin un proceso.