如何水平垂直居中,请尽可能多说几种方法?很尴尬,我屡次面试都被问到这个问题,fuck
定位(回答了)、table-cell布局、flex布局、translate+relative定位css
w3c和ie盒模型区别 我回答反了 尴尬vue
以上是面试中笔试涉及到的知识点或者后面被问到的只是点。
如下是笔试题,貌似有2套,但我拿到的是另一套。也许是根据薪资和面试的等级来出题的。我刚面试完回家,吃了一个泡面,回忆下面试题。jquery
. 考察原型链继承的问题webpack
function A() { this.name = 'a' this.color = ['green', 'yellow'] } function B() { } B.prototype = new A() var b1 = new B() var b2 = new B() b1.name = 'change' b1.color.push('black') 问: console.log(b1.name) // change console.log(b2.name) // a console.log(b1.color) // ["green", "yellow", "black"] console.log(b2.color) // ["green", "yellow", "black"]
解析为什么:
B.prototype = new A() 实现了继承,须要一个中间变量来理解原型继承更好理解。css3
var f = new A() B.prototype = f
var f = new A()后,f.__proto__ 指向了A的原型(A.prototype),构造函数A执行的时候,this传递的是f,因此此时在f在有了构造函数A里面的属性和方法。B.prototype = f,能够理解B的原型和f指向了同一个Object,(由于 f = new A()实际返回的是一个Object对象,而这个对象的__proto__ 执行了A的原型)因此连等后,当b1 = new B(),因此当执行b1.name的时候会去原有的实例对象去找,若是找不到,就会向想沿着__proto__原型链找到B.prototype这个原型对象。而这个对象又指向了new A()nginx
B.prototype指向new A()怎么理解呢?
就是B.prototype.__proto__ ==== A.prototype。同时B.prototype做为this传递到A构造函数,执行了一次A().让A构造函数里面的属性和方法赋值了一份给B.prototype。从而达到了继承了A构造函数和原型上的属性和方法。es6
. 考察闭包,做用域的问题web
// 经典考题 for(var i = 0 ; i < 5; i ++) { setTimeout(function() { console.log(i) // 5, 5, 5, 5, 5 },1000) } // 如何打印出1,2,3,4,5 // 我答案是说出来了,用let 产生块级做用域,以及采用一个函数自执行的方式。但为何卡主了
.考察this指向问题,以及如何改变this指向面试
var obj = { name: 'zj', getName: function() { console.log(this.name) } } var fn = obj.getName console.log(fn()) // undefined // 如何让fn() 打印出‘zj’ 利用call或apply或bind改变this指向 console.log(obj.getName()) // 'zj'
.es6模块的问题,那套题我作错了,其实很简单,当时太紧张了。就不写出来了,并且代码很长,主要考察import 和 export 和变量的问题。
最后附录如下公司的环境,反正也挂了。
其实面试题,我懂原理的比较少,就是你作出来了,但让我说出为什么时这个答案挺困难的,特别是原型链(不过这个原型链虽然很基础,但原型链的问题我好久没研究过了,也多是学得比较死吧,记住的那种学习,因此彻底是懵逼的。)闭包让我说为何真挺困难的,虽然本身曾经也写了博客的算法
回忆下我从去年年末,到今年年初收到的面试经历吧,而后谈谈技巧。
总结下他们面试的基本套路
. css
必定有水平垂直居中,盒模型,块级和行内元素。
flex布局
. 原生js
原型链,闭包,做用域,this,变量和函数提高
这我就不举例了考察的问题不少,网上有
. jq
document.ready()方法 不写这个方法会有什么后果?
常见的一些api
jq的源码(支付宝考察)
. 其余
webpack 好比原理,或者说以前没有webpack的时候,如何友好的解决,说白了就是为什么用webpack
这里会延伸到require.js和sea.js,虽然如今用的公司已经不多了
http/tcp 和https
输入url到底发生了什么(涉及最后的浏览器渲染原理)
跨域解决方案最容易问到jsonp原理,nginx转发等
es6语法,好比let和const与var区别
箭头函数和通常函数区别
. mvvm框架(vue:由于我用的是vue)首先固然是原理啊(这里很容易卡主哦)钩子函数,分别说能在里面实现什么解释vuex是什么?vuex为什么是一个单项流过程mututations为什么只能是同步不能异步