- 博客(150)
- 问答 (1)
- 收藏
- 关注
原创 前端面试题-场景设计题
(2) 服务端每次返回页面时,都携带一个 token,每次页面发送请求,都需要携带该 token,从而避免纯 cookie 校验出错(服务端每次页面加载都会返回一个 token 令牌,一般是隐藏的 dom 节点,网页端发起请求必须携带该 token,此时,由于 csrf 的请求是浏览器自动发送的,所以并不会携带 token,从而判定这是非法请求,从而杜绝 csrf)在一般的页面中,大型图片的绘制,或者从接口返回的数据绘制的内容,会影响用户的首次视觉体验。页面加载完,但是不可交互,也是非常糟糕的体验。
2024-08-25 21:47:13
570
原创 前端面试题整理-webpack
一种打包工具,实现前端模块化,将多个 js,打包成一个 bundle.js (其他类型文件交由各自的 loader 处理)。其中核心概念:entry: 定义入口 js 文件,一般单页项目定义一个,多页项目可传递数组output: 定义输出文件的格式和目录module: loader 定义的地方,常见的 jsx 处理用 babel-loader, vue 用 vue-loader, less 用 less-loader.(css 相对特殊,需要三个 loader 分别进行处理。
2024-08-23 14:16:40
643
原创 前端面试题-vue框架
用 javascript 对象来描述 UI 其实就是所谓的虚拟 DOM.只做同层级比较,类型不一样直接替换,类型一样进行列表渲染,通过key进行优化。diff 算法的原理:(1)简单 diff 算法:算法最为简单易懂,react 使用,但是移动次数上可能是最多遍历新子节点,找到旧子节点中,key 与其相同的节点,并记录下当前旧子节点中最大的索引,如果后续新子节点在旧子节点中的索引小于该值,则该子节点对应的真实 dom 需要移动。移动的目的地便是新子节点中,上一个节点的后面。
2024-08-23 11:30:00
757
原创 前端面试题整理-浏览器
因为Expires参照的是本地客户端的时间,而客户端的时间是可以被修改的,所以会有误差产生的情况,这也是Expires的一个缺点,所以有了后来Http1.1规范的Cache-control。首先执行同步任务,将其放入执行栈中执行,当执行栈中的任务执行完毕后,会去看任务队列中是否有任务需要执行,有的话将其放入执行栈中执行,执行完毕后再去看任务队列中是否还有任务,有的话再放入执行栈,如此循环,称为事件循环机制。(也就是请求资源的地址和目标资源的地址不一致时,浏览器出于安全考虑,会限制两个源的资源交互)。
2024-08-14 16:38:12
696
原创 前端面试题整理-Javascript
首先在创建该变量的当前作用域中取值,当前作用域找不到,继续到上级作用域中查,直到查到全局作用域,这个查找过程形成的链条就做作用域链。JS闭包:内层函数+引用外层函数的变量(一个大函数里包含了一个变量+一个内部函数)对闭包内的变量起到一个保护性的作用,外部不可直接使用此变量。闭包不一定有return,不一定会有内存泄漏。什么时候用到return?当外部想用闭包变量时就用return,把局部变量返回到外面来,但是外面可以使用此变量但不能修改。
2024-08-13 21:39:51
984
原创 前端面试题整理-HTML
(1)强缓存(依赖浏览器的本地缓存机制,在缓存有效期内直接从本地获取资源,不向服务器发送请求,用于不经常变化的静态资源,如css、js文件)(2)协商缓存(通过与服务器验证资源的新鲜度来确定是否需要重新获取资源,用于频繁变化并希望尽可能使用缓存的资源,如html文件)
2024-08-01 16:07:43
375
原创 黑马程序员-电商后台管理系统技术总结
使用Vue CLI脚手架进行项目搭建。利用Element UI进行界面美化。引入了axios作为HTTP请求库。使用了Echarts进行图表展示。使用了nprogress作为加载进度条。。
2024-07-21 07:38:20
807
原创 【JS红宝书学习笔记】第25章 客户端存储
前端数据存储有5种方式:(1)cookie:为了解决HTTP协议的无状态问题(也就是每次访问服务器关闭后再次访问,不能意识到是同一用户),一种每次HTTP请求自动带数据的技术。兼容性好。但是只能存储少量数据,且打开浏览器就能看到很不安全(2)localstorage:本地存储,永久存储,数据不受页面刷新、关闭的影响(3)sessionstroage:会话存储,页面关闭数据清空(4)indexDB:类似SQL数据库存储,但存储的是对象。
2024-07-15 18:45:24
796
原创 【前端项目笔记】10 项目优化上线
内容分发网络(Content Delivery Network,CDN)是建立并覆盖在因特网之上的一层特殊网络,专门用于通过因特网高效传递丰富的多媒体内容,对因特网中的信息流进行优化,从而提高网络的使用效率。
2024-07-12 11:30:00
998
原创 【前端项目笔记】9 数据报表
效果展示:在开发代码之前新建分支新建分支reportgit branch查看分支将本地report分支推送到云端origin并命名为report。
2024-07-05 17:41:01
470
原创 【前端项目笔记】8 订单管理
效果展示:在开发功能之前先创建分支ordercls清屏git branch查看所有分支(*代表当前分支)新建分支order将本地的当前分支提交到云端仓库origin中命名为order。
2024-07-04 16:15:51
453
原创 【前端项目笔记】7 商品管理
效果展示:在功能开发之前,创建商品列表的子分支git branch查看所有分支创建并切换到新分支goods_list将新分支goods_list推送到云端仓库origin并命名为goods_list保存。
2024-07-03 12:39:40
1004
原创 【前端项目笔记】6 参数管理
效果展示:在开发功能之前先创建分支goods_paramscls清空终端git branch查看所有分支新建分支goods_params把本地的新分支推送到云端origin并命名为goods_params参数管理需要维护动态参数以及静态属性。
2024-06-27 16:02:37
721
原创 【前端项目笔记】5 分类管理
在添加分类时,未选择父级分类,则默认添加的分类是一级分类,若选择了父级分类,那么新添加的分类器父级分类id和等级都要随之更新。将当前分支保存到云端origin命名为goods_cate(带不带-u根据云端是否存在当前分支)Cascader 级联选择器:当一个数据集合有清晰的层级结构时,可通过级联选择器逐级查看并选择。git命令回顾(先本地后云端commit->push,先分支后主线merge)此时本地分支goods_cate已最新,云端分支还是旧的。此时本地master已最新,但是云端还是旧的。
2024-06-25 11:30:00
767
原创 【前端项目笔记】2 主页布局(选择器、生命周期函数)
element-ui提供的组件名称就是它的类名(1)基本选择器类型选择器 p/span/div……类选择器 (.classname)ID选择器 (#idname)通配选择器 ( * )(2)属性选择器选择具有特定属性或属性值的元素(3)伪类选择器 (:name)动态伪类(如 :hover)根据用户与元素的交互状态选择元素。目标伪类(如 :target)选择当前活动的目标元素。语言伪类(如:lang())基于元素的语言进行选择。(4)伪元素选择器。
2024-06-17 11:30:00
1324
3
原创 【前端项目笔记】1 登录与登出功能实现(flex)
向一个域发送请求,如果要请求的域和当前域是不同域,就叫跨域。例如:就是从 A 向 B 发请求,如若他们的地址。
2024-06-12 11:30:00
1283
原创 【JS红宝书学习笔记】第6章 集合引用类型 object / array / map / set
对象数组与定型数组Map、WeakMap、Set 以及 WeakSet 类型
2024-05-30 21:21:30
858
3
原创 【LeetCode刷题记录】207.课程表
你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1。在选修某些课程之前需要一些先修课程。先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi。例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1。请你判断是否可能完成所有课程的学习?如果可以,返回 true;否则,返回 false。
2024-05-26 15:54:39
953
原创 【JS红宝书学习笔记】第4章 变量、作用域和内存
ECMAScript 变量可以包含两种不同类型的数据:原始值和引用值。原始值(primitive value)就是最简单的数据(Undefined、Null、Boolean、Number、String 和 Symbol,其中之一),引用值(reference value)则是由多个值构成的对象。引用值是保存在内存中的。与其他语言不同,JavaScript 不允许直接访问内存位置,因此也就不能直接操作对象所在的内存空间。在操作对象时,实际上操作的是对该对象的引用(reference)而非实际的对象本身。
2024-05-23 11:17:44
704
原创 【LeetCode刷题记录】130. 被围绕的区域
给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。输入:board = [[“X”,“X”,“X”,“X”],[“X”,“O”,“O”,“X”],[“X”,“X”,“O”,“X”],[“X”,“O”,“X”,“X”]]输出:[[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“O”,“X”,“X”]]
2024-05-10 16:37:53
458
原创 【LeetCode刷题记录】994. 腐烂的橘子
在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。输入:grid = [[2,1,1],[1,1,0],[0,1,1]]输出:4输入:grid = [[2,1,1],[0,1,1],[1,0,1]]输出:-1。
2024-05-10 10:06:01
533
原创 【LeetCode刷题记录】200. 岛屿数量
给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。输入:grid = [输出:1输入:grid = [输出:3grid[i][j] 的值为 ‘0’ 或 ‘1’
2024-05-09 15:48:29
644
原创 【LeetCode刷题记录】124. 二叉树中的最大路径和
二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和。输入:root = [1,2,3]输出:6解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6输入:root = [-10,9,20,null,null,15,7]输出:42。
2024-05-08 17:44:36
823
原创 【LeetCode刷题记录】236. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3。
2024-05-07 16:40:35
527
原创 【LeetCode刷题记录】437. 路径总和 III
给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8输出:3解释:和等于 8 的路径有 3 条,如图所示。
2024-05-06 20:01:39
951
1
原创 【LeetCode刷题记录】105. 从前序与中序遍历序列构造二叉树 & 106. 从中序与后序遍历序列构造二叉树
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]输出: [3,9,20,null,null,15,7]输入: preorder = [-1], inorder = [-1]输出: [-1]preorder 和 inorder 均 无重复 元素。
2024-05-06 15:45:26
520
原创 【LeetCode刷题记录】114. 二叉树展开为链表
给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null。展开后的单链表应该与二叉树 先序遍历 顺序相同。输入:root = [1,2,5,3,4,null,6]输出:[1,null,2,null,3,null,4,null,5,null,6]输入:root = []输出:[]输入:root = [0]输出:[0]树中结点数在范围 [0, 2000] 内。
2024-05-05 21:25:59
276
原创 【LeetCode刷题记录】230. 二叉搜索树中第K小的元素
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。输入:root = [3,1,4,null,2], k = 1输出:1输入:root = [5,3,6,2,4,null,null,1], k = 3输出:3树中的节点数为 n。1<=k<=n<=1040<=Nodeval<=104进阶:如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化算法?
2024-05-05 00:33:38
877
原创 【LeetCode刷题记录】98. 验证二叉搜索树
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。输入:root = [2,1,3]输出:true输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4。树中节点数目范围在1104内−231<=Nodeval。
2024-05-05 00:15:07
1351
原创 【LeetCode刷题记录】108. 将有序数组转换为二叉搜索树
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵平衡二叉搜索树。输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]输入:nums = [1,3]输出:[3,1]解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。1
2024-05-04 21:03:47
906
原创 【LeetCode刷题记录】199. 二叉树的右视图
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。输入: [1,2,3,null,5,null,4]输出: [1,3,4]输入: [1,null,3]输出: [1,3]输入: []输出: []二叉树的节点个数的范围是 [0,100]
2024-05-02 11:30:00
312
原创 【LeetCode刷题记录】110. 平衡二叉树
给定一个二叉树,判断它是否是平衡二叉树输入:root = [3,9,20,null,null,15,7]输出:true输入:root = [1,2,2,3,3,null,null,4,4]输出:false输入:root = []输出:true树中的节点数在范围 [0, 5000] 内−104<=Nodeval<=104。
2024-05-02 11:00:00
382
原创 【LeetCode刷题记录】543. 二叉树的直径
给你一棵二叉树的根节点,返回该树的 直径。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度。这条路径可能经过也可能不经过根节点 root。两节点之间路径的 长度 由它们之间边数表示。输入:root = [1,2,3,4,5]输出:3解释:3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。输入:root = [1,2]输出:1树中节点数目在范围1104内−100<=Nodeval<=100。
2024-05-01 11:30:00
1003
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人