刷题面试类
文章平均质量分 76
包含前端以及基础后端的知识总结,各种常用面试经验等
flower_tomb
前半生浪荡,后半生煲汤
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
vue从template模板到真实渲染在页面上发生了什么
Diff算法是虚拟DOM技术的核心,用于高效比较新旧虚拟DOM树的差异并最小化真实DOM操作第一步:diff算法的入口函数:patch函数,主要判断新旧节点是不是同一个节点,然后交由不同的逻辑进行处理。// 判断传入的第一个参数,是DOM节点还是虚拟节点// 传入的第一个参数是DOM节点,此时要包装成虚拟节点// 判断oldVnode和newVnode是不是同一个节点//是同一个节点,则进行精细化比较else {// 不是同一个节点,暴力插入新的,删除旧的。原创 2025-09-24 17:40:31 · 637 阅读 · 0 评论 -
vue生命周期
每个组件都相当于一个构造函数(方便复用),页面上创建一个组件,相当于这个组件的构造函数去new一个实例,在beforeCreate这个阶段,相当于构造函数刚开始执行,初始化还没有进行完毕。beforeUpdate: 当执行这个钩子时,页面中的显示的数据还是旧的,data中的数据是更新后的, 页面还没有和最新的数据保持同步。都是处于不可用状态。beforeMount:执行到这个钩子的时候,在内存中已经编译好了模板了,但是还没有挂载到页面中,此时,页面还是旧的。但是还没有挂载到页面中,此时,页面还是旧的。原创 2025-09-20 14:09:21 · 895 阅读 · 0 评论 -
原型和原型链详解&手写new操作符
那至于原型链的理解,就是将原型一层层的找下去,比如我们的实例对象有自己的原型对象,那我们这个原型对象也是一个对象,也有自己的_proto_属性去指向他的原型,这样一层层串起来就构成了原型链。首先:所有的js对象都有一个原型(当然,除了null),这个原型我们通过_proto_或者Object.getProtoTypeOf来访问,访问到的就是我们对象的原型。重写原型会切断现有实例与原型的联系:若直接替换prototype对象,已创建的实例仍指向旧原型,新实例指向新原型。原创 2025-09-18 00:14:27 · 803 阅读 · 0 评论 -
HTML简单面试题汇总【持续更新】
面试问问题总是会层层深入,因此这份面试题排序按照一个问题引发的另一个问题进行排序,比如问html语义化会引出回答SEO,SEO会引出爬虫问题,爬虫会引出权重问题,最终引出如何做优化的问题。原创 2025-09-17 17:11:33 · 561 阅读 · 0 评论 -
从浏览器角度讲进程和线程
查资料的过程中发现以谷歌浏览器为例,先后出现了网络进程和网络线程这两种说法,乍一看觉得不对,既然网络进程已经被独立出来,为什么别的进程(例如主进程)还要分出来一个网络线程呢?共享资源不同:多个进程间不能共享资源,每个进程有自己的堆、栈、虚存空间(页表)、文件描述符等信息,而线程可以共享进程资源文件(堆和方法区)。从属关系不同:进程是正在运行程序的实例,进程中包含了线程,而线程中不能包含进程。原创 2025-09-17 14:16:10 · 1084 阅读 · 0 评论 -
js中异步编程的实现方式【详细】
Promise是异步编程的一种解决方案,Promise 是一个构造函数,接收一个函数作为参数,返回一个 Promise 实例。首先,我已知promise的then方法返回的是一个新的promise,从这段代码可以看出,p1的then方法的成功回调中返回一个字符串—‘下一步’,直接被下一个then方法捕获了。当你then里面的回调函数返回一个promise时候,then返回新的promise会跟随你在回调函数中返回的promise的状态[你也可以看成同一个promise,没有差别,反正都是执行相同的回调]。原创 2025-09-16 23:32:09 · 991 阅读 · 0 评论 -
对浏览器事件机制的理解
大量元素需要绑定的情况吧,无限滚动列表、动态渲染的表格数据,比如数据可能动态生成,越来越多,或者会有一些动态生成的dom元素不好绑定【vue已经不需要手动做事件委托了,Vue的模板语法已优化事件处理机制,直接通过@click绑定到子元素时,Vue会复用事件处理器而非重复创建,因此短列表或静态内容无需强制使用事件委托】当然,事件委托也是有局限的。也可以使用capture来指定捕获阶段执行,这样如果父元素绑定的也是捕获事件,那就会先执行父元素的回调,再执行子元素的回调。, 事件除了用户触发的动作外,还可以是。原创 2025-09-11 23:26:12 · 445 阅读 · 0 评论 -
js的事件循环机制的理解
这是由JS的用途决定的,JS的用途是与用户交互,以及操作DOM,假设JS有两个线程,一个要在某个DOM节点上添加内容,一个要删除这个节点,那浏览器该以哪个为准呢,事情就变得复杂了。【如果是这样的话,那一个3秒的宏任务,会和一个耗费8秒的微任务几乎同时分别推入宏任务队列和微任务队列,那这个时候如果调用栈执行空了,先取出这个微任务执行,那可能8s的打印出来了,定时器还没打印出来,同步任务与宏任务:整个脚本(主线程代码),即script标签里的代码,本身就是一个宏任务,主线程执行脚本中的同步代码属于初始宏任务。原创 2025-09-11 17:15:25 · 557 阅读 · 0 评论 -
data为什么是一个函数而不是对象
那我们在所有实例中访问data,实际上都会去访问构造函数身上的原型对象,那我们修改这个data的某个值,实际上修改了堆中存放的数据,而栈中的地址是不发生改变的,这就会导致所有的实例访问到的数据都会同样改变,无法做到数据隔离。这个例子中,构造函数的原型的data属性,实际上存放了{message:10}这个对象在栈中的指针,而这个{message:10}对象实际上是存放在堆中的。我们知道,vue的每个组件都相当于构造函数,在页面上的每次使用都相当于构造函数进行了一次实例化。原创 2025-09-11 12:06:49 · 176 阅读 · 0 评论 -
v-model是怎么实现的,语法糖到底是什么
默认插槽的内容,孩子2原创 2025-09-11 10:50:50 · 317 阅读 · 0 评论 -
js面试题
声明一个函数,然后立即调用这个函数就叫做立即执行函数,优点:1不必为函数命名,避免了污染全局变量2立即执行函数会形成一个单独的作用域,我们可以封装一些临时变量或者局部变量,避免污染全局变量})(12345)比如你想在页面加载完成后做一些事情,比如更改一个dom元素的样式,但是这个更改在初始化以后只需要做一次,那你完全可以把要更改的内容写在一个立即执行函数里面,这样函数里面用的变量在执行完成后就会回收掉,避免污染全局变量。原创 2023-12-22 15:35:04 · 436 阅读 · 0 评论 -
css面试题
html,css,浏览器面试题原创 2023-02-09 15:37:36 · 267 阅读 · 0 评论
分享