2022年校招前端开发面经总结(高频),适合基础好的同学

本文主要是介绍2022年校招前端开发面经总结(高频),适合基础好的同学,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2022年前端开发面经总结(高频)

博主是23届的毕业生,目前在秋招阶段,总结一下近两个月来面试遇到的高频面经吧,以下回答网上的标准答案太多了,这里就写博主自己的理解吧
下面只介绍了高频题目,适合基础比较好的同学冲刺一下,基础不是很牢的我推荐CSDN博主 zh阿飞 的博客 前端面试题整理
一些重要的术语加粗标记了,注意注意!!

一、计算机网络和浏览器部分

1、介绍一下http协议的发展

1.0

  • 短连接,每次请求都需要客户端与服务器之间建立一次连接,即三次握手和四次挥手的过程,十分耗费时间。

1.1

  • 长连接,得益于管道技术的使用,建立一次连接,可以持续传输请求和响应,请求头内的Connection: keep-alive字段。虽然允许多个请求或响应发送,但须按序处理并按序返回,引发队头阻塞问题。
  • 缓存策略,新增强缓存协商缓存,由响应头内的cache-control、expires、no-store、no-cache等字段控制。
  • range头域,允许只请求资源的某一部分,通过range字段来设置请求资源的字节范围

2.0

  • 以帧的形式传输数据,用有效序列标识帧属于哪一个流,每个流代表一个请求或响应。
  • 多路复用,允许并发多个请求,允许先完成的请求先响应给客户端,避免了队头阻塞的问题。
  • 头部压缩,通讯双方各保存一份头部信息表,第一次请求时将请求头所用的字段保存到表中,后续的请求只发送与之前请求有差异的部分,对于重复的请求字段,只需告知服务器所需的重复字段,服务器直接从头部信息表中读取即可。

2、https的实现流程

趁着这个机会简单的讲一下,网上有些写的篇幅太长了,我这里做个简述

1、客户端请求服务器,携带 随机数R1 并告知服务器自己支持哪些会话密钥生成算法(对称加密算法)
2、服务器向CA机构请求一个 证书证书私钥C1
3、服务器生成服务器 公钥1、服务器 私钥1
4、服务器将 公钥1 和相关的 源数据 放入证书,并使用一种 加密算法(如MD5) 对源数据进行加密,得到 签名(数据摘要),随后使用 证书私钥C1 对证书进行加密,将 签名、证书、加密算法、会话密钥生成算法随机数R2 一同发送给客户端
5、客户端用 内置的证书公钥 对证书进行解密,得到 证书,并使用 同一种加密算法 对证书中的源数据进行加密,得到 新的签名(数据摘要),若两个签名一致,说明原数据没有被篡改。
6、客户端生成 随机数R3,使用服务器 公钥1 加密R3,并发回给服务器
7、客户端使用 会话密钥生成算法 将R1、R2、R3生成 对称加密密钥
8、服务器收到R3后,将R1、R2、R3使用会话密钥生成算法生成对称加密密钥
9、双方通信时使用该对称加密密钥对数据进行加密 (整个https流程都是为了这个对称加密密钥)

3、说一下http缓存

  • 强缓存,服务器开启强缓存,客户端会将第一次请求响应的资源、响应头中的expires字段保存在本地,其中expires字段设置了强缓存资源的过期时间。当后续客户端再请求资源时,会对比本地时间与expires过期时间,如果过期,则需要重新向服务器发起对资源的请求,否则直接使用本地保存的资源。
  • 协商缓存,举个栗子,服务器开启协商缓存,客户端会将第一次请求响应的资源保存在本地,并将资源版本信息(E-Tag = 111、Last-Modified-Since = 2018.6.3 )保存在浏览器缓存表中,客户端第二次请求时会先请求浏览器缓存表中的缓存信息,在请求头中加入字段(If-None-Match = 111、If-Modified-Since = 2018.6.3),服务器获取之后比对E-Tag、Last-Modified-Since字段,若一致则返回304代码,客户端收到304后,直接使用本地缓存,否则返回新资源,客户端将新资源保存在本地,并将新E-Tag = 112、Modified-Since = 2018.6.8 存入浏览器缓存表。

4、输入URL跳转时的过程和TCP三次握手四次挥手

在我的面试经历中问的不多,但也是重点,网上很多相关知识,我就直接引用了CSDN用户 cute_ming 的博客了

浏览器输入url到页面展示出来的全过程(含TCP三次握手四次挥手)

5、什么是跨域?影响了什么?怎么解决?

跨域:浏览器的同源策略对资源请求和响应做出的限制,所谓同源是指"协议+域名+端口"三者相同,如果缺少了同源策略,浏览器很容易受到XSS、CSRF等攻击。

同源策略限制内容有:

  • Cookie、LocalStorage、IndexedDB 等存储性内容
  • DOM 节点
  • AJAX 请求发送后,结果被浏览器拦截了

跨域解决方案

  • 前端正向代理服务器
  • JSONP,动态创建script标签,请求一个带参网址实现跨域通信
  • nginx反向代理
  • CORS,服务器设置 Access-Control-Allow-Origin 即可
  • websocket

6、说一下事件循环(event-loop)

首先,JS是单线程的,在JS代码的执行过程中,会将同步代码放入执行栈中,将异步代码放入异步队列。执行栈中的同步代码依次执行,当执行栈为空时,轮询异步队列,异步队列中的由于类型不同,又分成宏任务队列和微任务队列,且微任务队列优先级高于宏任务队列,所以微任务队列里的任务的同步代码会先被放入执行栈中执行,再处理宏任务队列中的任务,每执行完一个宏任务,都会去执行微任务队列里的任务。如此轮询执行,直到所有队列为空。
下面放一个图帮助大家理解。
在这里插入图片描述

二、JS部分

1、JS中的数据类型有哪些?

  • 基本数据类型: String、Number、Boolean、Null、undefined、Bigint、Symbol
  • 引用数据类型:Object、Array、Map、Set

2、说一下原型链是什么

首先,从构造函数new出来的一个实例对象,都有一个属性 __proto__指向 构造函数的prototype属性,该构造函数的ptototype属性称为 原型对象,原型对象中具有 constructor 属性指向构造函数,同时具有一个__proto__属性指向 Object构造函数的prototype 属性(因为该原型对象也是通过Object构造函数new出来的),Object的原型对象上的__proto__属性指向 null。从开头的构造函数new出来的实例对象,到最终的null,中间存在原型指向的链式结构,称为原型链。
下面放一个图帮助大家理解。
在这里插入图片描述

3、new关键字的实现过程

1、生成一个空对象
2、将该空对象的原型设置为构造函数的prototype对象(也就是空对象的__proto__指向构造函数的prototype属性)
3、让函数的this指向这个对象,执行构造函数的代码(为这个新对象添加属性)
4、判断函数的返回值类型,如果是基本数据类型,返回创建的对象。如果是引用数据类型,就返回这个引用类型的对象。

4、ES6有哪些新特性

  • let和const
  • Map和Set
  • Bingint和Symbol
  • async和await
  • Promise
  • class
  • 箭头函数
  • 拓展运算符
  • 模板字符串

5、说说你对闭包的理解

闭包是一个定义在函数内部的函数,它能够访问上层函数作用域中的变量,使其不被回收,这就是闭包。
闭包常见的应用场景有:节流、防抖、函数柯理化
节流和防抖函数可以写写,函数柯理化比较偏,有兴趣可以学学

6、说说你进行数据深拷贝的几种方式

  • JSON.parse(JSON.stringify(obj))
  • 第三方库函数,如lodash库的clonedeep()
  • 手写深拷贝
function cloneDeep(obj){let newObj// 是对象,进行深拷贝if(typeof obj == 'object' || obj != null){// 判断一下obj是对象还是数组newObj = obj instanceof Object ? {} : []// 对源数据中的属性遍历,递归深拷贝for(let i in obj){newObj[i] = cloneDeep(obj[i])}}//不是对象,则直接赋值else{newObj = obj}return newObj
}

三、Vue部分

1、Vue生命周期

直接放图,大家看吧,最好背的滚瓜烂熟,一般问vue开头就是生命周期,把这个给面试官讲的仔仔细细,面试官大概不会为难你后面的vue的知识了,因为他会觉得你vue学的不错
在这里插入图片描述

2、Vue 组件间的传值的几种方式

  • 父子组件 props / emit
  • 祖孙组件 $attrs / $listeners
  • 父子、祖孙都能用的 provide / inject
  • 所有组件共用的 vuex、Vue2全局事件总线(eventBus)、Vue3全局事件总线(mitt)、localStorage

3、Vue中key的作用

简单点说就是高效更新虚拟dom。具体是怎么做的呢,会的已经想起来了,不会的看视频吧。
尚硅谷vue课程 P30讲的就是key

这篇关于2022年校招前端开发面经总结(高频),适合基础好的同学的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/422366

相关文章

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的