牛客前端笔试题总结(零)

https://www.nowcoder.com/test/question/analytic?tid=51960893

一、进程从运行状态进入就绪状态的原因可能是

时间片用完。

二、在可变式分区分配方案中,将空白区在空白区表中按地址递增次序排列的是

最先适应算法

三、在 MySQL 中 Replace 在相同的主键或者唯一键的时候相当于哪一个操作

DELETE+INSERT

四、在计算机操作系统中,信号量可以用来保证两个或多个关键代码段不被并发调用,而在进入一个关键代码段之前,线程必须获取到一个信号量。现假设有 4 个进程共享同一程序段,而且每次最多允许 3 个进程进入该程序段,则信号量的变化范围是多少

-1~3

五、主机 A 与主机 B 已建立 TCP 连接,A 的 cwnd(拥塞窗口)大小初始值为 1kb,ssthresh(阈值)为 16kb,B 的 rwnd(接收缓存窗口)初始值为 8kb,一个最大报文段为 1kb,假设传输过程中未出现超时,经过 3 个 RTT(3 轮传输)后,且 B 尚未从缓存中取出任何数据时,主机 A 的发送窗口大小为

六、借助队列采用非递归的方式对二叉树进行层次遍历,遍历方向为从左至右,在遍历过程中,队列中的元素最多为多少个

/images/binary-tree.svg

七、在一棵普通的树上,a 与 b 互为兄弟节点。将树转为二叉树后,下列哪种情形最不可能发生(在将普通树转为二叉树过程中,节点在删除与自身子节点的连线时,只保留与最左侧子节点之间的连线)

A a 是 b 的右孩子

B a 是 b 的左孩子

C a 是 b 的祖先节点

D b 是 a 的祖先节点

八、这里有一张中国高校院士数目信息表(院士姓名,高校所在省区)

<!– This HTML table template is generated by emacs/table.el –>

<table border="1">

<tr>

<td align="left" valign="top">

  name     

</td>

<td align="left" valign="top">

 province

</td>

</tr>

<tr>

<td align="left" valign="top">

 ad          ws          ge          MO          wi        

</td>

<td align="left" valign="top">

     GD        ZJ        FJ        SX        ZJ  

</td>

</tr>

</table>

写 SQL 语句,查询出哪个省区,出生院士人数最多?

九、二叉树的中序遍历为[5,4,1,2,3,6],后序遍历为[4,5,2,6,3,1],新建平衡二叉树,按二叉树的前序遍历顺序将元素插入到平衡二叉树中,对于得到的平衡二叉树说法不正确的是

A 有 3 个叶子结点

B 度为 1 的结点只有结点 5

C 前序遍历为[4,2,1,3,6,5]

D 后序遍历为[1,3,2,6,5,4]

十、以下关于 JavaScript 中数据类型的说法错误的是

A 数据类型分为基本数据类型和引用数据类型

B JavaScript 一共有 8 种数据类型

C Object 是引用数据类型,且只存储于堆(heap)中

D BigInt 是可以表示任意精度整数的基本数据类型,存储于栈(stack)中

十一、以下输出结果

    const first = () => {
      console.log("first");
      return false;
    };
    const second = () => {
      console.log("second");
      return true;
    };
    console.log(first() && second());
    console.log(second() || first());

十二、两段代码的结果

    check("first");
    function check(ars) {
      console.log(ars);
    }
    check("second");
    var check = function (ars) {
      console.log(ars);
    };

十三、

    const Book = {
      price: 32,
    };
    const book = Object.create(Book);
    book.type = "Math";
    delete book.price;
    delete book.type;
    console.log(book.price);
    console.log(book.type);

十四、

    function side(arr) {
      arr[0] = arr[2];
    }
    function func1(a, b, c = 3) {
      c = 10;
      side(arguments);
      console.log(a + b + c);
    }
    function func2(a, b, c) {
      c = 10;
      side(arguments);
      console.log(a + b + c);
    }
    func1(1, 1, 1);
    func2(1, 1, 1);

十六、以下主机可以和 202.115.112.218/28 直接通信的是

A 202.115.112.205/28

B 202.115.112.225/28

C 202.115.112.195/28

D 202.115.112.212/28

十七、网络协议之间有规定的层次关系,下面选项中层次关系正确的是,上一层的网络的底层应该有下一层

十八、某个有向图如下,从顶点 v1 出发对其进行深度优先遍历,可能得到的遍历序列是(1);从顶点 v1 出发对其进行广度优先遍历,可能的到的序列是(2)

/images/directed-graph.svg

十九、学生表

    CREATE TABLE students (
      s_id VARCHAR(20) PRIMARY KEY,
      s_name VARCHAR(20) NOT NULL DEFAULT '',
      s_birth VARCHAR(20) NOT NULL DEFAULT '',
      s_sex VARCHAR(10) NOT NULL DEFAULT ''
    );

查询表中第 16-20 条数据。

二十、什么是最小堆,符合什么特点的序列能构成最小堆

二十一、 最近小明搬到了新家,他正在粉刷墙壁,但是不幸的是他粉刷的墙壁并不理想。他的墙壁是一个长度为 的格子,每个格子用 0 表示红色,用 1 表示蓝色。现在墙壁是一个非常混乱的颜色。他想将墙壁涂成左边全是蓝色右边全是红色,可以将墙壁刷成全是红色或者蓝色。请问他至少需要粉刷多少个格子墙壁刷成他想要的样子?

题解:

    // 链接:https://www.nowcoder.com/questionTerminal/748b891f208744a7b1f98cb4c45bde11?answerType=1&f=discussion
    // 来源:牛客网

    var k = readline(); //消耗掉元素个数的输入(第一行)
    var input = readline(); //这行才是有用的
    var count1 = 0;
    //统计1的个数
    for (var i = 0; i < input.length; i++) {
      if (parseInt(input[i]) == 1) count1++;
    }
    var min1 = Math.min(count1, input.length - count1); //全蓝或者全红的最小值
    //左蓝右红
    var left1 = 0;
    for (var i = 0; i < input.length; i++) {
      if (parseInt(input[i]) == 1) left1++; //统计1的个数
      var min2 = i + 1 - left1 + count1 - left1; //i+1-left1表示当前位置(索引从0开始)前面是0(红)的个数(即需要转换红为蓝的个数);(count1-left1)表示当前位置后面1(蓝)的个数(即需要转换蓝为红的个数)
      if (min2 < min1) min1 = min2;
    }
    console.log(min1);
欢迎通过「邮件」或者点击「这里」告诉我你的想法
Welcome to tell me your thoughts via "email" or click "here"