¿Cuáles son los 5 mejores algoritmos con los que debería estar familiarizado para tener éxito en una entrevista de desarrollador junior?

Los tipos son buenos. Elige dos; casi con certeza uno debería ser Quick Sort; Shell Sort es interesante, no porque sea útil, sino más bien porque es un poco difícil de creer que funciona hasta que pasas un tiempo en una implementación y juegues con ella. (también observe lo que hacen las implementaciones estándar de clasificación; quicksort es un buen punto de partida, pero generalmente cambian a otro algoritmo una vez que la partición se vuelve pequeña).

La búsqueda binaria de una lista ordenada es buena; Muchas oportunidades para ser cuidadoso y considerar cómo subdividir el espacio. Fácil de cometer errores y no manejar casos especiales (claves duplicadas, clave no encontrada) correctamente.

Los algoritmos gráficos son buenos; El algoritmo de Dykstra es simple en su núcleo y muy interesante.

Las tablas hash y hash son un área final que me gusta mucho. Algunas personas se alejan de las tablas hash porque su peor comportamiento no es bueno; a los ingenieros les encantan porque si usas una función de hashing decente y un tamaño de tabla principal, casi nunca ves que ocurra el peor de los casos y, por lo general, son muy rápidos. Las funciones hash criptográficamente fuertes son muy interesantes.

Recuerde Wirth: estructuras de datos + algoritmos = programas

Estos no son necesariamente lo mejor, pero si te estaba entrevistando, puedo pedirte que escribas uno de ellos …

Una especie de primeros principios.
Deduplicación
Búsqueda binaria.
Búsqueda de subcadenas.

Además de poder escribirlos, prepárese para discutir la eficiencia y la optimización. Estar familiarizado con la notación Big-O.

No pude compilar los 5 mejores algoritmos porque no hay ninguno, así que voy a enumerar lo que creo que es mejor. Aquí va la lista:

Ordenación por inserción o Ordenación por selección o Ordenación por burbuja

Ordenar fusión

Ordenación rápida

Búsqueda binaria

Breadth First Search (BFS) | Implementación iterativa y recursiva

Profundidad primera búsqueda (DFS) | Implementación iterativa y recursiva

Algoritmo de Lee | El camino más corto en un laberinto

Algoritmo de relleno de inundación

Algoritmo de detección del ciclo de Floyd

Problema de submatriz máxima (algoritmo de Kadane)

Subsecuencia creciente más larga

Recorridos de árboles: pedidos, pedidos anticipados, pedidos posteriores

Heap Sort

Clasificación topológica en un DAG

Estructura de datos de conjunto disjunto (Algoritmo de búsqueda de unión)

Algoritmo de Kruskal para encontrar el árbol de expansión mínimo

Senderos más cortos de una sola fuente – Algoritmo de Dijkstra

Junto con los algoritmos anteriores, se espera que cada ingeniero de software implemente estructuras de datos comunes:

Implementación de la lista vinculada | Parte 1
Implementación de la lista vinculada | Parte 2

Inserción en BST
Buscar clave dada en BST
Eliminación de BST

Implementación Min Heap y Max Heap en C ++

Implementación de gráficos usando STL
Implementación de gráficos en C ++ sin usar STL

Implementación de Trie | Insertar, buscar y eliminar
Implementación Trie eficiente en memoria usando Map | Insertar, buscar y eliminar

Junto con estos, también se espera que esté familiarizado con otros paradigmas de programación como Backtracking, Dynamic Programming y Greedy Algorithms y conceptos como Hashing.

Espero que esto ayude.

More Interesting

¿Qué algoritmo se utiliza en los puntos de calificación para las clasificaciones de cricket ICC?

¿Cómo crean los algoritmos los programadores de software?

Si f (n) es O (g (n)) yf (n) es O (h (n)), entonces cuál de las siguientes afirmaciones debe ser verdadera: f (n) + g (n) es O (h (n)), g (n) + h (n) es O (f (n)), f (n) es O (g (n) + h (n)), o ninguno de los anteriores?

¿Cómo se implementa la cola prioritaria en C ++? ¿Cómo se hace usando STL?

¿El aprendizaje automático funciona modificando algoritmos o modificando datos y variables?

Hay dos imágenes ¿Hay algún algoritmo que pueda decirnos si una imagen se recorta de la otra?

¿Cuáles son algunos proyectos geniales de verano de informática personal en IoT y / o algoritmos?

¿Cuál es el significado de la simulación de recursividad?

Cómo mejorar las estructuras de datos y algoritmos

¿Se puede demostrar que es imposible volver a un entero inicial mayor que uno si aplica un algoritmo de multiplicar por tres y agregar uno cuando es impar y dividir por dos si es par?

¿Qué método es el más adecuado para resolver problemas de programación de enfermería, programación dinámica o algoritmos genéticos, y por qué?

¿Cuál es la forma correcta de fusionar dos algoritmos de cifrado simples, sin causar un problema de cifrado?

¿Un cerebro humano tiene un algoritmo? Si se descifran los algoritmos del cerebro humano, ¿qué sucede? ¿Se usa en inteligencia artificial?

¿Cuáles son algunos algoritmos de aprendizaje automático que pueden ayudarme a encontrar las similitudes o diferencias entre las ideas textuales?

¿Resolver todos los problemas en Project Euler facilita la resolución de problemas en Topcoder?