cswork / OA打开练习工作台

OA 选择题 · 即时判分

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

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

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

复习
40 道题
  1. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    console.log(typeof null, typeof NaN);
  2. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const out = [];
    for (var i = 0; i < 3; i++) out.push(() => i);
    console.log(out.map((f) => f()).join(" "));
  3. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    console.log(0 == "", 0 === "", null == undefined);
  4. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    console.log([10, 9, 1, 2].sort().join(","));
  5. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const log = [];
    log.push("A");
    setTimeout(() => {
      log.push("B");
      console.log(log.join(" "));
    }, 0);
    Promise.resolve().then(() => log.push("C"));
    log.push("D");
  6. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    console.log(typeof f, typeof g);
    function f() {}
    var g = function () {};
  7. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const obj = {
      name: "box",
      plain() {
        return [1].map(function () {
          return this?.name;
        })[0];
      },
      arrow() {
        return [1].map(() => this.name)[0];
      },
    };
    console.log(obj.plain(), obj.arrow());
  8. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    function counter() {
      let n = 0;
      return () => ++n;
    }
    const a = counter();
    const b = counter();
    a();
    a();
    console.log(a(), b());
  9. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    console.log("5" + 3, "5" - 3, "5" * "2");
  10. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const arr = [1, 2, 3];
    arr[5] = 6;
    console.log(arr.length, arr.filter(() => true).length);
  11. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const o = { b: 1, 2: "x", a: 2, 1: "y" };
    console.log(Object.keys(o).join(","));
  12. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const log = [];
    async function f() {
      log.push(1);
      await null;
      log.push(3);
    }
    f();
    log.push(2);
    setTimeout(() => console.log(log.join(" ")), 0);
  13. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    console.log(["1", "2", "3"].map(parseInt).join(","));
  14. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const { a = 1, b = 2 } = { a: undefined, b: null };
    console.log(a, b);
  15. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    console.log(NaN === NaN, Object.is(NaN, NaN), [NaN].includes(NaN), [NaN].indexOf(NaN));
  16. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const out = [];
    out.push(1);
    setTimeout(() => out.push(2), 0);
    Promise.resolve()
      .then(() => out.push(3))
      .then(() => out.push(4));
    queueMicrotask(() => out.push(5));
    out.push(6);
    setTimeout(() => console.log(out.join(" ")), 10);
  17. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const out = [];
    async function a() {
      out.push("a1");
      await b();
      out.push("a2");
    }
    async function b() {
      out.push("b");
    }
    a();
    Promise.resolve().then(() => out.push("p"));
    out.push("s");
    setTimeout(() => console.log(out.join(" ")), 0);
  18. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const out = [];
    new Promise((resolve) => {
      out.push(1);
      resolve();
      out.push(2);
    }).then(() => out.push(3));
    out.push(4);
    setTimeout(() => console.log(out.join(" ")), 0);
  19. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const out = [];
    setTimeout(() => {
      out.push("t1");
      Promise.resolve().then(() => out.push("m"));
    }, 0);
    setTimeout(() => out.push("t2"), 0);
    setTimeout(() => console.log(out.join(" ")), 5);
  20. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const out = [];
    [1, 2, 3].forEach(async (n) => {
      await null;
      out.push(n);
    });
    out.push("done");
    setTimeout(() => console.log(out.join(" ")), 0);
  21. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    Promise.resolve(1)
      .then((x) => {
        throw new Error("x" + x);
      })
      .then(() => console.log("skipped"))
      .catch((e) => e.message)
      .then((v) => console.log(v, "after"));
  22. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    var x = 1;
    function f() {
      console.log(x);
      var x = 2;
    }
    f();
  23. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    let x = 1;
    function f() {
      try {
        console.log(x);
      } catch (e) {
        console.log(e.name);
      }
      let x = 2;
    }
    f();
  24. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const out = [typeof notDeclared];
    try {
      out.push(typeof later);
    } catch (e) {
      out.push(e.name);
    }
    let later = 1;
    console.log(out.join(" "));
  25. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const before = typeof foo;
    var foo = 1;
    function foo() {}
    console.log(before, typeof foo);
  26. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    try {
      new Dog();
    } catch (e) {
      console.log(e.name);
    }
    class Dog {}
  27. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const fs = [];
    for (let i = 0; i < 3; i++) fs.push(() => i);
    let j = 0;
    const gs = [];
    for (; j < 3; j++) gs.push(() => j);
    console.log(fs.map((f) => f()).join(""), gs.map((g) => g()).join(""));
  28. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    let msg = "hi";
    const say = () => msg;
    msg = "bye";
    console.log(say());
  29. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const out = [];
    for (var i = 0; i < 3; i++) {
      ((j) => setTimeout(() => out.push(j), 0))(i);
    }
    setTimeout(() => console.log(out.join(","), i), 0);
  30. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    function once(fn) {
      let done = false;
      let result;
      return (...args) => {
        if (!done) {
          done = true;
          result = fn(...args);
        }
        return result;
      };
    }
    const init = once((x) => x * 2);
    console.log(init(5), init(10));
  31. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const out = [];
    class Counter {
      constructor() {
        this.n = 0;
      }
      inc() {
        return ++this.n;
      }
    }
    const c = new Counter();
    const inc = c.inc;
    try {
      inc();
    } catch (e) {
      out.push(e.name);
    }
    out.push(c.inc());
    console.log(out.join(" "));
  32. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    function who() {
      return this.name;
    }
    const a = { name: "a", who };
    const b = { name: "b" };
    const bound = who.bind(b);
    a.bound = bound;
    console.log(a.who(), bound(), a.bound(), bound.call(a));
  33. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    function Person(name) {
      this.name = name;
    }
    const p = new Person("Ann");
    const q = Person.call({}, "Bo");
    console.log(p.name, q);
  34. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const out = [];
    const timer = {
      label: "T",
      start() {
        setTimeout(function () {
          out.push(this === timer);
        }, 0);
        setTimeout(() => out.push(this.label), 0);
      },
    };
    timer.start();
    setTimeout(() => console.log(out.join(" ")), 5);
  35. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    const ctx = { id: 1 };
    const fn = function () {
      return this;
    };
    const arrow = () => this;
    console.log(fn.call(ctx) === ctx, arrow.call(ctx) === ctx);
  36. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    console.log(JSON.stringify([] + []), [] + {}, [1, 2] + [3]);
  37. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    console.log([] == false, [0] == false, "0" == false, null == false);
  38. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    console.log(Number(""), Number(" 12 "), Number("1e3"), parseInt("12px"), Number("12px"));
  39. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    console.log(Boolean("0"), Boolean(""), !!NaN, !![], !!{});
  40. 下面的 JavaScript 代码(Node.js 运行)输出什么?
    console.log(true + 1, null + 1, undefined + 1, "3" * "4", [2] * [3]);

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