2021前端面试基础篇——手写题与知识点&&书推荐

金三银四了,在4月的时候,我去面试了一波,base 上海;当然面试确实是5成的技能基础+3分的运气+2分的眼缘//hh。

下边是我总结的一些手写题的题目:

  1. 深:浅拷贝
  2. 判断对象相等
  3. 数组扁平化   会配合ES10 Array的 flat()与flatMap()一起考察
  4. 防抖/节流
  5. 数组去重
  6. 手写长按事件
  7. [,],{,}匹配的问题

还有一些比较有趣的题目,都是一些小知识点,考察的应该在工作中是否善于思考与总结: 

  1. sort函数

        sort() 默认排序顺序是按字符串排序

        array.push()函数返回数组的长度

var a = [2, 1, 10],
    b = a.sort(); //sort函数的返回值是对数组的引用,在原数组上进行排序,不生成副本 a===b true

console.log(b.push(3)) //4
console.log(a) //[ 1, 10, 2, 3 ]
console.log(b)//[ 1, 10, 2, 3 ]  
console.log(a === b) //true

2.map函数 

   赋值操作会改变原数组

var a = [
    {
        value: 1
    },
    {
        value: 2
    }
]


var c = a.map((item) => { return item.value * 2 }) //不改变原数组
console.log(a, c); //[ { value: 1 }, { value: 2 } ] [ 2, 4 ]
var d = a.map((item) => item.value * 2)
console.log(a, d)//[ { value: 1 }, { value: 2 } ] [ 2, 4 ]



var b = a.map((item) => item.value = item.value * 2) //赋值操作改变了原数组
console.log(a, b);//[ { value: 2 }, { value: 4 } ] [ 2, 4 ]
var c = a.map((item) => { return item.value = item.value * 2 })
console.log(a, c);//[ { value: 4 }, { value: 8 } ] [ 4, 8 ]

 

面了一个月,偶尔去同济大学的图书馆,发现了这么一本书,《前端开发核心知识进阶》从夯实基础到突破瓶颈 ,这是一本面向面试的书。你彻底 看懂+实践+思考 这本书,基本上海的高级前端可以随便面试了//。

所以面试并没有快捷方法,死磕就对了。

这本书出版时间:2020-10-01,比较新的书。

2021前端面试基础篇——手写题与知识点&&书推荐_第1张图片

附上书的目录:

第一部分 JavaScript基础强化
01 一网打尽this,对执行上下文说Yes   2
this到底指向谁 2
实战例题分析 3
开放例题分析 12
总结 13
02 “老司机”也会在闭包上翻车   14
基本知识 14
例题分析 32
总结 35
03 我们不背诵API,只实现API   36
jQuery offset方法实现 36
数组reduce方法的实现 40
实现compose方法的几种方案 45
apply、bind进阶实现 48
总结 52
04 JavaScript高频考点及基础题库   53
JavaScript数据类型及其判断 53
JavaScript数据类型及其转换 57
JavaScript函数参数传递 60
cannot read property of undefined问题解决方案 61
type.js源码解读 63
总结 65

第二部分 JavaScript语言进阶
05 异步不可怕,“死记硬背”+实践拿下   68
异步流程初体验 68
红绿灯任务控制 74
请求图片进行预先加载 76
setTimeout相关考查 79
宏任务和微任务 82
总结 85
06 你以为我真的想让你手写Promise吗   86
从“Promise化”一个API谈起 86
Promise初见雏形 88
Promise实现状态完善 91
Promise异步实现完善 93
Promise细节完善 97
Promise then的链式调用 100
链式调用的初步实现 101
链式调用的完善实现 106
Promise穿透实现 115
Promise静态方法和其他方法实现 116
总结 120
07 面向对象和原型――永不过时的话题   121
实现new没有那么容易 121
如何优雅地实现继承 123
jQuery中的对象思想 130
类继承和原型继承的区别 133
面向对象在实战场景中的应用 134
总结 136
08 究竟该如何学习与时俱进的ES   137
添加新特性的必要性 137
学习新特性的正确“姿势” 139
新特性可以做些什么有趣的事 141
Babel编译对代码做了什么 145
总结 150

第三部分 不可忽视的HTML和CSS
09 前端面试离不开的“面子工程”  152
如何理解HTML语义化 152
BFC背后的布局问题 155
通过多种方式实现居中 162
总结 167
10 进击的HTML和CSS   168
进击的HTML 168
不可忽视的Web components 171
移动端HTML5注意事项总结 171
CSS变量和主题切换优雅实现 174
CSS Modules理论和实战 178
总结 184
11 响应式布局和Bootstrap的实现分析   185
上帝视角――响应式布局适配方案 185
真实线上适配案例分析 187
Bootstrap栅格实现思路 192
横屏适配及其他细节问题 194
面试题:%相对于谁 195
深入:flex布局和传统布局的性能对比 197
总结 200

第四部分 前端框架
12 触类旁通多种框架   202
响应式框架基本原理 202
模板编译原理介绍 211
发布/订阅模式简单应用 214
MVVM融会贯通 215
揭秘虚拟DOM 216
总结 226
13 你真的懂React吗   227
神奇的JSX 227
你真的了解异步的this.setState吗 232
原生事件和React合成事件 234
请不要再背诵diff算法了 236
element diff的那些事儿 237
加上key就一定“性能最优”吗 238
总结 239
14 揭秘React真谛:组件设计   240
单一职责没那么简单 240
组件通信和封装 246
组合性是灵魂 248
副作用和(准)纯组件 250
组件可测试性 254
组件命名是意识和态度问题 257
总结 258
15 揭秘React真谛:数据状态管理   259
数据状态管理之痛 259
Redux到底怎么用 262
Redux的“罪与罚” 268
我们到底需要怎样的数据状态管理 270
总结 272
16 React的现状与未来   273
React现状分析 273
从React Component看React发展史 274
颠覆性的React hook 277
值得关注的其他React特性 282
总结 284
17 同构应用中你所忽略的细节   285
打包环境区分 285
注水和脱水 287
请求认证处理 292
样式问题处理 293
meta tags渲染 295
404处理 296
安全问题 297
性能优化 297
总结 298
18 通过框架和类库,我们该学会什么   299
React和Vue:神仙打架 299
新版本发布的思考 302
从框架再谈基础 304
总结 304

第五部分 前端工程化
19 深入浅出模块化   306
模块化简单概念 306
模块化发展历程 307
ES原生时代 314
未来趋势和思考 316
总结 318
20 webpack工程师和前端工程师   319
webpack到底将代码编译成了什么 319
webpack工作基本原理 327
探秘并编写webpack loader 330
探秘并编写webpack plugin 336
webpack和Rollup 341
综合运用 342
总结 344
21 前端工程化背后的项目组织设计   345
大型前端项目的组织设计 345
使用Lerna实现monorepo 347
分析一个项目迁移案例 350
依赖关系简介 353
复杂依赖关系分析和处理 354
使用yarn workspace管理依赖关系 356
总结 359
22 代码规范工具及技术设计   360
自动化工具巡礼 360
工具背后的技术原理和设计 367
自动化规范与团队建设 376
总结 378

第六部分 性能优化
23 性能监控和错误收集与上报   380
性能监控指标 380
FMP的智能获取算法 383
性能数据获取 384
错误信息收集 390
性能数据和错误信息上报 401
无侵入和性能友好的方案设计 404
总结 405
24 如何解决性能优化问题   406
开放例题实战 406
代码例题实战 410
总结 416
25 以React为例,谈谈框架和性能   417
框架的性能到底指什么 417
React的虚拟DOM diff 418
提升React应用性能的建议 419
React性能设计亮点 426
从Vue 3.0动静结合的Dom diff谈起 427
总结 436

第七部分 编程思维和算法
26 揭秘前端设计模式   438
设计模式到底是什么 438
设计模式原则 439
设计模式的3大类型和23种套路 440
总结 441
27 无处不在的数据结构   442
数据结构和学习方法概览 442
栈和队列 443
链表 446
链表实现 448
树 454
图 461
散列表(哈希表) 467
散列表的实现 472
总结 474
28 古老又新潮的函数式   475
函数式和高质量函数 475
柯里化分析 479
偏函数 485
总结 488
29 那些年常考的前端算法   489
前端和算法 489
算法的基本概念 490
V8 引擎中排序方法的奥秘和演进 491
快速排序和插入排序 491
排序的稳定性 498
Timsort实现 499
实战 500
算法学习 513
总结 518
30 分析一道常见面试题   519
题意分析 519
思路与解答 521
再谈流程控制和中间件 523
总结 534

第八部分 网络知识
31 缓存谁都懂,一问都发蒙   536
缓存概念与分类 536
流程图 538
缓存和浏览器操作 539
缓存相关面试题目 539
缓存实战 540
实现一个验证缓存的轮子 551
总结 554
32 HTTP的深思   555
HTTP的诞生 555
HTTP的现状和痛点 555
HTTP 2.0未来已来 557
从实时通信系统看HTTP发展 559
相关深度面试题目 560
总结 561
33 不可忽视的前端安全:单页应用鉴权设计   562
单页应用鉴权简介 562
单页应用鉴权实战 565
采用Authentication cookie实现鉴权 567
混合使用JWT和cookie进行鉴权 568
总结 571
结束语 572

 

你可能感兴趣的:(前端成长之路)