写在前面的话
最近面试,有不少题目还不错~
分享给大家
面试题如下
1、前端实现文件的断点续传
https://www.cnblogs.com/imwtr/p/5957391.html
https://juejin.cn/post/6844904046436843527
2、如何获取强缓存和协商缓存
https://segmentfault.com/a/1190000021661656
浏览器会获取该缓存资源的 header 中的信息,根据 response header 中的 expires 和 cache-control 来判断是否命中强缓存,如果命中则直接从缓存中获取资源。
如果没有命中强缓存,浏览器就会发送请求到服务器,这次请求会带上 IF-Modified-Since 或者 IF-None-Match, 它们的值分别是第一次请求返回 Last-Modified或者 Etag,由服务器来对比这一对字段来判断是否命中。如果命中,则服务器返回 304 状态码,并且不会返回资源内容,浏览器会直接从缓存获取;否则服务器最终会返回资源的实际内容,并更新 header 中的相关缓存字段。
No-cache 和 no-store的区别
no-cache 可以在本地缓存,可以在代理服务器缓存,但是这个缓存要服务器验证才可以使用
no-store 彻底得禁用缓冲,本地和代理服务器都不缓冲,每次都从服务器获取
3、为什么会有OPTIONS请求【预请求】
https://cloud.tencent.com/developer/article/1046663
1)获取服务器支持的HTTP请求方法;
2)用来检查服务器的性能。
4、函数柯里化
通过偏函数实现,把多参函数转换为一个嵌套一元函数的过程
5、顶级域名和子级域名之间的cookie共享
https://blog.csdn.net/u010955166/article/details/78469927
domain
6、为什么TCP连接要三次握手,四次挥手
https://juejin.cn/post/6844903913611591688
第四次挥手: 客户端接收到服务端的连接释放FIN报文后,必须发出确认报文,ACK=1,ack=z+1,而自己的序列号是seq=x+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。此时服务端收到客户端发送过来的确认报文,就立即撤销自己的传输控制块TCB,进入CLOSED状态,注意此时的TCP连接还没有释放,必须经过2MSL(最长报文段寿命)的时间后,客户端没有收到服务端发来的任何数据,证明服务端已正常关闭,此时客户端会撤销相应传输控制块TCB后,进入CLOSED状态。至此,TCP的连接才真正的断开了。(服务端结束TCP连接的时间要比客户端稍微早一些)
7、https://huaban.com/
布局如何实现
8、vue 父子组件的方法调用
cnblogs.com/yangshifu/archive/2018/08/22/9518528.html
父组件调用子组件的方法 $refs
子组件调用父组件的方法 $emit
9、Vue父子组件生命周期执行顺序及钩子函数的个人理解
https://www.cnblogs.com/yuliangbin/p/9348156.html
10、加载渲染过程
父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted
11、react hook
https://www.ruanyifeng.com/blog/2019/09/react-hooks.html
https://zh-hans.reactjs.org/docs/hooks-intro.html
12、SPA(single page application)
1)SPA这个模型中,是通过动态地重写页面的部分与用户交互,而避免了过多的数据交换,响应速度自然相对更高。
比如,AngularJS,Vue
2)优点
页面之间的切换非常快
一定程度上减少了后端服务器的压力(不用管页面逻辑和渲染)
3)SEO【白帽技术】
在每页使用一个短、独特和相关的标题。
编辑网页,用与该页的主题。有关的具体术语替换隐晦的字眼。这有助于该站诉求的观众群,在搜索引擎上搜索而被正确导引至该站。
在该站点增加相当数量的原创内容。
使用合理大小、准确描述的汇标,而不过度使用关键字、惊叹号、或不相关标题术语。
注意网址字眼,有助于搜索引擎优化。
确认所有页可透过正常的链接来访问,而非只能透过Java 、JavaScript或Adobe Flash应用程序访问。这可透过使用一个专属列出该站所有内容的网页达成(网站地图)
透过自然方式开发链接:Google不花功夫在这有点混淆不清的指南上。写封电子邮件给网站员,告诉他:您刚刚贴了一篇挺好的文章,并且请求链接,这种做法很可能为搜索引擎所认可。
参与其他网站的网络集团(译按:web ring 指的是有相同主题的结盟站群)──只要其它网站是独立的、分享同样题目和可比较的品质。
4)SSR
SSR是Server-Side Rendering(服务器端渲染)的缩写
https://juejin.cn/post/6844903688075509774
SSR常用框架
React 的Next
Vue.js 的Nuxt
13、双向绑定
https://www.jianshu.com/p/cdd7dde12786
https://juejin.cn/post/6844903901003513863
14、Vue响应式原理的核心就是Observer、Dep、Watcher。
Observer中进行响应式的绑定,在数据被读的时候,触发get方法,执行Dep来收集依赖,也就是收集Watcher。
在数据被改的时候,触发set方法,通过对应的所有依赖(Watcher),去执行更新。比如watch和computed就执行开发者自定义的回调方法。
15、闭包
源自于函数式编程
由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。 所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。 闭包可以用在许多地方。 它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
js有哪些内存泄漏的方式?
https://juejin.cn/post/6844903917986267143
16、Primise.all()
https://www.jianshu.com/p/7e60fc1be1b2
在前端开发请求数据的过程中,偶尔会遇到发送多个请求并根据请求顺序获取和使用数据的场景,使用Promise.all毫无疑问可以解决这个问题。
17、字符串方法
https://www.runoob.com/js/js-strings.html
es6新增
https://es6.ruanyifeng.com/#docs/string
https://es6.ruanyifeng.com/#docs/string-methods
1)For of
2)ES6 引入了模板字符串
18、数组方法
https://www.runoob.com/jsref/jsref-obj-array.html
数组扩展
https://es6.ruanyifeng.com/#docs/array
https://es6.ruanyifeng.com/#docs/array#Array-from
以上