从浏览器解码看xss

2021-03-11
阅读 3 分钟
2.4k
HTML词法解析细则在传送门 下面不会详细介绍所有内容,只会解释HTML解释器这个状态机是如何工作的,HTML解析器作为一个状态机,它从输入流中获取字符并按照转换规则转换到另一种状态。在解析过程中,任何时候它只要遇到一个<符号(后面没有跟/符号)就会进入“标签开始状态(Tag open state)”。然后转变到“标签名状态(T...

优先队列和二叉堆

2021-02-01
阅读 6 分钟
1.7k
有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。你打算每天 最多 吃一个苹果来保证营养...

原地hash和时间复杂度的一点理解

2020-12-01
阅读 3 分钟
2.6k
给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例输入: [1,3,4,2,2]输出: 2输入: [3,1,3,4,2]输出: 3给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。

LeetCode.28 实现 strStr (JS sunday算法)

2020-07-26
阅读 2 分钟
1.7k
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回  -1。示例输入: haystack = "hello", needle = "ll"输出: 2 输入: haystack = "aaaaa", needle = "bba"输出: -1 说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在...

2020春季1-3年前端面经

2020-07-09
阅读 5 分钟
1.2k
z-index只作用于被定位了的元素上,还有就是子元素的z-index会被父的值覆盖(准确的说应该是使用z-index后,父元素和子元素处在不同的层叠上下文中,他们的z-index应该分别与他们的兄弟元素比较。)。

为什么存在同源策略?

2020-06-18
阅读 3 分钟
3.2k
说起跨域,你可能知道JSONP,CORS,http proxy,nginx等,那为什么会存在跨域,你可能知道因为同源策略,那为啥会有同源策略呢。

解决循环引用和相同引用的js深拷贝实现(BFS)

2020-02-04
阅读 4 分钟
8.8k
JSON.parse(JSON.stringfy())、MessageChannel这些JavaScript自身的api,想要实现深拷贝存在像不能复制undefined、不能复制函数、不能复制循环引用等问题。

LeetCode.21&23 合并K个有序链表(JS)

2020-01-29
阅读 2 分钟
1.5k
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4

WebAssembly到底是个啥

2019-12-23
阅读 4 分钟
3.4k
WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行。它是一种低级的类汇编语言,为诸如C / C ++等语言提供一个编译目标,以便它们可以在Web上运行。也可以与JavaScript共存,它提供了一条途径,以使得以各种语言编写的代码都可以以接近原生的速度在Web中运行。作为一个小前端,你怎么为其他语言提供编译目标...

几种常见的基础前端优化方式

2019-12-19
阅读 9 分钟
3.1k
这篇文章算是最近学习前端优化时的一点心得,为了对比强烈降低了CPU性能,文中代码在github上也有一部分。本文性能截图来自chrome自带的performance,不了解的可以看看跟他差不多的前世chrome timeline(介绍传送门)。

从源码切入Vue双向绑定原理,并实现一个demo

2019-09-01
阅读 8 分钟
990
down一份Vue源码,从package.json入手,找我们需要的代码1、package.json中的scripts,"build": "node scripts/build.js"2、scripts/build.js line26 build(builds),其中builds的定义为11行的let builds = require('./config').getAllBuilds(),这个大概就是打包的代码内容,另一个build是在下面定义的函数,他的代码是...

一篇字节跳动前端面经

2019-08-01
阅读 8 分钟
7.5k
hr小姐姐说一共有1轮笔试 + 3轮技术面 + 1轮hr面,面试地点在中关村天使大厦,岗位是1-3年前端,时间是2019年8月笔试笔试分为多选 简答 判断 手写代码四部分,下面只写了印象比较深的几道。多选1、position为relative的元素可以使用top和left进行定位吗答:可以。我自己没见过这种写法,就没敢选,然后错。2、以下哪个是...

LeetCode.11 盛最多水的容器(Container With Most Water)(JS)

2019-07-18
阅读 2 分钟
2k
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。

LeetCode.42 接雨水(Trapping Rain Water)(JS)

2019-06-12
阅读 4 分钟
2.9k
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 1:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6

LeetCode.6 Z 字形变换(zigzag-conversion)(JS)

2019-05-29
阅读 3 分钟
2.2k
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L   C   I    RE T O E S  I  I   GE   D   H   N(这个字符排列看不懂的话推荐去看一下原题,原题的调整示例比较清晰)之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,...

LeetCode.5 最长回文子串(longest-palindromic-substring)(JS)

2019-04-07
阅读 2 分钟
2.1k
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd"输出: "bb"

详细分析Vue.nextTick()实现

2019-04-01
阅读 4 分钟
3.5k
Firstly, this paper is based on Vue 2.6.8刚开始接触Vue的时候,哇nextTick好强,咋就在这里面写就是dom更新之后,当时连什么macrotask、microtask都不知道(如果你也不是很清楚,推荐点这里去看一下,也有助于你更好地理解本文),再后来,写的多了看得多了愈发膨胀了,就想看看这个nextTick到底是咋实现的

LeetCode.2 两数相加(Add Two Numbers)(JS)

2019-03-26
阅读 4 分钟
3.2k
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例: 示例 输入:(2 -> 4 -> 3) + (5 -> 6 ...

LeetCode.3 无重复字符的最长子串(JS)

2019-03-23
阅读 4 分钟
6.1k
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例1输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例2输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例3输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以...

LeetCode.1 两数之和(Two Sum)(JS)

2019-03-22
阅读 2 分钟
4.4k
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例 给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]