前端面试总结(持续更新),2024年最新2024Web前端精选面试实战总结整理

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

  1. 区别

前面的hashchange,你只能改变#后面的url片段。而pushState设置的新URL可以是与当前URL同源的任意URL。

history模式则会将URL修改得就和正常请求后端的URL一样,如后端没有配置对应/user/id的路由处理,则会返回404错误

  1. 开启history模式:

const router = new VueRouter({

mode: ‘history’,

routes: […]

})


webpack打包模式有几种(三种)

=====================================================================================

  1. –mode development //开发环境模式

在这里插入图片描述

  1. –mode production //生产模式

在这里插入图片描述

  1. 无模式 到时候不输入 mode 值 但是会有警告

es6新数据类型(Symbol)

===================================================================================

symbol这个类型一旦定义出来是属于独一无二的,他是通过Symbol函数生成的。例如: let a = Symbol(),因为他是独一无二的所以即便创建两个传的参数都一样的symbol返回值 也是不相等的 例如:

在这里插入图片描述

所以symbol一般可以用在对象的key值, 这样的话就不会出现key值重复,且该对象的这个key value值是唯一的

var username = Symbol();

var obj = {

age:23,

sex:“man”,

}


如何避免回流

=========================================================================

首先回流是指渲染树中的一些元素的几何属性发生变化,如大小、位置等,而这些属性会影响到布局的操作,进行了重新绘制(会消耗性能)

避免的话:

  1. 如果想设定元素的样式,直接改变class名

  2. 避免设置多项内联样式,就是说少使用style

  3. 少用tabel

  4. 细小的复杂模块,元素多地方小比较固定,使用定位

  5. 将一些公用的css抽离 做一个cmmon.css引入


map和object区别

===============================================================================

  1. 键值对的key不一样 object只能是Symbol或者是字符串,map随意

  2. map的键值是有序的,因此,当对它进行遍历时,Map 对象是按插入的顺序返回键值

  3. Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算


VUE路由router和route的区别

=======================================================================================

  1. router为VueRouter的实例,相当于一个全局的路由器对象,里面含有很多属性和子对象,例如history对象。。。经常用的跳转链接就可以用this.$router.push,和router-link跳转一样

  2. route相当于当前正在跳转的路由对象。。可以从里面获取name,path,params,query等

另外跳转路由的时候,query传参是针对path的,params传参是针对name的


vue computed和watch区别及methods函数区别

===================================================================================================

computed依赖缓存,如果默认依赖的属性不发生改变 ,则直接从缓存取最终的值就不需要再重新计算了,相对比watch和methods的方法需要再重新执行一次函数。 对于使用意义上也有区别,watch是监听回调,进行一系列操作,而computed是需要计算一个属性要显示到页面上,所以要有return返回值

另外看一下以下两种操作:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

上述的效果都是一样,主要是想告诉大家 类似的去操作methods中方法也会达到效果


js创建数组时 设置length

===================================================================================

  1. let a = new Array(8)

  2. let b = [] b.length = 20

这种创建完的数组打印出来是这样的:[empty × 20]


webpack 中 loader 和 plugin 的区别是什么

===================================================================================================

1,loader 用于对模块的源代码进行转换。loader 可以使你在 import 或 “load(加载)” 模块时预处理文件,说白了就是单纯对文件操作。

2,plugin是一个扩展器,它丰富了webpack本身,针对是loader结束后,webpack打包的整个过程,它并不直接操作文件,而是基于事件机制工作,会监听webpack打包过程中的某些节点,执行广泛的任务


Vue.nextTick(callback) 使用原理

==============================================================================================

Vue是异步执行dom更新的,一旦观察到数据变化,Vue就会开启一个队列,然后把在同一个事件循环 (event loop) 当中观察到数据变化的 watcher 推送进这个队列。如果这个watcher被触发多次,只会被推送到队列一次。这种缓冲行为可以有效的去掉重复数据造成的不必要的计算和DOm操作。而在下一个事件循环时,Vue会清空队列,并进行必要的DOM更新。

当你设置绑定的数据让其变化的时候,DOM 并不会马上更新,在下一个事件循环开始时执行更新时才会进行必要的DOM更新。如果此时你想要根据更新的 DOM 状态去做某些事情,就会出现问题。。为了在数据变化之后等待 Vue 完成更新 DOM ,可以在数据变化之后立即使用 Vue.nextTick(callback) 。这样回调函数在 DOM 更新完成后就会调用。


vue中v-for与v-if 尽量不放一起(同一个标签元素里!!同一行)

=======================================================================================================

v-for 优先级是比 v-if 高,如果放在一起的话会带来性能方面的浪费(每次渲染都会先循环再进行条件判断)

所以尽量放不同的标签里,解决办法:

  1. 则在外层嵌套的这一层进行 v-if 判断,然后再内部进行 v-for 循环

  2. 如果条件出现再循环内部,可通过计算属性 computed 提前过滤掉那些不需要显示的项,然后v-for。


vue中:key的作用

==============================================================================

  • 首先介绍一下diff算法:
  1. vue也好 react也好,他们都是操作虚拟dom的,其原理就是diff算法。

  2. 当页面的数据发生变化时,Diff算法只会比较同一层级的节点。同时,在比较的时候,如果节点类型不同,直接干掉前面的节点,再创建并插入新的节点,不会再比较这个节点以后的子节点。

  3. 如果节点类型相同,则会重新设置该节点的属性,从而实现节点的更新

  4. 说白了就是更佳优化了对虚拟dom的检索及更新操作,减少计算时的消耗。

  5. 核心概念就是两个相同的组件产生类似的DOM结构,不同的组件产生不同的DOM结构,同一层级的一组节点,他们可以通过唯一的id进行区分,这个id就是key

  • key的作用

所以vue里key的作用就是为了配合diff算法高效的更新虚拟DOM。另外vue中在使用相同标签名元素的过渡切换时,也会使用到key属性,其目的也是为了让vue可以区分它们


常见的http请求状态码

===============================================================================

罗列了一下工作中常见的状态码,不是很全面的,只是一些开发中常见的

  • 100:告诉客户端应该继续发送请求,这个临时响应是用来通知客户端的,部分的请求服务器已经接受,但是客户端应继续发送求请求的剩余部分

  • 200:这个是最常见的http状态码,表示服务器已经成功接受请求,并将返回客户端所请求的最终结果

  • 301:永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI

  • 302:临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

  • 400: 客户端请求的语法错误,服务器无法理解

  • 401: 请求要求用户的身份认证

  • 403:服务器理解请求客户端的请求,但是拒绝执行此请求

  • 404:服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面

  • 500:服务器内部错误,无法完成请求

  • 501:服务器不支持请求的功能,无法完成请求

  • 502:作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

  • 503:由于超载或系统维护,服务器暂时的无法处理客户端的请求

BFC

======================================================================

  • bfc概念

BFC是一个独立的布局环境,其中的元素布局是不受外界的影响,并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。

具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。

通俗一点来讲,可以把 BFC 理解为一个封闭的大箱子,箱子内部的元素无论如何翻江倒海,都不会影响到外部。

  • bfc的触发:

body 根元素

浮动元素:float 除 none 以外的值

文末

从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。

个人将这段时间所学的知识,分为三个阶段:

第一阶段:HTML&CSS&JavaScript基础

第二阶段:移动端开发技术

第三阶段:前端常用框架

  • 推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;

  • 大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
82ec0da6e4.png)

  • 推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;

  • 大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-TCIaRHTX-1713479769566)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值