cswork / OA打开练习工作台

OA 选择题 · 即时判分

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

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

只显示:SQL · 查看全部科目

复习
20 道题
  1. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE t (id INTEGER, bonus INTEGER);
    INSERT INTO t VALUES (1, 100), (2, NULL), (3, 50), (4, NULL);
    SELECT COUNT(*), COUNT(bonus), SUM(bonus), MAX(bonus) FROM t;
  2. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE t (id INTEGER, bonus INTEGER);
    INSERT INTO t VALUES (1, 100), (2, NULL), (3, 50), (4, NULL);
    SELECT
      (SELECT COUNT(*) FROM t WHERE bonus <> 100),
      (SELECT COUNT(*) FROM t WHERE bonus IS NULL);
  3. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE a (x INTEGER);
    INSERT INTO a VALUES (1), (2), (3);
    CREATE TABLE b (y INTEGER);
    INSERT INTO b VALUES (2), (NULL);
    SELECT COUNT(*) FROM a WHERE x NOT IN (SELECT y FROM b);
  4. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);
    CREATE TABLE orders (id INTEGER PRIMARY KEY, user_id INTEGER, amount INTEGER);
    INSERT INTO users VALUES (1, 'ann'), (2, 'bo'), (3, 'cy');
    INSERT INTO orders VALUES (1, 1, 30), (2, 1, 80), (3, 2, 20);
    SELECT u.name, COUNT(o.id)
    FROM users u
    LEFT JOIN orders o ON o.user_id = u.id AND o.amount > 25
    GROUP BY u.id
    ORDER BY u.id;
  5. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);
    CREATE TABLE orders (id INTEGER PRIMARY KEY, user_id INTEGER, amount INTEGER);
    INSERT INTO users VALUES (1, 'ann'), (2, 'bo'), (3, 'cy');
    INSERT INTO orders VALUES (1, 1, 30), (2, 1, 80), (3, 2, 20);
    SELECT u.name, COUNT(o.id)
    FROM users u
    LEFT JOIN orders o ON o.user_id = u.id
    WHERE o.amount > 25
    GROUP BY u.id
    ORDER BY u.id;
  6. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE p (id INTEGER, tag TEXT);
    INSERT INTO p VALUES (1, 'a'), (1, 'b'), (2, 'c');
    CREATE TABLE q (id INTEGER, v INTEGER);
    INSERT INTO q VALUES (1, 10), (1, 20), (3, 30);
    SELECT COUNT(*) FROM p JOIN q ON p.id = q.id;
  7. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE sales (region TEXT, amount INTEGER);
    INSERT INTO sales VALUES ('east', 10), ('east', 30), ('west', 5), ('west', 6), ('north', 50);
    SELECT region, SUM(amount)
    FROM sales
    GROUP BY region
    HAVING COUNT(*) > 1
    ORDER BY region;
  8. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE sales (region TEXT, amount INTEGER);
    INSERT INTO sales VALUES ('east', 10), ('east', 30), ('west', 5), ('west', 6), ('north', 50);
    SELECT region, SUM(amount)
    FROM sales
    WHERE amount > 8
    GROUP BY region
    ORDER BY region;
  9. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE a (x INTEGER);
    INSERT INTO a VALUES (1), (2), (2);
    CREATE TABLE b (x INTEGER);
    INSERT INTO b VALUES (2), (3);
    SELECT
      (SELECT COUNT(*) FROM (SELECT x FROM a UNION SELECT x FROM b)),
      (SELECT COUNT(*) FROM (SELECT x FROM a UNION ALL SELECT x FROM b));
  10. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE emp (name TEXT, salary INTEGER);
    INSERT INTO emp VALUES ('a', 100), ('b', 300), ('c', 300), ('d', 200);
    SELECT DISTINCT salary FROM emp ORDER BY salary DESC LIMIT 1 OFFSET 1;
  11. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE s (name TEXT, score INTEGER);
    INSERT INTO s VALUES ('a', 90), ('b', 80), ('c', 90), ('d', 70);
    SELECT name,
      RANK() OVER (ORDER BY score DESC),
      DENSE_RANK() OVER (ORDER BY score DESC)
    FROM s
    ORDER BY score DESC, name;
  12. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE tx (day INTEGER, amount INTEGER);
    INSERT INTO tx VALUES (1, 5), (2, -2), (3, 10);
    SELECT day, SUM(amount) OVER (ORDER BY day) FROM tx ORDER BY day;
  13. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    SELECT 7 / 2, 7 / 2.0, 7 % 3;
  14. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    SELECT 'a' || NULL, COALESCE(NULL, NULL, 'z'), NULL + 1;
  15. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE g (score INTEGER);
    INSERT INTO g VALUES (95), (72), (88), (60);
    SELECT
      SUM(CASE WHEN score >= 80 THEN 1 ELSE 0 END),
      COUNT(CASE WHEN score < 70 THEN 1 END)
    FROM g;
  16. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE e (v INTEGER);
    SELECT COUNT(*), SUM(v), MAX(v) FROM e;
  17. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE emp (name TEXT, dept TEXT, salary INTEGER);
    INSERT INTO emp VALUES ('a', 'x', 100), ('b', 'x', 200), ('c', 'y', 150), ('d', 'y', 150), ('e', 'y', 300);
    SELECT name FROM emp e1
    WHERE salary > (SELECT AVG(salary) FROM emp e2 WHERE e2.dept = e1.dept)
    ORDER BY name;
  18. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE staff (id INTEGER PRIMARY KEY, name TEXT, manager_id INTEGER);
    INSERT INTO staff VALUES (1, 'ann', NULL), (2, 'bo', 1), (3, 'cy', 1), (4, 'di', 2);
    SELECT s.name, m.name
    FROM staff s
    LEFT JOIN staff m ON s.manager_id = m.id
    ORDER BY s.id;
  19. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE emails (id INTEGER, email TEXT);
    INSERT INTO emails VALUES (1, 'a@x'), (2, 'b@x'), (3, 'a@x'), (4, 'c@x'), (5, 'b@x'), (6, 'a@x');
    SELECT email, COUNT(*)
    FROM emails
    GROUP BY email
    HAVING COUNT(*) > 1
    ORDER BY COUNT(*) DESC;
  20. 在 SQLite 里依次执行下面的语句,最后一条查询返回什么?(每行一条记录,列之间用 | 分隔)
    CREATE TABLE t (id INTEGER PRIMARY KEY, v INTEGER);
    INSERT INTO t VALUES (1, 1), (2, 2), (3, NULL);
    UPDATE t SET v = v * 10 WHERE v >= 2 OR v IS NULL;
    SELECT id, v FROM t ORDER BY id;

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