Un poco sobre mí: he tomado cientos de entrevistas de codificación en Amazon, Microsoft y Flipkart. Y recibí ofertas de la mayoría de las grandes compañías tecnológicas. (no presumir, solo establecer credibilidad).
Hay dos partes en esto: 1) Lo que un ingeniero de CS debe saber y comprender, independientemente de su entrevista en cualquier lugar o no, al igual que un médico debe saber medicina. 2) Cómo prepararse para la entrevista.
1) ¿Qué debe saber un ingeniero de software?
- ¿Qué sucede detrás de escena durante el proceso de entrevista de ingeniería de software de Palantir?
- ¿Qué tan útil es el libro "Cracking the Coding Interview" mientras aparece para entrevistas técnicas de compañías como Google, Facebook, Amazon, etc.?
- ¿Olvidé la pregunta de programación que aprendí o resolví de recursos como Cracking the Coding Interview book? Como recordar
- ¿Cómo podemos devolver los números K máximos de una matriz entera sin clasificar?
- ¿Hay algún instituto que lo capacite para descifrar entrevistas tecnológicas difíciles como Google / Amazon / Microsoft?
Si no conoce algunas de las cosas básicas y fundamentales sobre CS, entonces no debe llamarse a sí mismo un ingeniero de CS. No es el título de B.tech/BE el que tienes sino la comprensión de los conceptos que te hacen ingeniero.
a) El modelo informático: una CPU que realiza operaciones moviendo y transformando bits de una ubicación de memoria a otra. Por lo tanto, debe comprender que todo se reduce a la interacción entre la CPU y la RAM. ¿Qué es una pila / montón o qué se entiende por malloc / libre / paginación / falla de segmentación / acceso nulo, etc., todo está fuera de cómo la CPU interactúa con la RAM? Comprenda esto y comprenderá cómo funciona realmente la informática.
b) Estructuras de datos y algoritmos: ¿Entiende por qué necesitamos una estructura de datos y por qué nos esforzamos tanto para desarrollar un algoritmo? ¿Cómo se diferencian O (n) y O (n ^ 2) en la práctica, no en el concepto sino en la actualidad? Por ejemplo, intente implementar el ordenamiento de burbujas y el ordenamiento rápido y ejecútelo en una matriz de tamaño 100 millones. Ahora, una vez que comprenda la inmensa importancia de esto, intente aprender sobre los DS y Algos más comunes y comprenda cómo y POR QUÉ uno se adapta mejor a una situación que a otra. Ej: si necesito encontrar si un elemento está presente en el conjunto, ¿qué debo usar? ¿Una tabla hash? pero ¿y si necesito realizar esa operación solo 2 veces? ¿No tendría más sentido una matriz? (más de esto en la parte 2), ¿Entiende también cuándo una lista vinculada no es una gran solución y cuándo un BST es mejor que una matriz? Ahora trate de imaginar un mundo donde BST no fuera conocido por la humanidad y si fuera a inventar BST, ¿cómo podría llegar a él? ¿Cuál es la motivación detrás de BST? No digo que lo haga bien, pero al menos pruébelo, trate de pensar profundamente sobre lo que hace que BST sea especial (esto ayudará si tiene que llegar a sus propios algoritmos).
c) Sistemas operativos / redes : similar a (b), lo que más importa es “POR QUÉ” algo funciona en lugar de “CÓMO”.
d) Diseño del sistema a gran escala: para ser honesto, esto es algo que realmente puede saber solo después de una buena experiencia de esto una y otra vez. Esto es más un arte que una ciencia. Desea desarrollar sentidos que le permitan dividir un sistema grande en partes pequeñas, extraer cada una de esas partes y decidir qué servicios presta esa parte y cómo cada uno de estos microservicios se unen para lograr el servicio.
2 ) Preparación para la entrevista:
El proceso de la entrevista es defectuoso, es extremadamente injusto * PERO * en ausencia de una alternativa mejor, tendremos que soportarlo. Ejemplo personal: ni siquiera califiqué la prueba escrita para Amazon y en 7 días recibí una oferta de otro equipo de Amazon (borré todas las entrevistas (6 de ellas) con facilidad). ¿Qué cambió? Nada, solo eso (que más tarde me di cuenta), las otras personas que vinieron para la prueba escrita ya estaban al tanto de la pregunta y dieron una solución perfecta (que obviamente no conocí).
Ahora que comprende la informática, aprendamos los trucos (sí, son trucos y nada más, sigue siendo la misma persona, pero ahora sabe cómo limpiar las entrevistas):
Principios de entrevista:
a) Nunca se trata de la respuesta correcta, siempre se trata del enfoque que adoptas, la claridad de pensamiento y la metodología del proceso que empleas para * intentar * resolver el problema.
b) Comience desde la solución ingenua, y luego intente gradualmente llegar a una solución mejor, por ejemplo, ¿cómo puede eliminar ese registro (n) para buscar dentro de ese bucle O (n), quizás use una tabla hash? pero eso no aumentará la memoria requerida? ¿Está bien con el tamaño del problema dado? Pregúntele al entrevistador.
c) Escuche la pregunta correctamente, hay muchas pistas ocultas en la pregunta misma. Una vez que haya terminado con (a) / (b), ahora intente ver, si puede usar alguna propiedad de la entrada para obtener una mejor solución, ¿tal vez la entrada es caracteres de la a la z, caracteres AHA? ¿Puedo usar ahora esa tabla hash que solo tendrá el tamaño O (26)?
d) Además, las expectativas varían de una compañía a otra. por ejemplo, Amazon podría centrarse más en una solución optimizada y ser un poco indulgente con los casos de esquina, pero Microsoft preferiría que se ocupe de todos y cada uno de los rincones y que sea flexible con el algo. Puede obtener esto leyendo sobre las estrategias de entrevista de las empresas en Google o Bing.
Preparándose para la entrevista perfecta:
a) Practica preguntas de Carrercup y Geeksforgeek. Lo que desea aprender no es la solución del problema, sino * CÓMO * resolver dichos problemas, cómo abordarlo y cómo llegar a la solución. Intente resolverlo usted mismo primero y si se atasca, mire solo los golpes mínimos e intente nuevamente.
b) Lea este libro: (Descifrando la entrevista de codificación). Un poco desactualizado, pero aún proporciona información valiosa sobre cómo las principales empresas de tecnología realizan sus entrevistas. Discute 1-2 problemas de cada una de estas compañías.
c) Hackear el curso de entrevista de codificación: (Curso GetInterviewed). Un curso completo sobre cómo estructurar su respuesta, decodificando lo que hace una gran respuesta. Comprender lo que está buscando un entrevistador, escenarios de entrevistas reales 1: 1 simulacros de entrevistas para todas las rondas, como la codificación por máquina, la resolución de problemas, el diseño y las rondas de contratación.
d) Practica, practica, practica …
También rem, esas entrevistas son solo un medio para conseguir un trabajo, no son el fin en sí mismas. Lo que quieres hacer es aprender, aprender por qué algo funciona, aprender a resolver problemas complicados.
La mejor de las suertes.