cswork / OA打开练习工作台

OA 选择题 · 即时判分

OA 里的选择题,先在这里练。

621 道原创 OA 风格选择题,覆盖 CS 基础(数据结构与算法、操作系统、数据库、网络、并发、面向对象、Linux 命令行、Git、计算机体系结构、Web 安全、设计模式、Web 前端、机器学习)、读代码(时间复杂度、Python、JavaScript、Java、C++、SQL、NumPy)和数学统计(概率、逻辑推理、统计)。读代码题里问输出的(复杂度题和标为未定义行为的除外),答案都是实际运行得出的。提交后立即判分并给出解析;答过的题按 1、3、7、21 天的间隔回来复习。CPU 调度、页面置换、TCP 和拥塞控制的计算题,可以用操作系统与网络模拟器逐步核对。

只显示:并发 · 查看全部科目

复习
22 道题
  1. 两个线程各执行 1000 次 count++(count 初值 0,没有任何同步)。最终 count 的值?
  2. 线程 A 持有锁 L1 等待 L2,线程 B 持有 L2 等待 L1。最简单可靠的修复是?
  3. 初值为 3 的计数信号量保护一段代码,最多有几个线程能同时在里面?
  4. 使用条件变量时,wait() 为什么要放在 while 循环里检查条件?
  5. “活锁”(livelock)指的是?
  6. Java 中把计数器声明为 volatile int count,再在多个线程里执行 count++,结果会怎样?
  7. 读写锁(read-write lock)允许的情形是?
  8. 基于 CAS(compare-and-swap)的无锁栈可能遇到什么经典问题?
  9. 自旋锁(spinlock)在什么情况下比阻塞式互斥锁更合适?
  10. 在默认(带 GIL)的 CPython 中,想用多核加速 CPU 密集型计算,通常应该?
  11. 可重入锁(reentrant lock)的特点是?
  12. 一个线程对同一把不可重入的互斥锁连续调用两次 lock(),会发生什么?
  13. 用信号量实现有界缓冲区的生产者-消费者,通常需要哪几个信号量?
  14. 哲学家就餐问题中,哪种做法可以避免死锁?
  15. 程序 90% 的部分可以完美并行。按 Amdahl 定律,用 4 个核最多加速约多少倍?
  16. 单线程事件循环(如 Node.js、asyncio)提供的是?
  17. 优先级反转是指?
  18. Java 中双重检查锁定(double-checked locking)的单例,实例字段为什么要声明为 volatile?
  19. 屏障(barrier)同步的作用是?
  20. 使用线程池而不是每个任务新建线程,主要好处有哪些?(多选)
  21. Java 中 Thread.sleep() 和 Object.wait() 的关键区别是?
  22. “数据竞争”(data race)的准确定义是?

作答记录只保存在这台设备的浏览器里;登录后再打开本页,会存进账号。