自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

原创 有赞前端SP毁约后的日子

22届双非本,22年3月底前端sp被有赞毁约,5月底重新找到工作,6月底入职。前言:本人不想读研、考公,只想工作,而且想着全国这么多公司,总能找到工作吧,大不了降低要求!

2022-07-06 00:13:12 951 2

原创 【思特沃克前端校招笔试、一面、二面】

思特沃克笔试时长90分钟,有选择、 编程之类的,过了几天才记录,只记得三道编程题了编程题会提供一些测试用例,有的不可见,需要自己打印检查问题第一题:将数组里的数按顺序每两个一组组内两元素交换,比如[1,2,3,4] => [2,1,4,3]主要就是要注意测试用例中的特殊情况,不是数字或者出现NaN怎么解决function swapAdjacent(array) { // 循环的步长为 2 for (let i = 0; i < array.length; i +=

2022-05-25 23:06:42 1251

原创 【蓝湖前端校招一面】

蓝湖一面无笔试,直接约面试。时长一小时讲讲项目中的难点讲讲原型链更改原型的方法有什么(__proto__、setPrototypeOf)讲讲闭包es6 的新数据结构知道哪些Object 和 Map 的区别一道 this 相关的输出题,讲答案手写节流函数(没写出来)手写算法(没写出来,思路偏了)// 将数据结构转换为 tree 并层序遍历输出/* 输入举例:[ { node: 1, children: [2,5] }, { node:

2022-05-19 23:49:53 485

原创 【千寻位置前端校招笔试、一面、二面】

千寻位置面试不难,就是该岗位名额只有一个,竞争大,二面挂笔试数组求均值两个布局还原用定时器模拟sleepfunction sleep(ms) { return new Promise((resolve) => { setTimeout(resolve, ms) })}数据结构转换为数结构一面时长半小时,类似聊天,技术未深入简单聊了下两段实习项目。第一段是地图项目实习,加之投递的这个岗也是地图方向,所以浅聊了一会;第二段是个

2022-05-16 13:59:48 6336 5

原创 【一道校招前端笔试题】实现 equals,判断两个变量的类型和值是否都相等

实现 equals 方法,判断两个变量的类型和值是否都相等,达到如下效果equals(1, 2) // falseequals([1, 2, 3], [1, 2, 3]) // trueequals({ a: 1, b: 2 }, { a: 1, b: 2 }) // true.......解题:基本类型比较方法不变,但是数组和对象的判断则不是看地址,而是要看内容是否相等,需要递归function equals(a, b) { if (a === b) return true.

2022-05-13 19:33:03 541

原创 【巴比特前端校招+笔试/一面/二面】

流程特别快,hr 说四轮面试一周就会走完,三面是合伙人面,不聊技术,四面 hr 面实际面试时,一面当天出结果并约第二天二面,二面当天出结果挂了笔试比较有难度三道单选,按顺序输出(事件循环)、出栈入栈四道编程数字翻转两次后若为原数字则返回真,否则假三数之乘,有负数力扣 Z字形变换模拟实现 node 的 promisify 方法(没接触过,不会)两道问答:介绍css盒模型、浏览器最小像素一面半小时,八股+主流框架的理解/比较事件循环js 数据类型var、le.

2022-04-24 22:13:49 539

原创 【shein 校招前端笔试+一面】

笔试2022 前端笔试 A 卷,10 道选择,5 道问答选择题:包含的知识点promise,静态方法、实例方法cookie、HTML5 存储求数组最大值的方法:Max.max.call(null, 参数)跨域的方法:jsonp、window.name、window.postMessage、document.domainhasOwnpropery 的用法原型链js 阻止默认事件:preventDefault删除数组中的第 i 个元素,下列最优方法val 可以赋值任何值,(‘Valu

2022-04-19 16:54:24 1657 2

原创 【ONES 校招前端笔试+一面】

笔试整体难度不大选择题三道JS 异步React 防止组件重复渲染的方法(shouldComponentUpdate、PureComponent、React.memo)还有一道忘了编程,类似于力扣的删除链表中的重复节点问答五道React 高阶函数解释和使用场景CSS 选择器优先级排序防止执行重复请求的方法列举Mysql select * from xxx 和 select all,x1,x2,x3 from xxx 的性能差异/使用场景差异(这个的确不清楚,希望有大佬能留言

2022-04-18 23:50:09 2371 7

原创 【Dexie.js 踩坑】Failed to execute ‘transaction‘ on ‘IDBDatabase‘

查了很多资料,显示都是 indexedDB 的报错,说是异步操作无法保证下一次操作时上一步已经完成,试了很多按顺序执行的方法都无效;再后来试着解决控制台显示的警告提示我版本控制有问题,我就把版本升级了,问题迎刃而解Dexie 官方文档是英文让我直接阅读的确有些困难,没注意到版本控制这个概念——如果你创建了数据库后,需要增删字段的话,需要升级版本,而不能直接在前一版本上操作,操作如下// 初始数据库const db = new Dexie('myDatabase')db.version(1).st.

2022-04-18 12:54:39 3250 1

原创 javascript 在 ul 标签里插入多个 li 节点,利用 createDocumengFragment

按顺序插入五个 li 节点利用文档片段(createDocumengFragment)一次性插入可以减少页面回流的次数(回流简单来说就是浏览器刷新页面)HTML<ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li></ul>JS<script> var u.

2022-04-07 17:17:12 3472

原创 css3 让一个圆5s内上下匀速反复移动200px

HTML<div id="ball"></div>CSS /* 圆球上下来回移动200px,5s内 */ #ball { /* 令元素脱离文档流,不然动不起来 */ position: absolute; width: 100px; height: 100px; background-color: red; border-radius: 50%; animation: move 5s

2022-04-07 17:07:55 431

原创 【数字马力校招前端笔试】六道大题,三小时,个人题解

探花考试系统,时间三小时,六道大题,考 js 知识、算法、vue/react 框架用法难度的话,只要你想到了它要考什么就简单,没想到就无法动笔题目:给一个字符串,循环输出每一个字符,当输出到最后一个字符时再从头开始思路:根据打印情况,猜想需要返回一个函数,考点也就在闭包上(当时还思考了迭代器、函数柯里化两个知识点)function loopString(s) { let i = 0 return function () { if (i === s.length) i =.

2022-04-03 23:47:43 11519 27

原创 【vue 报错】Avoided redundant navigation to current location:XXXX

报错翻译一下就是避免重复定位到当前路由。比如有一个导航(有页面一、页面二),点击了页面二后跳转到页面二,又点击页面二,则重复定位了解决方案在/router/index.js文件里覆写一下router.push方法(replace方法同理)......Vue.use(VueRouter)// replace 方法同理const originalPush = router.push;router.push = function push(location) { return or

2022-03-09 20:18:38 626

原创 【近日力扣】(二分法合集2) 猜数字大小+在排序数组中查找元素的第一个和最后一个位置+搜索二维矩阵+稀疏数组搜索+寻找旋转排序数组中的最小值+山脉数组的峰顶索引

猜数字大小(简单)常规做法思路一:递归var guessNumber = function(n) { if (!guess(n)) return n let recursion = (l, r) => { let mid = Math.floor((r + l) / 2) if (guess(mid) === -1) { return recursion(l, mid) } else if (gues

2022-02-28 14:58:42 141

原创 【近日力扣】单词拆分+合并区间+链表排序+调整数组顺序使奇数位于偶数前面

单词拆分(中等)动态规划”leetcode“ 是否可被组成,可分解成——步长为 1 时,“l” 是否存于字典且后续子串可被组成,等等;步长为 2 时,“le” 是否存于字典且后续子串可被组成,等等;步长为 3 时,“lee” 是否存于字典且后续子串可被组成,等等以此类推,设dp[i]表示s[0, i]的字符串是否可被组成,设j为当前步长,若要dp[i]为真,则需dp[j]为真且s[j, i - j]存在字典中,由此推出递推式:dp[i] = dp[j] && isTrue(s[j,

2022-02-20 10:54:03 214

原创 【vue-electron踩坑】配置预处理器 less

yarn add less less-loader -D // 众所周知,这样便搞定报错:TypeError: this.getOptions is not a functionless-loader 版本过高,12.x,后来卸载重装 6.0.0 的就好了。(如果还不行试试 4.0.0)

2022-02-10 16:44:24 826

原创 归并算法迭代版本的探索(Javascript 版)

众所周知,归并算法主要有两种方法实现,递归、迭代(插一句,一般递归都可用迭代实现),且时间复杂度都是O(nlog(n)),递归网上版本较多,简单提一嘴,主要是讲解迭代的 JS 实现归并算法思路看一张《学习JavaScript数据结构与算法(第3版)》的图就一目了然了,先将数组拆分为小数组,再排序并合并回去,一看到此图自然就会联想到递归方法了,这正是递归调用栈的步骤展示递归版优缺点:递归一般优点是代码量少,缺点是较抽象、调用栈较大思路:通过递归去拆分数组,通过merge函数去合并子数组.

2022-01-27 17:01:27 1001

原创 【近日力扣】(链表合集2)删除链表的倒数第n个节点+相交链表+移除链表元素+合并两个排序的链表

一路摸索下来发现,链表题常规的解题方法有递归、迭代两种,可以优先考虑删除链表的倒数第n个节点(简单)思路:首先得确定第 n 个节点在哪,先遍历出链表长度;然后长度和 n 相减,找到正数第几个节点,再次遍历,跳过那个节点即可。还要分三种情况——删除第一个节点、删除中间节点、删除末尾节点,会发现只有第一种需要另外考虑,若要删除第一个节点则直接返回第二个节点即可var removeNthFromEnd = function(head, n) { let cur = head, sum = 0.

2022-01-09 22:28:56 374

原创 【近日力扣】零钱兑换+零钱兑换||+礼物的最大价值+三角形最短路径和+打家劫舍+打家劫舍||

动态规划专题(一)动态规划题目比较千变万化,我也没有那么多时间去研究所有可能,挑着一些典型的题型刷刷。解题思路的重点就是找到状态转移的过程零钱兑换(中等)背包问题思路一:求兑换最少次数。用dp[i]记录兑换i元需要的次数,那么它的上一个状态就是dp[i-j],j代表第j位零钱的面值,由此可得转移方程dp[i]=Min dp[i-j] + 1,因为兑换i元的状态都是由上一状态i-j推算而来,所以得找出消耗次数最少的上一状态,同时得加一才能到达i状态var coinChange = fu.

2021-11-19 11:36:44 214

原创 【近日力扣】颜色填充+岛屿数量+水域大小+打开键盘锁+单词搜索+课程表

1.DFS(深度优先搜索)和 BFS(广度优先搜索)合集。2.两者区别主要在于——前者维护一个栈的数据结构,所以通常可以使用递归的方法;后者维护一个队列的数据结构,通常使用循环迭代的方法。3.同时前者用递归实现的话,只需要考虑递归的形式和结束递归的条件,电脑自己在维护栈,比较方便、易懂,后者需要自己写迭代去维护队列,相对来说上手比较复杂4.如果回溯和递归都很熟悉了,DFS 就很好上手了,下文也就不多解释了颜色填充(简单)思路:DFS,关注边界条件和特殊情况,然后上下左右四个方向依次搜索(填充.

2021-10-23 18:13:32 153

原创 【近日力扣】组合+子集 ||+组合总和

回溯算法合集。要注意“回退步骤”,比如往数组里添加一个数,然后递归,则递归完要将该数再删除,才能实现原路径返回(回溯)回溯是一种算法思想,可以用递归实现组合(中等)思路:递归。维护一个子数组 path,首先存入一个数,作为开始数,后续存入的每一个数都做放入和不放入 path 的处理,找到所有的结果,每当 path 的长度等于 k 的时候就将 path 存入目标数组,然后再更改开始数,如此反复var combine = function(n, k) { if (n < k) re.

2021-10-17 14:00:56 54

原创 【近日力扣】二叉树的最近公共祖先+ 二叉搜索树的最近公共祖先+二叉树展开为链表+BiNode

二叉树专题(二),二叉树深入思考二叉树的最近公共祖先(中等)思路:递归。分两种情况——第一,p、q 分别在某节点的左右子树中;第二,p、q 中有一个自己本身就是两者的最近公共祖先,另一个在该节点的子树中。这个过程,通过递归判定 p、q 节点分别在哪两个子树上,且递归是维护的栈数据结构,由根节点开始入栈,叶子节点出栈,所以最先出栈的公共祖先就是最近的var lowestCommonAncestor = function(root, p, q) { let ans let dfs .

2021-10-10 21:03:30 57

原创 【近日力扣】 二叉树的前/中/后序遍历+N 叉树的前序/后序遍历+二叉树/N 叉树的层序遍历+二叉树/N 叉树的最大深度

二叉树专题(一)。通用的两种方法——递归和迭代,迭代一定得搞懂,有的题递归搞不定或者很麻烦二叉树的前/中/后序遍历(简单)思路:递归。const postorderTraversal = (root) => { if (!root) return [] let arr = [] let ergodic = (root) => { if (root ===null) return // 改变该语句位置即可 arr.

2021-10-06 13:58:31 63

原创 【近日力扣】(二分法合集1)二分查找+搜索插入位置+寻找峰值+搜索旋转排序数组

二分查找专题二分查找(简单)标准二分解法,迭代法和递归法思路一:迭代法,需要左、右两个指针。解题注意跳出循环的条件,和返回值(比如可以返回左、右边界值,或中间值)var search = function(nums, target) { let left = 0, right = nums.length - 1 // 左指针在右指针左边 while (left <= right) { let mid = Math.floor((left + .

2021-10-01 21:36:51 97

原创 【近日力扣】有效的字母异位词+数组中重复的数字+交换和+数组的相对排序

哈希表合集,哈希表不一定非要用 map 对象实现,有时数组也可有效的字母异位词(简单)思路一:直接用 api,转换为数组再排序再转换为字符串var isAnagram = function(s, t) { s = s.split("").sort().join("") t = t.split("").sort().join("") return s === t};思路二:哈希表,map 对象。遍历 s 将字符以及对应的数量存入 map 表(例如 “s”: “2”.

2021-09-20 11:15:16 82

原创 【近日力扣】(递归合集)子集+递归乘法+数值的整数次方

递归合集,当无法思考出调用栈的所有情况时,可以忽略,找出对应递归公式和终止条件即可子集(中等)思路一:迭代。用二进制依次递增1的规律模拟从集合里取元素的过程,以集合 [1, 2 ,3] 举例,见下表二进制数子集000[]001[1]010[2]011[1, 2]100[3]101[1, 3]110[2, 3]111[1, 2, 3]用位运算模拟该过程var subsets = function(nums).

2021-09-13 23:18:49 84

原创 【近日力扣】栈排序+最小栈+用队列实现栈

JS 对太友好了,如果想体会原汁原味的栈(先进后出),那就不要在栈底操作元素,比如使用shift()方法,而且排序也不要调用 API排序栈(中等)思路:辅助栈每次要取最小元素,那意味着在取的时候排序?思考一会便知道不现实——题目要求顶多两个栈,如果存数据的栈里面是乱序,至少得三个栈才能完成排序所以可以计划在存数据时就进行排序,你会发现两个栈足够了。每当存入一个数val,就与栈顶的数top做比较,如果val大,就把top取出放入辅助栈,如果val小,就直接存入(维持最小值在栈顶)最后一步在把.

2021-09-05 23:15:07 110

原创 有赞校招笔试+面试(已通过)

有赞只记录了印象比较深刻的点有赞用 react 比较多,面试问框架更倾向于问 react笔试选择题currentTarget 和 target 的区别前者,指向事件绑定的元素,后者指向事件触发的元素,事件代理时,区别明显上网必须要子网掩码、网管、IP后缀表达式focus、blur 事件postMessage,跨域(窗口)otherWindow.postMessage(message, targetOrigin, transfer)localStorage 大小限制

2021-08-30 20:36:42 455

原创 【近日力扣】(链表合集1)移除链表元素+反转链表+链表的中间结点+删除排序链表中的重复元素

链表专题给出链表定义/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */移除链表元素思路一:遍历链表,找到对应的节点删除,但是要注意头结点的判断,可以再创一个空链表,其下一节点指向目标.

2021-08-29 16:19:14 80

原创 【近日力扣】二进制中1的个数+扑克牌中的顺子+IP 地址无效化+把字符串转换成整数+跳水板

二进制中1的个数(简单)位运算需要熟练思路1:用 n 和 1做位运算与然后左移去除 n 的末位,结果为真则计数器加一思路2:借助 n & n-1 去掉最低位 1 的特性,去掉一次就计数器加一,直到 n 为零var hammingWeight = function(n) { let sum = 0 // for (let i = 0; i < 32; i++) { // if (n & (1 << i)) sum++ /

2021-08-23 21:14:27 130

原创 【近日力扣】矩阵中的路径+二进制中1的个数+比较版本号+旋转数组的最小数字

矩阵中的路径(中等)DFS 深度优先搜索var exist = function(board, word) { // dfs 深度优先搜索矩阵 let dfs = (board, word, i, j, k) => { // 如果 i j 超出或不在矩阵里,或二维数组元素不等于word中的字母,则返回 false if (i >= board.length || i < 0 || j >= board[0].length || j <

2021-08-15 22:01:48 95

原创 【近日力扣】斐波那契数列+用两个栈实现队列+从尾到头打印链表

斐波那契数列(简单)动态规划var fib = function(n) { if (n === 0 || n === 1) return n let n1 = 0, n2 = 1, res = 0 for (let i = 1; i < n; i++) { res = (n1 + n2) % 1000000007 n1 = n2 n2 = res } return res};用两个栈实现队列(简单)

2021-08-07 16:48:17 210

原创 CSS Flex 布局常用属性总结

如果一个元素设置了display: flex;,则该元素为 flex 容器,其子元素为 flex 子元素容器属性flex-direction:决定主轴方向flex-direction: row | row-reveres | column | column-reverseflex-wrap:决定一条轴线如果排不下,如何换行flex-wrap: nowrap | wrap | wrap-reverseflex-flow:上述两个属性的缩写flex-flow: <flex.

2021-08-02 23:11:14 122

原创 介绍前端面试常问的三大登录方式

面试被问了无数次,值得总结一番主要有以下三种方式Cookie + Session 登录Token 登录SSO 单点登录Session 登录初识HTTP 是无状态协议,每次和后端重新建立连接的话,后端无法判断请求是否每次来自于同一个用户,所以诞生了 cookie,会随 HTTP 请求一起发送cookie 携带了用户信息,但后端还需要验证,得通过 session 对象。而 session 存储了一些用户信息,存在后端是避免前端存储敏感数据。通常存在缓存里,比如 jvm 本地缓存、red.

2021-08-01 15:18:27 1772

原创 react 报错:Component ShowLoading declared `PropTypes` instead of `propTypes`

错误说明:propTypes 和 PropTypes 的大小写搞混了解决:上图的 propTypes 和 PropTypes 的写法是正确的,注意用的位置

2021-07-18 22:58:39 527 2

原创 【近日力扣】(位运算合集)不用加减乘除做加法+只出现一次的数字+只出现一次的数字 II+只出现一次的数字 III

不用加减乘除做加法(简单)写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。只出现一次的数字(简单)给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?...

2021-07-08 11:04:08 105

原创 Web 安全之 XSS 攻击原理/分类/防御 详解

什么是 XSS 攻击?全称 Cross-Site Scripting 跨站脚本攻击,简写为了避免和 CSS 冲突而改成 XSS原理:通过在浏览器可输入的地方(比如评论栏、搜索栏、地址栏等)注入脚本(JS、HTML 代码块等),获取用户的 cookie、sessionID 等信息,从而对网站数据造成破坏或者窃取。常见注入方式这样说可能有些不好理解,没关系,先留个印象,看后续实例就好注入的代码可执行,从而产生效果在 HTML 内嵌的文本中,以 script 标签形式注入在内联的 JS 中

2021-07-05 11:28:45 219

原创 腾讯 csig 面试简述(已通过)

只记录了印象比较深刻的问题且未按顺序,三面技术面+hr面,历时一周一面对话了十几分钟,然后手撕了三道算法题拍照给考官,整个过程半小时结束问的很简单,两个点没答上来也没怪罪,说不要有压力问了兴趣爱好Git:别人传了代码,自己的部分还没写好,但需要用新代码怎么操作?(没答好)如何改变 this 指向?(call、apply、bind)它们传参和返回值是什么?项目上有个微信小程序,问了下双向绑定和 vue 的区别(setDate 函数,没答出来)三道算法打乱数组元素(洗牌算法)数组.

2021-07-03 16:37:53 5800

原创 【近日力扣】验证二叉搜索树+将有序数组转换为二叉搜索树

总结:遇到树的题,可以先思考用哪种遍历方法,感觉遍历是常规解法给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。思路:...

2021-07-03 01:05:01 53

原创 【近日力扣】重复的子字符串

重复的子字符串(字符串,简单)给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。思路一(不推荐):枚举,将所有长度的子字符串 s 都列出来,挨个在原字符串 n 里遍历,看是否一直重复到末尾。稍微可以优化的两个点:能重复的 s 长度一定小于 n 的一半;只有长度能被 n 整除的 s 才实现重复var repeatedSubstringPattern = function(s) { let n = s.length

2021-06-18 22:11:10 123

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除