2021-面试 40+ 前端,输出 200+ 文章及视频,减肥 16 斤

3,575 阅读25分钟

"「时光不负,创作不停,本文正在参加2021年终总结征文大赛

回首2021

  • 你是否又胖了些许?
  • 你是否沉迷游戏忽略学习?
  • 你是否通宵加班彻夜无眠?
  • 你是否对眼前的工作不满又无能为力?
  • 你是否想要学习,却不知该从何学起?
  • 你是否因学习枯燥而最终放弃?
  • 你是否学会了某项新的技能?
  • 你是否在技术上有了长足的进步?
  • 你是否足够努力收获满满?
  • ......

如果你中了上面的一项或者多项,此时是否些许感慨?
又是否好奇我的 2021 都做了什么?
接下来,欢迎走进我的 2021

面试

今年负责了公司的前端面试工作,对更多的前端小伙伴有了了解。这里说一下自己的收获,仅供参考。

1. 自我介绍

基本不会有面试不需要我自我介绍的吧,所以准备一个一分钟左右,能突出自己亮点的自我介绍真的很加分。

比如:

在GitHub十分活跃,参与了xx开源项目;
在掘金有持续输出,一年产出xx+文章;
在B站有持续输出,一年产出xx+视频;
有学习框架源码,甚至手写了 xx 模块;
熟悉数据结构和算法,力扣刷了xx题;
关注技术动态,最近xx方向比较热,xx框架开源了,是做xx的;
...
等等,只要是亮点即可。

如果以上都没有,也可以罗列自己的工作经历,以及每家公司的重点工作,但是一定要条理清晰。

2. 专业技能

不要堆叠类似熟练掌握 htmlcss、高度还原页面等基础能力,这就像应聘司机说自己会踩油门一样,真的没啥价值。 😓

写在这里的技能应该是熟练掌握的技能,而不是
写着熟练掌握 Git,结果不知道如何查看远程仓库地址,不知道如何撤销 commit,
写着熟练掌握 NodeKoa 框架,结果一问只是工作之余拿 Koa 写过做了一个简单的服务,
......
这里的某一个技能禁不住推敲,就会给人所有的技能都没有完全掌握的感觉。

3. 基础过关

中高级必然还是要问基础的,js 基础,css 基础,框架使用等。
所以,准备换工作的时候,至少面经刷一刷(要真正掌握对应知识,而不是背答案),因为常见的面试题就那些,常考察的点也就那些。
而且发现很多小伙伴没有看过 《JavaScript高级程序设计》,个人认为这真的是每一个前端必看的书了。 如果不是天天加班忙的飞起,真心建议刷一遍。如果基本的问题答不上来,真的会很减分。

接下来是重点:
不会的问题不要硬讲!
不会的问题不要硬讲!
不会的问题不要硬讲!
真的太伤了,如果这个问题不会,可以直接说不会,真的没有特别大的问题,但是不会,不要根据题意盲猜硬讲,想当然,碰到这种情况,如果不是出于礼貌,我真的想直接结束面试。

之前面过一个小伙伴,
问:深浅拷贝了解吗?
答:浅拷贝就是只拷贝第一层属性,深拷贝就是会把更深层次的属性也拷贝过来。
听完他的回答我是这样的

这就不是一个面试题不会的问题了,这种行为暴露了一个性格上的问题。
我首先能够联想到的就是他碰到自己解决不了的问题,会不会也不会求助其他人,在那硬搞,最后要提测了,老大了解进度,他说我这里遇到问题,一直没解决,目前进度 20%!

所以面试实事求是就好,会的问题,讲清楚,讲透彻,不会的问题回答不了解就可以,记下问题回头好好看一下。
企业招聘要的不是一个全才,面试官问的问题也只是想了解到应聘人员每个方向的知识边界,从而对应聘人员的技术能力有一个更好的了解。所以就会出现面试官一直问到面试者不会为止,这并不是刻意为难。

4. 项目经历

写项目亮点的时候可以按照

  1. 什么样的业务场景下遇到什么问题
  2. 做了什么工作
  3. 达到什么效果 这样的步骤来写,清晰明了,不会增加简历的阅读成本。毕竟谁也不想做阅读理解。😝

个人一些不成熟的总结,但是是真实感受,肺腑之言,欢迎大佬们拍砖!😃

100+文章

01. JS设计模式
02. Linux 安装 nginx
03. Linux安装node
04. 利用Github Actions实现自动化部署
05. Github Action发布
06. 面试题-渲染一万条数据
07. ECharts常见图表配置
08. 从零到一搭建Vue2后台管理系统
09. 从零到一:搭建一个Vue3开发框架
10. Vue3异常监控
11. Vue2异常监控
12. 从零到一:搭建Vue3后台管理系统
13. 软技能2:软件开发者职业生涯指南-读书笔记
14. 刻意练习-读书笔记
15. 常用数组排序算法
16. leetcode-20-有效的括号
17. leetcode-21-合并两个有序链表
18. leetcode-剑指 Offer II 018. 有效的回文
19. leetcode-144-二叉树的前序遍历
20. leetcode-226-翻转二叉树
21. leetcode-剑指offer24-翻转链表
22. leetcode-61-旋转链表
23. leetcode-面试题02.07-链表相交
24. leetcode-703-数据流中的第K大元素
25. leetcode-35-搜索插入位置
26. leetcode-110-平衡二叉树
27. leetcode-剑指 Offer 55 I-二叉树的深度
28. leetcode-344-反转字符串
29. leetcode-13-罗马数字转整数
30. leetcode-剑指 Offer 06-从尾到头打印链表
31. leetcode-面试题 02.02-返回倒数第 k 个节点
32. leetcode-141-环形链表
33. leetcode-剑指 Offer II 004-只出现一次的数字
34. leetcode-25-K个一组翻转链表
35. leetcode-704-二分查找
36. leetcode-633-平方数之和
37. leetcode-1-两数之和
38. leetcode-300-最长递增子序列
39. leetcode-912-排序数组
40. leetcode-347-前K个高频元素
41. leetcode-202-快乐数
42. leetcode-242-有效的字母异位词
43. leetcode-409-最长回文串
44. leetcode-543-二叉树的直径
45. leetcode-121-买卖股票的最佳时机
46. leetcode-746-使用最小花费爬楼梯
47. leetcode-剑指 Offer II 095-最长公共子序列
48. leetcode-647-回文子串
49. leetcode-剑指 Offer 22-链表中倒数第k个节点
50. leetcode-1721-交换链表中的节点
51. leetcode-24-两两交换链表中的节点
52. leetcode-23-合并K个升序链表
53. leetcode-138-复制带随机指针的链表
54. leetcode-2-两数相加
55. leetcode-3-无重复字符的最长子串
56. leetcode-4-寻找两个正序数组的中位数
57. leetcode-145-二叉树的后序遍历
58. leetcode-331-验证二叉树的前序序列化
59. leetcode-227-基本计算器 II
60. leetcode-636-函数的独占时间
61. leetcode-1124-表现良好的最长时间段
62. leetcode-142-环形链表 II
63. leetcode-206-反转链表
64. leetcode-19-删除链表的倒数第 N 个结点
65. leetcode-92-反转链表 II
66. leetcode-83-删除排序链表中的重复元素
67. leetcode-82-删除排序链表中的重复元素 II
68. leetcode-86-分隔链表
69. leetcode-622-设计循环队列
70. leetcode-641-设计循环双端队列
71. leetcode-1670-设计前中后队列
72. leetcode-933-最近的请求次数
73. leetcode-面试题17.09-第k个数
74. leetcode-859-亲密字符串
75. leetcode-860-柠檬水找零
76. leetcode-969-煎饼排序
77. leetcode-621-任务调度器
78. leetcode-面试题03.04-化栈为队
79. leetcode-682-棒球比赛
80. leetcode-844-比较含退格的字符串
81. leetcode-946-验证栈序列
82. leetcode-1021-删除最外层的括号
83. leetcode-剑指Offer 35-复杂链表的复制
84. leetcode-面试题02.03-删除中间节点
85. leetcode-445-两数相加II
86. leetcode-143-重排链表
87. leetcode-1249-移除无效的括号
88. leetcode-714-买卖股票的最佳时机含手续费
89. leetcode-面试题02.08-环路检测
90. leetcode-707-设计链表
91. leetcode-剑指 Offer18-删除链表的节点
92. leetcode-725-分隔链表
93. leetcode-面试题 02.04-分割链表
94. leetcode-剑指 Offer 10- I-斐波那契数列
95. leetcode-112-路径总和
96. leetcode-105-从前序与中序遍历序列构造二叉树
97. leetcode-779-第K个语法符号
98. leetcode-222-完全二叉树的节点个数
99. leetcode-剑指 Offer 54-二叉搜索树的第k大节点
100. leetcode-剑指 Offer 26-树的子结构
101. leetcode-662-二叉树最大宽度
102. leetcode-144-二叉树的前序遍历-迭代算法
103. leetcode-968-监控二叉树
104. leetcode-589-N 叉树的前序遍历
105. leetcode-剑指 Offer 32 - II-从上到下打印二叉树 II
106. leetcode-373-查找和最小的K对数字
107. leetcode-107-二叉树的层序遍历 II
108. leetcode-103-二叉树的锯齿形层序遍历
109. leetcode-剑指 Offer 40-最小的k个数
110. leetcode-1046-最后一块石头的重量
111. leetcode-215-数组中的第K个最大元素
112. leetcode-355-设计推特
113. leetcode-692-前K个高频单词
114. leetcode-面试题 17.20-连续中值
115. leetcode-295-数据流的中位数
116. leetcode-104-二叉树的最大深度
117. leetcode-264-丑数 II
118. leetcode-313-超级丑数
119. leetcode-1753-移除石子的最大得分
120. leetcode-1801-积压订单中的订单总数
121. leetcode-面试题 04.05-合法二叉搜索树
122. leetcode-230-二叉搜索树中第K小的元素
123. leetcode-199-二叉树的右视图
124. leetcode-100-相同的树
125. leetcode-101-对称二叉树
126. leetcode-剑指 Offer 68 - I-二叉搜索树的最近公共祖先
127. leetcode-124-二叉树中的最大路径和
128. leetcode-973-最接近原点的 K 个点
129. leetcode-451-根据字符出现频率排序
130. leetcode-547-省份数量
131. leetcode-200-岛屿数量
132. 数据结构-并查集
133. leetcode-990-等式方程的可满足性
134. leetcode-684-冗余连接
135. leetcode-1319-连通网络的操作次数
136. leetcode-128-最长连续序列
137. leetcode-947-移除最多的同行或同列石头
138. leetcode-1202-交换字符串中的元素

100+视频

01. 冒泡排序
02. 插入排序
03. 归并排序
04. 选择排序
05. 希尔排序
06. 快速排序1
07. 快速排序2
08. 计数排序
09. leetcode-20-有效的括号
10. leetcode-21-合并两个有序链表
11. leetcode-剑指 Offer II 018. 有效的回文
12. leetcode-144-二叉树的前序遍历
13. leetcode-226-翻转二叉树
14. leetcode-剑指offer24-翻转链表
15. leetcode-61-旋转链表
16. leetcode-面试题02.07-链表相交
17. leetcode-703-数据流中的第K大元素
18. leetcode-35-搜索插入位置
19. leetcode-110-平衡二叉树
20. leetcode-剑指 Offer 55 I-二叉树的深度
21. leetcode-344-反转字符串
22. leetcode-13-罗马数字转整数
23. leetcode-剑指 Offer 06-从尾到头打印链表
24. 面试题 02.02-返回倒数第 k 个节点
25. leetcode-141-环形链表
26. leetcode-leetcode-剑指 Offer II 004-只出现一次的数字
27. leetcode-25-K个一组翻转链表
28. leetcode-704-二分查找
29. leetcode-633-平方数之和
30. leetcode-1-两数之和
31. leetcode-300-最长递增子序列
32. leetcode-912-排序数组
33. leetcode-347-前K个高频元素
34. leetcode-202-快乐数
35. leetcode-242-有效的字母异位词
36. leetcode-409-最长回文串
37. leetcode-543-二叉树的直径
38. leetcode-121-买卖股票的最佳时机
39. leetcode-746-使用最小花费爬楼梯
40. leetcode-剑指 Offer II 095-最长公共子序列
41. leetcode-647-回文子串
42. leetcode-剑指 Offer 22-链表中倒数第k个节点
43. leetcode-1721-交换链表中的节点
44. leetcode-24-两两交换链表中的节点
45. leetcode-23-合并K个升序链表
46. leetcode-138-复制带随机指针的链表
47. leetcode-2-两数相加
48. leetcode-3-无重复字符的最长子串
49. leetcode-4-寻找两个正序数组的中位数
50. leetcode-145-二叉树的后序遍历
51. leetcode-331-验证二叉树的前序序列化
52. leetcode-227-基本计算器 II
53. leetcode-636-函数的独占时间
54. leetcode-1124-表现良好的最长时间段
55. leetcode-142-环形链表 II
56. leetcode-206-反转链表
57. leetcode-19-删除链表的倒数第 N 个结点
58. leetcode-92-反转链表 II
59. leetcode-83-删除排序链表中的重复元素
60. leetcode-82-删除排序链表中的重复元素 II
61. leetcode-86-分隔链表
62. leetcode-622-设计循环队列
63. leetcode-641-设计循环双端队列
64. leetcode-1670-设计前中后队列
65. leetcode-933-最近的请求次数
66. leetcode-面试题17.09-第k个数
67. leetcode-859-亲密字符串
68. leetcode-860-柠檬水找零
69. leetcode-969-煎饼排序
70. leetcode-621-任务调度器
71. leetcode-面试题03.04-化栈为队
72. leetcode-682-棒球比赛
73. leetcode-844-比较含退格的字符串
74. leetcode-946-验证栈序列
75. leetcode-1021-删除最外层的括号
76. leetcode-剑指Offer 35-复杂链表的复制
77. leetcode-面试题02.03-删除中间节点
78. leetcode-445-两数相加II
79. leetcode-143-重排链表
80. leetcode-1249-移除无效的括号
81. B站首月总结
82. leetcode-714-买卖股票的最佳时机含手续费
83. leetcode-面试题02.08-环路检测
84. leetcode-707-设计链表
85. leetcode-剑指 Offer18-删除链表的节点
86. leetcode-725-分隔链表
87. leetcode-面试题 02.04-分割链表
88. leetcode-剑指 Offer 10- I-斐波那契数列
89. leetcode-112-路径总和
90. leetcode-105-从前序与中序遍历序列构造二叉树
91. leetcode-779-第K个语法符号
92. leetcode-222-完全二叉树的节点个数
93. leetcode-剑指 Offer 54-二叉搜索树的第k大节点
94. leetcode-剑指 Offer 26-树的子结构
95. leetcode-662-二叉树最大宽度
96. leetcode-144-二叉树的前序遍历-迭代算法
97. leetcode-968-监控二叉树
98. leetcode-589-N 叉树的前序遍历
99. leetcode-剑指 Offer 32 - II-从上到下打印二叉树 II
100. leetcode-373-查找和最小的K对数字
101. leetcode-107-二叉树的层序遍历 II
102. leetcode-103-二叉树的锯齿形层序遍历
103. leetcode-剑指 Offer 40-最小的k个数
104. leetcode-1046-最后一块石头的重量
105. leetcode-215-数组中的第K个最大元素
106. leetcode-355-设计推特
107. leetcode-692-前K个高频单词
108. leetcode-面试题 17.20-连续中值
109. leetcode-295-数据流的中位数
110. leetcode-104-二叉树的最大深度
111. leetcode-264-丑数 II
112. leetcode-313-超级丑数
113. leetcode-1753-移除石子的最大得分
114. leetcode-1801-积压订单中的订单总数
115. leetcode-面试题 04.05-合法二叉搜索树
116. leetcode-230-二叉搜索树中第K小的元素
117. leetcode-199-二叉树的右视图
118. leetcode-100-相同的树
119. leetcode-101-对称二叉树
120. leetcode-剑指 Offer 68 - I-二叉搜索树的最近公共祖先
121. leetcode-124-二叉树中的最大路径和
122. leetcode-973-最接近原点的 K 个点
123. leetcode-451-根据字符出现频率排序
124. leetcode-547-省份数量
125. leetcode-200-岛屿数量
126. 数据结构-并查集
127. leetcode-990-等式方程的可满足性
128. leetcode-684-冗余连接
129. leetcode-1319-连通网络的操作次数
130. leetcode-128-最长连续序列
131. leetcode-947-移除最多的同行或同列石头
132. leetcode-1202-交换字符串中的元素

减肥 16 斤

这一次减肥是因为公司组织的一个活动,活动号召大家一起跑步。
会在活动开始记录每个人的体重,然后大家通过各种软件记录跑步记录和里程。
根据跑步的里程,以每个人的名义每公里10元进行慈善捐赠,这个点我感觉特别好!
然后根据减肥体重会给予相应奖励。活动5月开始,10月结束,一共跑了400公里。

其实自己定的目标不止这些,因为各种原因加上惰性,只跑了400公里,还专门买了两双跑鞋。 🤣
值得一提的是:
跑了一次半马

还有这个配速

关于减肥这个事,其实就是控制饮食加锻炼,真的很有效。而且它不像其他的事情需要有一段时间才能见效,锻炼最开始会有一个红利期,也就是刚开始的一段时间效果是很明显的,是很容易给到反馈的。
而最大的困难就是自己的惰性吧,毕竟跑步或者举铁都是很累的。但是坚持下来的收获,也是实实在在的。

读书

21 年共读了 5 本书

读书.jpg 年初没有看技术书的状态,就看了前三本书,看起来比较轻松(不用像技术书那样需要刻意的思考,记忆和练习),但是看完还是很有收获和感触的,如果你最近想看些非技术书籍,墙裂推荐!

《软技能2:软件开发者职业生涯指南》就像它的书名一样,作者讲述了软件开发者的整个职业生涯不同阶段需要做的事情,要学习的内容,相信每一个软件开发者读完都会很有收获!

《刻意练习》对我来说重新定义了练习的概念,也更深刻的认识到了勤能补拙的真正含义,偏向于学习方法类的书籍。 本书阐述并证明了杰出的人物都经过了大量的刻意练习,从而也说明任何人都可以通过刻意练习成为杰出的人,一起加油吧!💪

回顾2021

学习

搭建了一些开发框架,都在我的 GitHub

学习过程中也加入了一些新的圈子,遇到了很多特别优秀、特别努力的小伙伴,更加认识到优秀的人都是因为不断学习,持续进步才会变得优秀,有了更多的榜样和学习的动力。

有人可能会好奇,是如何做到两个月输出 100+ 文章和 100+ 视频的?
首先算法我是在4月份开始学的,所以算法的知识甚至很多题都是做过的。但是输出完全是从零开始的。
而如何做到这个输出数量的,就是靠肝。是的,就是肝。
开始做这个输出之后,我 24:00 前基本没有睡过觉,肝到凌晨两点、三点也是有的,不只是工作日,包括节假日,并且因为节假日第二天不需要工作,我会肝到更晚。

有人可能不理解,可能也有人觉得没有必要,我想说这是我的选择。
有时候累了,肝不动了,也会想要不今天就算了?
但是我还是坚持去做输出了,因为我知道懈怠是有毒的,有第一次就会有第二次,第三次 ...
我不允许自己荒废掉,这一次我要坚持到最后!
也有很大一部分动力是在输出过程中收获了很多小伙伴的支持和认可,我不想成为别人眼里那个没坚持到最后的人!

这一趴,最后我想说的是,这不是卷,我只是为了自己的目标去努力,每个人有每个人的选择,我选择向前走。

掘金

年末在掘金写文章参加了更文活动,还侥幸获得了11月度前端作者榜第 7 名。

掘金.jpg

感谢掘金的各位大佬创建和维护了这么好的社区,很开心成为社区的一员,在这里学到了很多知识,结识了很多优秀的掘友。
也很荣幸在掘金输出文章,记录自己的学习和成长。也收获了一些掘友的认可,感谢你们,给了我很多鼓励!

B站

11月开始在B站输出学习收获,成为了一名up主,收获良多。
这个过程很奇妙,感觉给自己打开了新世界的大门。第一次在屏幕面前给别人讲述一些东西,透过视频和别人交流。而且它和写文章有很大的不同。
写文章思路不连贯的时候,或者被打断的时候,可以随时停止,后续再继续。或者思路不连贯的时候可以先理清思路,然后再码字。也可以像本文一样先写一个结构,然后后续慢慢丰满内容。
但是做视频的时候,你需要脑子里边想着思路,同时利用语言表述清楚自己的想法,像我做力扣题解,还需要同时写代码。
所以当你对要讲的内容掌握的不够透彻和熟练的时候,是不太可能通过视频给别人讲述清楚的。所以,当你尝试通过视频向别人讲清楚一个东西的时候,这个过程会倒逼自己更多次的熟练和思考该内容,对于学习有很大的帮助。
也了解到了每一个内容的创作所要花费的都是内容时长的很多倍的的付出,所以遇到有帮助的内容,不要吝啬你的三连哦!😃

B站.jpg

工作

我是 Vue 技术栈,工作中全面拥抱了 Vue3 生态,项目中用到了 TypeScript单元测试自动化部署及一些规范化工具。
基于线上报错错误信息无法解读及反馈链路较长问题做了异常监控。
各种项目也做了一些,最后晒下我的工位。 😃

工位.pic.jpg

生活

目前家安在了天津,天津是很多北京无法安定,又不想让孩子回老家的人的一个选择。
大城市漂着的人应该都渴望有一个自己的,安定的家吧,至少我是这样的。北漂的种种就不展开说了,经历过的人都有自己的体会。
20年房子下来后忙碌了几个月,装修、购置各种东西、搬家等等。今年是真正安定的一年,很大的感受就是生活质量提高了,回家到心也安定了。感觉一切都是值得的。
虽然随之而来的还有房贷,但是挣钱不就是为了给家人更好的生活吗?

展望2022

接下来的一年会继续保持学习,继续活跃在掘金社区。具体内容会围绕着下面的 flag 进行。

1. 进大厂

emmm,关于这个目标,其实对我还是比较有难度的,我是专科学历,非科班,92年(最可悲的是身份证还是91年 😭)。

那为什么还要执着于这么目标呢?

我的想法是既然从事了这个行业,没有去大厂看一看,感觉职业生涯是不完整的。就像身在武林,没有去一流的门派闯荡一番一样。算是个人的一个梦想和追求吧。

然后就是感觉这个目标距离自己也不是遥不可及。虽然过往的经历注定我会比很多数人更艰难一些,但是做技术的好处就是只要你技术足够优秀,就会被认可。不尝试一番,注定是个遗憾。尝试过,哪怕不成功,至少曾经努力过,尝试过。加油,干就完了!💪

2. 读 5 本书

首先看一下未读书单 👇

未读书单.pic.jpg

明年会至少选择5本读完,明年的书单基本都是技术书了,届时也会输出读书笔记。

3. 5 篇百赞文章

前端技术发展日新月异,加上自己技术浅薄,所以后续必然会持续学习。依然会把自己认为值得分享的内容形成文章输出在掘金,也依然会活跃在掘金社区,再次感谢掘金各位大佬的付出。
今年的数量已经不少了,那明年就追求一下质量,至少输出 5 篇百赞文章!

4. 5 个百赞视频

上面也提过了将所学知识转授他人的好处,其实也是遵循了 费曼学习法,后续学习过程中依然会坚持这种方式,希望自己学习的同时,也能力所能及的帮助到一些有需要的小伙伴。 同上,今年的数量已经不少了,明年再追求下质量,至少做 5 个百赞视频!

5. 3 个开源项目贡献

想要进步,一个很好的方式就是向优秀的人学习。很显然优秀的代码就是那些高 star 的开源项目,明年会学习 Vue 的源码。那为了检验自己的学习成果,也为了为开源社区贡献自己的一份力量,定下这个 flag。

6. 3 个半马(非赛事)

最近两个月所有精力都用在了工作学习上,基本每天都要久坐12个小时以上,一个很直接的后果就是身体明显变差。明年会尽量平衡一下工作、学习和生活、锻炼。
今年因为参加活动喜欢上了跑步,所以锻炼相关的 flag 就定一个3个半马的小目标吧,希望能 bp 之前的记录。

End

写了这么多,很感谢你能看到这里!🙏
之前的技术文章从没在文章中求过赞,今天要破戒了!😄
这篇文章也陆陆续续写了十来天,回顾过去一年的经历,很有感触,所以也更有感情,希望能得到大家的支持和认可。🥺

最后一句话与大家共勉: 今日走过了所有的弯路,从此人生尽是坦途!

祝各位掘友在新的一年里 快乐无需编译,幸福自会运行!😁