Web/13-前端面试/02-面试题积累/我的面试经历 by 千古壹号.md

214 lines
4.9 KiB
JavaScript
Raw Normal View History

2018-03-23 17:05:32 +08:00
## 20180323
2018-03-29 21:36:22 +08:00
### 什么是闭包闭包有什么作用
### ES6的新特性有哪些
作用域函数扩展扩展运算符默认参数箭头函数异步promise模块化
### 追问const常量有什么作用确定不能修改吗修改之后会报错吗你有没有试过
当时我的答案是斩钉截铁地说不能改其实我说错了后来查了一下准确答案是
- 如果是值类型值不可变
- 如果是引用类型地址不可变
所以说虽然我不能修改引用类型的指向但是我可以修改引用类型里的属性值
参考链接<https://segmentfault.com/q/1010000012836140?sort=created>
### 追问const的原理是什么
面试官问如果你定义了const什么是常量是它的值还是引用比如说我定义了一个const 的array那我能往里面插入数据吗
### 箭头函数和匿名函数有什么区别吗
箭头函数和匿名函数有个明显的区别箭头函数内部的this是词法作用域由上下文确定
普通函数的this指向是动态作用域箭头函数的this指向是依据词法作用域
参考链接<https://zhuanlan.zhihu.com/p/25093389>
### 可以讲一下promise的状态吗
### 追问如果我写setTimeout0再写一个promise哪个先执行
我回答错了
正确答案是任务队列可以有多个promise的任务队列优先级更高具体答案还需要再仔细看看
### http有了解吗
- 可以讲一下它的握手过程吗
- http的缓存有了解吗
- get和post区别
### 做过CDN吗
答得不具体
百度百科的解释是其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节使内容传输的更快更稳定
### Vue相关
- vue的双向绑定怎么实现的我是说怎么实现
2018-04-20 23:44:34 +08:00
我当时是回答MVVM模式其实还需要答出Object.defineProperty( )的细节以及虚拟DOM
2018-03-29 21:36:22 +08:00
- Vue里还有什么呢
数据驱动组件化
### 事件绑定onClick和addEventListener的区别
### 说一下DOM里的事件冒泡
### 用Webpack做过哪些功能
### 追问ES6转成ES5改动代码发现页面自动刷新你说一下整个流程
问的是webpack 自动刷新的流程我没回答好
### 追问既然webpack可以用来配置服务器如果我要联调怎么办
启动了webpack就可以直接连接到后端吗
### 说一下跨域
### gzip压缩有了解吗
### 你做过什么项目说一下
我做过电商网站
追问遇到过什么问题吗
我遇到了性能的问题
追问那你说一下性能的问题
我就答出了性能相关的五大点
### node和express有了解吗
### 追问requireJS是异步的吗
是异步的
### Vue你是怎么用的是把所有的代码都写在一个页面里的吗
我是模块化写的
怎么分类
追问vuex的的作用
### 移动端的触摸事件了解吗
- touchstart touchmove touchend touchcanceltouchcancel当触点由于某些原因被中断时触发
- 模拟 swipe 事件记录两次 touchmove 的位置差如果后一次在前一次的右边说明向右滑了
### 移动端的浏览器和电脑浏览器的 touch事件有区别吗
我说我没了解过
追问移动端默认会有0.2秒的延迟
我后来查了一下
点击延迟是指移动端浏览器在 touchend click 之间存在 300ms 350ms 的延迟
为了判断用户是否是进行双击操作因为移动端双击是放大文字的手势操作
主要是从点击屏幕上的元素到触发元素的 click 事件移动浏览器会有大约 300 毫秒的等待时间这是因为浏览器想看看你是不是要进行双击double tap操作
解决方法
- 将click事件换成touch end事件
- FastClickFastClick的实现原理是在检测到touchend事件的时候会通过DOM自定义事件立即出发模拟一个click事件并把浏览器在300ms之后真正的click事件阻止掉
事件发生顺序在移动端手指点击一个元素会经过touchstart --> touchmove -> touchend --click
### 如何自定义事件
自定义事件的代码如下
```javascript
var myEvent = new Event('clickTest');
element.addEventListener('clickTest', function () {
console.log('smyhvae');
});
//元素注册事件
element.dispatchEvent(myEvent); //注意,参数是写事件对象 myEvent不是写 事件名 clickTest
```
### 说一下状态码
### 手机端的web开发怎么和原生做交互
比如web网页想调用手机的拍照功能怎么做再比如怎么分享到朋友圈
### vue的生命周期有了解吗
create和mount有什么区别吗
什么时候执行update
2018-03-23 17:05:32 +08:00