08 2022 档案
摘要:题目描述 给你一棵二叉树的根节点 root ,返回树的 最大宽度 。树的 最大宽度 是所有层中最大的 宽度 。每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。将这个二叉树视作与满二叉树结构相同,两端点间会出现一些延伸到这一层的 null 节点,这些 null 节点也计入长
阅读全文
摘要:654.最大二叉树 题目描述 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的 最大值 。 递归地在 最大值 左边 的 子数组前缀上 构建左子树。 递归地在 最大值 右边 的 子数组后缀上 构建右子树。 返回 nu
阅读全文
摘要:基于cookie/session的认证方案 我们可能会认为仅使用cookie就能实现服务器标识用户的功能,但这会有很多弊端。首先,cookie中的数据能够在客户端被修改,安全性较低;其次,如果cookie的数据字段太多也影响传输效率。因此,Session的出现就是为了解决这些问题。相比于客户端,服务
阅读全文
摘要:HTTP与HTTPS的区别 HTTP(HyperText Transfer Protocol),即超文本传输协议,是一个应用层协议。HTTP协议以明文方式发送内容,不提供数据加密,因此是不安全的。而HTTPS协议是在HTTP的基础上加入SSL/TSL协议,使用混合加密算法(对称加密+非对称加密)来实
阅读全文
摘要:从地址栏输入url到页面显示的整个过程 1、浏览器解析URL,提取域名、端口号以及请求资源的路径; 2、通过域名服务系统(DNS)获取域名对应的目标服务器的IP地址; 3、得到目标服务器的IP地址以及端口号(如果没有端口号,http的默认端口号是80,https是443)后,建立TCP连接; 4、浏
阅读全文
摘要:题目描述 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。 解题思路 以常规思路,就是使用三重循环来依次枚举三元组<a,b,c>,重点是如何保证
阅读全文
摘要:题目描述 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。 解题思路 错误思路 一开始想到的是贪心算法,将不同面额的硬
阅读全文
摘要:支持Framents语法 在Vue2中要求组件模板中只能有一个根元素,因为在Diff算法中,虚拟DOM是一个树结构,单个根有利于Diff算法对比时进行查找与遍历。而Vue3实际上在多个根节点外层包裹一个虚拟根节点,来实现单个根的虚拟DOM树,因此在Vue3的组件模板中支持多个根元素。 Vue3新增的
阅读全文
摘要:Options API 在Vue2中,我们会在一个组件实例内部定义各种选项,如data、methods,这些就是Options API。然而,使用Options API,我们需要将实现某一功能的相关代码拆分到不同的选项中,当组件变得复杂时容易造成逻辑混乱。 Composition API Vue3新
阅读全文
摘要:理解Vue的生命周期 生命周期就是一个Vue实例从创建到销毁的过程。在整个生命周期中,Vue也提供了不同的生命周期钩子函数,让用户在适当的时候添加自己的代码。 created()与mounted()的应用场景 created()是在模板渲染到页面前调用的,它表示Vue实例已创建,可以获取到Vue实例
阅读全文
摘要:nextTick vm.$nextTick()接收一个回调函数作为参数,它的作用是将回调延迟到下次DOM更新周期之后执行。在开发中会遇到一种场景:当更新了状态时,需要对新DOM做一些操作,但此时我们还获取不到更新后的DOM,因为视图还未重新渲染。将对新DOM的操作放在nextTick()的回调函数中
阅读全文
摘要:methods、computed、watch选项的区别 将同样的函数定义为一个方法或计算属性,结果上是完全相同的。但相比于methods,computed带有缓存,若依赖的响应式数据的值没有发生改变则不会重新计算; computed与watch都有监听的功能,本质上都是Watcher实例,但监听的逻
阅读全文
摘要:题目描述 有一个 单线程 CPU 正在运行一个含有 n 道函数的程序。每道函数都有一个位于 0 和 n-1 之间的唯一标识符。函数调用 存储在一个 调用栈 上 :当一个函数调用开始时,它的标识符将会推入栈中。而当一个函数调用结束时,它的标识符将会从栈中弹出。标识符位于栈顶的函数是 当前正在执行的函数
阅读全文
摘要:项目概述 作为一个刚入门前端的新人,我觉得这种电商或者购物网站类型的项目是能够很好地锻炼自己的机会。我的项目是搭建一个移动端的外卖应用,页面分为用户注册登录、商家搜索、订单查看、个人中心等多个模块,用户可以进入商家查看商品详情、商家信息以及买家评论,将商品添加购物车并下单。前端部分是全由我一个人负责
阅读全文
摘要:单页面应用(SPA)与多页面应用(MPA) 多页面应用 多页面应用是由多个完整的页面构成,每一次页面跳转都需要向服务器请求一个新的页面。每次请求的资源都是不公用的,有可能导致代码冗余。 页面切换缓慢 由于每次跳转都要发送一次http请求,容易造成页面的卡顿 首屏加载块 由于多页面应用将需求分割成多个
阅读全文
摘要:关系 在我们创建组件时,都会调用Vue.extend()函数来创建一个VueComponent子类,当在模板中使用该组件标签时,就会创建VueComponent子类的一个实例对象。不同地方使用了同一种组件标签,是创建了多个独立的实例对象。使用Vue脚手架搭建项目时,里面的.vue文件就是单组件文件,
阅读全文
摘要:理解key key主要作用于虚拟DOM算法中,赋予每个vnode唯一的标识,可以根据这个标识更快更准确地找到对于的vnode节点,在新旧vnode比对时效率更高。 不使用key 在不使用key时,Vue会采用就地复用原则,最大限度地减少元素的移动,对同一个位置的oldVnode与newVnode进行
阅读全文
摘要:v-show与v-if的异同 相同点 v-if与v-show都能根据条件来控制元素在页面中是否显示,当条件为false是都不会占据页面位置。 不同点 v-show是通过修改CSS属性来控制元素的显示和隐藏的,当需要隐藏时将元素的CSS样式设置为display:none;当需要显示时则移除该属性。因此
阅读全文
摘要:Vue与传统开发的区别 Vue是一个高性能的JavaScript框架,也是一个创建单页面应用的Web应用框架。在传统开发中,我们需要直接操作DOM来写需求,而Vue提供了声明式操作DOM的能力。Vue使用了MVVM模型,实现数据与视图的双向绑定,通过视图中元素绑定的事件来修改数据,数据的变动来驱动视
阅读全文
摘要:什么是虚拟DOM 虚拟DOM是对真实DOM的抽象,它表现为一个JavaScript对象,该对象的属性存储了某个节点所包含的信息,如标签名、标签用到的HTML属性、子元素对象等,来描述一个DOM元素。每次页面重新渲染时,会先使用VNode类去实例化不同类型的DOM节点,生成vnode实例,然后与上一次
阅读全文
摘要:理解Vue2的响应式原理 Vue2是通过Object.defineProperty()来拦截数据,将数据转换成getter/setter的形式,在访问数据时调用getter函数,在修改数据时调用setter函数。然后利用发布-订阅模式,在数据变动时触发依赖,也即发布更新给订阅者,订阅者收到消息后进行
阅读全文
摘要:对this的理解 this关键字时函数运行时自动生成的一个内部对象,它指向函数的直接调用者。this不能在执行期间被赋值,可以通过Function.prototype.bind()来修改函数的this指针,调用bind()会创建一个新的函数副本,这个新函数的this指针将永久地绑定在bind()的第
阅读全文
摘要:什么是内存泄漏? 所谓“内存泄漏”,指的是由于疏忽或者错误造成程序未能释放已经不再使用的内存,造成资源的浪费。 前端开发中存在的内存泄漏问题 不经意使用了全局变量:对于一些局部使用的大量数据,如果不加留意,对引用这些数据的变量在全局作用域内使用var关键字声明或者遗漏了声明,会导致变量成为全局变量,
阅读全文