【题解】百度2020校招Web前端工程师笔试卷(第三批):单选题、多选题

题目来源:牛客网公司真题_免费模拟题库_企业面试|笔试真题 (nowcoder.com)

若有错误请指正!

单选题

1

请选出3的颜色:

<style>
  ul {
      
       color: blue !important; }
  ul > li {
      
        color: green; }
  ul li + li {
      
       color: red;  }
  li {
      
        color: yellow;  }
</style>

<ul><li>1</li><li>2</li><li>3</li></ul>

答:

红色。

解:

在这里插入图片描述

li:first-of-type + li {
    
    
  color: red;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因此,红色。

请选出3的颜色 u_百度笔试题_牛客网 (nowcoder.com)

2

下列哪项transform属性可以对元素进行旋转()

A translate
B scale
C rotate
D skew

答:

C。

解:

移动translate
缩放scale
旋转rotate
倾斜skew

3

哪种方式的CSS优先级最高:

A link引入
B @import注入
C 内联方式引入
D 行内方式引入

答:

D。

解:

离元素越近,优先级越高。因此行内样式。

行内样式:
在这里插入图片描述
内联样式:
在这里插入图片描述
CSS的基础概念、行内样式(内嵌样式)、内部样式(内联样式)、外部样式(外联样式)、字体相关属性及相关练习的案例_内嵌样式和内部样式_坚持曾今曾坚持的的博客-CSDN博客

4

input元素元素可以设置不同的type类型,下面哪种类型不正确()

A submit
B file
C password
D option

答:

D。

解:

A:submit,定义提交按钮。提交按钮会把表单数据发送到服务器。
B:file,定义输入字段和 "浏览"按钮,供文件上传。
C:password,定义密码字段。该字段中的字符被掩码。

5

js数组中不会改变原有数组的方法是()

A push
B concat
C sort
D shift

答:

B。

解:

concat() 连接两个或者更多地数组,并返回结果,不会改变原数组。

6

下列哪种方法不能改变this指向()

A eval
B apply
C bind
D call

答:

A。

解:

eval()方法是计算某个字符串,并执行其中的的 JavaScript 代码。
BCD:都可以改变this指向。

7

下列对js箭头函数描述错误的是()

A 箭头函数没有原型属性
B 箭头函数不绑定this,会捕获其所在的上下文的this值,作为自己的this值
C 箭头函数可以作为构造函数,使用new
D 箭头函数不绑定arguments,取而代之用rest参数解决

答:

C。

解:

箭头函数:

  • 不绑定this、arguments
  • 不可做为构造函数、使用new
  • 因此,没有构建原型的需求,没有prototype这个属性

因此选C。

【JavaScript高级】this绑定、绑定优先级、相关面试题与箭头函数_karshey的博客-CSDN博客

8

const promiseA = Promise.resolve('a')
promiseA.then((res) => {
    
    
    console.log(res)
}).then((res) => {
    
    
    console.log(res)
})
const promiseB = Promise.resolve('b')
promiseB.then((res) => {
    
    
    console.log(res)
})
promiseB.then((res) => {
    
    
    console.log(res)
})

答:

a b b undefined。

解:

执行顺序:

在这里插入图片描述
由于A的第一层then没有返回任何值,第4个输出为undefined。

9

设任务列表有三个异步的任务,即 taskList = [taskA, taskB, taskC],想使用 async/await 配合 forEach 实现串行执行,以下哪个代码是可行的?

A

async function run() {
    
    
   taskList.forEach(async (task) => await task())
}
run()

B

async function run() {
    
    
    taskList.forEach((task) => await task())
}

run()

C

function run() {
    
    
    List.forEach(async (task) => await task())
}
run()

D 其余都不对

答:

D。

解:

forEach同/异步问题_foreach 同步_coder_coan的博客-CSDN博客

10

function fun() {
    
    
    return () => {
    
    
        return () => {
    
    
            return () => {
    
    
                console.log(this.name)
            }
        }
    }
}
var f = fun.call({
    
     name: 'foo' })
var t1 = f.call({
    
     name: 'bar' })()()
var t2 = f().call({
    
     name: 'baz' })()
var t3 = f()().call({
    
     name: 'qux' })

答:

foo foo foo。

解:

箭头函数没有自己的this,因此会去外层找this。因此每个返回的this指向的都是fun的this,即foo。

11

在 React 项目中,绑定 this 通常有如下两种写法:

class LoggingButton extends React.Component {
    
    
    handleClick = () => {
    
    
        console.log('this is:', this)
    }
    render() {
    
    
        return (
            <button onClick={
    
    this.handleClick}>
                Click me
            </button>
        )
    }
}
class LoggingButton extends React.Component {
    
    
    constructor() {
    
    
        super(props)
        this.handleClick = this.handleClick.bind(this)
    }
    handleClick() {
    
    
        console.log('this is:', this)
    }
    render() {
    
    
        return (
            <button onClick={
    
    this.handleClick}>
                Click me
            </button>
        )
    }
}

哪种写法运行效率更高?

A 箭头函数式
B 非箭头函数式
C 运行效率相同
D 无法确定

答:

B。

解:

箭头函数没有自己的this,它找this要从上下文推断,因此效率不会比非箭头函数高。

12

已知现有一个大小为4初始状态为空的栈,现在有一组数据经过这个栈后,最终的数据顺序是:2 5 4 1 3,问原始的进栈数据不可能是以下的哪组

A 1 4 5 2 3
B 5 2 3 1 4
C 3 4 5 2 1
D 4 1 3 5 2

答:

D。

解:

栈:先进后出。对D,2是最后一个进去的元素,但要求最先出,而栈的大小只为4,不够,无法达成。

13

序列{20, 23, 28, 41, 61, 31, 71, 76, 15, 30}构造为完全二叉树,完全二叉树再变为最小堆后,堆所对应的的中序遍历序列可能为()

A 76, 23, 41, 61, 20, 30, 31, 15, 28, 71
B 76, 23, 41, 20, 61, 30, 15, 31, 28, 71
C 76, 20, 41, 23, 30, 61, 15, 31, 28, 71
D 76, 23, 20, 41, 61, 15, 31, 20, 28, 71

答:

B。

解:

完全二叉树:{20, 23, 28, 41, 61, 31, 71, 76, 15, 30}。

最小堆:节点的值比左右子树都要小:{15,20,28,23,30,31,71,76,41,61}

中序遍历:B。

14

有如下递归函数 test(n),其时间复杂度为多少?

int test(int n) {
    
    
    if (n <= 1) return 1;
    return (2 *  test(n - 1) + 3 *  test(n - 2));
}

答:

O(2n)

解:

每一层递归调用两次递归,所以是2n

15

属于同一进程的两个线程 T1和 T2并发执行,共享初值为 0 的全局变量 X。T1和 T2实现对全局变量 x 加 1 的伪代码分别如下:

T1:
temp1=X;
temp1=temp1+1;
X=temp1;
T2:
temp2=X;
temp2=temp2+1;
X=temp2;

2个线程进行到任意一步都能被对方打断,执行另外一个线程的代码,请问在所有可能的执行序列中,使 x 的值为 2 的序列个数有几种?

答:

解:

T1执行完后T2,或T2执行完后T1。

16

shell脚本中,需求如下:如果 ls /tmp 执行成功输出True,否则输出Fail,下列哪项正确.

A ls /tmp; [[ $# -eq 0 ]] && echo True || echo Fail
B ls /tmp; [[ $* -eq 0 ]] && echo True || echo Fail
C ls /tmp; [[ $0 -eq 0 ]] && echo True || echo Fail
D ls /tmp; [[ $? -eq 0 ]] && echo True || echo Fail

答:

D。

多选题

17

由于前端直接可被用户访问,攻击者可以轻易得到页面和通讯过程中的相关信息,进而进行恶意的攻击,关于其攻击的方式描述正确的有哪些?

A 假定站点 foo.com 的服务器架设在公司内网,提供了任意站点截图服务 foo.com/screenshot?url=xxx,恶意修改 url 中的值为内网地址,构成 SSRF 攻击,进而造成数据泄露的风险
B 网站 foo.com 提供 POST 方法的 /tansfer/to/xxx 的转账服务,由于未做 CSRF 的防范,被攻击者重复伪造该请求,形成重放攻击,造成经济损失
C 网站 foo.com 使用了非安全的 HTTP 协议,其中转账服务 POST /transfer/to/xxx,转账金额 money 在 payload 上,假定接口层面采用了随机 token 来防范 csrf 攻击,接口参数未做签名校验,此时攻击者通过篡改 money 的数值,构成中间人攻击
D 借助社会工程学的理论基础,基于用户的贪婪等心理,制作一个 qq.com 的”冒牌”中奖页面,诱导用户输入账号密码进行登录,造成隐私的泄露,属于”钓鱼”的网络欺诈行为

答:

ABCD。

18

假设一个数组采用快速排序,则下面的选项中,不可能是第3趟排序结果的是

A 4, 8, 6, 10, 12, 16, 14
B 10, 4, 6, 8, 12, 14, 16
C 8, 4, 6, 12, 10, 14, 16
D 4, 8, 6, 12, 10, 16, 14

答:

ACD。

解:

我解不出来。

19

某进程创建的若干个线程,这些线程不能共享的是

A 程序计数器
B 某线程的栈指针
C 进程打开的文件
D 全局变量
E 进程的堆空间

答:

AB。

解:

线程独享栈,共享进程堆。

20

tcp发送报文数据时,可能将多个数据包合并成一个大的数据包发送,就有可能发生粘包问题。以下可以用来解决这个问题的是?

A 发送固定长度的消息
B 包结尾增加分隔符
C 慢开始算法
D 把消息分成消息头和消息体,其中消息头上包含长度
E 利用滑动窗口实现控制

答:

ABD。

解:

出现粘包,主要是tcp为了提高效率,每次都要等足够长的数据才进行发送,接收方要等到足够长的数据才从缓冲区提取。解决的办法就是只要能把包分开就不影响传输。
A:固定长度,肯定可以; B:分隔符 D:添加长度信息。

猜你喜欢

转载自blog.csdn.net/karshey/article/details/129470558