前端面试问题总结沧海的雨季

HTTP协议通常承载于TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候,就成了我们常说的HTTPS。

默认HTTP的端口号为80,HTTPS的端口号为443。

因为网络请求需要中间有很多的服务器路由器的转发。中间的节点都可能篡改信息,而如果使用HTTPS,密钥在你和终点站才有。

有几种方式可以实现存储功能,分别有什么优缺点?

从浏览器地址栏输入url到显示页面的步骤

1.   浏览器根据DNS服务器获取域名的IP地址

4.   浏览器得到返回内容

DOCTYPE:  告诉浏览器当前文档包含的是哪个DTD

DOMContentLoaded是DOM渲染完即可执行

动画实现的速度的选择,动画速度越快,回流次数越多,也可以选择使用 requestAnimationFrame

CSS 选择符从右往左匹配查找,避免节点层级过多

将频繁重绘或者回流的节点设置为图层,图层能够阻止该节点的渲染行为影响别的节点。比如对于 video 标签来说,浏览器会自动将该节点变为图层;以下常用属性可以生成新图层:

DNS 解析也是需要时间的,可以通过预解析的方式来预先获得域名所对应的 IP。

图片:

CSS:

css放在head里      (先加载css 然后渲染 否则渲染两次)

不使用css表达式

正确使用选择器  (应从右向左匹配 , 避免层级过多 , 扁平化)

css和js应从外部引入

JS:

JS放在body最下面      (不会阻塞渲染过程 性能优化问题; 再执行JS script能拿到所有标签)

减少DOM操作 , 对DOM查询进行缓存

多个操作尽量合并在一起执行

尽早在dom渲染完执行

删除不需要的脚本

节流:

隔一段时间发送请求:如在用户输入时,用户输入过快会导致一直发送请求,这时候我们可以使用节流函数,使隔一小段时间发送请求.

有一个按钮点击会触发网络请求,但是我们并不希望每次点击都发起网络请求,而是当用户点击按钮一段时间后没有再次点击的情况才去发起网络请求,对于这种情况我们就可以使用防抖。

预渲染:

懒加载:

懒加载就是将不关键的资源延后加载。

对于图片来说,先设置图片标签的 src 属性为一张占位图,将真实的图片资源放入一个自定义属性中,当进入自定义区域时,就将自定义属性替换为 src 属性,这样图片就会去下载资源,实现了图片懒加载。

懒加载不仅可以用于图片,也可以使用在别的资源上。比如进入可视区域才开始播放视频等等。

application/json

text/xml

multipart/form-data

application/x-www-form-urlencoded

简单快速   (每个资源都是固定的URI)

灵活  (通过一个HTTP协议可以完成不同数据类型的传输)

无连接   (连接一次断掉 , 不会一直连接)  ,

无状态   (客服端和服务端是两种身份,一次连接后就断开,下次再连接,服务端无法区分两次是否由同一客户端发起的请求)

由请求报文和响应报文组成

1. 请求报文:请求行、请求头、空行、请求体

2. 响应报文:状态行,响应头、空行、响应体

请求头:就是一些key\value值 , 告诉服务端我要什么内容 , 和要注意什么 类型

空行:遇到空行就能知道 下面不是请求头的部分了

请求体:数据

状态行:  HTTP协议、状态码 (HTTP1.1 / 200 ok)

其它都是大同小异的

GET---------获取资源

POST-------传输资源

PUT---------更新资源

DELETE------删除资源

HEAD--------获取报文首部

0  -  未初始化 , 还没有调用send方法

1  -  载入  ,  已调用send方法,正在发送请求

2  -  载入完成 ,  send()方法执行完成 , 已接收到全部响应内容

3  -  交互 ,  正在解析响应内容

4  -  完成  ,  响应内容解析完成  ,  可以在客户端调用

1xx 指示信息-表示请求一接收,继续处理

2xx  表示成功处理请求 200表示请求正确处理  206表示范围请求

3xx  重定向   304表示使用缓存

4xx  客户端请求错误    请求有语法错误或请求无法实现(400语法错误,401请求未经授权,403请求页面被禁止,404请求资源不存在)

5xx  服务器端错误    服务器未能实现合法请求(500服务器错误,503服务器过载或宕机)

非Keep-ailve模式时,每个请求/应答客户端和服务器都要新建一个连接,完成后就断开

当Keep-ailve模式(又称持久连接、连接重用)时,客户端到服务器端的连接持续有效,避免后续请求时,重新建立连接

同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议

限制:不是一个源的不能操作

如果协议、域名或者端口有一个不同就是跨域,Ajax 请求会失败。   (防止CSRF利用用户登录状态发起攻击)

JSONP    (只能get请求)  原理是利用script标签没有跨域限制,通过src指向一个ajax的URL,最后跟一个回调函数callback

CORS    关键是后端 , 服务端设置(Access-Control-Allow-Origin)

postmessage        (用于获取嵌入页面中的第三方页面数据)

基本概念:跨域脚本攻击

XSS 简单点来说,就是攻击者将可以执行的代码注入到网页中。

防范:转义输入输出的内容,对于引号、尖括号、斜杠进行转义

CSRF , 通常称为跨站请求伪造

原理:

在B网站引诱用户访问A网站(用户之前已经登陆过A网站,浏览器cookie缓存了身份验证信息),然后调用A网站的接口攻击A网站

举个例子,假设网站中有一个通过 GET 请求提交用户评论的接口,那么攻击者就可以在钓鱼网站中加入一个图片,图片的地址就是评论接口

防御措施:

(1)token验证:登陆成功后服务器下发token令牌存到用户本地,再次访问时要主动发送token,浏览器只能主动发cookie,做不到主动发token

(2)referer验证:判断页面来源是否自己站点的页面,不是不执行请求

csrf需要用户登陆,利用网站自己的接口漏洞进行攻击

xss通过注入脚本执行自己的代码

不清除浮动会发生高度塌陷:浮动元素父元素高度自适应(父元素不写高度时,子元素写了浮动后,父元素会发生高度塌陷)

宽高已知

宽高未知:

flex:

浮动:

绝对定位:

flex:

表格:

网格布局:

标准模型width不计算padding和border  IE模型width计算padding和border。  box-sizing : content-box(标准模型-默认)/border-box(IE模型)

js中如何获取盒模型宽高?

块级格式化上下文

内置函数:  Object,   Array ,   Function ,  Boolean ,  Number ,  String ,  Date ,  RegExp , Error ,  Json .

作用:  作为构造器函数

null表示空对象指针

undefined表示未赋值的变量

在使用==会发生类型转换.导致相等

箭头函数比普通函数更加简洁

箭头函数没有this

箭头函数不存在arguments对象

箭头函数不能当作构造函数

箭头函数不能用作Generator函数 (不能使用yield命令)

DOM本质:  浏览器拿到html代码后,DOM把html代码结构化成浏览器可识别以及js可识别的模型 .   (html代码就是一个字符串,但是浏览器已经把字符串结构化成树形结构了。)

数据结构:  树形

API:

区别: Attribute是对html标签属性进行获取修改,  property是js对象属性的获取修改

是内置的js对象,也是一种数据格式

有两个方法:

json数据体积小 , 传递快 , 与JavaScript交互更加方便 , 容易解析 .

但是数据描述性差 , 不如XML

同一时间只能干一件事

有同步任务和异步任务

seTimeout是异步任务 , 执行到异步任务要挂起

同步任务执行完再执行异步任务

同步会阻塞代码运行,异步不会

alert同步,seTimeout异步

在发生等待的情况下 , 程序仍然需要执行其他操作 , 不能阻塞程序运行

let,const声明不会挂载在window上,不能重复声明  ,  不存在变量提升 , 在块级作用域有效  , const一旦声明时必须赋值 , 且不能修改 .

在函数A内嵌套函数B并返回  ,  函数B可以访问到函数A的变量  ,  函数B我们称之为闭包.

意义:  闭包是为了让我们间接的访问函数内部的变量.

优点:  封装性强,使得变量始终保持在内存中。

缺点:  内存的消耗导致的性能问题

使用场景:  函数作为返回值 , 函数作为参数传递

typeof 只能判断原始类型,null除外   (js存在的bug,在最初版本为性能考虑,使用000开头表示对象,null表示全0,所以会错误的判断null为对象)

instance原理:   沿着__proto__一层一层向上找,看是否能找到对应的prototype

原型:  每个函数都有一个prototype属性,这个属性指向的就是原型对象. 每一个对象都有一个__proto__指向它构造函数的原型对象.

原型链:

当调用一个对象的属性时 , 如果自身对象未找到 , 会去对象的__proto__属性(隐式原型对象)里去找 ,  (这里的隐式原型对象指向的就是它构造函数的prototype(显示原型对象))

特点:

原型对象上的方法是被不同实例共有的 . 当我们修改原型时,与之相关的对象也会继承这一改变。

实现一个new操作符:

更推荐使用字面量的方式创建对象(无论性能上还是可读性)。因为你使用 new Object() 的方式创建对象需要通过作用域链一层层找到 Object,但是你使用字面量的方式就没这个问题。

构造函数实现继承:

缺点:     无法继承父类原型对象上的属性

原型链继承:

缺点  :   原型链上的原型对象是共用的 , 实例改变其值 , 其他实例也会发生改变

组合继承:(寄生组合继承)

ES6   (Class类继承):

构造方式:

解决了重复实例化的问题 ,又解决了对象识别的问题

工厂模式:

优点: 解决重复实例化

缺点: 无法识别到底是哪个对象的实例

构造方式与工厂模式的区别:

1.  构造方式不会显示创建对象,只要将属性赋值给this,不需要return对象

2.  工厂 在方法内部创建object对象,最后返回object对象,属性和方法都是赋给object对象

原型模式:

好处:让所有实例化的对象都拥有它包含的属性及方法。

原型模式的第二种方式 : json数据定义

混合模式(构造+原型):

对象类型存储的是地址(指针),而原始类型存储的是值

函数参数是对象指针的副本,当参数重新分配对象时,参数的指针会发生变化.两个变量的值也会不相同.

捕获和冒泡

DOM0

缺点:    后定义的事件会被覆盖之前定义的事件

DOM2

事件流:

捕获  >    目标元素   >  冒泡

事件代理:

把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。使用事件代理的好处是可以提高性能

如果一个节点中的子节点是动态生成的,那么子节点需要注册事件的话应该注册在父节点上

优势:

class 实现继承的核心在于使用 extends 表明继承自哪个父类,并且在子类构造函数中必须调用 super

缺点:不利于维护阅读,嵌套函数过多会很难处理错误

使用 :  在函数内返回一个promise对象,通过then执行下一步     特点:   promise有三种状态,一旦执行不可更改

promise链:   promise每次then调用后返回一个全新的promise,这样就可以形成链式调用

优点:  解决回调函数不停的嵌套,造成代码难以维护.

缺点:  无法取消promise,  错误需要回调函数捕获

但是:

简易版深拷贝:

一个函数如果加上 async ,那么该函数就会返回一个 Promise

存储函数调用的栈结构,遵循先进后出的原则

EventLoop:

当遇到异步代码的时候,会被挂起在Task队列中,一旦执行栈为空,就会从Task中拿出需要执行的代码执行,所以本质上讲JS中的异步还是同步行为。

异步任务执行顺序:

当执行栈执行完毕后,会首先执行微任务队列,当微任务队列执行完毕再从宏任务中读取并执行,当再次遇到微任务时,放入微任务队列。

MVP:

jquery使MVP模型

view:视图    Model:数据  Presenter:控制器

View发出一个事件交给Presenter,控制器调取model或者直接操作View,Presenter是核心 ,大部分的工作都在Presenter层    (面向DOM开发)

MVVM:

vue使用的MVVM模型

大部分工作是在操作M层,DOM操作显著减少,使用MVVM是面向数据进行编程  (面向数据开发)

数据驱动页面(data->view),页面变了也能将js中保存的变量做相应的改变(view->data),这个过程是自动的。

view = data 是input事件,只不过框架执行了我们看不到。

观察者模式

beforeCreate:  Vue实例创建前    (获取不到props和data数据)

created:  Vue实例创建后    (可以获取数据 , 但组件还未被加载)

beforeMount:  模版数据挂载前    (开始创建VDOM)

mounted:  模版数据挂载后    (将VDOM渲染为真实的DOM并且渲染数据 , 挂载组件)

beforeUpdate:  数据更新前

updated:  数据更新后    ((keep-alive组件激活前后)

beforeDestroy:  Vue实例销毁前    (适合移除事件 , 定时器)

destroyed:  Vue实例销毁后

activated:  keep-alive组件激活时

deactivated:  keep-alive组件停用时

errorCaptured:  捕获子 , 孙组件发生错误时触发 (2.5+版本增加)

stop修饰符

v-if为假时不会渲染 , v-show始终都会被渲染  , 通过display-none和display-block切换 .

computed 是计算属性,依赖其他属性来计算值,并且 computed 的值有缓存,只有当计算值变化才会返回内容。

watch 监听到值的变化就会执行回调,在回调中可以进行一些逻辑操作。

methods 每次都会进行计算

父组件通过属性的形式传递数据给子组件,子组件通过props来接收数据    ,   通过 emit 发送事件传递数据给父组件

子组件不能直接修改 props, 而是必须通过发送事件的方式告知父组件修改数据   (单向数据流)

(2)组件上的ref获取的组件上的引用

props特性:

1、在子组件中有props来接收父组件传来的数据

2、可以在子组件中使用传来的数据,但是父组件设置的属性不会在最外层的元素上显示

非props特性:

1、无法接收父组件传来的数据(因为子组件中没有相应的props来接收父组件传来的数据);

2、父组件设置的属性会在其最外层的元素上显示

使用js:

如果达不到期望 , 那可能是我自身技术水平还不行 , 我会更加努力学习的.

THE END
0.Github破赞78K!腾讯T4梳理1000+道Java面试题合集,已助36人进大厂24、Pipeline有什么好处,为什么要用pipeline? 25、是否使用过Redis 集群,集群的原理是什么? 26、Redis集群方案什么情况下会导致整个集群不可用? 27、Redis支持的Java 客户端都有哪些?官方推荐用哪个? 28、Jedis与Redi sson对比有什么优缺点? 29、Redis如何设置密码及验证密码? jvzquC41oconcr3ep1gsvrhng1jfvjnnAhoe?:<4:7=7;?=(ghoe?Kd4P{e9CVGrwiga;fmGm
1.跳槽季JavaBAT等面试题先整理面试题后续给出答案讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当new的时候,他们的执行顺序。 用过哪些Map类,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么,比如存储方式,hashcode,扩容,默认容量等。 jvzquC41dnuh0lxfp0tfv8|cpi~vgznpi780c{ykenk0fnyckny0:?;884=8
2.Java最新面试题(全网最全、最细、附答案)定制的、模块化的 Java 运行时映像有助于简化 Java 应用的部署和节省内存并增强安全性和可维护性。这对于满足现代应用程序架构的需求,如虚拟化、容器化、微服务和云原生开发,是非常重要的。 1.3、什么是字节码?采用字节码的好处是什么? 在Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它jvzq<84yyy4njyv0ep5og€x132>54>3jvor
3.建筑构造实训总结通用12篇针对房屋建筑学课程的特点,在传授建筑设计和构造理论的同时,培养学生发现问题、探索问题和解决问题的能力,通过考试来引导和强化学生自我学习、提高能力的意识[2]。设置的考试内容和试题类型应能够真正全面的测评出学生的知识水平、应用能力和综合素质。考核内容既有反应基本概念、原理和技能的填空题、名词解释、选择题,又有检验分析、解决问题jvzquC41f|wk0zguj{/exr1jcuxgw4545;:0qyon
4.长庆油田作为我国最大页岩油生产基地,累产超2000万吨意味着什么?鄂尔多斯盆地的地质条件对页岩油开采有什么好处? 其地质结构稳定,页岩层分布广且厚度适中,有利于页岩油富集和开采作业,能降低开采难度和成本,提高效率。 水平井技术在页岩油开采中有什么作用? 水平井技术能更大程度接触页岩层,提高油藏动用率,增加原油产量,为页岩油产量提升提供有力支撑。 jvzquC41yy}/ejnckt4dp8uquv5zg‚fp/{uv/lmcpiwjpp~qwvobp6xjgpmdjjs/lkjj/A7;:2;/j}rn
5.22062109Python笔记在该项目文件夹中会出现一个venv的虚拟环境文件夹,其好处是仅会有此项目所用的三方库,不会出现其他项目的三方库。如果别的项目需要第三方库 1.2.2.2.代码文件头的模板: 配置路径如下图【file】→【setting】→【file and coder Templates】: 个人常用模板如下: jvzq<84yyy4489iqe0ipo8hqpvkov87412<3385;1967:A962a715?=564<90|mvon
6.常见vuejs,webpack面试题vuehewebpack面试题定义的方法放在原型中的好处 :通过该构造函数生成的实例所拥有的方法都是指向一个函数的索引 ,这样可以节省内存。 constructor 为对象做属性初始值的 26. js的防抖和节流 1.什么是节流防抖 防抖:持续触发事件时,在单位事件只触发最后一次事件,若在单位事件内还触发,则从新计算 jvzquC41dnuh0lxfp0tfv8r2a7836=>531gsvrhng1jfvjnnu1737>75558
7.2024~2025学年第一学期德育工作总结(通用17篇)一段时间的工作在不知不觉间已经告一段落了,回顾这段时间的工作,理论知识和业务水平都得到了很大提高,将过去的成绩汇集成一份工作总结吧。但是却发现不知道该写些什么,以下是小编为大家收集的2024~2025学年第一学期德育工作总结,供大家参考借鉴,希望可以帮助到有需要的朋友。 jvzq<84yyy4vpsx0eqs0ixsi|wu{qwllkg535<9;;94ivvq
8.年前最后一波面试潮!腾讯T4梳理2022年最新999道Java岗必备面试题24、Pipeline有什么好处,为什么要用pipeline? 25、是否使用过Redis 集群,集群的原理是什么? 26、Redis集群方案什么情况下会导致整个集群不可用? 27、Redis支持的Java 客户端都有哪些?官方推荐用哪个? 28、Jedis与Redi sson对比有什么优缺点? 29、Redis如何设置密码及验证密码? jvzquC41oconcr3ep1gsvrhng1jfvjnnAhoe?:;99:;49;7(ghoe?vJmkdWnDAsy2SyVL^qz/2m
9.关于钢筋平法G101中若干问题教授答疑●墙问题(12):在03G101第21页中,C-D/1-2间,YD1D=200下面的"2Φ16Φ10@100(2)"是代表什么意思? 答墙问题(12):请见第17页第4条第(4)小条的规定。 ●墙问题(13):问:03G101-1第47页剪力墙水平钢筋构造在有端柱时,直锚长度小于Lae时,要求端部弯折15d,当剪力墙钢筋较大时,例:25,弯折长达375jvzquC41yy}/ekn5824og}4j{lj0496:24631:699:>/j}rn
10.五年级数学小故事14篇(全文)以上《简单的推理》的结课练习部分, 由于教师精心选择了新颖、有趣、富有数学内涵、条件开放设计、贴近学生生活的学习材料———侦探小故事, 恰到好处地给了学生更加广阔的思考空间。“侦探小故事”以其内在的趣味性拉近了教材内容和学生生活经验的距离, 为学生的主动学习创设了良好的心理环境, 诱发了潜在的学习动机jvzquC41yy}/;B}wgunv0lto1y5gkujycpjhu@l0jvsm
11.化工设计的意义和作用通用12篇有耐高温高压的设备,有耐腐蚀的设备等,而这些高技术含量的化工设备在安装时,由于其内部程序十分复杂,其对安装施工技术的要求也是非常高的,其安装质量的高低,也将直接决定化工设备能否正常运转,及其功能的充分发挥,因此在安装化工设备时,一定要熟悉化工设备的各种构造及功能,掌握较高的安装施工技术水平,科学合理的进行jvzquC41yy}/z~jujw4dqv4jcq}fp864;3670qyon
12.实习调研报告(15篇)艰辛知人生,实践长才干。此次实践也使我更加的了解了国情,树立起了对国家和人民强烈的责任感,不断提升思想认识水平、专业理论素养和服务社会的能力,不断提高思想政治素质、实践能力、创新创业能力。对我自己来说受益匪浅,同时也算为社会做了一点贡献。 实习调研报告3 jvzquC41o0ui3950eqs0c87245621>=:74680qyon
13.论证结构(精选5篇)ETABS模型中,板采用只考虑面内刚度的弹性膜单元,取消刚性隔板假定,六层~屋面层悬挑部位在恒载、活载工况下板(板厚100mm)在水平作用下楼面板面内应力较小。从分析结果可知:在活荷载作用下,悬挑部分各层板内均为压应力。在恒荷载作用下,悬挑部分各层板内局部产生拉应力,但拉应力很小,最大仅为0.0015MPa。因此悬挑部jvzquC41yy}/3vnujw4dqv4jcq}fp866358:0qyon
14.多媒体在识字教学中的运用范文学生写字有了努力方向,写字水平也有了很大提高。在低年级语文识字教学中,如能正确运用多媒体进行写字教学,学生受益匪浅。一方面,大大提高了学生的识字兴趣;另一方面,学生对于汉字的书写过程有了较深刻的认识。比如什么时候起笔,什么时候顿笔,怎样折锋,转锋,如何注意穿插……可以说运用多媒体教学写字,能为孩子书写打下jvzquC41yy}/i€~qq0ipo8mcqyko1;8693;/j}rn
15.发动机拆装实训总结通用12篇但长期操作中,工程机械专业《发动机构造与维修》教学除授课程过程中发动机结构各总成拆装外,为提高教学质量和效果,增加了“维修”实训内容,发动机整体拆装。也只是个整体过程拆装。没有检验过程也无法检验拆装质量。学生也只是按部就班的按要求完成发动机的整体装配,不知道自己装配能否符合实际要求,对自己“工作成果”没有jvzquC41ltj{0zguj{/exr1jcuxgw47;7>80qyon
16.八年级学习计划(精选15篇)二、听课。学习每门功课,一个很重要的环节就是要听好课,听课应做到:1、要有明确的学习目的;2、听课要特别注重“理解”。 三、做课堂笔记。做笔记对复习、作业有好处,做课堂笔记应:1、笔记要简明扼要;2、课堂上做好笔记后,还要学会课后及时整理笔记。 四、做作业。1、做作业之前,必须对当天所学的知识认真复习jvzquC41yy}/fr~khctxgw3eqo5gcw|gp1~vgnlkj{b1@7:9;760qyon
17.小城镇建设论文范例6篇在推进城镇化的过程中,将使更多的农村剩余劳动力源源不断地集中到城镇从亊工业生产和各种服务性工作,让他们有机会获取加工、服务领域产生的高于简单出售初级农产品价值的附加值,从而迅速增加收人,提髙生活消费水平,有力促进第三产业的发展,培育出区域经济新的增长点。小城镇建设与农村第三产业的发展,互为依托、相辅jvzquC41yy}/dj~ycvii0ls1jcuxgw4:;2:20qyon
18.铁路信号毕业论文15篇在铁路信号系统中,无线通信技术主要有以下特点:(1)可以对铁路的运行情况进行更加稳定的控制,不仅可以防止列车运行情况下速度过快或者多次发动,并且可以有效地节省资源。(2)在一些关键的控制系统中,列车按照操作状态和自身情况进行调节,利用计算机对列车进行辅助调整,进而提高铁路信号系统的管理水平;(3)省去地面上的信号jvzquC41yy}/jjtskmgo0lto1hgoyns144<327mvon