1. What is the difference between depth-first search (DFS) and breadth-first search (BFS)?
2. Explain the time complexity of quicksort and its worst-case scenario.
3. How does the merge sort algorithm achieve stability?
4. What are the advantages of using a hash table over a binary search tree?
5. Describe the concept of a topological sort and its applications.
6. How does the A* search algorithm work?
7. Explain the difference between dynamic programming and recursion.
8. What is a Fibonacci heap, and how does it improve the performance of priority queues?
9. Describe the concept of amortized analysis with an example.
10. What is the Bellman-Ford algorithm used for, and what are its limitations?
11. Explain the concept of a trie and its use in searching for strings.
12. How does the Knuth-Morris-Pratt (KMP) algorithm optimize string matching?
13. Describe how to implement a balanced binary search tree and its benefits.
14. What is the significance of the master theorem in analyzing divide-and-conquer algorithms?
15. Explain the concept of a red-black tree and its properties.
16. What are the differences between static and dynamic programming languages in the context of algorithms?
17. Describe the significance of the "greedy choice property" in greedy algorithms.
18. What is the traveling salesman problem, and how can it be approached using heuristics?
19. Explain how the Floyd-Warshall algorithm finds all pairs shortest paths.
20. What is the difference between strong and weak connectivity in directed graphs?
21. Describe how to implement a bloom filter and its applications.
22. What is the significance of the minimum spanning tree (MST) in network design?
23. Explain Prim’s algorithm for finding a minimum spanning tree.
24. How does Kruskal’s algorithm differ from Prim’s algorithm?
25. What are some applications of depth-first search beyond graph traversal?
26. Describe the concept of a segment tree and its use in range queries.
27. Explain the significance of hashing and how it can lead to collisions.
28. What are NP-hard and NP-complete problems?
29. How does memoization improve the performance of recursive algorithms?
30. Describe a simple algorithm for solving the subset-sum problem.
31. What is the significance of the pigeonhole principle in combinatorial problems?
32. Explain the concept of dynamic connectivity in graphs.
33. How does the top-down and bottom-up approach differ in dynamic programming?
34. What is the concept of a convex hull, and how is it computed?
35. Describe the significance of the Johnson’s algorithm in graph theory.
36. How do you implement a disjoint-set data structure?
37. Explain the concept of a network flow and its applications.
38. What is the difference between a directed and an undirected graph?
39. Describe a simple backtracking algorithm for solving the n-queens problem.
40. What is the significance of graph bipartiteness, and how can it be determined?