¿Qué debo esperar en un examen ‘técnico’ largo (junior / nivel de entrada) en ingeniería de software?

Sin entrar en demasiados detalles, diría simplemente que debe estar muy familiarizado con las estructuras de datos, los algoritmos y la eficiencia.

¿Por qué querría usar una matriz sobre una lista enlazada? Cuando es un mapa hash mejor que un conjunto hash, o viceversa. ¿Cómo haría para revertir los elementos de una lista vinculada? Cada vez que resuelva un problema, debería poder hablar sobre la eficiencia de su tiempo de ejecución (utilizando la notación Big O), y debería tener una idea de lo que sería un tiempo de ejecución óptimo. ¿Puedes notar cuando algo se está ejecutando de forma sub-óptima y sugerir cómo mejorarlo?

Alternativamente, se le puede pedir que escriba un programa corto en la computadora, que se ocupará de todo lo anterior, pero que también probará qué tan bien escribe y diseña el código.

Hay muchas otras cosas que se pueden pedir en un examen técnico, pero este es un buen punto de partida. En términos generales, el objetivo no debería ser conseguir que todo esté perfectamente correcto (¡aunque eso sería genial!) Sino ver un buen proceso de pensamiento a medida que analiza los conceptos y la capacidad de captar nuevos temas / responder bien a las sugerencias. . Eres junior, después de todo.

Para obtener un libro sobre el tema, consulte “Cracking the Coding Interview”: Cracking the Coding Interview: 150 Preguntas y soluciones de programación: Gayle Laakmann McDowell: 9780984782802: Amazon.com: Libros

También, para algunas preguntas de muestra y problemas de práctica, pruebe CarrerCup: Programming Interview Questions | CareerCup