前端面试题快速记忆
一、html部分:
- 前端SEO:dtk,语义化,js,iframe,速度
二、css部分:
- 双飞翼:margin负值,100%,margin自适应。、
- 圣杯:margin负值,padding,相对定位负值,100%
- 单冒号和双冒号:css3中单冒号伪类,双冒号伪元素;css2中有用单冒号表示伪元素。
- 画三角形:宽高0,边框透明,留一框。
- 高度自适应:定位拉升。
- 省略号:隐藏溢出,溢出用省略号表示,不换行。
三、html5部分:
- 本地存储l,s,c:l手动5,s关闭5,c过期时间4(Expires)。
四、css3部分:
- flex:flex-grow(占据多余空间,1,比例),flex-shrink(空间不足收缩,0),flex-base(无效,px,百分比,收缩)。
五、scss/less部分:
六、JavaScript部分:
- 创建对象:(Object,字面量,构造fn+this,原型,构造fn+this+原型)
- 继承:(改变原型1,改变this,改变原型和this,改变原型2,赋值新对象,改变隐式原型)
- 防抖:cb做事件回调,闭包内部函数中清除定时器
- 节流:只有定时器执行完成,才允许再次执行定时器。
七、es6部分:
- 解构(参数赋值),...(数组解构),set去重(...迭代set),promise原理(then中cb在resolve中执行),generator处理promse(yield后接promise,then回调中调next,value传入next),async/await是generator的语法糖。
八、jquery部分:
九、vue部分:
- 响应式原理:get收集,set更新
- 子组件原理:在render阶段生成组件构造函数VueComponent和组件vnode,在update阶段进行子组件初始化,将template生成真实节点elm,将elm赋值给组件vnode的elm属性
- nextTick原理:将要更新的watcher和手写的callback收集到一个数组中,在定时器中遍历数组元素,执行watcher.run和callback函数。
- 对象新加属性响应:给对象属性赋值,并且手动更新dep.notify()
- 数组变异方法响应式:先执行数组方法,再手动更新dep.notify()
- key的作用:快速找下标
- 父传子: 父组件将data传递给组件vnode,组件vnode见data传递给组件实例,组件实例通过代理就可以直接使用this访问data了
- 子传父: 将函数名和函数值做成一个map,子组件调用$emit,其实根据传入的参数执行响应的函数,在函数中修改父组件的data
- 编译原理:将源码编译成AST,将AST转换成with函数
- hash路由原理:监听hashchange事件获得hash值,来改变视图
- history路由:通过pushState和replaceState设置历史记录并根据url来改变视图,当触发popsState获得最新url,来改变视图。
- vuex:将state赋值给内部vue实例的date,在state的get函数中收集计算属性Watcher和渲染Watcher,在state的set函数中更新。
十、webpack部分:
- 基本原理:在闭包中执行模块脚本,并将返回脚本执行结果。
- 构建加速:升级,多进程,dll,开启缓存,缩小打包作用域
- 性能优化:压缩,抽离css,cdn
十一、性能优化部分:
- 减少请求(合并文件,替换图片,缓存,空src和href),减小体积(压缩静态资源,gzip,webp),优化资源加载(css方head,js方底部,组件按需加载,预加载,懒加载),优化网络连接(cdn),
十二、安全部分:
- xss:注入恶意脚本,存储,url,dom,转义,only。
- csrf:带着cookie在危险网站访问本站,验证码,hash值。
十三、http协议部分:
- 状态码:1请求收到,2成功,3重定向,4请求错误,5服务端错误
- https:
八、ts部分:
九、react部分:
十五、动画部分:
十五、网络部分:
十五、绘图部分:
十五、node(express/koa2)部分:
十一、web端多页应用(jquery)部分:
十一、web端单页应用(vue)部分:
十一、mpvue小程序部分:
十二、nuxt服务端渲染部分:
十三、electron桌面端部分:
十四、react-native客户端部分:
十五、php服务端部分: