¿Estoy perdiendo el tiempo implementando la estructura de datos elementales (Stacks, Queues y LinkedLists) como parte de la preparación para una entrevista de prácticas en Google?

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:

  1. 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.

    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.

  2. Á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.
  3. 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.

  4. 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.
  5. 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 !

Yo no diría eso. Pedirle a alguien que implemente una estructura de datos en la pizarra es una pregunta de entrevista bastante típica, especialmente para una pasantía.

Dicho esto, los tres que mencionaste son bastante básicos; Sugeriría probar estructuras más complicadas, como árboles de búsqueda binarios o mapas hash. Por supuesto, también querrá encontrar otros problemas de práctica (CTCI, HackerRank, Project Euler, etc.), pero esto parece un buen comienzo.

¡Buena suerte!