前端面试及学习分享
先说一下我自身的情况,去年八月份到港中文读研,开始接触前端,课上有网页编程课,html/css/js有教,但是教得不深,服务端用nodejs。主要还是课下的自学,期间到咸鱼上买了很多课,自己实践,最早的时候做过静态页面(应该大家都是这样过来的吧:),网页扫雷,贪吃蛇,也有用Nodejs, mongodb写过web server(非常基础的一些网页)。后来春招,真的惨不忍睹,投了五六十个简历,也面了好几家,都没戏,不过是一段经历,我个人还是觉得有面试机会一定要多尝试,每次经历过之后就会发现自己的不足,我也发现每次面试完后的提升是最大的,因为就感觉受打击了,还有好多不懂的地方,不清楚的地方,然后就会借着问题开始疯狂浏览csdn,cnblog。所以有面试机会一定要把握。秋招是一个很好机会很多的时段,每个人可能也只有一次秋招,一定要把握好,不要等到春招的时候才后悔莫及,春招的岗位特别少,基本都是补录,或者就是公司出来宣传。因为经历了春招,秋招的时候面试时谈吐就自然很多,不会很紧张,即使答不上来吧,但也能和面试官说一句,这个问题我没经历过,但我思考了可行的方案,我可以大致说一下(这样给面试官的感觉就是,面对问题有独立思考的能力,敢于去尝试,结合自身的想法给出解决方案)
后来四月份来到了实习公司,一家金融公司,但做的是微信的小游戏(不要问我为什么hhhhh,团队搞创新的,和公司的主营业务不相干的我们都做)。也是这个机会,去接触了实际的开发,用的TypeScript(后来发现TypeScript面试的时候挺加分的,大家也不用有太大的焦虑担心自己没有其他什么优势点,每个人都是独特的,肯定都有自己的独特的优势点,只是可能你自己还没发现),cocos游戏引擎,也有用Spring-boot写一些游戏的后端接口。我感觉这段时间对算法,对功能的实现提升是最大的,明显和自己瞎折腾有很大的区别,也就接着这个机会狠狠地了解实践了es6(自己瞎搞的时候就纯粹敲es5,什么promise, async/await都不会去用,后来才发现,真香)。所以有机会我觉得一定要出来实习,实习所接触到的东西基本都是面对大用户群体,你所实现的功能也是直接给用户使用,和学校里面学的东西还是有一定的不同。
对于react、vue、webpack这些我都没有真正地在业务层面上去实现过,但是面试的时候,只要你有前端相关的项目经历,就大胆去面吧,面试更看重的基础的东西,比如js那些基本原理,对于框架,只是一种工具,更重要的我觉得应该是学习能力。
关于前端复习的纲领
我之前在牛客上收藏过一个帖子,觉得那个大佬总结得很好,基本的知识点都罗列出来了,我直接拿过来分享给大家,那位大佬的牛客社区网名是:AmbitionC。可以跟着这个这个纲领把知识点一个一个过掉,肯定会有很大的提升,对于算法方面,大家也知道算法练内功,锻炼思维逻辑能力,牛客上把剑指offer刷一刷,当刷过一遍再回去二刷的时候,就会发现:我擦,自己功能实现起来怎么变快了:)。
JS
-
原始值和引用值类型及区别
-
判断数据类型typeof、instanceof、Object.prototype.toString.call()、constructor
-
类数组与数组的区别与转换
-
数组的常见API
-
bind、call、apply的区别
-
new的原理
-
如何正确判断this?
-
闭包及其作用
-
原型和原型链
-
prototype与proto的关系与区别
-
继承的实现方式及比较
-
深拷贝与浅拷贝
-
防抖和节流
-
作用域和作用域链、执行期上下文
-
DOM常见的操作方式
-
Array.sort()方法与实现机制
-
Ajax的请求过程
-
JS的垃圾回收机制
-
JS中的String、Array和Math方法
-
addEventListener和onClick()的区别
-
new和Object.create的区别
-
DOM的location对象
-
浏览器从输入URL到页面渲染的整个流程(涉及到计算机网络数据传输过程、浏览器解析渲染过程)
-
跨域、同源策略及跨域实现方式和原理
-
浏览器的回流(Reflow)和重绘(Repaints)
-
JavaScript中的arguments
-
EventLoop事件循环
-
宏任务与微任务
-
BOM属性对象方法
-
函数柯里化及其通用封装
-
-
JS的map()和reduce()方法
-
ES6
-
let、const和var的概念与区别
-
变量提升与暂时性死区
-
变量的结构赋值
-
箭头函数及其this问题
-
Symbol概念及其作用
-
Set和Map数据结构
-
Proxy
-
Reflect对象
-
Promise(手撕Promise A+规范、Promise.all、Promise相关API和方法)
-
Iterator和for...of(Iterator遍历器的实现)
-
循环语法比较及使用场景(for、forEach、for...in、for...of)
-
Generator及其异步方面的应用
-
async函数
-
几种异步方式的比较(回调、setTimeout、Promise、Generator、async)
-
class基本语法及继承
-
模块加载方案比较(CommonJS和ES6的Module)
-
ES6模块加载与CommonJS加载的原理
HTML/CSS
-
CSS权重及其引入方式
-
用CSS画三角形
-
未知宽高元素水平垂直居中(方案及比较)
-
元素种类的划分
-
盒子模型及其理解
-
定位方式及其区别(文档流)
-
margin塌陷及合并问题
-
浮动模型及清除浮动的方法
-
CSS定位属性
-
display及相关属性
-
IFC与BFC
-
圣杯布局和双飞翼布局的实现
-
Flex布局
-
px、em、rem的区别
-
Less预处理语言
-
媒体查询
-
vh与vw
-
H5的语义化作用及语义化标签
-
Web Worker和Web Socket
-
CSS3及相关动画
-
如何实现响应式布局
-
SEO的概念及实现
-
HTML5的新特性
-
Less和Sass使用
HTTP与计算机网络
-
TCP/IP协议分层管理
-
三次握手四次挥手机制及原因
-
HTTP方法
-
GET和POST的区别
-
HTTP建立持久连接的意义
-
HTTP报文的结构
-
HTTP状态码
-
Web服务器及其组成
-
HTTP报文首部
-
HTTP通用首部字段
-
HTTP请求首部字段、响应首部字段、实体首部字段
-
Cookie相关首部字段
-
HTTPS与HTTP区别及实现方式
-
Cookie与Session
-
基于HTTP的功能追加协议(SPY、WebSocket、HTTP)
-
常见的Web攻击分类
-
TCP与UDP区别
-
存储机制localStorage、sessionStorage与Cookie存储技术
-
XSS攻击及防御
-
CSRF攻击及防御
https://www.nowcoder.com/discuss/258810来源:牛客网
最后,祝大家都收获自己心仪的offer!
#前端##学习路径#