前端面试题(三)

240 阅读3分钟

饿了么(25问)

  1. ⼩程序⾥⾯开⻚⾯最多多少

小程序只能打开一个页面

  1. React⼦⽗组件之间如何传值

父子传值:props 子父传值:函数回调,调度中心

  1. Emit事件怎么发,需要引⼊什么

Bus.emit([type], [msg]), 引入eventBus

  1. 介绍下React⾼阶组件,和普通组件有什么区别

一个高阶组件只是一个包装了另外一个 React 组件的 React 组件

高阶组件的作用:

  • 代码复用,逻辑抽象,抽离底层准备(bootstrap)代码
  • 渲染劫持
  • State 抽象和更改
  • Props 更改
  1. ⼀个对象数组,每个⼦对象包含⼀个id和name,React如何渲染出全部的 name

用map函数遍历

  1. 在哪个⽣命周期⾥写

componentDiMount

  1. 其中有⼏个name不存在,通过异步接⼝获取,如何做

将数组放在state中,在componentDiMount发送异步请求,用返回结果修改state中的数组。

  1. 渲染的时候key给什么值,可以使⽤index吗,⽤id好还是index好

key应该使用表示唯一属性的ID,不可以用index

a. webpack如何配sass,需要配哪些loader

css-loader style-loader sass-loader

b. 配css需要哪些loader

css-loader style-loader

  1. 如何配置把js、css、html单独打包成⼀个⽂件

使用## extract-text-webpack-plugin 可以把CSS单独打包处理,js和html本来就是分开的。

  1. div垂直⽔平居中(flex、绝对定位)

flex、display:table、inline-block、margin: auto、负margin

  1. 两个元素块,⼀左⼀右,中间相距10像素

?? flex布局??

  1. 上下固定,中间滚动布局如何实现

可以用fixed固定上下。

  1. [1, 2, 3, 4, 5]变成[1, 2, 3, a, b, 5]

splice(3, 0, a, b)

  1. 取数组的最⼤值(ES5、ES6)

数组reduce的方式

  1. apply和call的区别

参数不一样

  1. ES5和ES6有什么区别
  • 加入let, const变量定义类型。

  • 对象字面量的属性赋值简写(property value shorthand)

  • 赋值解构

  • 函数参数 - 默认值、参数打包、 数组展开(Default 、Rest 、Spread)

  • 箭头函数 Arrow functions

  • 字符串模板 Template strings

  • Iterators(迭代器)+ for..of

  • 生成器 (Generators)

  • class

  • Module

  • Math + Number + String + Array + Object APIs 更新

  • Proxy

  • Symbols

  • Promises

  1. some、every、find、filter、map、forEach有什么区别

some, every 返回bool值,find返回第一个找到的值,也是返回数组,而且是map函数修改过的结果。forEach只做循环,不返回结果

  1. 上述数组随机取数,每次返回的值都不⼀样

先定义一个数组target,如:

再定义一个空数组result,作为返回结果。


var target = [1, 2, 3, 4, 5];

var result =[];

while(target.length) {
    // 生成随机数的下标
    var rIndex = parseInt(Math.random() * target.length);
    result.push(target[rIndex]);
    target.splice(rIndex, 1);
}

console.log(result);

  1. 如何找0-5的随机数,95-99呢

Math.random() * 6

95 + Math.random() * 5

  1. ⻚⾯上有1万个button如何绑定事件

使用事件代理

  1. 如何判断是button

通过tag属性

  1. ⻚⾯上⽣成⼀万个button,并且绑定事件,如何做(JS原⽣操作DOM)

使用事件代理

  1. 循环绑定时的index是多少,为什么,怎么解决

index总是最后一个,使用闭包,给节点添加属性

  1. ⻚⾯上有⼀个input,还有⼀个p标签,改变input后p标签就跟着变化, 如何处理

监听input的input事件,修改p标签

  1. 监听input的哪个事件,在什么时候触发

???