前端面试总结(红色题为必考,其他为常考)
一、关于css面试题
1、css垂直居中的集中方式?
答案:html结构:
1 2 3 |
<div class="box"> <div>垂直居中</div> </div> |
方法1:display:flex
1 2 3 4 5 |
.box{ display: flex; justify-content:center; align-items:Center; } |
方法2:绝对定位和负边距
.box{position:relative;}
.box div{
position: absolute;
width:100px;
height: 50px;
top:50%;
left:50%;
margin-left:-50px;
margin-top:-25px;
text-align: center;
}
方法3:translate
1 2 3 4 5 6 7 8 |
.box childdiv{ position: absolute; top:50%; left:50%; width:100%; transform:translate(-50%,-50%); text-align: center; } |
方法4:table-cell
1 2 3 4 5 |
.box{ display: table-cell; vertical-align: middle; text-align: center; } |
方法5:偏移量0+margin:auto
父元素设置相对或绝对定位;要居中的子元素设置绝对定位,所有偏移量为0,外边距为auto:
.wrap{
positon:relative;
}
.center{
positon:absolute;
top:0;bottom:0;left:0;right:0;
margin:auto;
}
2、对于移动端的布局方式?
答:1.【采用display:flex布局兼容ie10+(推荐地址http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html)】
2.采用百分比布局;
3.采用rem、em、或者vh vw来写宽高布局
3、对于 移动端使用rem,em、px、vw/vh区别
4、css3的兼容问题(一般简单的答一些常用的兼容问题就好,不常用的就说碰到了百度解决的)
5、盒子模型(标准盒子模型、ie盒子模型)
答: 盒子模型由 html元素 的内容content+内边距padding+边框border+外边距margin组成 ,标准盒子模型(box-sizing:content-box)元素的所设宽度 就是内容content宽度 而ie盒子模型(box-sizing:border-box) 所设宽度 由content+padding+border组成
二、关于html5、css3面试题
1、html5的新属性有哪些?(列举一些新增常用的语义化标签,以及input新增属性,以及媒体标签,canvas,本地存储,websocket以及实现原理 这些就好 顺带可以谈谈seo优化的事情)
2、Localstorage、sessionstorage、cookie三者各个的区别,及特点,优点,本地存储使用场景具体怎么用?
3、css3新增属性以及动画?
三、关于js/jq面试题
1、http请求过程有哪些?
- 对网址进行DNS域名解析,得到对应的IP地址
- 根据这个IP,找到对应的服务器,发起TCP的三次握手
- 建立TCP连接后发起HTTP请求
- 服务器响应HTTP请求,浏览器得到html代码
- 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)(先得到html代码,才能去找这些资源)
- 浏览器对页面进行渲染呈现给用户
- 服务器关闭关闭TCP连接
2、原生ajax请求过程?
//第一步,创建XMLHttpRequest对象 var xmlHttp = new XMLHttpRequest();
//第二步,注册回调函数 xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) if (xmlHttp.status == 200) { //取得返回的数据 var data = xmlHttp.responseText; }
}
//第三步,配置请求信息,open(),get //get请求下参数加在url后,.ashx?methodName = GetAllComment&str1=str1&str2=str2 xmlHttp.open("post", "/ashx/myzhuye/Detail.ashx?methodName=GetAllComment", true);
//post请求下需要配置请求头信息 //xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//第四步,发送请求,post请求下,要传递的参数放这 xmlHttp.send("methodName = GetAllComment&str1=str1&str2=str2");//"
3、post请求以及get请求的优缺点?
4、对array数组处理以及string处理的一些常用方法?
5、如何遍历一个数组里的每个数据,(主要考遍历的一些方法 for循环,forEach(),map()方法)
6、怎样进行深拷贝及浅拷贝?他们的区别?
(推荐地址:https://www.cnblogs.com/chenhuichao/p/9121353.html)
7、关于this指向问题,在不同的场景下this的指向?
(推荐地址:https://www.cnblogs.com/chenhuichao/p/9351754.html)
8、关于闭包,如何创建闭包,闭包的用处及缺点?
(推荐地址:https://www.cnblogs.com/chenhuichao/p/8568486.html)
9、怎样理解原型、原型链?
答:每个对象都会在其内部初始化一个属性,就是prototype(原型),当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样一直找下去,也就是我们平时所说的原型链的概念。关系:instance.constructor.prototype = instance.__proto__ 特点: JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这一改变。
10、数组去重的方法?
(推荐地址:https://www.cnblogs.com/chenhuichao/p/9121404.html)
11、为什么会有跨域、跨域的几种解决方式?
答:(从同源策略 方面进行回答、 跨域方式 jsonp,设置请求头,nginx代理 vul-cli的proxyTable反向代理解决跨域)
四、关于vue面试题
1、Vue的生命周期有哪些,分别有哪些特性?
2、父子组件,以及非父子关系组件的通信是怎么实现的?
(父传子通过props,子传父通过$emit,促发父组件自定义函数,vuex状态管理进行通信,$eventBus进行通信,provide / inject等)
3、vuex包含哪些内容?实现原理?使用场景及优缺点?
(推荐地址:https://www.cnblogs.com/chenhuichao/p/9261769.html)
4、vue路由的设置,及路由守卫的实现?
5、vue2及以前版本的实现原理,vue3.0的实现原理?
答:js通过Object.defineProperty修改属性的get, set方法,从而达到数据改变的目的。3.0将使用 ES2015 Proxy的 observer 实现 作为其观察者机制,它可以提供覆盖语言 (JavaScript——译注) 全范围的响应式能力,这消除了以前存在的警告,使速度加倍,并节省了一半的内存开销。
五、关于es6面试题
1、es6常用的一些命令,方法,api 。
(例如 let、const、import、export、箭头函数、promise对象、async函数,class,解构赋值 推荐学习地址:http://es6.ruanyifeng.com/)
六、所用工具的问题
1、代码管理使用的工具,svn,git(常用命令说几个)。
2、nginx使用场景,命令。
3、webpack有用过没,使用场景,以及原理。
七、主观题
1.mvc,mvvm的区别?
2、说下你以前项目中遇到的问题,你是怎么解决的?
3、项目中你有哪些优化项目的方案?
3、平时学习方法有哪些,你是怎么进行学习的,对新知识是否有洞察力,以及团队相处。
4、第二轮面试一般都是问你的兴趣爱好,学习能力,性格特点,团队协作能力,提前想好一些话题,跟面试官交心,交朋友的心态交流 事半功倍
}