首先肯定是自身掌握的不好,实战经验多,基础原理掌握少,所以在面试这一块体现出了自身的不足,下面分享一下面试中hr提问的问题,以及我后来的总结。
第一部分是js相关(题目无前后之分)
- js的数据类型有哪些
- 字符串(string)、数字(number)、布尔(boolean)、空(null)、未定义(undefined)、独一无二的值(Symbol)
- typeof null的结果
- object
- js原型链
- 原型链的核心就是依赖对象的_proto_的指向,当自身不存在的属性时,就一层层的扒出创建对象的构造函数,直至到Object时,就没有_proto_指向了。
- DOM绑定事件的原理,0级和1级的区别
- DOM事件机制,0级和1级的区别还不清楚。
第二部分是CSS
- 实现水平垂直居中的方案
// absolute实现垂直水平居中:
//方案1:
.box{position:absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);}
//方案2:
.box{position:absolute;
top:0;
left:0;
bottom:0;
right:0;
margin:auto;}
- flex布局中实现水平垂直居中的方案
// 方案1:
.wrap{display:flex;
justify-content:center;
align-items:center}(新版本)
//方案2:
.wrap{display:-webkit-box;
-webkit-box-pack:center;
-webkit-box-align:center}
第三部分是浏览器、HTTP
- 跨域解决方案
- jsonp解决跨域的实现原理
- JSONP(JSON with Padding)是一种非官方跨域数据交互协议,它允许在服务器端集成< script >标签返回至客户端,通过javascript回调的形式实现跨域访问。因为同源策略的原因,我们不能使用XMLHttpRequest与外部服务器进行通信,但是< script >可以访问外部资源,所以通过JSON与< script >相结合的办法,可以绕过同源策略从外部服务器直接取得可执行的JavaScript函数
- nginx代理解决跨域的实现原理
- jsonp解决跨域的实现原理
- 从输入url到实现渲染的过程
- 浏览器的强缓存和弱缓存
- 强缓存(不会向服务器发送请求,直接从缓存中读取资源)
- 弱缓存 (强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程)
- 原生ajax的实现过程
- 304状态码
编程
- 平铺[1,2,3,[4,5,[6,7]]]
// 个人思路,仅供参考
// 先将多维数组转为字符串1,2,3,4,5,6,7,然后再用split()转为数组,设计到number类型,于是又转换了一下数据类型
function pingPu(arr){
var str = String(arr)
var arr1 =[]
var arr2 = []
arr1=str.split(",")
for(var i=0;i<arr1.length;i++){
arr2.push(parseInt(arr1[i]))
}
return arr2;
}
其它
因为我的简历上面写的是自己开发都是用vue,所以问了vue的相关问题
- vue全家桶
- vue全家桶,现在已经更新到vue3.0了,大家要与时俱进。
- vue实现数据绑定的原理
- vue父组件、子组件之间相互传值
- 举一反三,这是我整理的各种组件的传值方式:组件传值
- 实现响应式布局的方法
- 我掌握的是bootstrap还有@media,目前正在学习element-UI