写在前面
终于,我也有机会写一篇面经文~这其中也带着一丝感伤,提了离职,搬了东西回家,属于我毕业后的第一份工作就这样结束了~我面试了一些个小中大厂,最终拿到了快手的offer,本篇文章将记录及分享我在这次面试中积累的一些不是那么成熟经验
面试准备阶段
学习以及复习基础知识
这一定是第一步需要做的事情,先制定规划,然后按照这一条既定的规划去学习以及复习,可分为六部分去准备:
css部分
像css
这一部分,面试必问,但是它的东西很杂很多,我不知道有多少人和我感觉一样:学习前端最难的是css
,而不是js
。
css这一部分,布局、实现一个什么样的形状、一些属性的使用等问的会多一些~
javascript部分
JavaScript
部分,数据类型到一些隐式转换这些基础知识,看代码说输出,v8底层执行机制、垃圾回收、闭包、作用域、作用域链,原型、原型链,手写代码,如:防抖、节流、bind
、call
、apply
等,深拷贝、浅拷贝,Event Queue
、Event Loop
,Promise
、async
、await
等等等都是必须要会的知识点,但是我们在学习的过程中还是要灵活一些,去学习这些思想,而不是一味的去死记硬背~
webpack部分
这一部分是前端工程化的内容,还是有必要会的。浅一点说要会的就是一些基础配置以及优化配置,还有像plugin
和loader
的区别等,再深一点就是配置的原理、以及如何写一个loader
或者plugin
,然后应用这些东西实现什么样的需求
框架部分
前端的框架有很多,现在流行的两个就是vue
和react
,我的技术栈是react
,所以我是以react
去准备的面试,在react
里面,经常问的比如:生命周期、关于生命周期为什么要废弃,什么是虚拟dom
、diff算法
思想以及key
的作用、有key
没key
有什么区别,如何解析jsx
,hooks
的应用等
http
关于服务这一块,面试也是会经常问,http
状态码所代表的含义,http
与https
的区别,http
的三次握手以及四次挥手等
项目
面试离不开项目,所以对自己过往项目的理解尤为重要,上面的很多知识点其实也可以根据项目问很多
准备简历
我认为简历一定要在学习后再去准备,这样你在简历上写的东西才在自己的心里有数,才能保证简历上的东西自己都能会,其次是简历上要包含哪些内容,我自己而言:个人基本信息(如:手机号、邮箱、年龄、住址),可以把自己的github
链接贴上,如果有个人博客网站也可贴上~教育经历、工作经历、个人技能,并不建议写自我评价~如果有想看的,可以私聊我发你我的简历呀~~~
投递简历,随缘面试🐶
这一阶段我经历了很多事,所以我越来越认为干啥事就随缘吧,有些事情就好像命中注定的一样,是你的就是你的,不是你的怎么也强求不来~~
上面说的是废话,可忽略🐶
面试这个过程的确是看眼缘的,不过我们自身的发挥其实还是占着更大的比重的,所以如何在面试那么短的时间内表现出最好的自己尤为重要
hr面试以及谈薪
如果我们顺利的通过了技术面试,那么就会来到hr面,hr面试也没什么技巧,就是机灵一些我认为就好了,其实我只经历了一次hr面试,从校招到这次跳出,总共就经历了这么一次,这就是我所说的随缘吧🐶谈薪的技巧我就不说了,我实在不会,希望有大佬可以教教我(诚恳脸)~~~
背调
一些公司会有背调,背调过程首先背调公司会先发送背调邮件,让你授权,然后填写一些资料,背调公司会再次打电话向你确认,是否可以开始背调,你答应了,就开始了~这个过程不建议有造假行为,背调公司会通过各种问题判断提供信息的真实性,以及他们会在过程中要求打你没提供人的电话,我们只要不撒谎,和领导、hr都提前打好招呼,就不会有什么太大的问题的
面试题分享
我面试了一些个公司,按时间顺序排列:顺丰同城、头条、嘀嗒、蓝湖、快手、去哪儿、360、知乎...挑了一些我听过名字的公司进行投递简历,简历筛选这一块还是有很多没过的,受限于学历、工作经验只有一年~~~对于前端开发来说,蓝湖大家都听说过,对于这次面试整体下来,我对这家公司真的评价颇高,由于蓝湖的技术栈是vue,而我是react,技术栈不匹配对于这种规模的公司而言,可能给不了我太多的适应时间,所以把我当了备胎(面完第二天hr主动把面评发给我,直接告诉我备胎了),这种公司不多了,与其相反的是上面某个公司,面试过后hr直接把我微信删了🐶
下面按上面的五部分分享面试题(不注明哪些公司,如有需要,可私聊我~):
css部分
1、css中box-sizing的属性
2、一个元素居中的办法(不确定宽高的情况下如何用定位的办法实现)
3、两栏布局,左侧固定,右侧自适应
4、如何理解BFC
5、清除浮动overflow:hidden的原理,为什么可以清除
6、了解postcss吗
7、less和css的区别
8、看代码
<style>
.classA { color:blue; }
.classB { color:red;}
</style>
<p class="classB classA">hello</p>
元素p内的文字最终什么颜色
9、画一个三角形、扇形,将一个圆分为四部分,对角部分是相同颜色,相邻部分为不同颜色
JS部分
1、看代码说输出,会涉及到Event Queue、Event Loop,面向对象底层机制,闭包等
2、let、const区别
3、浅拷贝和深拷贝有什么区别,实现深拷贝
4、实现数组去重,new Set的数组去重和自己实现的哪个性能会更好
5、说出数组的方法,map和forEach有何区别
6、说一下跨域,jsonp的原理是什么?node中间件解决跨域问题的原理是什么?
7、Object.create实现了什么?传null得到的结果和普通对象有什么区别?
8、对prototype和__proto__的理解
9、call、apply和bind有何区别,手写实现call
10、替代es6中拓展运算符传参的方式
11、如何实现继承?class里面super是干嘛的
12、import和require的区别
13、对promise的考察,then链的应用
14、实现一个发布订阅,有订阅(on),发布(emit),一次订阅功能(once)
15、实现防抖节流,它们两个之间的区别是什么?
16、实现请求并发限制,具体为:封装一个函数,传递请求并发的个数为参数,实现对并发请求的限制
17、说说闭包以及垃圾回收机制
18、利用async和await如何处理异常事件
19、箭头函数和普通函数有什么区别?如果想改变箭头函数中绑定this怎么办?
20、原生js判断鼠标在一个有对角线矩形的位置
框架部分
1、react中key的作用,有key没key有什么区别,比较同一层级节点什么意思?
2、你对虚拟dom和diff算法的理解,实现render函数
3、父子组件之间传值的方式,组件间传值的方式
4、如何解析jsx
5、生命周期都有哪几种,分别是在什么阶段做哪些事情?为什么要废弃一些生命周期?
6、关于react的优化方法
7、绑定this的几种方式
8、对fiber的理解
9、setState是同步还是异步的
10、redux以及react-redux
11、对高阶组件的理解
webpack
1、你都用过哪些webpack的配置
2、在你的项目里面用过哪些优化
3、plugin和loader的区别
4、用过哪些loader、plugin
http部分
1、http与https的区别
2、http握手的次数以及过程
3、http的几个状态码,比如:304、200、500、502、504等
项目
1、项目里面最经典的一个问题(好几家公司都问了这个):在你的项目里面解决了什么样的难题
2、在你的项目里面如何做的登录
3、在你的项目里面,如何解决xss攻击
4、也有一些关于小程序项目的:
-
在小程序时候踩过哪些坑
-
小程序里面存在域的概念吗
5、还有上面说到的一些知识点会结合项目问一下
最后
这篇文章记录了我在面试一个月左右的时间经历的这些事以及分享了没有答案的面试题,我没有拿到那么多的offer让自己做一个选择,所以经验还是有很大的欠缺,还需要继续进步~但是还是希望我的这段经历能对我这个工作经验以及学历的小伙伴有所帮助~也希望大家都能拿到自己满意的offer~
最后,分享一下我的公众号「web前端日记」,欢迎大家前来关注~~