3月3日 一面(50min) 原本定于2.25一面的,但是面试官临时有事。。。拖到了3.3 自我介绍 在学校参加了一些项目和比赛,然后有一段实习经历,去年九月系统学习前端学习渠道:入门是同学带,系统学习是红宝书,b站,然后踩坑就找掘金思否CSDN 1.基本数据类型 多说了symbol和bigint,面试官稍微问了下用过没,是干啥的,symobol用过,bigint只在教程里看见过 2.一个原型链的输出题     function Ctor(x){      this.x=x    }    Ctor.prototype.x='12345'    const a=new Ctor(4)    a.x=undefined    console.log(a.x)//这里我答的12345,以为赋值undefined会去原型链上找hhhh,实际上赋值啥就是啥(undefined)    const b=new Ctor(5)    delete b.x    console.log(b.x)//这里是12345 3.事件循环,输出题 //1 3 4 5 2new Promise(resolve=>{  console.log(1)  setTimeout(()=>{    resolve()  },0)}).then(()=>{  console.log(4)}).then(()=>{  console.log(5)})setTimeout(() => {  console.log(2)}, 0);console.log(3) 4.web安全 xss,csrf,http劫持,dns劫持,ddos仔细问了一下csrf的攻击原理 5.跨域的解决方法 简单说了下跨域的产生,和同源策略的限制父子域名location.domain再设置端口号,代理服务器,websocket,cors,jsonp,cors问了怎么携带cookie,没答上来(withcredential) 6.ssl加密的过程 追问非对称加密加密的是什么(会话秘钥) 7.动画效果方案 transition(嘴瓢说了transiform),animation,requestAnimationFrame 8.手写一个深拷贝 自己没考虑数组,而且没用hasOwnProperty,复制了原型上的属性 9.为Array实现一个getReader 题目上是TS写法,然后我不会,就实现了一个函数返回一个Reader 10.反问 问了问哪里答得不好需要加强学习建议 3月15日 二面(1h) 原本是3.11的,结果面试官也有事,然后跟hr小姐姐又换了好几个面试官都没空,最后又定到3.15 自我介绍 跟一面差不多的自我介绍问了问实习项目中怎么解决eCharts没法用相对单位的问题 1.js的类型检测 回答了typeof instanceof constructor Object.prototype.toString().call()追问了一下为啥要用Objcet原型上的toString,慌神了直接胡言乱语说不用原型找不到hhhh(实际上是别的toSrring经常被重写) 2.如何理解js动态类型,有什么优缺点 声明时类型不固定,可以修改,不用调用各种类型转换的函数,编码灵活但容易出错又追问了一下js数组的内存分配,我这里猜测和c++数组动态内存一样动态分配,不够就翻倍之类的 3.判断this //一开始被绕进去了,面试官提醒了一下,我重头开始分析,后来对了var length=10;function fn(){  return this.length+1};var obj={  length:5,  test1(){    return fn()  }}console.log(obj.test1())//11obj.test2=fnconsole.log(obj.test1()===obj.test2())//11===6,false 4.new的原理,过程 这里我直接给面试官手写了一个 5.js代码在V8中怎么执行的 这里直接问蒙了,啥也不会啊hhhh,如实和面试官说了不会,但说了一下自己的看法,分为编译过程和运行过程追问这两个过程干了些什么,回答了编译期有语法检查之类的 6.从url到页面呈现经历了那些过程 找缓存-dns解析-tcp链接-http请求-页面渲染追问了dns解析的过程(递归和迭代)和页面渲染的过程(css,html同步解析,遇到js就请求执行)再追问js阻塞怎么办(script写在body后面,async,defer) 7.事件传播 先捕获再冒泡,addEventLisener的第三个参数是干什么的(决定事件在哪个阶段执行,true是捕获,false冒泡),这个属性有没有改变事件传播的顺序(只是决定事件在哪执行,没有改变事件传播的顺序) 8.浏览器存储和调用它们的api localStorage,SessionStorage,Cookie 9.vue解决了什么问题 不用操作dom,组件化追问vue的响应式(Object.defineProperty)然后又问了vue怎么做的依赖收集(不清楚) 10.webpack解决了什么问题 回答了less sass转css,babel转es5,热更新,混淆压缩问了less-loader,css-loader和style-loader分别的作用,这里如实说了不清楚,但自己认为less-loader是把less转css,css-loader是为了解决css的模块化,样式隔离,style-loader真不知道 11.js的模块化了解多少 用过commonjs的require和es6的import 12.flex:1效果是什么 先回大了flex:1是三个属性的简写,然后回答了效果 13.box-sizing干什么的(盒模型) 14.并发和并行的区别(不知道,说了句废话,面试官说我说了等于没说,哈哈哈哈) 15.线程和进程的联系和区别,这里回答的比较详细 追问了线程间通信的方式(消息队列,共享内存,信号量)然后又追问了一个进程的内存空间里会存些什么(运行时的状态,信号量) 16.tcp为什么三次握手 说话已经开始结巴了,一开始说了一点没说清楚,;捋了捋说清楚了,四次会造成资源浪费,两次无法确定 17.对称和非对称加密的优缺点 回答了安全和速度追问浏览器和服务器加密算法谁更快(不知道) 18.V8垃圾回收 (自己对V8了解确实不够呀)问了垃圾回收的时机,回答内存不够就运行追问了新旧GC的区别,回答不清楚区别,但知道旧GC的原理和缺点,猜测新GC应该一定程度上有所解决追问谁执行的更频繁(我回答老的不如新的,得多清理几次,没想到错了hhhhh) 19.算法题-括号生成,我用动态规划写的,力扣上有 20.反问 问了问哪里答得不好哪里需要加强(并行并发,还说V8不感兴趣没关系,面试官人真的挺好的,还跟我讲了一些业务上的问题)学习建议直接问过没过,面试官笑嘻嘻跟我说,不能讲,我觉得还不错,你自己体会后来等了会hr就跟我说过了 hr小姐姐人也特别好,特意写了这个面经,希望能帮到大家,也希望能攒攒人品,3.21三面,加油!
点赞 37
评论 14
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务