C#面试题更新 2026-08-05

请解释 C# 中 PriorityQueue 的含义,并说明其典型用法。

技术原理方案权衡C#

考察说明

考查对 C# 集合类型中 PriorityQueue 的概念理解与实际应用能力。

回答思路

  1. 【回答框架 1】PriorityQueue 是 C# 6.0 中引入的一种集合类型,它是一个基于优先级堆(通常是最小堆)实现的队列,其中每个元素都有一个优先级值,出队顺序按照优先级高低而非插入顺序。
  2. 【回答框架 2】使用 PriorityQueue 时,需要创建实例并指定元素类型和优先级类型,例如 PriorityQueue<string, int>,其中第一个参数是元素,第二个参数是优先级。可以使用 Enqueue 添加元素,使用 Dequeue 移除并返回优先级最高的元素(默认最小优先级)。
  3. 【回答框架 3】PriorityQueue 常用于任务调度、事件模拟、图算法(如 Dijkstra)等场景,它提供了高效的插入和删除操作,时间复杂度为 O(log n)。
  4. 【回答框架 4】在实际使用中,可以通过构造函数传入自定义比较器来改变优先级顺序,例如实现最大堆。
  5. 【回答框架 5】它并非线程安全,若在多线程环境下使用,需要外部同步机制。
  6. 【关键点 1】PriorityQueue 是优先级队列,基于最小堆实现。
  7. 【关键点 2】主要方法包括 Enqueue 和 Dequeue。
  8. 【关键点 3】默认按最小优先级出队,可自定义比较器。
  9. 【关键点 4】典型应用:任务调度、图算法。
  10. 【关键点 5】时间复杂度:插入和删除 O(log n)。
  11. 【易错点 1】不要将 PriorityQueue 与普通队列混淆,其出队顺序由优先级决定。
  12. 【易错点 2】注意默认是最小堆,若需最大堆需自定义比较器。
  13. 【易错点 3】多线程环境下需自行同步,它不是线程安全的。