Suponiendo que tiene suficiente tiempo libre para estudiar el resto de los temas habituales relacionados con las entrevistas, implementar estructuras de datos elementales es un buen ejercicio. Pero no te detengas demasiado en esto. El conocimiento de la implementación de estructuras de datos básicas es definitivamente una ventaja, pero la mayoría de los lenguajes de programación de alto nivel tienen construcciones preconstruidas para cada una de estas estructuras de datos.
Sugeriría planificar sus dos o tres semanas para maximizar sus posibilidades de obtener buenos resultados en las entrevistas de pasantía. Lo ideal es que estudies los problemas relacionados con los siguientes temas:
- Buscar y ordenar
Conozca los diferentes algoritmos de clasificación, la complejidad del tiempo de ejecución, la complejidad del espacio y las características especiales de cada uno (por ejemplo, cuáles son los pros y los contras de utilizar la combinación de clasificación frente a la clasificación rápida).Intente escribir diferentes algoritmos de búsqueda, variaciones de Binary Search, etc. Son muy útiles en las entrevistas si las ha escrito anteriormente.
- ¿Qué es el algoritmo y cómo usarlo en la programación?
- ¿Existen algoritmos de descenso de gradiente que intenten ajustar valores de datos que representan cada uno un promedio de puntos de datos desconocidos individualmente?
- Cómo encontrar la menor supercadena de 2 subcadenas
- ¿Qué es una cadena de Markov?
- Cómo determinar todas las condiciones, suposiciones y limitaciones para un código C # dado que calcula el valor promedio de una matriz de diferentes números
Si las preguntas de la entrevista no están directamente relacionadas con la implementación de estos algoritmos, no se moleste en escribirlas. Simplemente suponga que hay un método que ordena, y escríbalo más tarde si tiene tiempo.
- Árboles y recursividad
Practique algoritmos en árboles, la mayoría de los cuales son recursivos. Practique algoritmos para permutaciones y combinaciones, cómo construir y usar árboles de búsqueda binarios y cuándo hacerlo, etc. - Lista enlazada / Pila / Cola
Como ya ha implementado estas estructuras anteriormente, use esas implementaciones para resolver problemas. Hay varias variaciones diferentes de problemas que se resuelven usando estos y yo diría que no siempre son lo suficientemente fáciles de deducir.Nuevamente, asegúrese de tener claras las diferentes características de Listas vs Pila vs Cola. Las diferentes operaciones se manejan de manera diferente (complejidad de tiempo de wrt) en cada una de ellas. También hace una diferencia a veces, si una Lista es una lista individualmente vinculada o una lista doblemente vinculada.
- Hashing y Mapas
Los mapas son una de las estructuras de datos más utilizadas en la programación de entrevistas. Si no está familiarizado con los mapas, entonces resuelva algunos problemas en leetcode o hackerrank o sitios similares y obtendrá una buena idea. Son una excelente manera de comprender las compensaciones relacionadas con el uso del espacio frente al tiempo. - Programación dinámica
Esta es una forma un poco avanzada de resolver problemas y si eres estudiante universitario, no saber DP no es lo peor. Sin embargo, es útil. Básicamente, DP es una técnica para resolver problemas que se resuelven en partes, y la solución de las partes se almacena (para evitar cálculos repetidos). Esta solución parcial se combina en etapas para obtener la solución final.Muchas veces los problemas que tienen soluciones recursivas con tiempos de ejecución muy grandes se reducen a tiempos de ejecución más pequeños a través de DP. Es una técnica impresionante, pero necesita cierta comprensión de las relaciones de recurrencia, subestructura óptima y subproblemas superpuestos.
Yo diría que eso es para completar los puntos 1 a 4 en las dos o tres semanas que tiene. Te darán la mejor oportunidad de hacer la entrevista.
Ten confianza y piensa lógicamente. Buena suerte !