Webcourse/19-面试题积累/01-我的面试经历 by smyhvae.md

214 lines
4.9 KiB
Markdown
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的双向绑定怎么实现的我是说怎么实现
我当时是回答MVVM模式。其实还需要答出Object.defineProperty( )的细节。
- 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