¿Cuál es la estrategia correcta para estudiar algoritmos y prepararse para codificar entrevistas simultáneamente?

Esta es una gran pregunta y me encantaría compartir mi experiencia personal.

Cuando estaba preparando mi entrevista de pasantía, tenía exactamente la misma pregunta. En ese momento, realmente no había terminado mis cursos de estructura de datos / algoritmo y realmente quería obtener una pasantía en este espacio. Lo que escuché es que practicar preguntas de codificación es la forma más efectiva de descifrar entrevistas, lo que resultó ser el mayor error que he cometido.

Sin saber mucho sobre estructuras de datos y algoritmos básicos, no había forma de resolver esas preguntas de codificación. E incluso después de aprender las respuestas, fue difícil reutilizar el mismo enfoque en otros problemas.

Entonces, mi regla general es que no comience a resolver preguntas de codificación hasta que tenga una base sólida. Lo que hice después fue aprender rápidamente esos conceptos básicos por mí mismo. Parecía una mala decisión ya que la mayoría de mis amigos practicaban las preguntas de codificación lo antes posible. Sin embargo, resultó ser la forma más efectiva y eficiente de preparar entrevistas.

Como puede imaginar, una vez que tenga claros los conceptos básicos, tendrá una comprensión mucho más clara y profunda de las preguntas de codificación. Serás más consciente de tu fuerza y ​​debilidad. Todo se vuelve más fácil.

Además, marque Crear una base sólida: la guía completa para la preparación de la entrevista de Google. Tiene una discusión muy interesante sobre este tema y he aprendido mucho de él.

En primer lugar, ¿en qué tipo de empresa esperas que te coloquen?

No todas las empresas hacen preguntas detalladas sobre estructuras de datos y algoritmos.

Si apunta a empresas como Amazon, Microsoft, Google, Facebook , entonces sí, tendrá que estudiar las estructuras de datos y los algoritmos en detalle.

  • Encuentro que Cormen es demasiado profundo en algunos puntos. Tal profundidad no es necesaria para superar estas entrevistas. Por ejemplo, no necesita cubrir árboles B, B + y otros miles de estructuras de datos especializadas. El libro es genial, claro! Simplemente no es así desde el punto de vista de la entrevista.
  • Sin embargo, debe conocer y comprender las estructuras de datos básicas, como pilas, colas, listas vinculadas, árboles binarios, etc. Debe poder aplicarlos prácticamente a los problemas correctamente, de la manera más eficiente. Estas entrevistas son esencialmente una prueba de cuán bien puede encontrar soluciones utilizando estas estructuras de datos básicas para los problemas que se le plantean. No solo debe resolver el problema, también debe elegir las estructuras de datos más eficientes , debe elegir la combinación de complejidad de tiempo y espacio más eficiente. Para que alcance este nivel de resolución de problemas, le sugiero que lea los siguientes libros: Gayle’s Cracking the Coding Interview, Programming Interviews Exposed.
  • Del punto anterior se deduce que debe tener una buena comprensión del espacio y la complejidad del tiempo .
  • También necesitarías entender la recursividad . Para esto, le sugiero que resuelva algunos problemas fáciles en Competencia de programación, Concurso de programación, Programación en línea.
  • Debe ser competente con C / C ++ / Java . Se le pedirá que escriba código (no seudocódigo). Su código debe estar limpio y libre de errores. La programación en CodeChef también lo ayudará con este punto.
  • ¡Para comprender gráficos, programación dinámica, DFS, BFS, etc., los Tutoriales de Algoritmo están probablemente entre los mejores recursos de la historia!
  • Además de los puntos mencionados anteriormente: GeeksforGeeks: un portal informático para geeks le ayudará mucho en la preparación general. Tiene una maravillosa recopilación de experiencias de entrevistas.
  • ¡Ah, y también necesitarás aprender los conceptos básicos del sistema operativo y la red para estas entrevistas! Sin embargo, ¡solo los conceptos importantes deberían funcionar!

Para muchas otras empresas basadas en CS, entender los punteros en C / C ++ parece ser un requisito para superar las pruebas de aptitud. Y, en general, las entrevistas dan igual peso a las redes DS / OS /, programación básica y otros. Pero no se espera una codificación perfecta para estas empresas. Y solo necesita comprender DS y Algoritmos a un nivel superficial.

¡Mucha suerte con tus entrevistas! 🙂

Sugeriría comenzar a hacer los ejercicios de la entrevista Cracking the Code. Los problemas tienen un nivel medio y son bastante similares a los que se dan en la entrevista real. Un gran sitio para practicar es LeetCode. Tienen muchos problemas y también, si paga una suscripción, puede tener acceso a las preguntas de la entrevista de una empresa en particular.

Además, algo que realmente me ayudó mucho fue hacer entrevistas simuladas. Es realmente importante recibir comentarios y alguien que le enseñe cómo comportarse y pensar en una entrevista. Puede consultar las entrevistas simuladas. Tendrás una entrevista con ingenieros con experiencia en empresas como Google, Facebook o Twitter. Sabrá qué esperar y qué mejorar después de la retroalimentación dada.

Estudiar algoritmos, estructuras de datos, etc. es diferente de prepararse para esos temas con respecto a las entrevistas de trabajo.
Si te digo desde mi propia experiencia, la mejor manera de prepararse para las entrevistas es aparecer en la entrevista :-).

Sí, puede sonar raro, pero es la mejor manera. Aprendes muchos aspectos nuevos sobre dar la entrevista. Y después de cada entrevista, desarrolla su propia estrategia para aparecer en una entrevista.

Ahora de nuevo a su pregunta, preparándose para DS, Algo y prepárese para las entrevistas al mismo tiempo. Para esto lo que hago es muy simple.
Voy a sitios como AllInterviews, GeeksQuestions, CarrerCup y empiezo a leer preguntas relacionadas con los temas. También comience a responder cualquier pregunta nueva que pueda encontrar allí. También discuto varias formas posibles, mejores estrategias para responder las preguntas. Esto pulirá tu poder de pensamiento y comenzarás a pensar por tu cuenta.

Responda a su última pregunta: ¿Cuánto peso tienen DS, OS, Algo en una entrevista? Esto depende de la compañía para la que aparecen y cuál es el perfil. Si el perfil es técnico y la comany es como la ingeniería de computadoras centrales como Amazon, Microsoft, etc., entonces seguramente lo asarán mucho en DS / Algo.
Si la empresa está interesada en redes, clústeres, nubes, etc., como Amazon, es más probable que también se le pregunte sobre el sistema operativo.

¿Cuál es la estrategia correcta para estudiar algoritmos y prepararse para codificar entrevistas simultáneamente?

OK, entonces has nombrado tres problemas:

  1. No eres competente en ningún idioma.
  2. Debe familiarizarse con las estructuras de datos y los algoritmos.
  3. Quieres prepararte para las entrevistas.

Te recomiendo que elijas un idioma para ser bueno y lo utilices para resolver los problemas en un libro orientado a las entrevistas, dirigido a resolver problemas algorítmicos.

Cracking the Coding Interview está más orientado a lo que estás buscando. Es menos matemático que el CLRS, y se enfoca en las cosas que es más probable que surjan durante una entrevista.

No quiero tergiversarme: tengo el libro, pero solo he leído algunos fragmentos. Los bits que he leído han sido bastante buenos.

Mi crítica, que puede ser injusta, es que parece que el libro no cubre preguntas no codificadas que probablemente surjan en la entrevista de codificación. Eso puede ser injusto en dos niveles:

  1. Como dije, no he leído todo el libro. Podría estar allí, pero lo he extrañado (pero no lo creo, al mirar la tabla de contenido).
  2. El enfoque del libro no está en estas otras preguntas. Está exactamente en el tipo de cosas que estás preguntando aquí.

Dicho esto, no ignore estas preguntas. Es importante pensar en el tipo de preguntas “Hábleme de una vez que hubo un problema y lo solucionó”. “¿Dónde te ves en cinco años?” y “¿Cuál es tu mayor debilidad?” son dos de mis menos favoritos, pero si voy a entrevistarme, puedes apostar que pensaré al menos un poco en lo que quiero decir para ambos.

¿También me gustaría preguntar el peso de los sistemas operativos, algoritmos, DS y etc. en estas entrevistas?

Las entrevistas son siempre un poco basura. Los entrevistadores preguntarán qué creen que es importante. Entonces su pregunta es realmente “¿Qué piensan las personas con las que voy a entrevistar es importante?” Lo siento, no puedo responder eso con confianza.

Normalmente, sin embargo, creo que encontrarás diferentes tipos de preguntas. Algunos están codificando. Creo que estos son los más importantes (y, dado que, no debería sorprenderse que eso sea lo que pregunto cuando entrevisto a personas). Personalmente, trato de elegir preguntas que no se presten a soluciones como “Oh, sí, vi un algoritmo para eso. Este problema sería una mierda si no conocieras la contraseña ‘max heap’. ”

Me sorprendería pero no me sorprendería ver preguntas del sistema operativo (a menos que esté entrevistando a un equipo que escribe un sistema operativo).

Hay otras preguntas sin codificación que no me sorprendería ver que a menudo son bastante superficiales y pueden ser específicas del idioma (otra buena razón para precisar un idioma), como “¿Para qué usarías un StringBuilder (en Java)? ? ” o “¿Cuáles son los pilares de la programación orientada a objetos?”

Le recomiendo que continúe y defina la parte de codificación del programa ahora (felicidades por su previsión, por cierto: este es un buen momento para hacerlo en lugar de una semana antes de graduarse) y eche un vistazo a esos tipos de preguntas más tarde al buscar algo como “preguntas comunes de entrevista para desarrolladores” (e ignorando en gran medida las de programación en ese momento) y “preguntas de entrevista ” para el lenguaje de programación elegido.

Para descifrar entrevistas, necesitas tres cosas:

1. Buena comprensión de las estructuras de datos y el algoritmo.

2. Buena comprensión del diseño del sistema.

3. Buena práctica en sitios como topcoder, etc.

Puede comenzar con “ Resolución de problemas en estructuras de datos y algoritmos ” escrito en varios lenguajes como C, C ++, Java, C #, Python, etc. Estos libros son fáciles de seguir y están escritos para el punto de vista de la entrevista . Además, estos libros tienen el último capítulo sobre Diseño de sistemas , que también se requiere en las entrevistas.

Los enlaces de los libros en Amazon están abajo:

1. Resolución de problemas en estructuras de datos y algoritmos utilizando C

2. Resolución de problemas en estructuras de datos y algoritmos usando C ++

3. Resolución de problemas en estructuras de datos y algoritmos utilizando Java

4. Resolución de problemas en estructuras de datos y algoritmos utilizando C #

5. Resolución de problemas en estructuras de datos y algoritmos usando Python

6. Resolución de problemas en estructuras de datos y algoritmos con Visual Basic .Net

7. Algoritmos de estructuras de datos usando JavaScript

En segundo lugar, se siente cómodo con los conceptos básicos de estructuras de datos y algoritmos. Puede buscar la biblia de la estructura de datos y algoritmos: CLRS. Lado a lado, debes competir en varias competencias competitivas de programación.

Yo diría que practiques DS y algos desde el siguiente enlace
http://geegeeksforgeeks.org

Intenta entender la lógica y el código por tu cuenta. También tome algún esfuerzo para codificar en un papel blanco. A veces es difícil codificar en un documento técnico en lugar de un IDE.

Después de eso, siga los enlaces a continuación e intente resolver sus problemas.

donde trabaja el mundo

Juez en línea de LeetCode

Desbordamiento de pila

Enfócate en los patrones de diseño y serás maestro en un año.

Personalmente odio esas preguntas. ¿Eres una herramienta que quiere ser utilizada por tus superiores? Además, NO PUEDE comprender completamente los algoritmos sin implementarlos.

Sé tan bueno que la gente pelearía por tenerte. O incluso mejor, haz algo por ti mismo.

Aquí está la hoja de trucos que creé para mí:
Amit Desai: Algoritmos y estructuras de datos

More Interesting

¿Qué tipo de preguntas se hacen en la entrevista de IBPS SO IT con el oficial?

Cómo prepararse para una entrevista de trabajo de ingeniería de software

¿Cuál es la experiencia de entrevista más fascinante u horrible de la que has sido parte?

¿Cómo prepararse para la entrevista BHEL? ¿Qué temas se preguntan en técnica

¿Cuáles son los algoritmos de clasificación más comunes en una entrevista tecnológica?

¿Cuáles son todas las preguntas básicas de la entrevista para cualquier trabajo relacionado con TI y sus respuestas?

¿Cuáles son las mejores preguntas de entrevista de trabajo que alguna vez ha hecho o le han hecho?

¿Qué haces cuando no eres bueno en las entrevistas de trabajo? (Buscando historias personales)

Cómo prepararse para la entrevista para el puesto de oficial de gestión de materiales en ONGC en 2017

¿Cuál es su experiencia de sesión de entrevista más interesante como entrevistador o entrevistado? (Todos tenemos nuestras experiencias con entrevistas que dejan una resonancia duradera).

Para una entrevista de trabajo para un desarrollador web, me pidieron que criticara dos de los sitios de la compañía (desde el punto de vista del desarrollo). ¿Qué tipo de cosas debería estar buscando?

¿Cuánta diferencia hay entre las entrevistas de estudiantes de primer año y las personas con 2-3 años de experiencia en Google ya que se centran más en la resolución de problemas?

¿En qué etapa de una entrevista de trabajo se da cuenta una persona de que él o ella podrían no ser seleccionados para el trabajo?

¿Qué se incluye en una discusión técnica durante un proceso de entrevista?

¿Cuáles son los últimos temas de GD para SSB?