A partir de los detalles: OP había trabajado durante 2 años en TI. Esto significa que OP tiene al menos una experiencia básica con uno de los principales lenguajes estáticamente tipados como Java o C ++. Por lo tanto, me estoy saltando la parte en la que el OP tiene que aprender un idioma (de lo contrario, OP puede aprender el nicho relacionado con Java / C ++, en cualquier lugar de Internet, practicar la escritura de código en ese lenguaje en particular).
La razón por la que sugerí un lenguaje tipado estáticamente es porque establece un mejor contexto sobre “¿qué representa qué?”, Especialmente cuando codifica sus propias estructuras de datos.
Ahora, viene la parte importante donde aprenderá estructuras de datos y algoritmos. Un tema como este exige cierta aptitud para el pensamiento cuantitativo. Para seleccionar un lugar para aprender estructuras de datos y algoritmos, tengo tres mejores opciones para usted, de las cuales puede seleccionar según el tiempo disponible que tenga para practicar.
- Opción 1 (si el tiempo disponible es de alrededor de 6 semanas):
Comience con las estructuras de datos básicas como Lista enlazada – Pila – Cola – Árboles binarios – Montón. Aprende de estructuras de datos – GeeksforGeeks. Cada vez que aprende una estructura de datos, practique preguntas relacionadas con ella. Las preguntas disponibles en GeeksforGeeks en forma de artículos presentan una solución en la misma página. Sugeriría no golpear directamente la solución. Intenta encontrar tu propio enfoque primero. Asigne un lapso de tiempo que, cuando haya expirado, pueda mirar, leer y comprender la solución. Termina todas las estructuras de datos básicos. (Opcional: más adelante tendrá una comprensión suficiente de algunas Estructuras de datos avanzadas como Segment Tree / Fenwick Tree / Trie. Esto solo se pregunta en las entrevistas en Tech Giants como Facebook, Amazon y Google).
En este momento, es posible que haya adquirido un buen grado de pensamiento cuantitativo necesario para la práctica de algoritmos. Comience con la sección de algoritmos en Algoritmos – GeeksforGeeks. Repita el mismo ciclo de lectura, resolviendo preguntas para cada paradigma de algoritmo como Divide and Conquer / Greedy. - Opción 2 (si el tiempo disponible es de alrededor de 8 a 10 semanas):
Hay una serie de secciones para estructuras de datos y algoritmos en HackerEarth conocida como Code Monk (Code Monk – Sé un mejor programador). Esta es una serie impresionante compilada por HackerEarth. En cada sección proporcionan una explicación teórica clara y concisa (ahorro de tiempo) sobre la estructura de datos / algoritmo. En la parte inferior de la sección, proporcionan un enlace de práctica a algunos problemas relacionados con esa estructura / algoritmo de datos. Esta serie se organiza gradualmente en dificultad, como programación básica y matrices / cadenas al principio (que puede omitir ya que puede estar familiarizado con ellas). Luego viene la Clasificación-Búsqueda, pocas estructuras de datos, dividir y conquistar, secciones de programación dinámica. Completa todas estas secciones presentes en Code Monk. - Opción 3 (si el tiempo disponible es más de 10 semanas):
Puede finalizar las Estructuras de datos de GeeksforGeeks que se presentan en la Opción 1. Para los algoritmos en Stanford, existe el Curso de algoritmos de Tim Roughgarden Algorithms | Coursera. Complete este curso, resuelva las tareas. Este curso establecerá un pensamiento algorítmico concreto y también brindará un conocimiento formal sobre los algoritmos.
Después de probar cualquiera de las opciones anteriores, es posible que tenga conocimiento sobre estructuras de datos y algoritmos y también cierto grado de pensamiento algorítmico. Pero cada empresa exige sus propias necesidades únicas en la Prueba de codificación o en las entrevistas en ese lugar. Necesita practicar preguntas sabias de la compañía. Para este propósito, puede practicar en la sección Company Wise en este enlace (Un portal informático para geeks). Justo antes de una o dos semanas, cuando tenga una entrevista con una empresa, puede filtrar las preguntas para esa empresa en la página anterior de GeeksforGeeks. Resuelva preguntas relacionadas con esa compañía (también hay soluciones presentes para algunas preguntas). Además, le sugiero que lea las experiencias de entrevistas de otras personas archivadas en GeeksforGeeks. Supongamos que tiene una entrevista para Amazon, luego busque en Google “Amazon Interview Experience GeeksforGeeks”. Encontrará un enlace como este Amazon Archives – GeeksforGeeks. Consulte el enlace para ver las experiencias de la entrevista. Puede que mi sugerencia sobre la experiencia de la entrevista en Google en GeeksforGeeks sea absurda, pero estas páginas archivadas no están bien indexadas en GeeksforGeeks (por lo tanto, debe buscarlo en Google).
- ¿Cómo funciona Swype?
- Cómo usar el caso del interruptor en Java
- ¿Es posible implementar dos pilas usando una matriz?
- Cómo comenzar a aprender o fortalecer mi conocimiento de estructuras de datos y algoritmos
- ¿Qué algoritmos existen para la reconstrucción de un conjunto de vectores de un diccionario de cardinalidad más pequeña?
¡Feliz codificación y la mejor de las suertes!
PD:
El marco de tiempo que mencioné para esas Opciones se calcula en función de mi experiencia personal, la experiencia de mis compañeros de lote en mi universidad y de algunos de mis colegas en mis pasantías. Cada persona es diferente, puede terminar esas opciones antes del período de tiempo mencionado o puede tomar más tiempo. Pero el orden es el mismo
TimeRequired (Opción 1) <TimeRequired (Opción 2) <TimeRequired (Opción 3).
Además, el período de tiempo depende de la cantidad de preguntas prácticas que considere resolver para cada estructura de datos / algoritmo en la opción 1 y la opción 2.