记一次百度的二面的面试题

6次阅读

共计 1414 个字符,预计需要花费 4 分钟才能阅读完成。

1. 闭包加作用域问题
let test
let a = ()=>{
let n=99
test = ()=>{
n++;
}
let a1 = ()=>{
console.log(n)
}
return a1
}
let a1 = a()
let a2 = a()

test()
a1()
a2()

打印结果是 99 100
函数声明了两次,有一次覆盖,最后的覆盖了前面的,要是只声明一遍,那么 a1() 打印的就是 100
2. 作用域问题
let a = 1
function add(a){
return a = a + 1
}
console.log(a)
add(a)
console.log(a)
function add(a){
return a = a + 4
}
add(a)
console.log(a)
打印 1 1 1
反直觉自带坑的题
3. 找鼠标最近的 a 标签
<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<title>Document</title>
</head>
<body>
<div id=’wrap’>
<a href=””> 链接 1 </a>
<br>
最美的不是下雨天是你
<a href=””> 链接 2 </a>
<br>
最美的不是
<a href=””> 链接 3 </a>
<br>
最美的不是下雨
<a href=””> 链接 4 </a>
最美的不是下雨天
<a href=””> 链接 5 </a>
<br>
最美的不是下雨天是你
<a href=””> 链接 6 </a>
</div>
<script>
window.onload=function(){
  let oa = document.getElementsByTagName(“a”);
let arr = []
oa = Array.from(oa)
oa.forEach(function(element, index) {
arr.push([element.offsetLeft,element.offsetTop])
});
window.addEventListener(‘mousemove’,(e)=>{
let LEN =[]
arr.forEach(function(element, index) {
let len = Math.pow(Math.pow(Math.abs(e.clientX-element[0]),2)+Math.pow(Math.abs(e.clientY-element[1]),2),0.5).toFixed(3)
LEN.push(len)
});
let c = Math.min(…LEN)
let key = LEN.indexOf(c.toString())
for(let i=0;i<oa.length;i++){
oa[i].style.color = “#999”
}
if(oa[key]){
oa[key].style.color = “red”
}
})
}
// 最后来个防抖节流完美
</script>
</body>
</html>
4. 写 vDom

用对象表示 dom 结构
根据 json 生成 dom
dom 变化记录变化
在真实 dom 更新变化

vdom 好在哪里???
看会了,不一定真的会写,你会写了,但是和面试官问的题会有些区别?
自行拿捏
一场面试说明不了你的能力,也影响不了我想做的事,我依然热爱,依然喜欢研究和学习,依然会继续我的源码架构方向,我不喜欢那种绕来绕去为了应付面试而学的基础,我不会因为面什么而看什么,我只想研究我想学的,把学到的分享给社区,我就很开心了,如果能够做开源,我会更开心的
附上最新写的 koa 源码解读

正文完
 0