背景:2020年是比较特殊的一年,由于新冠影响导致很多事情发生了变化,同时也改变了人们的一些常规习惯,就拿换工作来说,为了减少大家的出行和接触,线上视频、电话面试成了趋势,但是万变不离其宗,技术才是王道,下面是个人近期的一些面试经验和需要大家知道的问题整理给大家,希望大家都能够有所提高,面试就像相亲,希望大家都能够顺利找到彼此满意的那个,哈哈。
1.谈谈你对h5标签语义化的理解以及语义化的优点
2.html5新增的标签有哪些?(结构标签:article、aside等、表单标签:video、audio、embed等、表单标签:email、url等)大家自行归类整理
3.css3新特性(选择器、渐变、阴影、多列布局、圆角、动画、过渡、盒模型等)
4.h5存储方式(A.本地存储localstorage、sessionstorage;B.离线存储application cache;C:本地数据库IndexedDB和Web SQL(已取消))
5.cookie深入了解(包括起源、属性、http头的设置、跨域携带、与本地存储的对比、与session的关系等)
6.两种盒模型(w3c和IE),以及可以怎么设置等
7.BFC深刻了解
8.动画和过渡
9.canvas
10.深刻区分inline、inline-block、block
11.实现固定和不固定宽高容器水平垂直居中的方法,基础题,尽可能多的方式
12.flex深刻了解,实现各种布局
13.rem的原理
14.你常用的实现移动端适配的方法
15.移动端常遇到的兼容问题(软键盘弹起、点滴穿透等)
16.1像素问题的处理方案
17.你遇到和处理过的各大浏览器的兼容问题
1.闭包深刻理解
2.原型链及原型深刻理解
3.继承的方式(es5、es6)
4.数组的常用方法
5.对象的深浅拷贝以及优缺点
6.数组去重的方法,基础题,尽可能多的实现
7.事件循环(Event loop)
8.宏任务和微任务结合事件循环来说
9.js垃圾回收机制(标记清除、引用计数),哪些情况会造成内存泄漏
10.this指向问题(普通函数、箭头函数)
11.基本类型以及引用类型深刻理解
12.let、const、var的理解(变量提升、块级作用域等)
13.const是怎么实现的
14.扩展运算符的使用
15.解构赋值
16.JSBridge实现原理
17.数组扁平化的方法(多维数组降维)尽可能多
18.谈谈你对事件冒泡和捕获的理解
19.事件代理和事件委托
20.改变this指向的方法
21.函数柯里化的理解
22.尾函数和尾递归的理解
23.promise的使用和理解,手写使用promise封装一个异步请求
24.手写实现一个promise以及手写promise的all或者race
25.async await和promise的区别
26.理解Generator
27.防抖和节流的理解(手写实现)
28.手写实现斐波契那
29.手写实现阶乘并使用尾调用优化
30.es6 class理解
31.高阶函数的理解与使用
32.jquery是怎么实现可以链式调用的
33.谈谈你对模块化的理解(AMD、CMD以及es6的import、export等)
34.跨域的方法以及可能出现的问题
35.算法类:手写冒泡、快排、查找出现最多次数的字符串、判断数组中是否有两位数字之和、用正则实现trim()清除字符串两端空格、删除相邻相同的字符串、判断是否是回文字符串、字符串原位反转等以上需要手写并考虑复杂度
1.vue和react的区别
2.如果让你选择你怎么选择使用哪个框架
3.你怎么搭建一个vue项目或者react项目
4.vue有哪些生命周期以及每个周期内可以做什么?
5.组件间传值的方法有哪些?
6.前端路由的理解
7.hash和history的理解
8.数据双向绑定的原理(MVVM)
9.vue模版是怎么渲染的,尽可能详细或者说前端修改了一个数据具体经历了什么?
10.虚拟dom的理解
11.key的作用理解
12.路由的常用方法
13.动态路由
14.手写tree组件说说你的思路
15.你过去项目中封装了哪些基础组件,举例说说
16.是否读过框架的源码,谈谈它的整体设计
17.vue3.0的改进
18.vue中对哪些数组方法进行了改写,是怎么改写的?
19.vue首屏优化的方案
20.keep-alive、nextTick
21.v-if、v-show区别
22.v-model具体是怎么实现的?
23.vue.compontent和vue.extend的区别和联系
1.webpack和grunt、gulp的区别
2.webpack的版本
3.你在webpack中配置过哪些内容,作用是什么?
4.webpack打包的原理是什么?
5.打包之后的hash数的作用是什么?
6.怎么通过配置实现只打包有修改的部分的内容,然后上传,而不是所有的重新打包?
7.怎么通过配置实现公共代码在多项目中公用?
8.切片是怎么实现的?
9.有哪些常见的Loader?他们是解决什么问题的?
10.有哪些常见的Plugin?他们是解决什么问题的?
11.Loader和Plugin的不同?
12.webpack热更新是怎么实现的?原理是什么?
13.webpack构建流程是什么?
14.怎么配置单页应用,怎么配置多页应用?什么时候需要配置多页应用?
15.webpack怎么优化前端性能?你用过哪些?
1.http和https的区别?
2.http1.0和1.1、2.0的区别?
3.http有哪些头信息?
4.常用的http状态码以及他们对应的内容?
5.说说输入一个地址发生了什么?尽可能详细
6.谈谈你对DNS的了解
7.http缓存
8.重绘和重排
9.你对服务器渲染了解吗?
1.有没有自己的博客和github?
2.平时怎么关注一些前端的内容?
3.最近在看些什么书?
4.node有写过吗?
5.Typescript有写过吗?
6.谈谈你对原生和h5交互的理解,以及原理是什么?
7.pwa、flutter、快应用、小程序的原理和区别了解吗?
8.跨端技术ui-app、taro
9.设计模式
10.前端性能参数FP、FCP、FMP、LCP等
11.常用的抓包工具以及扩展有哪些?
12.项目性能优化做过什么?
1.说说你的优缺点?
2.说说你过去项目中最有成就的是什么?你过去遇到过什么难题,怎么解决的?让你印象深刻的事情等?
3.本次找工作看重的是什么?
4.说说你自己未来三到五年的规划?
5.平时周末会做些什么?
6.有没有特别喜欢的事情(爱好)?
7.对加班什么看法?
找工作一定不要着急,为了自己想去的那个厂,大家一定要做好准备之后再动手(切记切记),一定要抑制住面试的冲动,避免错失唯一的机会,建议找工作前花个两周左右把知识系统一下,推荐把红皮书(高程)和es6过一遍,你会受益匪浅的。以上,希望对大家有所帮助,后续如果有落下的重点会及时同步大家,预祝大家都能找到那个合适的厂。