最后
在面试前我花了三个月时间刷了很多大厂面试题,最近做了一个整理并分类,主要内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。
包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。
-
HTML5新特性,语义化
-
浏览器的标准模式和怪异模式
-
xhtml和html的区别
-
使用data-的好处
-
meta标签
-
canvas
-
HTML废弃的标签
-
IE6 bug,和一些定位写法
-
css js放置位置和原因
-
什么是渐进式渲染
-
html模板语言
-
meta viewport原理
注意,这里的“学习”指的不是“迅速记住新出的API”,而是“成体系地掌握并内化一个领域的知识,进而获得真正的智慧”。
而一个领域的护城河宽度,取决于进入这个领域所需的最低学习能力。
什么意思呢?前端开发是一个低门槛的领域,大部分前端工作内容只需要掌握很基础的知识就能开工,因此前端领域的护城河很窄。
你可能会想,我虽然是个前端,但我跟其他前端不一样,我踩坑无数,我持续精进,我函数式编程,代码高内聚低耦合,注释清晰,bug极少,遇到问题能快速定位……
好的,假设几年积累下来,你的开发效率是年轻人的3倍,很厉害吧?不过由于年纪渐长,加上家庭负担越来越重,加班是不太可能加班了。然后会发生什么?
1.你每天8小时准点下班回家带娃,年轻人每天12小时待在公司。由于工时原因,差距被缩小至50%
2.你的工资是年轻人的2倍甚至更高,公司完全可以用同样的钱招2个年轻人。由于人数原因,优势被完全抹平了
3.如果年轻人愿意接受周末加班,而你跟不起。。那么2个年轻人产出将完胜于你
**一个领域内的任何“量”的优势,都有可能被达到该领域最低门槛的年轻人,通过加班、加人数的方式抵消掉。**而且老板们都知道,年轻人最听话,最有干劲,最好使……
因此,如果前端开发的最低门槛不提升,那么你就是把前端玩出花来,都无法构成足够安全的护城河,你的竞争对手不仅是同龄的老王老李,更是一茬又一茬涌入职场的、极具性价比的年轻人。
那怎么办呢?如何在年龄增大后,仍然保持极强的竞争力?
有一个办法——不断提高自己的学习能力,然后向门槛更高的领域进发,摆脱与年轻人的直接竞争(当然,要先确保这个领域有市场)。
比如,同样是写JS,如果你做的是数据可视化,那么这个领域的准入门槛就提高了很多,不懂这块的年轻人就算007也没用,他们旺盛的精力对你无法构成威胁。
如果他们眼红你的薪水,拿出996甚至007的劲头来学习呢?
那么“学不会”会成为第二道难以跨越的门槛。很多东西并不是花时间就一定能掌握的,比如高数、线性代数、计算机图形学等,个个都是护城河里的凶猛鳄鱼。听起来,这的确是一座相对安全一些的城堡。
所以最后问题就成了:如何提高自己的学习能力,从而能够进入更难的领域?
这个问题没有标准答案,简单地说,需要从底层思维认知上有所突破。具体怎么做就只能自己想办法啦,看书也好,听课也好,找到适合自己的方法就好。
为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师核心知识笔记》电子稿文件。
内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。(本文资料 适合1-5年)
269页《前端大厂面试宝典》
数据结构与算法
这一块在笔试、面试的代码题中考核较多,其中常考的数据结构主要有:数组、链表、队列、栈、Set、Map、哈希表等,不同数据结构有不同的方法以及储存原理,这些算是技术岗的必备知识。算法部分主要分为两大块,排序算法与一些其他算法题。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
排序算法根据考频高低主要有:快速排序、归并排序、堆排序、冒泡排序、插入排序、选择排序、希尔排序、桶排序、基数排序、Timsort这十种,这类考核点要么是算法的时间、空间复杂度、稳定度,要么是直接手写代码,故在理解算法原理的同时,对JS语言版的排序算法代码也要加强记忆。
- 二叉树层序遍历
- B 树的特性,B 树和 B+树的区别
- 尾递归
- 如何写一个大数阶乘?递归的方法会出现什么问题?
- 把多维数组变成一维数组的方法
- 知道的排序算法 说一下冒泡快排的原理
- Heap 排序方法的原理?复杂度?
- 几种常见的排序算法,手写
- 数组的去重,尽可能写出多个方法
- 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
- 知道数据结构里面的常见的数据结构
- 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
- 合并两个有序数组
- 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)
k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
- 合并两个有序数组
- 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)
[外链图片转存中…(img-q9HpV2JV-1715893100283)]