1.react、vue核心区别
react setState jsx
vue 双向绑定 template
2.react setState 和vue的set的区别
react 是单项数据流 setState 用来刷新视图
vue set 是驱动修改视图,本身是支持双向绑定,由于array的属性添加修改调用不到,用set方式可以刷新视图,用处都不同
3.有一个页面,h5跟小程序都有,如何公用。
用vue的一些框架来进行打包使用,这样就只可以维护一套代码了
4.写一个ant的select组件,如何设计
select 这个类,首先分析当前select需要什么,需要多选的功能,单个选中的功能,disabled,清除功能,去分析当前需要
的功能然后去实现
5.{} [] ()判断是否结对出现
堆栈解决(先进后出)
6.力扣第一题,两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
// 找到当前需要的值,存储当前减去需要的值,然后去匹配,由于是键值对可以直接获取到
var twoSum = function(nums, target) {
let map = new Map()
for(let i=0,len=nums.length
if(map.has(nums[i])){
return [map.get(nums[i]),i]
}else{
map.set(target-nums[i],i)
}
}
}
7.剑指 Offer 48. 最长不含重复字符的子字符串
8.实现flat
flat 主要数组进行减少层级
Array.prototype.myFlat = function(num){
let arr = this
let fn = function(arr,num){
if(num===0){
return arr
}
let ar = []
for(let i=0,len=arr.length;i<len;i++){
if(Array.isArray(arr[i])){
ar = ar.concat(arr[i])
}else{
ar.push(arr[i])
}
}
return fn(ar,--num)
}
return fn(arr,num)
}
let arr = [1,2,3,[4,5,[7,8]]]
console.log(arr.myFlat(2))
Array.prototype.myFlat = function(){
let arr = this
return [].concat(...arr.map(v=>Array.isArray(v)?[].concat([].myFlat.call(v)):v))
}
let arr = [1,2,3,[4,5,[7,8]]]
console.log(arr.myFlat())
9.数组去重,分析时间,空间复杂度
let arr = [1,2,3,4,5,6]
### return [...new Set(arr)]
let fn = function(arr){
let obj = {}
return arr.filter(item=>{
if(obj[item]){
return false
}else{
obj[item]=true
return true
}
})
}
fn(arr)
9.common.js个esmoudle循环引用会怎么样。
解:(通常都加一分)
10.深拷贝的对象相互引用怎么处理。
解:(通常都加一分)
11.{console.log(a);let a = 1}
报错,let的暂时性死区
11.str= ‘sdfsd{{}}123123{}’,判断花括号是否成对出现
堆栈先进后出
12.js有哪些作用域
函数作用域
块作用域
全局
13:简述fiber算法,requestAnnimationFrame与requesIdecallback优先级。
requestAnnimationFrame 每一帧执行
requesIdecallback 浏览器空闲才执行
14.箭头函数为什么不能作为构造函数
1.箭头函数没有argument
2.构造函数没有prototype
3.没有独立的this
15:http2.0对比http1.1升级了什么,内部如何实现的
多路由复用,
基于流进行传输,流上带有当前下标,所以可以进行整合,多文件传输
16.标记清除实现原理
从堆起始开始遍历,当前内存没有被引用状态直接回收
17:var obj = {name:2}使用alert(obj),返回1
var obj = {name:2}
obj.toString = function(){
return 1
}
|| or
obj.valueOf = function(){
return 1
}
alert(obj)
18.数组跟链表的优缺点,查询跟插入的复杂度。
解:(通常都加一分)
19.http缓存机制
强缓存:
cache-control : max-age: 22222
from memory cache
from disk cache
协商缓存
Last-modified
ETag
判断过程:先判断当前强缓存时间是否过期,没有过去就去请求本地的内存和硬盘,过期就去协商缓存,
返回if-Modified-Since(Last-modified) 和 if-no-Match(ETag)来判断当前文件是否有更新,
如果没有更新返回304,更新则返回200和当前更新文件
20:简述LRU
淘汰掉最久不用的值,比如有4个内存空间依次,a,b,c,d 然后插入e 的时候a是最久没有用的则去除a,然后使用b,
然后加入f,由于刚使用了b则c是最久没有使用的 ,则去除c
11.js声明一个变量,最少占用多少字节
不知道,希望有大佬回答一下
12.简述webpack内部原理,画出时序图
解:(通常都加一分)
23.写过loader或者plugin吗
没有,
14:使用promise.all,如果中间有一个失败了,但是还是想要拿到已经成功的值,怎么做。
map方法包裹一些 catch 方法在map 也会是一个 resolved 状态
15:async 比generator有哪些好处。
解:(通常都加一分)
26.懒加载的原理。
@import
17:ISO有哪七层,tcp/ip在哪一层
解:(通常都加一分)
18.CORS怎么配置
前端不配置。。。。
19.什么时候会发送options请求。
简单请求不发送 options
复杂请求会先请求 options
复杂请求是head在请求时,添加的一些字段,Content-Type,Content-Language等
20.一个树结构,求任意两个节点的最近的父节点。
中序遍历获取数路径,公共路径最后一个相同值就是最近当父节点