前端妹子总结的面试题
HTML以及CSS篇,集中在CSS
1. 说下你常用的几种布局方式,集中往盒模型、flex布局说(至于grid布局,这个我看过没有用到过)
答:flex布局、父相子绝、盒模型box-sizing:border-box
2. 实现水平居中的几种方法?
答:text-align:center; position:absolute; position:relative;
position:absolute; left:0; right:0; //拉伸
margin:0 auto; //水平垂直居中
3. animate和translate有没有用过,一些常见的属性说下?
答:animation:动画名称 执行时间 运动曲线 延迟时间 循环次数 执行方向
animation:dh 1s ease-in-out 0s infinite
transfrom: translate(x轴,y轴)
4. CSS实现宽度自适应100%,宽高16:9的比例的矩形。
先想想
5. 如何实现左边两栏一定比例,左栏高度随右栏高度自适应?
先想想
JavaScript篇(重要)
1. 变量提升遇到的一些简单code题
for(var i = 0; i < 5; i++) { } //等同于 var i; for(i = 0; i < 5; i++) { }
2. 说一下对闭包的理解,以及你在什么场景下会用到闭包?
闭包是访问另一个函数作用域里变量。
function foo() { var i = 0; return function() { //对上一级的操作 console.log(i); } } let f = foo(); f();
3. 说下你对原型与原型链的了解度,有几种方式可以实现继承,用原型实现继承有什么缺点,怎么解决?
答:原型是共享的,一般方法都定义在原型上。
原型链是寻找一个方法,在本函数体体内不存在,就会到原型上找,
直到Object.prototype为止,这样就形成一个链条
1 function foo() { 2 3 } 4 foo.prototype.sayHello = function() { 5 console.log(1); 6 } 7 8 function bar() { 9 10 } 11 //bar.prototype = foo.prototype; //实现继承原型 12 bar.prototype = new foo(); 13 14 let b = new bar(); 15 console.log(b.__proto__);
4. iframe的缺点有哪些?
iframe的缺点是:过多的HTTP请求、产生多个页面,不易管理、浏览器后退按钮失效
Ajax的原生写法
1 let xhr = null; 2 if(window.XMLHttpRequest) { 3 xhr = new XMLHttpRequest(); 4 }else { 5 xhr = new ActiveX("Microft.XMLHTTP"); 6 } 7 8 xhr.onreadystatechange = function() { 9 if(xhr.readyState == 4) { 10 if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304) { 11 12 } 13 } 14 } 15 16 xhr.open("get",url,true); 17 xhr.send(null); 18 19 //POST请求 20 21 xhr.open("post",url,true); 22 xhr.setRequestHeader("Content-type","from-xxx-") 23 xhr.send(params);
5. 为什么会有同源策略?
答:为了服务器的安全,如果其他服务器和客户端能够随便请求自己服务器的资源
就会造成用户信息漏泄
6. 前端处理跨域有没有遇到过,处理跨域的方式有哪几种方式去解决
jsonp实现,img:src实现,使用php get_file_contents();
CORS:跨域资源共享
7. 怎么判断两个对象是否相等
Object.is(); obj === obj
8. 代码实现一个对象的深拷贝
Object.assign(); //浅拷贝
9. 从发送一个url地址到返回页面,中间发生了什么
答:先使用dns翻译域名
请求对应的ip地址服务器
服务器返回相应页面
浏览器渲染页面
10. 说下工作中你做过的一些性能优化处理
减少定时器
减少HTTP请求
验证表单,减轻服务器压力
减少DOM操作
减少事件对象,统一使用事件委托,事件冒泡处理各种事件。
使用变量存储相应的对象
减少循环中的对象
不使用eval、Function
ES6篇(引导篇,相对重要)
这块面试官主要是问你哪块用的比较多,你可以引导性地把面试官往你会的地方说
1. 箭头函数中的this指向谁?
答:箭头函数没有this,所以箭头函数里的this指向上一个花括号this
2. 如何实现一个promise,promise的原理,以及它的两个参数是什么?
function foo() { return new Promise((resolve,reject) => { }) }
promise原理:通过Promise对象,监听内部状态,内部状态变化的时候,触发相应的回调
回调执行完返回this,移除数组第一个then,再重新监听内部状态
两个参数:一个异步请求成功方法回调函数、一个异步请求失败回调函数
3. promise中第二个参数的reject中执行的方法和promise.catch()都是失败执行的,分别这么写有什么区别,什么情况下会两个都同时用到?
答:暂时不知道。
4. map和set有没有用过,如何实现一个数组去重,map数据结构有什么优点?
答:暂时不知道。
计算机网络题
1. http、https、以及websocket的区别
答:http是超文本传输协议、https就是超文本传输协议+SSL、webscoket就是ws://....
用来传输非常小的数据,通常用于聊天室。
2. http常见的状态码,400,401,403状态码分别代表什么?
答:304(重定向)、200(成功)、404(没有找到页面)、500(服务器错误)、
400(语义有误|请求参数错误)、401(当前请求需要用户验证)、403(接收请求,拒绝执行)
3. 协商缓存和强缓存的区别
4. 说下计算机网络的相关协议?
FTP协议、HTTP协议、TCP/IP协议、
浏览器兼容性
rgba IE8不支持,使用opacity和filter:alpha(opacity=20);
CSS3前缀:-webkit
-moz
-ms-
-o-
兼容性策略:
offsetLeft和offsetTop:offsetParent对象必须无边框有宽度或高度,offsetLeft属性对象中必须设置定位。
offsetWidth和offsetHeight:兼容性好。
clientWidth和clientHeight:IE6标准版有问题