百度2021校招Web前端研发工程师笔试卷(第一批)

embedded/2024/12/23 6:10:51/

百度2021校招Web前端研发工程师笔试卷(第一批)2024/12/18

1.某主机的 IP 地址为 212.212.77.55,子网掩码为 255.255.252.0。若该主机向其所在子网发送广播分组,则目的地址可以是? 212.212.79.255

2.小牛在学习了二叉树三种遍历方式后,自己发明了一直与中序遍历相反的遍历方式,称为"反中序遍历",中序遍历的遍历方式为左孩子->根节点->右孩子,他发明的"反中序遍历"遍历方式为右孩子->根节点->左孩子,那么使用他发明的"反中序遍历"遍历如下图的二叉树,输出的节点应为?   3,1,7,5,6,2,4

                      

3.下列程序的运行结果是什么? [“”, “ is ”, “ years old”] “Lydia” 21

function getPersonInfo (one, two, three) {console.log(one)console.log(two)console.log(three)
}
const person = 'Lydia'
const age = 21
getPersonInfo `${person} is ${age} years old`
解析

ES6 入门教程

标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。

但是,如果模板字符里面有变量,就不是简单的调用了,而是会将模板字符串先处理成多个参数,再调用函数。

let a = 5; let b = 10; 
tag `Hello ${ a + b } world ${ a * b }`; 
// 等同于 tag(['Hello ', ' world ', ''], 15, 50); 

上面代码中,模板字符串前面有一个标识名tag,它是一个函数。整个表达式的返回值,就是tag函数处理模板字符串后的返回值。

函数tag依次会接收到多个参数。

function tag(stringArr, value1, value2){  // ... } 

tag函数的第一个参数是一个数组,该数组的成员是模板字符串中那些没有变量替换的部分,也就是说,变量替换只发生在数组的第一个成员与第二个成员之间、第二个成员与第三个成员之间,以此类推。

tag函数的其他参数,都是模板字符串各个变量被替换后的值。由于本例中,模板字符串含有两个变量,因此tag会接受到value1和value2两个参数。

4.若数据元素序列 9,10,11,5,6,7,12,3,4是采用下列排序方法之一得到的 第二趟升序排序后的结果,则该排序算法只能是?B

A.冒泡排序

B.插入排序

C.选择排序

D.二路归并排序

5.下列程序的运行结果是什么? 2

function addToList(item, list) {return list.push(item)
}
const result = addToList("nowcoder", ["hello"])
console.log(result)
解析

list.push()返回的值是添加元素后list的长度。

6.关于将 Promise.all 和 Promise.race 传入空数组的两段代码的输出结果说法正确的是: all 会被输出,而 race 不会被输出

Promise.all([]).then((res) => {console.log('all');
});
Promise.race([]).then((res) => {console.log('race');
});
解析
Promise.all([ ])中,数组为空数组,则立即决议为成功执行resolve( );
Promise.race([ ])中数组为空数组,就不会执行,永远挂起

7.对于一个数字组成的数组 nums,现在需要执行在不改动 nums 的基础上去重操作,返回一个新的无重复元素的数组,以下几段代码能完成这一操作的是(

(1)、(2)、(4))

(1)
const newNums = Array.from(new Set(nums))
(2)
const newNums = nums.filter((n, i) => {return nums.indexOf(n) === i
})
(3)
const newNums = nums.forEach((n, i) => {return nums.indexOf(n) === i
})
(4)
const newNums = nums.reduce((acc, n, i) => {return [].concat(acc, nums.indexOf(n) === i ? n : []
)
})
解析

filter返回一个新的、由通过测试的元素组成的数组,如果没有任何数组元素通过测试,则返回空数组。

forEach无返回值。返回的是undefined。

8.以下使用 typeof 操作符的代码的输出结果为(String)

var x = typeof x
var res = typeof typeof x;
console.log(res)
解析

由于x前面没有定义值,所以typeof x得到的是undefined字符串。总之typeof的返回值一定是字符串。

9.内存泄漏是 javascript 代码中必须尽量避免的,以下几段代码可能会引起内存泄漏的有((1)、(2))

(1)
function getName() {name = 'javascript'
}
getName()
(2)
const elements = {button: document.getElementById('button')
};
function removeButton() {document.body.removeChild(elements.button);
}
removeButton()
(3)
let timer = setInterval(() => {const node = document.querySelector('#node') if(node) {clearInterval(timer)}
}, 1000);
解析

JavaScript内存泄露的4种方式及如何避免_js防止内存修-CSDN博客

第一段代码 name 没有使用 var、let、const,name 变成了意外的全局变量,可能引起内存泄漏;第二段代码,button 元素被 elements 对象引用,removeChild 后并不能被 GC 回收,会造成内存泄漏;第三段代码及时清除定时器,避免了内存泄漏,

10.利用 sourcemap 定位线上 js 问题是必须掌握的技能,以下关于 sourcemap 文件说法不正确的是(C)

A.利用 sourcemap 可以定位到具体的出错代码文件的行、列信息

B.sourcemap 文件通过记录列号的相对位置来提高性能

C.在 chrome 渲染过程中,请求完 js 文件后会立即尝试请求对应的 sourcemap 文件并解析

D.sourcemap 文件使用了 VLQ 编码做映射表

解析

浏览器是在用户开发开发者浏览器后才会尝试请求 sourcemap 文件并解析的,普通情况并不会请求 sourcemap 文件

11.身在乙方的小明去甲方对一网站做渗透测试,甲方客户告诉小明,目标站点由wordpress搭建,请问下面操作最为合适的是B

A.访问robots.txt,查看站点结构及敏感目录

B.使用wpscan对网站进行扫描

C.使用appscan或awvs对网站进行漏洞扫描

D.寻找网站后台,进行暴力破解登录账号密码

解析

已经知道目标站点为wordpress搭建,没必要再去看robots.txt。

wpscan为wordpress站点专用扫描工具,可扫描wordpress版本、插件及漏洞、用户名泄露、暴力破解接口等。

appscan等web漏洞扫描工具很难扫到wordpress站点漏洞,直接找后台进行暴力破解账号密码效率不高。故B相对于CD,最为合适

12.如何仅获得下述值为3的DOM节点引用(不包含其他元素)  D

A .aaa > li

B .bbb ~ li

C .ccc ~ li

D .ccc + li

解析

A,>为后代选择符,即包含.aaa的所有后代

B,~为一般同辈选择符,即匹配.bbb后面所有兄弟(同级)元素,此处的值为三个元素的数组

C,此处的值为两个元素的数组

D,+为相邻同辈选择符,即匹配.bbb后面的第一个兄弟(同级)元素,此处的值为<li>3</li>

13.下面哪个选项不能实现除第一个<li>标签外的<li>标签字体都为红色,即如下注释效果 C

<ul class="word"><li class="text">1</li>       //字体为黑色<li class="text">2</li>       //字体为红色<li class="text">3</li>       //字体为红色
</ul>

A.text ~ .text {
    color: red;
}

B.word:not(:first-child) {
    color: red;
}

C.text:nth-last-child(2){
    color: red;
}

D.text + .text {
    color: red;
}

解析

A,~为一般同辈选择符,可匹配第一个.text后所有.text

B,:not(:first-child) 可匹配除第一个外的所有元素

C,:nth-last-child(2)仅匹配倒数第二个元素,即仅值为2的标签为红色

D,+为相邻同辈选择符,匹配每一个.text后的相邻.text

14.关于html的canvas的绘制、缩放,下列说法正确的是? A

A.图像绘制在canvas元素之外也可见

B.使用 drawImage方法绘制的图片可以用css3的tramsform:scale的属性实现缩放

C.默认情况下,canvas是一个可以获取焦点的元素

D.其他3个选项都不正确

解析

图像既可以绘制在canvas里,又开始绘制在canvas之外

canvas的缩放需要通过context的scale()、transform方法。

canvas不可获取焦点,所以不能在canvas元素上新增键盘事件监听器。

15.下面这段代码在浏览器中渲染出来的div高度是多少  500px

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>.heightTest {height: 1000px;min-height: 500px;max-height: 300px;}</style>
</head><body><div class="heightTest"></div>
</body></html>
解析

1、max-height和height一起使用时,取小值。

2、min-height和height一起使用时,取大值。

3、min-height、height和max-height一起使用时

当min值最小,谁在中间用谁,其余都是用min值。

16.假设tempStr字符串长度为N(N足够大),试分析以下算法平均时间复杂度和额外空间复杂度(传进来的tempStr不算额外的空间)最接近为多少?   O(N),O(1)

private boolean isPalindrome(String tempStr){int len=tempStr.length();if (len==1) return true;for (int i=0,j=len-1;i<tempStr.length()/2;i++,j--){if (tempStr.charAt(i)!=tempStr.charAt(j)){return false;}}return true;
}

17.下面可以按照从小到大顺序排列显示磁盘中各个分区利用率的命令是 C

A.du | grep -o "\<[0-9]*%.*" -o | sort -n

B.df | grep -o "\<[0-9]*%.*" -o | sort -r

C.df | grep -o "\<[0-9]*%.*" -o | sort -n

D.du | grep -o "\<[0-9]*%.*" -o | sort -m

解析

首先du命令用于显示目录或文件的大小,df用于显示分区的使用情况

sort命令中:

-n 依照数值的大小排序

-m 将几个排序好的文件进行合并

-r 以相反的顺序来排序 即降序

18.生产者与消费者模型是一个非常经典的同步与互斥问题,如下伪码实现了简单的消费者的功能(生产者的功能是往队列里面添加元素,消费者的功能是从队列里面取元素)

isEmpty(), m_notEmpty.wait(), m_notFull.notify()

void consumption() {while(____){____;}P(mutex);往队列里面取一个元素;V(mutex);————————;
}

里面的P,V就是指PV操作,mutex是互斥信号量;现有如下方法:

isFull() : 表示队列元素满了

isEmpty(): 表示队列元素为空

m_notFull.wait(): 阻塞当前进程,直到队列元素不满

m_notFull.notify(): 队列元素不满了,唤醒某个进程

m_notEmpty.wait():阻塞当前进程,直到队列元素不为空

m_notEmpty.notify():队列元素不为空了,唤醒某个进程

19.关于网络请求延迟增大的问题,以下哪些描述是正确的(BCD)

A.使用ping来测试 TCP 端口是不是可以正常连接

B.使用tcpdump 抓包分析网络请求

C.使用strace观察进程的网络系统调用

D.使用Wireshark分析网络报文的收发情况

解析

ping是基于ICMP协议不能测试TCP。 ping是网络层的,TCP是传输层的。

20.对于以下代码分析,以下选项最接近上面程序的时间复杂度是?

int test(int N)
{int i = 0;int cnt = 0;while (cnt<N){i = i + 2;cnt = cnt + i;}return i;
}

21.编程题-优质奶牛

牛牛管理这一片牧场,在这片牧场中,一共有 𝑛 头奶牛,为方便统计,它们排成了一排,编号为 1 ~ 𝑛。
现在质检员牛妹在检测这些奶牛的质量,她列出了 𝑚 条特性,只有满足所有特性的奶牛才可称之为优质奶牛。
但是,牛牛现在只知道对于某条特性,某几段连续区间内的奶牛是满足条件的,如果这样依次排查,会浪费很多时间。由于牛妹时间很急,马上要赶往下一个牧场,所以,牛牛请你帮助他筛选优质奶牛。

#include <bits/stdc++.h>
using namespace std;/*
思路
首先确定m个不同类型的区间,求同时满足这m个不同类型的区间重叠的区间
不放假设1-m分别为这m个类型区间的标记,那么只需要输出最后和为m个区间累加的值
注意一点就是对于每个标记的区间 首先要先进行简单的排序按照起点升序,终点升序,避免重复标记
*/int T,n,m,k,l,r;
int main() {cin>>T;while(T--){cin>>n>>m;vector<int> a(n+1,0);for(int i=1;i<=m;i++){cin>>k;vector<pair<int,int>> area; //记录区间for(int j=0;j<k;j++){cin>>l>>r;area.push_back({l,r});}//排序sort(area.begin(),area.end());//边进行合并边标记int start=1,ed=0; //标记当前最右和最左端点for(int j=0;j<k;j++){if(area[j].first>ed){//说明当前区间与前面不重叠 那么将前面标记区间都增加for(int p=start;p<=ed;p++) a[p]+=i;//更新起点和终点start=area[j].first;ed=area[j].second;}else {//说明有重叠部分 那么合并一下ed=max(ed,area[j].second);}if(j==k-1){//说明是最后一段了 不管那种情况都需要计算最后一段区间for(int p=start;p<=ed;p++) a[p]+=i;}}// for(int j=1;j<=n;j++) cout<<a[j]<<" ";// cout<<endl;}//检查哪些是满足和为(1+m)*m/2的int sum=(1+m)*m/2,cnt=0;;vector<int> ans;for(int i=1;i<=n;i++){if(a[i]==sum) {cnt++;ans.push_back(i);}}cout<<cnt<<endl;for(int i=0;i<ans.size();i++) cout<<ans[i]<<" ";cout<<endl;}return 0;
}

22.HTML题-分页

本题展示了一个分页组件,界面中存在id=jsContainer的节点A,系统会随机实例化各种Pagination实例,请按照如下要求补充完成Pagination函数。
1、最多连续显示5页,居中高亮显示current页(如demo1所示)
2、total <= 1 时,隐藏该组件(如demo2所示)
3、如果total<=5,则显示全部页数,隐藏“首页”和“末页”元素(如demo3所示)
4、当current居中不足5页,向后(前)补足5页,隐藏“首页”(“末页”)元素(如demo4和demo5所示)
5、total、current均为正整数,1 <= current <= total
6、当前界面中,节点A为系统执行 new Pagination(节点A,20, 10) 后的展示效果
7、请不要手动修改html和css
8、不要使用第三方插件

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><style>.demo{margin-bottom: 20px;border: 1px solid #ebedf0;border-radius: 2px;padding: 10px;
}
.demo div{margin-bottom: 10px;font-size: 14px;
}.pagination{box-sizing: border-box;margin: 0;padding: 0;font-size: 14px;line-height: 1.5;list-style: none;display: inline-block;
}
.pagination.hide{display: none;
}
.pagination li{position: relative;display: inline-block;float: left;height: 32px;margin: 0;padding: 0 15px;line-height: 30px;background: #fff;border: 1px solid #d9d9d9;border-top-width: 1.02px;border-left: 0;cursor: pointer;transition: color 0.3s, border-color 0.3s;
}
.pagination li:first-child{border-left: 1px solid #d9d9d9;border-radius: 4px 0 0 4px;
}
.pagination li:last-child{border-radius: 0 4px 4px 0;
}
.pagination li:first-child{box-shadow: none !important;
}
.pagination li.current{border-color: #1890ff;color: #1890ff;border-left: 1px solid #1890ff;
}
.pagination li.current:not(:first-child) {margin-left: -1px;
}</style>
</head><body><div><div id="jsContainer"><ul class="pagination"><li>首页</li><li>8</li><li>9</li><li class="current">10</li><li>11</li><li>12</li><li>末页</li></ul></div><div class="demo"><div>(Demo1) total: 10,current: 4</div><ul class="pagination"><li>首页</li><li>2</li><li>3</li><li class="current">4</li><li>5</li><li>6</li><li>末页</li></ul></div><div class="demo"><div>(Demo2) total: 0,current: 0</div><ul class="pagination hide"></ul></div><div class="demo"><div>(Demo3) total: 3,current: 2</div><ul class="pagination"><li>1</li><li class="current">2</li><li>3</li></ul></div><div class="demo"><div>(Demo4) total: 10,current: 2</div><ul class="pagination"><li>1</li><li class="current">2</li><li>3</li><li>4</li><li>5</li><li>末页</li></ul></div><div class="demo"><div>(Demo5) total: 10,current: 9</div><ul class="pagination"><li>首页</li><li>6</li><li>7</li><li>8</li><li class="current">9</li><li>10</li></ul></div>
</div><script type="text/javascript">function Pagination(container, total, current) {this.total = total;  //总页数this.current = current; //当前页数this.html = html;  this.val = val;this.el = document.querySelector('.pagination'); //TODO: 创建分页组件根节点if (!this.el) return;this.el.innerHTML = this.html();container.appendChild(this.el);//total <= 1 时,隐藏该组件if (total == 0) this.el.className = 'pagination hide'; //TODO: 判断是否需要隐藏当前元素function html() {if (this.total <= 1) return '';const lisArr = [];let start;let end;// start和end的三种情况if (this.current - 2 >= 1 && this.current + 2 <= this.total) {// 1.正好current在中间start = this.current - 2;end = this.current + 2;} else if (this.current - 2 < 1) {// 2. start不满足要求啊,太小了,截断,同时考虑total很小的情况start = 1;end = Math.min(this.total, 5);} else if (this.current + 2 > this.total) {// 2.end不满足要求,同时totol可能很小end = this.total;start = Math.max(this.total - 4, 1);}// 到底渲染多少的li,是由start和end来决定的for (let i = start; i <= end; i++) {lisArr.push(`<li>${i}</li>`);}// 给current添加类名lisArr[this.current - start] = lisArr[this.current - start].replace('<li>', '<li class="current">')// 判断是否要显示首页和末页if (start > 1) lisArr.unshift('<li>首页</li>');if (end < this.total) lisArr.push('<li>末页</li>');return lisArr.join('');}function val(current) {if (arguments.length === 0) return this.current;if (current < 1 || current > this.total || current === this.current) return;this.current = current;this.el.innerHTML = this.html();};
}</script>
</body></html>


http://www.ppmy.cn/embedded/147993.html

相关文章

SSD能否取代HDD纷争2.0

有关数据预测到2028年&#xff0c;全球产生的数据总量将达到394ZB。这表明在全球范围内&#xff0c;数据的价值比以往任何时候都更为重要&#xff0c;因为数据的产生和存储能力正在迅速增长。这种增长可能受到各种因素的推动&#xff0c;包括数字化转型、物联网(IoT)设备的激增…

网络安全概论——身份认证

一、身份证明 身份证明可分为以下两大类 身份验证——“你是否是你所声称的你&#xff1f;”身份识别——“我是否知道你是谁&#xff1f;” 身份证明系统设计的三要素&#xff1a; 安全设备的系统强度用户的可接受性系统的成本 实现身份证明的基本途径 所知&#xff1a;个…

BGP的六种状态分别是什么?

此文章主要简单介绍下BGP的六种状态 1.Idle BGP会话的初始状态&#xff0c;路由器在此状态下不与任何BGP邻居通信&#xff0c;通常标识会话还没有开始或由于错误而未能启动&#xff0c;一般来说&#xff0c;缺乏去往BGP对等体的路由是导致BGP路由器其状态一直处于idle状态的常…

Linux下基于最新稳定版ESP-IDF5.3.2开发esp32s3入门hello world输出【入门一】

开发环境搭建&#xff1a;Linux-Ubuntu下搭建ESP32的开发环境的步骤&#xff0c;使用乐鑫最新稳定版的esp-idf-CSDN博客 一、安装好开发环境后&#xff0c;在esp目录下再创建一个esp32的目录【用于编程测试demo】 二、进入esp32目录&#xff0c;打开终端【拷贝esp-idf的hello工…

Go语言学习(二)

一、Go项目结构抽象 ├── bin # 存放项目过程中生成的可执行文件 ├── script # 存放项目中需要使用的脚本文件&#xff0c;shell脚本&#xff0c;或者项目使用的功能性脚本 ├── document # 项目的说明文档 │…

《开启微服务之旅:Spring Boot 从入门到实践》(三)

自动配置原理 配置文件到底能写什么&#xff1f;怎么写&#xff1f;自动配置原理&#xff1b; https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#common-application-properties 自动配置原理 SpringBoot启动的时候加载主配置类&#xff0c;开启…

Python 从入门到实战46(Matplotlib绘制常用表)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;可以熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们学习了pandas数据操作的相关基础知识。今天学习一下M…

Nginx界的天花板-Oracle 中间件OHS 11g服务器环境搭建

环境信息 服务器基本信息 如下表&#xff0c;本次安装总共使用2台服务器&#xff0c;具体信息如下&#xff1a; 服务器IP DNS F5配置 OHS1 172.xx.xx.xx ohs01.xxxxxx.com ohs.xxxxxx.com OHS2 172.xx.xx.xx ohs02.xxxxxx.com 服务器用户角色信息均为&#xff1a;…