前端八股文

前端八股文

目录

  • 前端八股文
    • 1.css选择优先级?
    • 2.px与rem区别?
    • 3.重绘与重排的区别?
    • 4.元素水平垂直居中的方法?
    • 5.什么是闭包,闭包有什么特点?
    • 6.什么是事件委托?
    • 7.什么是原型链?
    • 8.new操作符具体做了什么?
    • 9.Js是如何实现继承的?
    • 10.JS中的this指向的问题?
    • 11.ES6的新特性有哪些?
    • 12.call、apply、bind三者有什么区别?
    • 13.如何实现一个深拷贝?
    • 14.ajax是什么?是怎么实现的?
    • 15.get和post有什么区别?
    • 16.promise的原理是什么?优缺点是什么?
    • 17.token登录流程?
    • 18.url解析/页面渲染的过程是怎么样的?


1.css选择优先级?

!important > 行内样式 > id > 类/伪类/属性 > 标签 > 全局选择器

2.px与rem区别?

px是像素,每个像素大小是一样的,绝对单位长度。
rem,相对单位,相对于html根节点的font-size的值,font-size:62.5%
1rem = 10px。

3.重绘与重排的区别?

重排(回流):布局引擎会根据所有的样式计算盒模型在页面的位置和大小。
重绘:计算盒模型在页面的位置、大小和其他属性后,浏览器会根据盒子模型的特性进行绘制。
对DOM的大小、位置进行修改后,浏览器需要重新计算元素的几何属性,叫作重排;
对DOM的样式进行修改,比如color和background-color,浏览器不需要重新计算几何属性的时候,直接绘制了该元素的新样式,只触发了重绘。

4.元素水平垂直居中的方法?

1.定位+margin
2.定位+transform
3.flex布局 justify-content:center align-item:center
4.grid布局
5.table布局

5.什么是闭包,闭包有什么特点?

函数嵌套函数,内部函数被外部函数返回并保存下来时候,就会产生闭包
特点:可以重复利用变量,并且这个变量不会污染全局的一种机制;这个变量一种保存再内存在,不会被垃圾回收机制回收
确定:闭包较多时候,会消耗内存,导致页面性能下降。
使用场景:防抖,节流,函数嵌套函数避免全局污染的时候。

function fn(a){return function(){console.log(a)}
}

6.什么是事件委托?

又叫事件代理,利用了事件冒泡的机制实现,也就是说把子元素的事件绑定到了父元素身上。
如果子元素阻止了事件冒泡,那么委托也不能成立。
阻止事件冒泡:event.stopPropagation()
addEventListener(‘click’,‘函数名’,true/false) 默认是false(事件冒泡),true(事件捕获)
好处:提高性能,减少事件的绑定

7.什么是原型链?

原型就是一个普通对象,他是为了构造函数的实例共享属性和方法:所有实例中引用的原型都是同一个对象
使用prototype可以把方法挂在原型上,内存只保留一份。
_ proto _可以理解为指针,实例对象中的属性,指向了构造函数原型(prototype)
一个实例对象在调用属性和方法的时候,会依次从实例本身、构造函数原型、原型的原型上去查找

function Person(){this.say = function(){console.log('唱歌')
}
Person.prototype.look = function(){console.log('西游')
}
var p1 = new Person()
var p2 = new Person()
p1.say()  // 唱歌
p2.say()  // 唱歌
p1.look()  // 西游
p2.look()  // 西游
console.log( p1._proto_ === Person.prototype )  true

8.new操作符具体做了什么?

1.先创建一个空对象;
2.把空对象和构造函数通过原型链进行链接;
3.把构造函数的this绑定到新的空对象身上;
4.根据构建函数返回的类型,如果是值类型,则返回对象,如果是引用类型,就返回引用类型。

9.Js是如何实现继承的?

1.原型链继承
2.借用构造函数继承
3.组合式继承
4.ES6的class类继承

10.JS中的this指向的问题?

1.全局中的this指向 指向的是window;
2.全局作用域或者普通函数中的this 指向的是全局window;
3.this永远指向最后调用它的对象 在不是箭头函数的情况下;
4.new关键词改变了this的指向;
5.apply,call,bind 可以改变this指向,不是箭头函数;
6.箭头函数中的this,它的指向在定义的时候已经确定了,箭头函数没有this,看外层是否有函数,有就是外层函数的this,没有就是window;
7.匿名函数中的this 永远指向window

11.ES6的新特性有哪些?

1.新增块级作用域(let,const)
2.新增定义类的语法(class)
3.新增了一种基本数据类型(symbol)
4.新增数组API
5.promise async与await
6.新增了set和map数据结构

12.call、apply、bind三者有什么区别?

都是改变this的指向和函数的调用,call和apply功能类似,只是传参的方法不同;
call方法传递的是一个参数列表,apply传递的是一个数组,bind传参后不会立刻执行,会返回一个改变了this指向的函数,这个函数还是可以传参的。

13.如何实现一个深拷贝?

深拷贝就是完全拷贝一份新对象,会在堆内存开辟新的空间,拷贝对象被修改后,原对象不受影响;
主要针对的是引用数据类型
1.扩展运算符 缺点:只能实现第一层,当有多层的时候还是浅拷贝;
2.JSON.parse(JSON.stringfy())缺点:该方法不会拷贝内部函数;
3.利用递归函数实现 ;

14.ajax是什么?是怎么实现的?

创建交互式网页应用的网页开发技术 在不重新加载整个网页的前提下,与服务器交换数据并更新部分内容;
通过Xmlhttprequest对象向服务器发送异步请求,然后从服务器拿到数据,最后通过JS操作DOM更新界面:
1.创建Xmlhttprequest 对象 ;
2.通过Xml对象里的open()方法和服务器建立连接;
3.构建请求所需的数据,并通过Xml对象的send()发送给服务器;
4.通过Xml对象的onreadystate change 事件监听服务器和你的通信状态;
5.接收并处理服务器响应的数据结果;
6.把处理的数据更新到HTML页面上。

15.get和post有什么区别?

1.get一般是获取数据,post一般是提交数据;
2.get参数放在url中,所以安全性比较差,post是放在body中;
3.get请求刷新服务器或退回是没有影响的,post请求退回是会重新提交数据;
4.get请求时会被缓存,会保存再浏览器的历史记录中,post不会;

16.promise的原理是什么?优缺点是什么?

Promise对象,封装了一个异步操作并且还可以获取成功或失败的结果;
Promise主要就是解决回调地狱的问题,之前如果异步任务比较多,同时他们有相互依赖的关系,就只能使用回调函数处理,这样就容易形成回调地狱,代码的可读性差,可维护性也很差;
有三种状态:pending 初始状态 fulfilled 成功状态 reject 失败状态
状态改变会有两种情况:
pending -> fulfilled ; pending -> rejected 一旦发生,状态就会凝固,不会再变;
首先就是无法取消Promise,一旦创建他就会立即执行,不能中途取消;
如果不设回调,Promise内部抛出的就无法反馈到外面;
若当前处于pending状态时,无法得知目前在哪个阶段;
原理:
构造Promise实例,需要传递函数的参数,这个函数有两个形参,分别都是函数类型,一个是resolve,一个是reject;resolve 函数的作用是,将 Promise 对象的状态从 未完成 变为 成功(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject 函数的作用是,将 Promise 对象的状态从 未完成 变为 失败(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去;用then方法分别指定 resolved 状态和 rejected 状态的回调函数。

17.token登录流程?

1.客户端用账号密码请求登录;
2.服务端收到请求后,需要去验证账号密码;
3.验证成功后,服务端会签发一个token,把这个token发送给客户端;
4.客户端收到token后保存起来,可以放在cookie也可以是localstorage;
5.客户端每次向服务端发送请求资源的时候,都需要携带这个token;
6.服务端收到请求,接着去验证客户端里的token,验证成功才会返回给客户端请求的数据。

18.url解析/页面渲染的过程是怎么样的?

1.DNS解析
2.建立TCP连接
3.发送HTTP请求
4.服务器处理请求
5.渲染页面 浏览器获取HTML和CSS资源,构建DOM树和CSS树,把DOM和CSS合并成渲染树
6.断开TCP连接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

交易历史记录20231205 记录

昨日回顾: select top 10000 * from dbo.CODEINFO A left join dbo.全部A股20231205010101 B ON A.CODE B.代码 left join dbo.全部A股20231205CONF D on A.CODED.代码left join dbo.全部A股20231205 G on A.CODEG.代码 left…

LeetCode-合并有序链表问题

1.合并两个有序链表 题目描述: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 思路: 首先建立一个头节点方便后续操作,然后开始循环将两个链表的节点值进行比较,如果list1…

Windows Subsystem for Linux (WSL) 安装与使用笔记

文章目录 Part.I IntroductionPart.II 安装Chap.I 安装流程Chap.II 迁移至其他盘 Part.III 使用Chap.I 一些信息Chap.II 配置下载软件的源Chap.III 安装 pip Reference Part.I Introduction Windows Subsystem for Linux 简写为 WSL,是 Windows 的一个 Linux 子系统…

常用的建表但范式、反规范化

规范化: 规范化是用于数据库设计的一系列原理和技术,它可以减少表中数据的冗余,增加数据完整性和一致性。通常有很多范式。 第一范式(1NF): 常用的三种范式: 表中的字段都是不可再分割的原子属…

蝴蝶Butterfly 数据集VOC+yolo-2000张(labelImg标注)

蝴蝶被誉为“会飞的花朵”,是一类非常美丽的昆虫。蝴蝶大多数体型属于中型至大型,翅展在15~260毫米之间,有2对膜质的翅。体躯长圆柱形,分为头、胸、腹三部分。体及翅膜上覆有鳞片及毛,形成各种色彩斑纹。今天要介绍的是…

算法导论复习(二)

算法导论第二次复习以 分治法 为专题 文章目录 分治算法是什么归并排序Strassen矩阵乘法最近点对 求解递推表达式 分治算法是什么 归并排序 代码如下&#xff1a; #include <iostream> #include <vector>using namespace std;// 归并函数&#xff0c;将两个有序数…

代码随想Day36 | 435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间 这道题和前一天的射箭题目思想类似&#xff0c;用总区间个数-不重叠的区间个数等于需要去除的区间个数。首先对左边界排序&#xff0c;如果当前的左边界大于等于上一区间的右边界&#xff0c;则说明是一个不重叠的区间&#xff0c;否则&#xff0c;更新上一重…

Redis生产实战-热key、大key解决方案、数据库与缓存最终一致性解决方案

生产环境中热 key 处理 热 key 问题就是某一瞬间可能某条内容特别火爆&#xff0c;大量的请求去访问这个数据&#xff0c;那么这样的 key 就是热 key&#xff0c;往往这样的 key 也是存储在了一个 redis 节点中&#xff0c;对该节点压力很大 那么对于热 key 的处理就是通过热…

nginx 优化和安装防盗链以及实验举例

目录 nginx编译安装常用模块 生产中建议设置 nginx 内核限制文件优化 先将 nginx编译安装直至 systemctl命令使用 nginx服务 安全优化 隐藏 nginx版本号 查看版本号 隐藏版本信息 修改用户与组 限制单个 IP的访问频率和连接数 防盗链相关设置 在源主机里配置防盗链 …

【C++11】右值引用与移动语义

一.左值与右值 左值&#xff1a;可以取地址的表示数据的表达式&#xff0c;左值可以出现在赋值符号左边 右值&#xff1a;不能取地址的表示数据的表达式&#xff0c;右值不能出现在赋值符号左边 int fun() {return 0; } int main() {int a 0;//a->左值const int b 1;//b-&…

【lesson14】MySQL表的基本查询(1)

文章目录 表的基本操作介绍retrieveselect列建表基本测试 where子句建表基本测试 表的基本操作介绍 CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除&#xff09; retrieve select列 建表 基本测试 插入数据 全列查询 …

2023年度影响力出海品牌传音移动互联:开放合作 赋能更多中国企业高效出海

伴随着全球化的脚步&#xff0c;出海成为许多中国企业的“必选项”&#xff0c;与之配套的出海服务相关业务也得到了极大的发展。近日&#xff0c;第五届鲸鸣奖颁奖典礼上&#xff0c;传音移动互联凭借为企业提供高效优质的出海解决方案&#xff0c;荣获鲸鸣奖“2023年度影响力…

SpringBoot 引入nacos 【最新 | 可运行】

SpringBoot 引入nacos 首先要了解在 Springboot 中只支持那些 Springboot 的版本&#xff08;我真的被这个搞死了&#xff09;,可以如下图参考&#xff1a; 下面我们就开始吧 下载 Nacos nacos 下载地址&#xff0c;这里可以选择你要下载的版本&#xff0c;我选择下载了2.2.…

[c]零钱兑换

题目比较简单&#xff0c;看答案就能看懂什么意思 #include<stdio.h> int main() {int count 0;int n;scanf("%d", &n);for (int i 0; i < n; i){for (int k 0; k <n/2; k){for (int j 0; j < n/5 ; j){if (i 2 * k 5 * j n){count;}}}}p…

这套软件测试技巧|软测经典面试题真的有用,今天面试大部分都遇到了!!!

祝同学们都能够顺利找到心仪的工作拿高薪&#xff0c;废话不多说&#xff0c;下面上题了~ 46、您以往是否曾经从事过性能测试工作&#xff1f;如果有&#xff0c;请尽可能的详细描述您以往的性能测试工作的完整过程。 &#xff08;以自己最熟悉的性能测试项目为例&#xff09; …

可惜+悲伤+唉=emmo...

拟合曲线&#xff1a; 参考论文&#xff1a;黄河清.NURBS曲面逆向造型关键算法的研究与应用 [D].西北工业大学,2004 三次NURBS曲线控制点的计算 首先给出拟合曲线的具体步骤&#xff1a; 1、节点矢量的求解方法为&#xff1a; 采用积累弦长参数化法&#xff0c;即&#xff1…

应用ICP-MS实验PFA烧杯耐腐蚀带刻度反应杯的特点分析

聚四氟&#xff08;PFA&#xff09;烧杯可用于痕量分析、同位素分析等实验&#xff0c;ICP-MS实验室适用。半导体、多晶硅、光伏电子 锂电池行业均适用。杯体刻度清晰&#xff0c;方便观察&#xff0c;尖嘴方便倾倒溶液。 可溶性聚四氟乙烯烧杯特性&#xff1a; 1、透明&…

(企业 / 公司项目)微服务项目解决跨域问题:

前后端分离项目中前端出现了跨域的问题 在网关模块配置文件中添加 配置 application.properties # 允许请求来源&#xff08;老版本叫allowedOrigin&#xff09; spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOriginPatterns* # 允许携带的头信息 spri…

经典基本电路

USB电路 USB差分走线的阻抗为90欧:差分对10mil宽的走线以及5mil的间距,两边包地15/20mil以上厚度(SI9000计算阻抗) USB2.0接口电路&#xff1a; USB3.0接口电路&#xff1a; USB HUB电路: HDMI电路 HDMI差分走线的阻抗为100欧:差分对6mil宽的走线以及5mil的间距,两边包地15/20…

PADS的使用

目录 一、PADS常规操作1.1 常用快捷键1.2 Logic相关设置 二、Logic库操作2.1 逻辑库2.2 封装库2.3 元件库 一、PADS常规操作 PADS安装好了之后&#xff0c;主要使用下面三个软件&#xff1a; Logic&#xff1a;画原理图文件&#xff0c;也可以使用OrCAD导入Router&#xff1a;…