面试时间: 2020年12月15日下午3.00点-3.30点
面试形式: 语音面试(一面)
-
自我介绍
参考模板:
你好,我是XX,毕业于XX大学。现就职于XX公司,有X年开发经验,公司主要使用技术栈为React+AntDesign+Redux进行开发 -
ES6新特性
const 和let
箭头函数
函数的参数默认值
对象和数组的结构
模板的导入和导出
模板字符串 -
const和let不同
区别 | const | let |
---|---|---|
变量还是常量 | 常量 | 变量 |
初始化 | 一旦声明,必须进行初始, 否则报错 | 不必须 |
修改 | 不可修改 | 值和类型可以修改 |
保存 | 复合数据类型保存的是内存,可以添加属性,修改值,但是内存不能修改 |
-
使用闭包需要注意什么?
闭包三个特性:函数嵌套函数;内部函数使用外部函数的参数和变量;参数和变量不会被垃圾回收机制回收
缺点:常驻内存,增加内存使用量;使用不当造成内存泄露。使用时注意不用的变量要及时清理掉。 -
使用箭头函数时需要注意什么
箭头函数没有this,需要通过查找作用域来确定this的值,意味着,如果箭头函数被非箭头函数包含,this绑定的就是最近一层非箭头函数的this
箭头函数没有arguments对象,但可以访问外围函数的arguments对象
不能通过new关键字调用,同样没有new.target和原型 -
this指向
默认绑定(非严格模式下,this指向全局对象,严格模式下,this指向undefined)
隐式指向(函数引用有上下文对象时,比如obj.foo(), foo内的指向指向obj)
显示指向(通过call,apply直接指定this绑定对象)
new指向
箭头函数绑定(this的指向由外层作用域决定) -
ES6模块导入和导出理解
ES6模块的设计思想:尽量静态化,使得编译时能确认依赖关系
模块功能组成:import(输入其他模块提供的功能) export(规定模块的对外接口)
export:
输出的变量或者函数都有自己的名字,可以重命名
不能放在代码块内,否则报错
import:
导入的值只读,不能修改输入的接口
import from 后可以跟绝对路径或者相对路径
js模块导入可以省略文件后缀名.js
整体加载用*
export default:
export default只能使用一次,export可以使用多次
export 和 export default可以一起使用 -
CSS3写一个div水平居中
text-align: center; margin: 0 auto; -
异步请求方法
Promise , async/await
Promise:
对象状态不受外部影响,有三种状态,pending进行中,resolved已成功,rejected已失败。只有异步操作的结果才能决定是哪种状态
一旦状态改变,就不会在变,状态改变只有两种: pending到resolved,pending到rejected
async/await:
async是generator函数的语法糖
await后面接一个promise返回并执行(await放在try catch中接受promise的rejected状态)
优点:方便级联调用,同步代码编写方式 -
MVVM理解
MVVM指的是modal view viewmodal
modal代表数据模型,数据和业务逻辑在此定义
view ui视图,负责数据的展示
viewmodal与view对应的modal
modal和view并未直接关联,通过vm来关联的,modal和vm之间有双向数据绑定的关系,因此model数据改变时,触发view的页面更新,view中由于用户操作导致数据变化会更新到modal中
简单来说,vm是model和view的链接器,view和modal通过vm实现双向数据绑定
体现在react: 单向数据流,本身只是一个函数ui = render(data) 加上状态管理,实现MVVM
对应关系:
modal:对应组件方法或者生命周期函数中实现的业务逻辑和this.state保存的本地数据
vm:对应组件中jxs,就是虚拟dom的语法糖,react负责维护虚拟dom和进行diff算法,react-dom将虚拟dom渲染成真是dom
view:对应框架在浏览器中基于虚拟dom生成真实DOM(不需要手写)及css
绑定器:对应jsx中绑定命令和数据 {this.props.XXX} -
ES6中forEach, for…of , for…in区别
区别 | for…in | for…of | forEach |
---|---|---|---|
Object | 可用,包含原型链属性 | 可用, | |
Array | 可用,不能保证遍历顺序,且会遍历出自定义属性 | 可用,item为数组每一项的值, | 可用, |
Set | 可用, | 可用, | |
Map | 可用, | 可用, | |
版本 | ES5 | ES6, 注意兼容性 | JS |
得到结果 | 对象的key,数组的下标 | 值 | 值 |
总结 | 遍历(当前对象及其原型上)每一个属性名称 | 遍历(当前对象上)每一个属性值 |