Este artículo amplía un conocido documento de preparación para la entrevista, 14 patrones para dominar cualquier entrevista de codificación ("14 patrones"), al proporcionar un punto de partida más limitado, un destino más inclusivo y una guía actualizada en el camino.
14 Patterns es útil como herramienta de preparación para entrevistas de estructuras de datos y algoritmos ("DS&A") estilo Leetcode. Las entrevistas de DS&A al estilo de Leetcode y las entrevistas de diseño del sistema conforman gran parte de la categoría más amplia llamada entrevistas de pizarra , un estilo de entrevista técnica que tradicionalmente involucra una pizarra física en el contexto de una entrevista en persona. Este estilo de entrevista es estándar para un ciclo de entrevistas Big Tech (también conocido como Big N o Tier 1). Si bien gran parte del proceso de entrevista se lleva a cabo de forma remota en estos días, el término se ha mantenido.
Estas entrevistas suelen tener algunos elementos comunes:
Las entrevistas de pizarra han tenido cierto retroceso. El repositorio Hiring Without Whiteboards GitHub es una excelente fuente sobre las empresas que no incorporan entrevistas de pizarra e información sobre los enfoques que utilizan en su lugar.
14 Los patrones pueden ser abrumadores para el recién llegado. Esta es una barrera de entrada particularmente alta para un programador no tradicional o autodidacta. ¿Hay alguna manera de que podamos reducir la cantidad de cosas para aprender, o al menos priorizar entre estos patrones? ¡Sí! Leetcode proporciona la frecuencia con la que se han visto sus preguntas en entrevistas reales. Prioricemos aquellos patrones que se usan con más frecuencia como el valor más alto y los más importantes para aprender primero.
También asegurémonos de que nuestra estrategia esté informada por múltiples recursos, no solo por los 14 patrones. GeeksforGeeks proporciona un recurso de preparación DS&A similar llamado Top 10 Algorithms in Interview Questions . El consejo de GeeksforGeeks se superpone con los 14 patrones, por lo que esencialmente tenemos 10 algoritmos recomendados por ambas fuentes y 4 patrones recomendados solo dentro de los 14 patrones. Cabe señalar que Uber me proporcionó el artículo de GeeksforGeeks para la preparación oficial de la entrevista.
GeeksforGeeks continúa agrupando sus 10 algoritmos en 8 temas. Podemos usar los datos de frecuencia de Leetcode para eliminar los dos temas menos comunes. Además, elimino el tema de la programación dinámica basado en la consulta con entrenadores profesionales de Big Tech en entrevistando.io y reforzado por discusiones en Blind . Las preguntas de programación dinámica están pasando por una ligera desaprobación en Big Tech porque se sabe que consumen mucho tiempo y proporcionan una mala señal de la calidad del candidato durante la entrevista.
Específicamente, eliminamos estos tres temas de bajo valor:
Para llegar al Top 5 de Patrones:
Como alguien que se prepara para DS&A, comenzaría con estos cinco. Busque en Leetcode tres preguntas sencillas debajo de cada tema. Completa un tema por día. A continuación, utilice Blind 75 para reforzar estos mismos temas. Después de eliminar los temas de bajo valor de Blind 75, nos quedan 7 temas de alto valor. Estos temas en realidad no son diferentes de los 5 patrones principales, solo están agrupados de una manera ligeramente diferente:
Nuevamente, complete tres preguntas fáciles de cada tema y complete un tema por día. Una vez que haya completado estos pasos, completaría un medio de cada tema antes de preocuparme por aprender nuevos patrones. Luego, pasaría a los 14 patrones. Una vez que he aprendido los catorce patrones hasta el nivel medio, puedo recurrir a otro gran recurso para expandir mi conjunto de patrones a 22.
El excelente recurso del que hablo es la herramienta de patrones Leetcode de Sean Prashad . Esta herramienta obtiene ocho patrones adicionales mediante el análisis de Blind 75 y Grokking the Coding Interview , otros dos recursos de preparación para entrevistas de DS&A bien considerados.
Finalmente, durante una entrevista en Uber, noté un patrón notable que se había dejado fuera de los 22 de Prashad, que es la técnica Divide and Conquer . Esto lleva mi total recomendado final a 23. Repito los pasos de aprendizaje a continuación con los plazos recomendados para aprender cada uno:
Aprende los 5 patrones principales en 1 o 2 semanas.
Aprende los 7 patrones clave de Blind 75 en otras 1 o 2 semanas.
Aprende las habilidades anteriores al nivel medio en otras 1-2 semanas.
Expanda los patrones conocidos a los 14 patrones en otras 2 a 4 semanas.
Expanda los patrones conocidos a los 23 patrones en otras 4 a 6 semanas.
Solo en este punto consideraría practicar preguntas difíciles.
Consideremos los patrones Top 5 y Top 7 como patrones básicos. Una vez que se sienta cómodo en el nivel medio con estas preguntas, podría ser útil probar estas dos técnicas de estudio a medida que continúa aprendiendo:
En general, intente completar de 1 a 3 preguntas fáciles, 1 mediana o 1 difícil cada día, ¡pero asegúrese de tomar suficientes días de descanso! Por favor, no pase semanas sin descanso, probablemente será contraproducente.
¿Cuánto tiempo debe estudiar antes de la entrevista? Creo que las entrevistas en sí mismas son una excelente práctica, y dudo en exigir demasiado estudio de forma bloqueada antes de comenzar las entrevistas. Francamente, dominar los 23 patrones en el nivel difícil no parece necesario ni siquiera para mí en el nivel Senior/Principal, y es algo que puede llevar años lograr.
Excluyamos los 3 temas de bajo valor de los 14 patrones y llamemos al resto los 11 patrones. Cualquiera que sea el problema que se le presente, apuntemos a resolver el problema en 20 minutos. Con ese contexto en mente, estas son algunas de mis recomendaciones por nivel de trabajo:
Nivel Inicial/Junior: siéntase seguro resolviendo uno de los 7 patrones principales en 20 minutos.
SWE II a III: