Cómo responder preguntas en entrevistas técnicas

A continuación, hablaremos sobre cómo responder preguntas en entrevistas técnicas, teniendo como referencia que las entrevistas técnicas pueden ser realmente desmotivadoras, por lo que en cada pregunta, es importante saber qué esperar y estar al tanto de las áreas que se van a abordar y probablemente serán cuestionadas.

Afortunadamente, hay una forma de prepararse para cualquier tipo de pregunta que pueda surgir. Se trata de cuatro aspectos principales:

  1. Comprender la pregunta
  2. Discutir ‚Äúcompensaciones de soluciones‚ÄĚ
  3. Escribir el código
  4. Probar el código

Abordaremos esta técnica con un problema que involucra LinkedLists:

El problema planteado

Planteamiento de la cuestión: Una vez dado los LinkedListNodes individuales, determina si las dos listas se cruzan. Devuelve el nodo de intersección. Debes de tener cuenta que la intersección se define en función de la referencia, no del valor. Si el nodo k de la primera lista vinculada es el mismo nodo (por referencia) que el nodo j de la segunda lista vinculada, se están interceptando.

LinkedLists
Problema LinkedLists

Paso 1: Comprender la pregunta

Es importante saber exactamente lo que se está preguntando. En ese sentido algunas preguntas que podríamos hacerle al entrevistador son:

  • ¬ŅQu√© es exactamente a lo que queremos regresar? (A: el nodo de intersecci√≥n).
  • ¬ŅEso significa que podemos suponer que las listas vinculadas se cruzan? (A: s√≠)
  • Siempre es importante tener una idea de la pregunta antes de pensar en el enfoque para resolver.

Paso 2. Discutir las consesiones de las diversas soluciones

Una soluci√≥n inmediata es revisar ambas listas vinculadas al mismo tiempo hasta llegar a una intersecci√≥n. Para este ejemplo, har√≠amos un puntero en los nodos 2 y 7, y atravesar√≠amos cada uno de ellos uno por uno hasta llegar a un nodo com√ļn.

Sin embargo, esto no funcionar√° ya que las longitudes de las dos LinkedLists pueden ser diferentes. Lo que queremos hacer es “cortar” la parte inicial del LinkedListNode m√°s largo, y luego repetir varias veces.

Esta podría ser el tipo de conversación que tendría con su entrevistador.

Paso 3. Escribe el código

A continuación, se muestra el método para lograr esto.

Código
Escribe este código

Aqu√≠ tenemos algunos m√©todos de ayuda. Usamos getKthNode() para obtener el nodo k de la lista vinculada que se dio. Esto es √ļtil cuando se recorre la lista vinculada m√°s larga para “cortar” nodos adicionales.

De la misma forma utilizamos getTailAndSize() que captura tanto la longitud como el √ļltimo nodo de la lista que se dio. Esto es √ļtil porque necesitamos el tama√Īo para comparar las longitudes de las listas. Tambi√©n necesitamos las colas porque si las colas de las dos listas no son iguales, entonces no se cruzar√°n.

Hay que tener en cuenta que cuando decimos: “desigual”, queremos decir que los dos nodos no hacen referencia al mismo objeto. Aunque pueden tener el mismo valor y verse id√©nticos, deben hacer referencia al mismo LinkedListNode para ser iguales.

Regresando a la pregunta, si nos encontramos con el caso donde las colas son desiguales, volveremos a un valor null.

Caso vacío
Ejemplo de caso vacío

Paso 4: probar el código

Presentamos algunos casos de prueba que pueden surgir. Una regla general √ļtil para los casos de prueba es la siguiente:

  • Caso vac√≠o / nulo
  • Considerar opciones en el medio / principio / final
  • Tama√Īos iguales o diferentes

Esta estrategia no solo se aplica a las preguntas de LinkedList: podría funcionar para matrices, cadenas y cualquier otra estructura de datos.

Para esta cuestión, nuestras preguntas de LinkedList serían:

  • Dos listas enlazadas que se cruzan al principio / medio / final
  • Ambas / una lista vinculada es null (deber√≠a regresarse a null)
  • Las listas enlazadas son del mismo / diferente tama√Īo

Le√≠ste: c√≥mo responder preguntas en entrevistas t√©cnicas, ahora te recomendamos: ¬ŅQu√© es npm? peque√Īa gu√≠a para principiantes

Te invitamos a que nos sigas en nuestras redes sociales: Facebook, Twitter, Instagram y Youtube con el perfil: @tortugacode