宏任务(macrotask )和微任务(microtask )表示异步任务的两种分类。在挂起任务时,JS 引擎会将所有任务按照类别分到这两个队列中,首先在 macrotask 的队列(这个队列也被叫做 task queue)中取出第一个任务,执行完毕后取出 microtask 队列中的所有任务顺序执行;之后再取 macrotask 任务,周而复始,直至两个队列的任务都取完。同一次事件循环中 微任务永远在宏任务之前执行
参考链接:https://www.cnblogs.com/ckAng/p/11133643.html
8. HTTP/2
9. webpack优点
10. 防止XSS
11. 对称加密算法和非对称加密算法以及可逆性
12. 中断JS执行
13. 服务端渲染和客户端渲染的优缺点
(1)服务器端渲染
每当有客户端请求页面了,服务器先在后端调用art-template,把指定的页面预先在后端渲染后,然后通过res.end把这个渲染完毕的完整页面,返回给客户端直接展示。
-
优点:对SEO友好,因为我们经过服务器端渲染的页面,在网络中传输的时候,传输的是一个真实的页面。因此,爬虫客户端,当爬到我们的页面后,会分系我们给他提供的这个页面,此时,我们页面中的关键数据就会被爬虫给收录了。
-
缺点: 服务器端渲染,对服务器压力比较打,可以使用服务器端的页面缓存技术,减轻服务器的渲染压力;不适合前后端分离开发。
(2)客户端渲染
每当用户要请求某个页面了, 第一步,用户需要先把这个页面请求到客户端,此时用户拿到的页面只是一个模板页面。 第二步,浏览器在解析模板页面的时候,会发起art-template的二次资源请求,同时要发送Ajax请求,去服务器获取数据 第三步,在客户端调用art-template 渲染HTML结构,并把渲染厚的htmlStr append 到页面指定的容器中;
-
缺点: 对SEO相当不友好
-
优点: 减轻了服务器端的渲染压力;同时,最大的好处就是:能够实现前后端分离开发;
14. 客户端浏览器HTTP请求
15. transform变形
编程题:
1. fizzBuzz
实现 fizzBuzz 函数,参数 num 与返回值的关系如下: 1、如果 num 能同时被 7 和 9 整除,返回字符串 fizzbuzz 2、如果 num 能被 7 整除,返回字符串 fizz 3、如果 num 能被 9 整除,返回字符串 buzz 4、如果参数为空或者不是 Number 类型,返回 false 5、其余情况,返回参数 num
// 处理输入
const input = readInt()
// 处理输出
const result = Solution(input)
print(result)
// 算法部分
function Solution(num) {
let result
if(num%70 && num%90){
result = “fizzbuzz”
} else if (num%7==0){
result = “fizz”
} else if(num%9 ==0){
result = “buzz”
} else if(num == null || num.isNaN()){
return false
} else {
return num
}
return result
}
参考力扣代码: https://leetcode-cn.com/problems/fizz-buzz/
2. 推到多米诺
一行中有 N 张多米诺骨牌,我们将每张多米诺骨牌垂直竖立。
在开始时,我们同时把一些多米诺骨牌向左或向右推。
每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。
同样地,倒向右边的多米诺骨牌也会推动竖立在其右侧的相邻多米诺骨牌。
如果同时有多米诺骨牌落在一张垂直竖立的多米诺骨牌的两边,由于受力平衡, 该骨牌仍然保持不变。
就这个问题而言,我们会认为正在下降的多米诺骨牌不会对其它正在下降或已经下降的多米诺骨牌施加额外的力。
给定表示初始状态的字符串 “S” 。如果第 i 张多米诺骨牌被推向左边,则 S[i] = ‘L’;如果第 i 张多米诺骨牌被推向右边,则 S[i] = ‘R’;如果第 i 张多米诺骨牌没有被推动,则 S[i] = ‘.’。
返回表示最终状态的字符串。
// 处理输入
let input=‘’, line;
while((line = read_line()) != ‘’){
input += line;
}
// 处理输出
const result = Solution(input);
print(result);
// 算法部分
function Solution(s) {
let L = R = 0
let len = s.length
s = s.split(‘’)
while(R < len){
if(s[R] === ‘.’) R++
if(L === R) R++
if(s[R]=‘L’ && s[L]!‘R’){
while(L!==R){
s[L] = ‘L’
L++
}
}else if (s[R]=‘L’ && s[L]=‘R’){
let left =L,right = R
while(left < right){
s[left]=‘R’
left++
s[right]=‘L’
right–
}
L = R
}else if(s[R]=‘R’ && s[L]!‘R’){
L=R
} else if(s[R]=‘R’ && s[L]=‘R’){
while(L!==R){
s[L]=‘R’
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
前端校招精编面试解析大全点击这里免费获取完整版pdf查看
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!*
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
前端校招精编面试解析大全点击这里免费获取完整版pdf查看