css
左边固定200px右边自适应
…
说一下flex几个属性
…
div居中
…
div height是父元素宽度一般(padding%基于父元素宽度)
js类型
基本数据类型
…
null与undefined区别
null是表示引用类型的0 他是一个对象类型的
undefined是表示未定义的意思
symbol.iterator干啥的
是否可用for…of遍历
遍历器实现指针结构
function Obj(value) {
this.value = value;
this.next = null;
}
Obj.prototype[Symbol.iterator] = function() {
var iterator = { next: next };
var current = this;
function next() {
if (current) {
var value = current.value;
current = current.next;
return { done: false, value: value };
}
return { done: true };
}
return iterator;
}
数组
常用数组有哪些?
splice slice filter reduce push pop
flat了解吗?
扁平化数组
哪些会改变长度
splice push pop
数组浅拷贝两个数组还有关系吗
没有了
为什么不用josn的方法进行深拷贝
如果有方法 josn就会失效
说一下深拷贝的思路
遍历第一层循环判断如果是引用类型那就再次调用函数
地址携带的参数转换为obj key value形式
定义一个obj
document.URL.splite(’?’)[1].splite(’&’).foreach(item => {obj.[item.splite(’=’)[0]] = item.splite(’=’)[1])})
冒泡和快排说一下思路
冒泡使用for循环嵌套比较大小
快排使用递归
快排递归如何实现的
找到中间位置(math.floor(length/2))
遍历比较其他元素是否比他大 分别放在两个数组中
俩数组递归
然后进行concat链接中间值和递归的这俩return出去(就是每次的结果都返回链接返回链接)
数组去重(三种)
1.先转为set再用Array.from转为数组
2.reduce用includes判断false push进数组
3.使用fiter return arr.indexOf(currentValue) === index
HTTP
监听localstorage
var mysetItem = localStorage.setItem
localStorage.setItem = function(key, value) {
var setItemEvent = new Event(‘setItemE’)
setItemEvent.key = key
setItemEvent.value = value
window.dispatchEvent(setItemEvent)
mysetItem.apply(this, arguments)
}
他说这样 监听localstorage Sessionstorage改变会不会监听到
我猜不会 他给说会
后端如何设置你就不会拿到cookie
HTTPOnly
说一下状态码
…
三次握手四次挥手
…
网络结构
物理 数据链路 网络 运输 会话 表示 应用
tcp/udp(没查,记忆太久远了只记得的这几个)
可信任 全双工
不可信任 非全双
请求头中http缓存了解过吗
Cache-Control
promise
有四个请求如果前三个有一个执行返回结果了再执行第四个
使用promise包装一下前三个请求然后使用.race().then(第四个)
有四个请求如果前三个有一个都执行完了返回结果了再执行第四个
同上只不过是all
obj
说一下Object.definePropotype()参数
第一个obj
第二个key
第三个配置项(get,set,value,configurable,writeable,enumerable)
遍历对象
var cpObj
Object.keys(obj).foreach(item => {
cpObj[item] = obj[item]
})
柯里化
add(2)(3)()
function add(){
var arg = [...arguments]
return function addr() {
if(arguments.length === 0) {
return arg.reduce((a,b) {
return a+b
}
)}else {
arg = arg.concat(...arguments)
return addr}
}
}
add(2,3)(3)
function add(){
var arg = [...arguments]
return function addr() {
arg = arg.concat(...arguments)
return addr
}
add.toString = function () {
return arg .reduce((a,b) => {
return a+b
})
}
}
其实就一个判断什么时候结束不同
vue
生命周期
…
路由懒加载
用函数返回
v-if v-for谁个优先级高
v-for
slot 和 混入的区别
slot类似占位的意思
混入类似于组件
混入和组件中的data中元素重名会怎样
优先组件中
混入在组件中生命周期
先是混入的再是组件的
以上是小弟面试内容(很多没印象了)没挨着搜 欢迎指正(半年经验)