前端面试笔记(更新ing~)

1:什么是跨域?为什么会出现跨域?解决方案有哪些?*

跨域是指浏览器不能执行其它网站的脚本。浏览器为了防止受到攻击,有了同源策略(协议+域名+端口)限制,本页面与被请求的页面URL中协议、域名、端口有一个不同时,就会出现跨域问题。

CORS跨域资源共享(Cross-Origin Resource Sharing)方法:

核心就是设置头部Access-Control-Allow-Oringin.

服务器语言是Node.js的方法:配置cors(npm i cors)

const cors =require('cors');

app.use(
    cors({
       origin:"*",//*表示允许所有源
       methods:['GET','POST']//表示允许的方法
    })
)

jsonp(JSON with Padding)方法:

原理是src不受跨域影响。所以让后台返回一个js文件,js里的代码包含数据。一般就是前端写个函数,把函数名告诉后端,后端返回一段js文件,里边内容为执行这个函数并传参,参数就是要返回的数据。只支持GET方法。

jQuery中的jsonp只需要加上 dataType:‘jsonp’

同源策略的限制范围

不能获取不同源的 cookie,LocalStorage 和 indexDB
不能获取不同源的 DOM()
不能发送不同源的 ajax 请求 (可以向不同源的服务器发起请求,但是返回的数据会被浏览器拦截)

2:OSI七层模型(TCP/IP5层参考模型)

开放系统互连参考模型 (Open System Interconnect 简称OSI) 

应用层,应用层给应用程序提供了接口,使应用程序接入到网络。
DNS(域名解析协议):将域名解析为IP地址
HTTP(超文本传输协议):规定web服务端和客户端的数据传输格式
HTTPS(超文本传输安全协议):是HTTP加上TLS/SSL协议构成的可加密传输的网络协议
FTP(文件传输协议)
NFS(网络文件系统)
TELENT

表示层,负责数据格式的转换。
LPP(轻量级会话协议)

会话层,负责建立、维护、终止会话连接,提供会话管理服务等。
LDAP(轻型目录访问协议)

传输层,负责传送完整的报文,并进行流量控制和差错控制。
TCP(传输控制协议)
UDP(用户数据报协议):

网络层,负责路由、传送分组。
IP(网络互联协议)
ICMP(Internet控制报文协议)
ICMPv6(互联网控制信息协议版本六)

数据链路层,负责传送帧。
VLAN(虚拟局域网):
STP(生成树协议)
WIFI(无线通信技术)
PPP(点对点协议)
HDLC(高级数据链路控制)

物理层,负责传送比特。

3:HTTP请求方法

GET:获取资源
POST:传输实体主体
PUT:传输文件
HEAD:获得报文首部
DELETE:删除文件
OPTIONS:询问支持的方法
TRACE:追踪路径
CONNECT:要求用隧道协议连接代理
LINK:建立和资源之间的联系
UNLINE:断开连接关系

4:session认证和token认证

基于Session认证方式的流程是,用户认证成功后,在服务端生成用户相关的数据保存在session(当前会话),而发给客户端的 sesssion_id 存放到 cookie 中,这样用客户端请求时带上 session_id 就可以验证服务器端是否存在 session 数据,以此完成用户的合法校验。当用户退出系统或session过期销毁时,客户端的session_id也就无效了。

token认证流程:
1、客户端使用用户名和密码请求登录
2、服务端收到请求,验证用户名和密码
3、验证成功后,服务端会签发一个token,再把这个token返回给客户端
4、客户端收到token后可以把它存储起来,比如放到cookie中
5、客户端每次向服务端请求资源时需要携带服务端签发的token,可以在cookie或者header中携带
服务端收到请求,然后去验证客户端请求里面带着的token,如果验证成功,就向客户端返回请求数据

5:ES6新特性有哪些?

let 声明变量、const声明常量、解构赋值、模板字符串、对象的简化写法、箭头函数、函数参数的默认值设置、rest参数、扩展运算符、迭代器、生成器、promise和proxy等

6:哪些数组方法能改变原数组?

1.sort();返回改变数组
2.reverse();返回改变数组
3.pop();返回弹出元素
4.push();返回插入数组的长度
5.shift();返回弹出元素
6.unshift();返回插入数组的长度
7.splice();返回删除的元素

7:什么是回调函数?

被作为实参传入另一函数,并在该外部函数内被调用,用以来完成某些任务的函数,称为回调函数。简单来说就是一个函数作为另一个函数的参数。

8:什么是闭包?

概念:一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域。
简单来说:内层函数+引用的外层函数变量=闭包
1、外部能够访问函数内部变量
2、局部变量会常驻在内存中不会被垃圾回收机制回收
3、可以避免使用全局变量,防止全局变量污染
4、可能会造成内存泄漏(有一块内存空间被长期占用,而不被释放)

9:防抖?节流?

防抖(debounce):指在一段时间内,函数被触发多次,只执行一次,多个函数只响应一次。适用于提交表单,输入框输入验证等。
节流(throttle):指持续触发某个事件时,会有规律的间隔一段时间执行函数,多个函数按时间做平均分配触发。适用于DOM元素拖拽等。

10:浮动与定位的区别

设置了浮动的元素,仍旧处于标准文档流中 意味着它会占据标准文档流中的空间,对周围的元素产生影响。当元素没有设置宽度,而设置了浮动属性,元素的宽度随内容的变化而变化,当元素设置浮动属性后,会对相邻的元素产生影响, 相邻元素特指紧邻后面的元素

当一个元素使用绝对定位后,它的位置将依据浏览器左上角开始计算或相对于父容器(在父容器使用相对定位时)。 绝对定位使元素脱离文档流,因此不占据空间。普通文档流中元素的布局就当绝对定位的元素不存在时一样。因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其他元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值