前端面试中遇到的问题总结

一、html5:新特性
1.语义化标签
2.viedo audio
3.表单中新增了一些类型placehoder这些什么的
4.canvas画布这些都是差不多
5.svg
svg和canvas区别:
canvas是和javascript结合起来绘制2d图形、渲染能力弱(适合于游戏开发)
svg是和xml结合起来绘制2d图形(不适合游戏开发,适合地图)
关于websocket理解:(基于TCP协议的)
得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
TCP协议是什么?tcp协议:它面向连接且实现的是点对点通信 且没有安全性的一个传输控制协议
webworker:
就是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行
二、css3新增的特性:
1.动画、旋转、放大、缩小、盒子阴影、border-image、rgba、弹性布局、媒体查询、opcity透明度
三、浏览器兼容性问题
1.有些样式不合适在前面加相应的前缀
2.每个浏览器默认的样式不一样 使用通配符选择器去清除默认样式
3.ie盒子和标准盒子
4.ie上获取样式currentstyle 其他的使用getcomputerstyle
四、常见的DOM操作、DOM和BOM的区别、渲染的过程
什么是bom:bom是浏览器对象模型
什么是dom:是文档对象模型
eg:浏览器渲染步骤
首先解析html文档生成DOMtree、然后解析css生成csstree 然后两个合成一个生成渲染树 最后回流(引起回流的原因:改变位置、大小什么的) 重绘(改变颜色,而且如果引起回流则一定会造成重绘)
五、es6语法
let、const区别:let 和const都没有变量提升 作用域都是块级作用域
const是在声明的时候就要赋值,且值不可修改
箭头函数:箭头函数不能使用new关键字
箭头函数的this指向(箭头函数没有自己的this 它的this是继承而来的)
事件轮询机制就是事件循环队列机制
六、闭包问题
什么是闭包?答:“闭包就是能够读取其他函数内部变量的函数
造成闭包的原因?答:
解决方法?答:可以使用let、立即执行函数
闭包可以实现什么?可以访问局部变量、可以保护变量不受污染
七、vue框架(必问)
vuex:state,mutations,actions,modules
state:放公用数据的
mutation里面放的是状态修改事件
状态修改事件只能是同步的
module里面放的是store的小模块
actions实际还是mutation,就是可以异步了
最终他还是通过mutation修改数据
vue全家桶:vue-cli + vue2.0 + vuex + vue-router + axios + element-ui
钩子函数:
八、ajax、axios 前后端通信的过程(原生的ajax怎么写)
原生ajax请求步骤get:
1.创建核心的对象(new xhrhttprequest对象)
2.编写回调函数(判断是否请求成功 状态码等于4或者等于200)
3.调用open方法 设置请求方式和请求路径
4.调用send方法 发送
post:要多设置一个请求头setrequestheader(在发送的前面)
九、跨域问题(具体实现)
答:跨域解决方式:
1.jsonp(script这个标签本来就有跨域的能力,然后将ajax中datatype中类型改为jsonp)缺点只支持get
2.利用cors设置头 允许跨域(头有哪些)优点:支持get和post两种
使用普通的XMLHttpRequest发起请求和获得数据,比起JSONP有更好的错误处理
3.利用proxy代理(具体实现不管是否跨域,在自己服务器上中转一次,让它允许跨域,类似于一个中转站的意思)
十、mvc和mvvm开发模式的区别(mvvm和vue的联系)
mvc:分三层:通信是单向的
mvvm:也是分三层: 效率比mvc高因为它view和viewmodel之间采用双向数据绑定
mvvm和vue:vue是基于mvvm开发的一种具体实列
十一、jquery常用的指令熟系

十二、bootstrarp(核心:栅格化系统,最多12列)
十三、webpack
webpack主要是打包工具 可以将js代码帮我们打包成模块
它可以帮我们优化性能:压缩代码 删除一些死代码
区别:支持code-splitting、模块化(AMD,ESM,CommonJs)、全局分析。
十四、github的常用命令
答:git init:创建一个git仓库
git clone:复制一个git仓库
git add:添加文件到缓存
git commit:添加备注信息
git status:查看文件状态
十五、项目(请你简单介绍一下你的项目 从)
十六、常见的设计模式:
观察者模式(发布-订阅者模式):当一个对象的状态发生改变的时候,能够自动通知其他关联对象,自动刷新改变状态
代理模式:为一个对象提供一个代用品或者占位符,以便控制对它的访问
工厂模式:可用来解决多个相似的问题
单列模式:保证一个类仅有一个一个实例,并提供一个访问它的全局访问点。
觉得会问到:继承 原型链 作用域
实现继承的方法:
1.原型链继承:利用prototype实现继承 sub.prototype=new super(将父类的实列作为子类的原型)
2.构造函数继承:使用call或apply改变this的指向(使子类的函数体内执行父类的构造函数。从而实现继承)
3.组合继承

你可能感兴趣的:(前端面试题)