paint-brush
5 a 23 patrones para dominar cualquier entrevista de codificaciónpor@johnvandivier
19,698 lecturas
19,698 lecturas

5 a 23 patrones para dominar cualquier entrevista de codificación

por John Vandivier2022/02/17
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Este artículo amplía un conocido documento de preparación para entrevistas, [14 Patterns to Ace Any Coding Interviews (“14 Patterns”), al proporcionar un punto de partida más limitado, un destino más inclusivo y orientación actualizada en el camino. Las entrevistas de DS&A al estilo de Leetcode y las entrevistas de diseño del sistema constituyen gran parte de la categoría más amplia llamada [Entrevistas de pizarra]. Estas entrevistas suelen tener algunos elementos comunes: Un entrevistador le pide a un candidato que escriba un programa para resolver un problema técnico que recuerda a algún problema. en [Leetcode]

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - 5 a 23 patrones para dominar cualquier entrevista de codificación
John Vandivier HackerNoon profile picture

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.


Patrones de entrevista


Estas entrevistas suelen tener algunos elementos comunes:


  1. Un entrevistador le pide a un candidato que escriba un programa para resolver un problema técnico que recuerda a algún problema en Leetcode , o en muchos casos tomado directamente de esa fuente.
  2. Estos problemas generalmente se resuelven utilizando tipos de datos abstractos, en contraste con otros problemas técnicos que podrían resolverse utilizando el conocimiento del dominio, técnicas específicas del idioma, bibliotecas o servicios de la industria. Este último es más común en las operaciones de programación del día a día.
  3. Se espera que los candidatos sean capaces de proporcionar un análisis asintótico de complejidad de tiempo y espacio para su solución algorítmica.
  4. También hay muchas otras características comunes. Lo recomendaría a un recurso como entrevistando.io para obtener más detalles.


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:


  1. Teoría de los números
  2. Manipulación de bits
  3. Programación dinámica


Para llegar al Top 5 de Patrones:


  1. gráficos
  2. Listas vinculadas
  3. Algoritmos de clasificación y búsqueda
  4. Algoritmos de árbol
  5. Manipulación de cadenas y matrices


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:


  1. Formación
  2. Grafico
  3. Intervalo
  4. Lista enlazada
  5. Matriz
  6. Cuerda
  7. Árbol


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.


Pensamientos finales


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:


  1. Aprende los 5 patrones principales en 1 o 2 semanas.

  2. Aprende los 7 patrones clave de Blind 75 en otras 1 o 2 semanas.

  3. Aprende las habilidades anteriores al nivel medio en otras 1-2 semanas.

    1. Tenga en cuenta que los 5 principales y los 7 principales se superponen sustancialmente, por lo que está bien completar tan solo 5 problemas en este paso.
  4. Expanda los patrones conocidos a los 14 patrones en otras 2 a 4 semanas.

  5. Expanda los patrones conocidos a los 23 patrones en otras 4 a 6 semanas.

    1. Nuevamente, notará que muchos de estos patrones se superponen entre sí. Por ejemplo, la recursividad es una categoría de patrones amplia que agrupa el retroceso, divide y vencerás, DFS y otras estrategias. Como resultado, es posible que pueda practicar los 23 patrones con quizás una docena de preguntas más o menos.
  6. 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:


  1. Una técnica interesante aquí es tratar de ver una pregunta e identificar las estrategias óptimas para resolverla, sin molestarse en escribir la implementación. Esta técnica puede permitirle revisar algunas preguntas medianas o difíciles en el tiempo que le tomaría resolver completamente algunas preguntas fáciles.
  2. ¡Experimenta con lo que funcione para ti! Personalmente, sigo una "regla de los 20 minutos" en la que busco la solución si no estoy satisfecho con mi progreso después de 20 minutos de trabajo en un problema.


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:


  1. Nivel Inicial/Junior: siéntase seguro resolviendo uno de los 7 patrones principales en 20 minutos.

  2. SWE II a III:

    1. Honestamente, he visto tanta variación en la dificultad de estas entrevistas que las estoy agrupando en el mismo nivel de preparación.
    2. Siéntase cómodo resolviendo cualquier fácil y moderadamente cómodo resolviendo un medio de los 11 patrones principales.
    3. Siéntase algo cómodo (más del 25% de probabilidad de éxito) resolviendo un problema de los 11 patrones principales en 40 minutos.
    4. Considere capacitarse con un servicio como entrevistar.io o practicar hasta obtener la luz verde de otro ingeniero actual de Big Tech.