Saltar al contenido
subtl

Cómo explicar tu código en una entrevista técnica en inglés

Aprende a comunicar tu proceso de pensamiento en inglés en una entrevista técnica. Esta guía ofrece frases, estrategias y errores comunes que debes evitar.

· 9 min de lectura

A software developer explains their code during a technical interview conducted over a video call from their home office.

Una entrevista técnica en un idioma que no es el tuyo es un desafío único. No se trata solo de resolver un problema, sino de demostrar tu proceso de resolución de problemas en voz alta y en tiempo real. Los entrevistadores quieren entender cómo piensas, y eso requiere una comunicación clara y segura.

Esta guía proporciona un enfoque estructurado y frases específicas en inglés para ayudarte a narrar tu proceso de codificación. Cubriremos todo, desde aclarar el problema inicial hasta explicar tu solución final, ayudándote a demostrar tus habilidades técnicas y de comunicación al mismo tiempo.

Antes de empezar a codificar: Aclara el problema

Uno de los errores más comunes que cometen los candidatos es empezar a programar demasiado rápido. Antes de escribir una sola línea de código, debes estar absolutamente seguro de que entiendes el problema, sus entradas, sus salidas y sus restricciones. Esto le demuestra al entrevistador que eres reflexivo y metódico.

Comienza reformulando el problema con tus propias palabras para confirmar que lo has entendido.

Frases para aclarar los requisitos

  • "So, just to make sure I understand correctly, the goal is to write a function that takes [input] and returns [output]?" (Entonces, solo para asegurarme de que entiendo correctamente, ¿el objetivo es escribir una función que reciba [entrada] y devuelva [salida]?)
  • "To clarify, are we expecting the input array to contain only numbers, or can it have other data types?" (Para aclarar, ¿esperamos que el array de entrada contenga solo números o puede tener otros tipos de datos?)
  • "Could you give me an example of a valid input and the expected output?" (¿Podrías darme un ejemplo de una entrada válida y la salida esperada?)
  • "When you say 'most frequent,' if there's a tie, which value should be returned?" (Cuando dices 'el más frecuente', si hay un empate, ¿qué valor se debe devolver?)

Frases para discutir restricciones y casos extremos

  • "What are the constraints on the size of the input? For example, how large can the array be?" (¿Cuáles son las restricciones sobre el tamaño de la entrada? Por ejemplo, ¿qué tan grande puede ser el array?)
  • "How should the function handle invalid inputs, like a null or an empty list? Should it return an error, or a specific value?" (¿Cómo debería la función manejar entradas inválidas, como un null o una lista vacía? ¿Debería devolver un error o un valor específico?)
  • "Are there any performance requirements I should be aware of, like time or space complexity?" (¿Hay algún requisito de rendimiento que deba tener en cuenta, como la complejidad de tiempo o espacio?)
  • "I'm thinking about edge cases. For instance, what if the input list contains duplicates? Or what if all elements are the same?" (Estoy pensando en los casos extremos. Por ejemplo, ¿qué pasa si la lista de entrada contiene duplicados? ¿O si todos los elementos son iguales?)

Tomarte unos momentos para hacer esto no solo evita que resuelvas el problema equivocado, sino que también te da un tiempo valioso para pensar mientras interactúas con el entrevistador.

El método "Think-Aloud": Narra tu proceso de pensamiento

Los entrevistadores usan los desafíos de codificación para evaluar tu forma de pensar. Una solución perfecta entregada en silencio es menos valiosa que una buena solución que fue explicada claramente. Necesitas narrar tu recorrido desde el problema hasta la solución.

Etapa 1: El enfoque inicial

Comienza describiendo tu primera idea, la más simple. A menudo, esta es la solución de "fuerza bruta". Demuestra que puedes encontrar una solución que funcione antes de intentar optimizarla.

  • "My first thought is to approach this with a nested loop. I can iterate through each element and then compare it with every other element." (Mi primera idea es abordar esto con un bucle anidado. Puedo iterar a través de cada elemento y luego compararlo con todos los demás).
  • "A straightforward way to solve this would be to sort the array first. That would simplify finding the duplicates." (Una forma directa de resolver esto sería ordenar el array primero. Eso simplificaría encontrar los duplicados).
  • "Initially, I'm thinking of a brute-force approach. It might not be the most efficient, but it would work. From there, we can look for optimizations." (Inicialmente, estoy pensando en un enfoque de fuerza bruta. Puede que no sea el más eficiente, pero funcionaría. A partir de ahí, podemos buscar optimizaciones).

Etapa 2: Analizar y refinar

Después de exponer tu idea inicial, analiza sus ventajas y desventajas, especialmente su complejidad de tiempo y espacio. Esto demuestra una comprensión más profunda de los algoritmos y las estructuras de datos.

  • "The time complexity of this nested loop approach would be O(n²), which might be too slow if the input is very large." (La complejidad de tiempo de este enfoque de bucle anidado sería O(n²), lo que podría ser demasiado lento si la entrada es muy grande).
  • "This solution has a space complexity of O(n) because I'm creating a new data structure to store the results." (Esta solución tiene una complejidad de espacio de O(n) porque estoy creando una nueva estructura de datos para almacenar los resultados).
  • "We could optimize this. If we use a hash map, we can reduce the time complexity to O(n) by trading off some space." (Podríamos optimizar esto. Si usamos un hash map, podemos reducir la complejidad de tiempo a O(n) a cambio de un poco de espacio).
  • "I think we can do better. Let me consider an alternative approach using a two-pointer technique." (Creo que podemos hacerlo mejor. Déjame considerar un enfoque alternativo usando una técnica de dos punteros).

Etapa 3: Estructurar tu código

Antes de empezar a teclear frenéticamente, esboza tu plan. Explica las funciones, variables y la lógica que piensas usar. Esto sirve como una hoja de ruta tanto para ti como para el entrevistador.

  • "Okay, my plan is to first initialize an empty dictionary to store character counts." (Bien, mi plan es inicializar primero un diccionario vacío para almacenar el recuento de caracteres).
  • "I'll write a main function that takes the array as an argument. Inside it, I'll have a loop to iterate through the elements." (Escribiré una función principal que reciba el array como argumento. Dentro de ella, tendré un bucle para iterar a través de los elementos).
  • "I think I'll need a helper function to handle the logic for reversing this part of the string. It will make the main function cleaner." (Creo que necesitaré una función auxiliar para manejar la lógica de invertir esta parte del string. Hará que la función principal sea más limpia).
  • "I'll start by handling the edge cases we discussed, like an empty input array." (Empezaré manejando los casos extremos que discutimos, como un array de entrada vacío).

Mientras codificas: Mantén la conversación fluida

Mientras escribes tu código, continúa explicando qué estás haciendo y por qué. No te limites a leer tu código en voz alta. Explica el propósito de cada bloque lógico.

  • "Now, I'm creating a for loop that will go from the beginning of the array to the end." (Ahora, estoy creando un bucle for que irá desde el principio del array hasta el final).
  • "This variable, max_so_far, will keep track of the largest value we've seen." (Esta variable, max_so_far, llevará un registro del valor más grande que hemos visto hasta ahora).
  • "Inside the loop, this if statement checks if we've encountered this element before. If we have, I'll increment its count in the map." (Dentro del bucle, esta declaración if comprueba si ya hemos encontrado este elemento antes. Si es así, incrementaré su contador en el mapa).
  • "I'm using a while loop here because the number of iterations isn't fixed; it depends on the values of these two pointers." (Estoy usando un bucle while aquí porque el número de iteraciones no es fijo; depende de los valores de estos dos punteros).

¿Qué pasa si te atascas? El silencio es tu enemigo. Es perfectamente normal necesitar un momento para pensar. Simplemente comunícalo.

  • "Let me take a moment to think about the best way to structure this next part." (Déjame tomar un momento para pensar en la mejor manera de estructurar esta siguiente parte).
  • "I'm just double-checking my logic for this condition. One second." (Solo estoy verificando mi lógica para esta condición. Un segundo).
  • "Hmm, I think there might be a small issue here. Let me trace the execution with an example input to find it." (Mmm, creo que podría haber un pequeño problema aquí. Déjame seguir la ejecución con una entrada de ejemplo para encontrarlo).

Si estás concentrado en la lógica y no te salen las palabras correctas en inglés, puede ser estresante. Un asistente que pueda sugerir frases profesionales puede ser útil. Por ejemplo, el prompter de IA de Subtl puede redactar frases como "Let me think through the logic for this edge case" (Déjame analizar la lógica para este caso extremo) en tiempo real, ayudándote a mantener una conversación fluida sin perder la concentración.

Cómo manejar pistas y comentarios

Si tu entrevistador te ofrece una pista, no es una señal de fracaso. Es una invitación a colaborar. La forma en que recibes e incorporas los comentarios es una habilidad fundamental que están evaluando. Escucha con atención, agradece la pista y explica cómo la usarás.

Frases para agradecer una pista

  • "That's a great point. Using a set here would indeed make the lookup much faster. I'll change my approach." (Ese es un buen punto. Usar un set aquí haría la búsqueda mucho más rápida. Cambiaré mi enfoque).
  • "Thank you, that clarifies it. I see now that I was overcomplicating the base case for the recursion." (Gracias, eso lo aclara. Ahora veo que estaba complicando demasiado el caso base para la recursión).
  • "Ah, I didn't consider that edge case. You're right. I need to add a check for that before the loop starts." (Ah, no consideré ese caso extremo. Tienes razón. Necesito agregar una verificación para eso antes de que comience el bucle).

Si estás realmente atascado, es mejor pedir un empujoncito que quedarte en silencio. Demuestra autoconciencia y disposición para pedir ayuda.

  • "I'm a bit stuck on optimizing the space complexity here. Could I perhaps get a small hint?" (Estoy un poco atascado en la optimización de la complejidad de espacio aquí. ¿Podría darme una pequeña pista?)
  • "I'm considering two data structures for this part, a dictionary or a simple list. I'm leaning towards the dictionary for performance, but I'm not sure. Do you have any thoughts on that?" (Estoy considerando dos estructuras de datos para esta parte, un diccionario o una lista simple. Me inclino por el diccionario por el rendimiento, pero no estoy seguro. ¿Tienes alguna opinión al respecto?)

Después de codificar: Probar y explicar

Cuando termines de escribir tu solución, no digas simplemente "Terminé". La entrevista no ha acabado. Necesitas verificar tu código y discutir su rendimiento.

  1. Prueba con un ejemplo: Recorre manualmente tu código con una entrada de muestra. Esto detecta errores y demuestra que entiendes lo que escribiste.

    • "Let's test this with the example input [3, 1, 4, 1, 5]." (Probemos esto con la entrada de ejemplo [3, 1, 4, 1, 5].)
    • "First, the map is empty. In the first iteration, we add 3 with a count of 1. In the second, we add 1 with a count of 1. In the fourth iteration, we see 1 again, so we increment its count to 2." (Primero, el mapa está vacío. En la primera iteración, agregamos 3 con un contador de 1. En la segunda, agregamos 1 con un contador de 1. En la cuarta iteración, vemos 1 de nuevo, así que incrementamos su contador a 2.)
  2. Discute la complejidad de nuevo: Reitera la complejidad de tiempo y espacio de tu solución final.

    • "The final time complexity is O(n) because we iterate through the list once. The space complexity is O(k), where k is the number of unique elements, because of the hash map." (La complejidad de tiempo final es O(n) porque iteramos a través de la lista una vez. La complejidad de espacio es O(k), donde k es el número de elementos únicos, debido al hash map).
  3. Habla sobre mejoras: Menciona brevemente cómo se podría mejorar el código si tuvieras más tiempo.

    • "If this were production code, I would add more robust error handling for different input types." (Si esto fuera código de producción, agregaría un manejo de errores más robusto para diferentes tipos de entrada).
    • "Another possible optimization, if memory were a major concern, might be to modify the input array in-place, although that has its own trade-offs." (Otra posible optimización, si la memoria fuera una gran preocupación, podría ser modificar el array de entrada in-place, aunque eso tiene sus propias ventajas y desventajas).

Errores comunes que debes evitar

  • Trabajar en silencio. Este es el error más grande. El entrevistador no puede leer tu mente. Comunica en exceso tu proceso de pensamiento.
  • Saltar directamente al código. Siempre aclara el problema y discute tu enfoque primero.
  • Ignorar o discutir las pistas. Considera al entrevistador como un colaborador. Incorpora sus comentarios con elegancia.
  • Rendirte cuando te atascas. Está bien hacer una pausa, pero comunica que estás pensando. Intenta depurar tu propio código en voz alta.
  • Olvidar los casos extremos. Siempre considera entradas vacías, nulos, duplicados y otros escenarios no estándar.

Una nota sobre el consentimiento y las herramientas

Si planeas usar alguna herramienta para transcripción en vivo o asistencia durante una llamada, debes ser transparente. En muchas jurisdicciones, todas las partes deben dar su consentimiento para ser transcritas o grabadas. Siempre informa al entrevistador al principio de la llamada si estás usando una herramienta de este tipo. Para más detalles, puedes revisar la guía general sobre las leyes de grabación de llamadas. Consulta nuestra guía en /law/.

Explicar tu código en voz alta en inglés es una habilidad que puedes desarrollar con la práctica. Al estructurar tu comunicación, usar frases claras y tratar la entrevista como una sesión de colaboración, puedes demostrar eficazmente tus habilidades técnicas, incluso si el inglés no es tu lengua materna.

Para prepararte para entrevistas de alto nivel, practicar con una herramienta que proporciona retroalimentación y traducción en tiempo real puede generar confianza. Subtl para Mac te ofrece una transcripción en vivo de tu conversación para que puedas revisar lo que se dijo y te ayuda a formular respuestas claras y profesionales. Obtén más información sobre su uso para /use-cases/interviews/.

entrevista técnicaentrevista de trabajocomunicación en inglésdesarrollo de software

Preguntas

¿Qué pasa si mi acento en inglés es muy marcado?

Concéntrate en la claridad, no en la perfección. Habla más despacio de lo normal y haz pausas entre oraciones. A los entrevistadores les importa mucho más tu lógica y tu capacidad para resolver problemas que tu acento.

¿Cuánto debo hablar? ¿Es posible hablar demasiado?

Busca narrar de forma constante tus pensamientos técnicos. Explica tu plan general, las ventajas y desventajas que estás considerando y el propósito de los bloques de código clave. No necesitas narrar cada caracter que escribes. Si el entrevistador comienza a hablar, es una señal para que hagas una pausa y escuches.

¿Qué hago si no sé el término exacto en inglés para una estructura de datos?

Descríbela por su función y propiedades. Por ejemplo, si no recuerdas 'hash map', puedes decir 'a data structure that stores key-value pairs and gives me very fast lookups' (una estructura de datos que almacena pares de clave-valor y me da búsquedas muy rápidas). Lo que más importa es el concepto.

¿Está bien escribir comentarios en mi código durante la entrevista?

Sí, puede ser útil, especialmente como marcadores de posición. Podrías decir: 'I'll add a quick comment here to remind myself to implement the sorting logic next' (Voy a agregar un comentario rápido aquí para acordarme de implementar la lógica de ordenamiento a continuación). Sin embargo, tu explicación verbal siempre es más importante que los comentarios en el código.

¿Qué debo hacer si el entrevistador está en completo silencio?

No dejes que su silencio interrumpa tu ritmo. Continúa con tu proceso de pensar en voz alta. También puedes interactuar proactivamente con ellos haciendo una pregunta sencilla, como 'Does this approach make sense so far?' (¿Tiene sentido este enfoque hasta ahora?), para verificar.

Cómo ayuda Subtl con esto

Pruébalo en tu próxima llamada

40 minutos al mes gratis, sin tarjeta. macOS 13 o posterior.

Sigue leyendo