Con el segundo gran auge tecnológico de Silicon Valley, los ingenieros han tenido una demanda increíblemente alta tanto por las nuevas empresas como por los gigantes tecnológicos. Para aquellos que tienen experiencia en ingeniería o están estudiando ciencias de la computación, el mundo es su ostra en este momento.
Dicho esto, las empresas no solo están regalando empleos. Los programadores aún necesitan pasar por procesos de entrevistas especializadas, incluida la entrevista técnica a veces temida.
Prepararse para esto puede ser una experiencia difícil y confusa. ¿Debería estudiar proyectos técnicos específicos o, en general, actualizar muchos temas? ¿Deberías practicar en una computadora o con un amigo?
Como tercer ingeniero en Pocket Gems, que cuenta con unos 165 empleados técnicos, he realizado cientos de entrevistas telefónicas y en el sitio. Durante este tiempo, he aprendido mucho sobre cómo prepararse adecuadamente para uno. Estos son los consejos que necesita para concretar su próxima entrevista técnica.
Centrarse en los fundamentos
Los entrevistadores principalmente le harán preguntas sobre sus fundamentos: estructuras de datos, análisis de complejidad algorítmica, diseño de clases y similares. Estas serán preguntas directamente sobre los fundamentos (por ejemplo, use X para hacer Y) y preguntas para las cuales usará sus fundamentos (más sobre eso a continuación).
Piense en los fundamentos como las herramientas en su caja de herramientas. Se mantendrán igual sin importar la nueva tecnología increíble que salga. Con fundamentos sólidos, estará mejor preparado para abordar problemas abiertos, los tipos de problemas que nosotros y muchas otras nuevas empresas resolvemos día a día. Al centrarse en los fundamentos, los entrevistadores pueden pasar menos tiempo configurando las preguntas de la entrevista y más tiempo viendo cómo piensas.
Por ejemplo, se le puede preguntar algo como: se le da un árbol binario y dos nodos en el árbol. Encuentre el ancestro común más bajo de los dos nodos dados en el tiempo O (n).
A través de esta pregunta, el entrevistador busca ver qué tan bien puede comunicar su proceso de pensamiento y solución. La forma en que piensa el problema, organiza sus pensamientos y comunica su respuesta a menudo es tan importante como su conclusión. Trabajamos en entornos complejos y en constante cambio y necesitamos personas que puedan resolver problemas difíciles y comunicarlos de manera efectiva a sus compañeros técnicos y no técnicos.
Para esta área de la entrevista, debe sentirse cómodo discutiendo cosas como cadenas, matrices, sintaxis básica, tipos de datos, listas vinculadas, árboles, gráficos, pilas, colas y tablas hash. Ah, y asegúrate de poder responder a FizzBuzz sin pestañear.
Esté preparado para resolver las cosas de diferentes maneras
Cada uno de sus fundamentos tiene ventajas y desventajas y ofrece una solución única para un tipo particular de problema. Después de que los entrevistadores le hagan una pregunta únicamente sobre sus fundamentos, es probable que vean cómo puede usarlos en la práctica. Esto se logra haciendo preguntas abiertas que se pueden resolver de varias maneras.
Una pregunta de ejemplo aquí sería: se le da una ecuación aritmética como una cadena. Esta ecuación tendrá un solo dígito 0-9, suma, resta, multiplicación y paréntesis. Escribe una función que tome esta ecuación y calcule la respuesta correcta. Las entradas de ejemplo incluyen "1 + 1" y "2 * (1 + 9) - ((2 + 5) -9").
Como antes, el entrevistador quiere ver cómo desglosa las preguntas abiertas y su proceso de pensamiento al elegir su solución. Lo que es más importante, quieren ver que puede comunicar efectivamente problemas complejos.
No importa cuál sea la pregunta o la solución que elija, ¡asegúrese de pensar en voz alta! Si tiene diferentes formas de resolver el problema, analice las opciones antes de decidir cuál usar. Ayuda al entrevistador a ver y comprender su proceso de pensamiento. Además, el entrevistador puede recomendar una solución sobre las demás porque él o ella sabe que los demás pueden tener ciertas dificultades o pueden estar fuera del alcance de la entrevista.
No tenga miedo de hacer preguntas si algo no está claro o si no se proporcionan muchos detalles. Estos muestran que usted también está pensando, y le dan al entrevistador una idea de cómo trabajaría con los demás. Asegúrese de hacer preguntas aclaratorias para comprender completamente la pregunta y de que no está ampliando el alcance del problema (por ejemplo, ¿Cuáles son algunas entradas de ejemplo? ¿Tengo que preocuparme por dividir por 0? ¿Debo preocuparme por ¿horario de verano?)
Finalmente, asegúrese de revisar verbalmente algunos casos de prueba antes de decir que ha terminado. Esto le permite verificar el código y mostrarle al entrevistador que está verificando su código. Tan fácil como sería hacer entrevistas de trabajo, desafortunadamente no podemos leer su mente.
Entonces, mientras se prepara, practique resolver preguntas con diferentes herramientas de su caja de herramientas para desarrollar una intuición al respecto. Sepa cuándo usar cada una de sus herramientas para que no se tropiece durante la entrevista. Y asegúrese de practicar la descripción completa de su proceso de pensamiento; esta puede ser la parte más difícil para los programadores que están acostumbrados a trabajar de forma aislada.
Práctica práctica práctica
Cuanto más practiques, mejor preparado estarás para la entrevista técnica de codificación. Esto es cierto para la mayoría de las cosas, pero especialmente relevante para las entrevistas técnicas: realmente requieren que usted caliente su cerebro.
Aquí hay algunos consejos para ayudarlo a aprovechar al máximo su tiempo de práctica:
- Asegúrese de simular el entorno de la entrevista. Date un límite de tiempo para los problemas. Si vas a hacer una entrevista telefónica, practica tanto en Stypi como en Google Docs. (Lo sé por mí mismo, no tener autocompletado y resaltado de sintaxis me ha hecho tropezar en entrevistas telefónicas). Si vas a hacer una entrevista en persona, practica hacer problemas en papel o en una pizarra.
- Pídale a un amigo no técnico que le haga las preguntas de la entrevista y que lo guíe a través de sus respuestas. Si puede explicárselo, estoy seguro de que puede explicárselo a su entrevistador técnico.
- No sientas que estás haciendo trampa si usas algunas de las herramientas de preparación que existen. A menudo ofrecen una gran comprensión y practican preguntas. Mis favoritos son sitios web como TopCoder y los libros Head First . Algunos otros libros que hablan más sobre el proceso de la entrevista son Programación de entrevistas expuestas y descifrar la entrevista del código .
Las entrevistas de codificación técnica pueden parecer bastante desalentadoras, pero con los tipos correctos de práctica enfocada, estará listo para obtenerlas. Recuerde concentrarse en su pan y mantequilla, los fundamentos y practicar mucho. Siga los consejos anteriores y estará preparado para su próxima entrevista técnica de codificación.
¿Quieres más información? Recientemente presenté este tema en la Conferencia de Carrera de Ingeniería / Tecnología de UC Berkeley. ¡Mira mis diapositivas de la charla a continuación para obtener más ideas y recursos!




