![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
文章平均质量分 61
七彩冰淇淋与藕汤
这个作者很懒,什么都没留下…
展开
-
白屏、首屏的定义、影响因素、优化方法
1.白屏时间(First Paint):是指浏览器从响应用户输入网址地址,到浏览器开始显示内容的时间。2.首屏时间(First Contentful Paint):是指浏览器从响应用户输入网络地址,到首屏内容渲染完成的时间。原创 2022-10-13 10:51:07 · 1309 阅读 · 0 评论 -
v8引擎相关
1.怎么实现数组的?快数组是一种线性的存储方式。新创建的空数组,默认的存储方式是快数组,快数组长度是可变的,可以根据元素的增加和删除来动态调整存储空间大小,内部是通过扩容和收缩机制实现。慢数组是一种字典的内存形式。不用开辟大块连续的存储空间,节省了内存,但是由于需要维护这样一个 HashTable,其效率会比快数组低。快慢数组转换:当加入的 index- 当前capacity >= kMaxGap(1024) 时(也就是至少有了 1024 个空洞),会转变为慢数组。处于哈希表实现的原创 2022-04-20 16:09:20 · 264 阅读 · 0 评论 -
HTML5、CSS3新特性
1.HTML5一:canvas标签your browser does not support the canvas tagvar canvas=document.getElementById('myCanvas');var ctx=canvas.getContext('2d');ctx.fillStyle='#FF0000';ctx.fillRect(0,0,80,100);渲染结果:通过这个元素你可以绘制你想要的图案。二:video标签your bro.原创 2022-04-20 15:47:55 · 178 阅读 · 0 评论 -
HTML5新特性、CSS3新特性
1.HTML5一:canvas标签your browser does not support the canvas tagvar canvas=document.getElementById('myCanvas');var ctx=canvas.getContext('2d');ctx.fillStyle='#FF0000';ctx.fillRect(0,0,80,100);渲染结果:通过这个元素你可以绘制你想要的图案。二:video标签your bro.原创 2022-04-19 17:15:45 · 596 阅读 · 0 评论 -
v8引擎如何实现sort排序的?
在 V8 引擎中,7.0 版本之前,数组长度小于10时,Array.prototype.sort()使用的是插入排序,否则用快速排序。在 V8 引擎7.0 版本之后就舍弃了快速排序,因为它不是稳定的排序算法,在最坏情况下,时间复杂度会降级到 O(n2)。于是采用了一种混合排序的算法:TimSort。这种功能算法最初用于Python语言中,严格地说它不属于以上10种排序算法中的任何一种,属于一种混合排序算法:在数据量小的子数组中使用插入排序,然后再使用归并排序将有序的子数组进行合...原创 2022-04-18 20:25:18 · 651 阅读 · 0 评论 -
常见端口号
21:用于FTP(用于文本协议)服务22:是ssh端口,PcAnywhere建立TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点。如果配置成特定的模式,许多使用RSAREF库的版本有不少漏洞。23:用于远程登录服务25:为SMTP服务器开放,主要用于发送邮件53:为DNS服务器所开放,用于域名的解析67,68:分别是为Bootp服务的Bootstrap Protocol Server(引导程序协议服务端)和Bootstrap Protocol Client(引导程序协议客户端)开放的端原创 2022-04-18 19:36:05 · 731 阅读 · 0 评论 -
base64编码
1.用处在参数传输的过程中经常遇到的一种情况:使用全英文的没问题,但一旦涉及到中文就会出现乱码情况。与此类似,网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base64的出现就是为了解决此问题,它是基于64个可打印的字符来表示二进制的数据的一种方法。2.编码Base64的索引表,字符选用了"A-Z、a-z、0-9、+、/" 64个可打印字符,这是标准的Base64协议规定0 A 17 R 34 i 51 z1 B 18 S 35 j 52 02原创 2022-04-18 19:26:40 · 129 阅读 · 0 评论 -
js设计模式
JavaScript中常见的十五种设计模式 - -渔人码头- - 博客园发布-订阅模式:当一个对象的状态发 生改变时,所有依赖于它的对象都将得到通知(多个addEventListener、vue里面实现数据双向绑定用了发布订阅模式)观察者模式和发布订阅模式的区别:观察者模式和Subject之间是松耦合的关系,数据发生变化由Subject通知观察者;而发布者和订阅者是解耦的关系,其消息传递完全通过第三方来实现。代理模式:当客户不方便直接访问一个 对象或者不满足需要的时候,提供一个替身对象 来控制对这原创 2022-04-18 16:37:45 · 517 阅读 · 0 评论 -
函数柯里化
定义:把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。首先看看柯里化到底是什么?// 普通的add函数function add(x, y) { return x + y}// Currying后function curryingAdd(x) { return function (y) { return x + y }}add(1, 2) /..原创 2022-04-18 10:15:13 · 107 阅读 · 0 评论 -
懒加载(js+图片+路由)
图片懒加载:当载入页面时,先把可视区域内的img标签的data-src(自定义属性,真实图片源)属性值负给src,其他未在可视区域的图片的src赋值默认图片地址。然后监听滚动事件,把用户即将看到的图片加载(img[i].offsetTop < seeHeight + scrollTop)。注意图片要指定宽高,否则引起回流。而且要给scroll事件进行节流处理,否则会频繁触发。<head> <meta charset="UTF-8"> <title原创 2022-04-09 17:12:06 · 915 阅读 · 0 评论 -
webpack loader plugin
1.loader的作用:webpack 只能直接处理 javascript 格式的代码。任何非 js 文件都必须被预先处理转换为 js 代码,才可以参与打包。loader(加载器)就是这样一个代码转换器。2.loader的工作原理:它由 webpack 的 `loader runner` 执行调用,接收原始资源数据作为参数(当多个加载器联合使用时,上一个loader的结果会传入下一个loader),最终输出 javascript 代码(和可选的 source map)给 webpack 做进一步原创 2022-04-07 19:56:19 · 430 阅读 · 0 评论 -
package.json、package-lock.json
我的vue项目里用到以下相关配置:我的项目package.json文件夹下有以下配置:name是在初始化的时候配置的项目名称:version包的版本,对于业务项目不重要,对于需要发布的项目非常重要。private:是否是私人项目。如果设为true,无法通过npm publish发布代码。Scripts:指定了运行脚本命令的npm命令行缩写。十分重要。dependencies:项目的依赖。通过npm install --save安装的包会出现在这里。注意,不要把测试工具、代码.转载 2022-04-07 10:51:12 · 403 阅读 · 0 评论 -
五层网络模型
1.物理层传输01比特流2.数据链路层 ARP对比特流进行分组,传输数据报(64<数据报长度<1518) 。数据报头部包含源和目的mac地址。通过在同一个局域网中进行广播,能够实现同局域网传播。跨局域网是网络层的事。协议:ARP协议。地址解析协议,根据目标IP地址获取目标物理地址的协议。3.网络层:ip网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址。IP协议就是确定对方局域网的位置。在不同的局域网之间采用路由的方式传输数据报。ip +转载 2022-04-06 10:25:45 · 247 阅读 · 0 评论 -
加载JavaScript脚本方式
1.静态加载:1. <script>... ...</script>直接写入HTML文件2. <script src="xxx.js"></script>2.动态引入1.document.write()<script language="javascript"> document.write("<script src='test.js'><\/script>"); </script>原创 2022-04-01 19:19:36 · 1077 阅读 · 0 评论 -
Number、BigInt、0.1+0.2
在 JavaScript 中采用的是 64 位双精度存储的。符号位S:第1位是正负符号位,0表示是正值,1代表是负值。 63位为指数位。指数位E:中间的11位存储指数,用来表示次方数。52-62位。尾数位M:最后的52位尾数,超出的部分自动进一舍零。0-51位。console.log(Number.MAX_VALUE)//1.7976931348623157e+308console.log(Number.MAX_SAFE_INTEGER)//9007199254740991co原创 2022-04-01 17:50:32 · 273 阅读 · 0 评论 -
vue插件的使用:为什么需要使用 vue.use?为什么不可以直接 import from?
在Vue中引入使用第三方库通常我们都会采用import的形式引入进来,但是有的组件在引入之后又做了Vue.use()操作,有的组件引入进来又进行了Vue.prototype.$something = something,那么它们之间有什么联系呢?1.Vue.prototype.$axios = axios//其实是在Vue原型上增加了一个$axios,通过我们会在全局注册这个方法,然后在周后的文件中都可以通过$axios直接来使用axios2.通过全局方法 Vue.use() 使用插件,Vu原创 2022-04-01 13:20:22 · 1939 阅读 · 0 评论 -
Promise编码练习
1.实现一个timeout函数,fn在seconds秒内执行则成功function fn(){ return new Promise( (resolve, reject) => { setTimeout( () => { console.log('fn执行') resolve('success') },2000)//2000会失败,500会成功 })}function f(){ r原创 2022-04-01 13:12:36 · 350 阅读 · 0 评论 -
MVVM、MVC
1.Mvvm定义MVVM是Model-View-ViewModel的简写。即模型-视图-视图模型。【模型】指的是后端传递的数据。【视图】指的是所看到的页面。【视图模型】mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听。这两个方向都实现的,我们称之为数据的双向绑定。总结:在MVVM的框架下视图和模型是不.原创 2022-03-30 13:50:16 · 152 阅读 · 0 评论 -
AJAX--注册时,用户输入用户名并失去焦点时,判断用户名是否可用
<!DOCTYPE HTML><html> <head> <meta charset="utf-8"/> <title>ajax学习</title> <script src="jquery-3.1.1.min.js"></script> <script type="text/javascript"> function checkUserByAjax(){ var u.原创 2022-03-20 21:42:28 · 1072 阅读 · 0 评论 -
为什么token能防范CSRF攻击、cookie是同源的
CSRF是用户登录安全A网站后,点击危险B网站,危险B利用A中的cookie(不是获取,只是利用登录的状态)替代用户进行危险操作。token验证是需要将token放到请求头或者请求体里,发送给服务器进行验证。而token虽然是存储于cookie中的,但是危险B无法获取和解析cookie也就拿不到token,就无法冒用用户身份。cookie是同源的,而打开简书的两个页面是同源的,所以这两个页面的源相同、cookie同。查看cookie:cookie有哪些内容?以键值对形式存储,包括原创 2022-03-19 18:37:05 · 1067 阅读 · 0 评论 -
yahoo军规
雅虎军规35条 - 简书yahoo军规一共分8个部分共35条:内容部分:1. 尽量减少HTTP请求数80%的终端用户响应时间都花在了前端上,其中大部分时间都在下载页面上的各种组件:图片,样式表,脚本,Flash等等。减少组件数必然能够减少页面提交的HTTP请求数。这是让页面更快的关键。减少页面组件数的一种方式是简化页面设计。但有没有一种方法可以在构建复杂的页面同时加快响应时间呢?嗯,确实有鱼和熊掌兼得的办法。合并文件 是通过把所有脚本放在一个文件中的方式来减少请求数的,当然,也可以合转载 2022-03-13 20:21:00 · 376 阅读 · 0 评论 -
web前端性能优化
Web前端性能优化总结——如何提高网页加载速度 - 陈由梅 - 博客园一、提高网页加载速度的必要性国际知名的一组来自Jupiter Research的数据显示:购物者在访问网站过程中的不满会导致销售损失和品牌受损,其中 77%的人将不再访问网站 ,62%的人不再从该网站上购买,48%会转向竞争对手,28%的人对公司产生负面印象。此组数据分析显示:Google网站访问速度每慢400 ms就将导致用户搜索请求下降 0.59%;Amazon表示,增加 100ms的网站延迟将导致其收入下降 1%;.转载 2022-03-09 15:27:59 · 328 阅读 · 0 评论 -
DOM的含义
DOM的含义:DOM称为文件对象模型(DocumentObjectModel,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口DOM是HTML文档的内存中对象表示,它提供了使用JavaScript与网页交互的方式。DOM是节点的层次结构(或树),其中document节点作为根。实际上DOM是以面向对象的方式来描述的文档模型。DOM定义了表示和修改文档所需的对象和这些对象的行为和属性以及这些对象之间的关系。通过JavaScript,我们可以重构整个HTML文档。比如添加、移除、改变或重翻译 2022-03-09 15:26:42 · 2127 阅读 · 0 评论 -
定位position
1.静态定位 static2.相对定位 relative:相对于原本位置进行定位,top、bottom、left、right的偏移位置是相对于父元素来说的元素原本的位置依然存在,不会影响其他元素的位置,只是将元素层次提升,即不脱离文档流,也不改变元素的内联、块的性质3.绝对定位 absolute:相对于最近定位的祖先元素,如果没有就相对于浏览器窗口。会提升层次,会脱离文档流会改变元素性质:内联->块 (宽度100%需要注意)4.固定定位 fixed (特殊的决对定位)原创 2022-03-08 09:48:45 · 96 阅读 · 0 评论 -
常见状态码
200 OK是见得最多的成功状态码。通常在响应体中放有数据。301 Moved Permanently即永久重定向,对应着302 Found,即临时重定向。304 Not Modified: 当协商缓存命中时会返回这个状态码。403 Forbidden: 这实际上并不是请求报文出错,而是服务器禁止访问,原因有很多,比如法律禁止、信息敏感。404 Not Found: 资源未找到,表示没在服务器上找到相应的资源。405 Method Not Allowed: 请求方法不被服务器端允许。原创 2022-03-02 09:34:15 · 315 阅读 · 0 评论 -
完整的导航解析流程
原创 2022-02-21 13:40:55 · 104 阅读 · 0 评论 -
Diff算法与key的作用
真实DOM的解析流程1.分析html文件,构建dom树2.分析样式,生成样式表3.将DOM树和样式表,关联起来,构建一颗Render树4.浏览器为每个Render树上的节点确定坐标。5.根据坐标渲染操作真实dom的代价:计算机硬件一直在迭代更新,操作DOM的代价仍旧是昂贵的,频繁操作还是会出现页面卡顿,影响用户体验。为什么用虚拟DOM好处是什么?虚拟DOM就是为了解决浏览器性能问题而被设计出来的。若一次操作中有10次更新DOM的动作,虚拟DOM不会立即操作DOM,而是将这原创 2022-02-14 10:14:12 · 1259 阅读 · 0 评论