2020前端面试经历
html
1.如何使一个元素垂直水平居中(ps:知道几种就说几种)
2.浏览器的渲染机制
3.一个页面中展示很多图片,一次性请求,并发数过多如何进行优化?(客户端,服务端)
4.根据HTML,CSS,JS,图片有哪一些性能优化的方案?
5.http1与http2有什么区别,在性能提升方面,http2做了哪些变更?
css
1.如何实现一个动画(css3中animation,包括如何定义如何使用有哪些属性)
2.em与rem有什么区别
3.弹性布局有哪些属性
js
1.如何理解js的作用域
2.var与let,const的区别
3.ES6中的set和map有什么区别
4.js的基本类型有哪些?typeof null = ?为什么
5.如何解决js的异步问题
callback,promise.generator,async...await
其中相关问题:a.generator的自执行函数?
b.promise与async...await之间的比较
6.js遍历对象属性有哪几种方法
7.for...in与for...of的区别
8.数组去重有哪几种方法
9.什么使正向代理与反向代理
10.如何理解weakSet与weakMap,在什么场景下使用
11.如何防止内存泄露,有哪些手段?
vue相关
1.如何理解虚拟DOM,描述一下执行渲染过程
2.vue中key的作用
3.v-model的实现原理
4.如何理解diff算法
5.$nextTick的使用场景及实现原理
6.vue使如何实现数据双向绑定的
算法题、编程题
1. 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
单链表节点的定义:
function ListNode(val) {
this.val = val
this.next = null
}
function mergeTwoList(l1,l2) {
}
2. 实现一个通用的防抖函数
function debounce(callback, time) {
}
3. 解析一个合法URL中的query字符串,返回query对象
输入: "a=1&b=2"
输出: { a: "1", b: "2" }
function parseQuery(queryString) {
}
4.看程序输出结果
5.看程序输出结果