前言
= =!今天是我人生中第一次面试。。感觉还算不错。然而。。。很多还是没答上来。感觉对方技术对实习生的要求也并没有很严苛。但是,肯定还是要总结一下的!
正文
首先笔试题目。现在回忆的起来的:我的多选题错了好多。。一道typeof的题目忘记了。object.prototype.tostring.call(o) === [object,object]
然后选项是{},new object();new Function();function a(){} new a();我们来实验一下。。
实验结果是,出了new Function()以外都是object object。new Function()是object Function。!!我之前选的对的!!
但是这个问题没这么简单。。如果用typeof 的话都会返回object,但是这种方法下
数组返回object Array
字符串返回object String
对象返回object object
正则返回object RegExg
数字返回object Number
undefined返回Undefined
null返回object null
其他的我忘记了。。希望得到试卷啊。。
然后面试答题的时候也有点傻逼,基本类型就打了几个。。原型链也没答最后的两种流向。。
基础类型是上面谈到的字符串,数组,正则,数字,undefined,null,还有字面量对象!!!!(这里是{})
引用类型有Object,Array,Date,RegExp,Function。
除此之外ES标准还提供了3种特殊的引用类型,Boolean,Number和String.
嗯。。回忆。。然后选择都忘了。单选很简单。。大题!先不谈那个slice的题目。。
首先这里谈一谈new。。这个书上,和网上讲的很多版本。我当时也有点蒙。。new的左边可以是a(一个自定义的栈内的空间),也可以是子类的原型(继承用)
new到底干了什么?
首先第一步是肯定的,我们创建了一个新的对象
我们把左侧的内容用Left表示
我们创建了var Left = {};堆内存中开辟新的空间,创建了一个新的对象,我们的Left是指向这个对象的。
然后Left.protol = Super.prototype(既然是new总有new的东西,这里把我们新的这个对象的原型指针指向我们new的那个东西的原型)。这里如果是继承的话,就产生了原型链了,如果是实例化对象的话就不是了。
接下来的一步,Super.call(Left)。这一步,把父类的thi绑定到当前对象!这一步有点像借用构造函数的继承方法了。
最后隐式的返回this。
OK,复习了一遍,就又有发现了。
当实例化对象时,创造了新的object,把object的protol 指向父类,之后Super.call(o)绑定this作用域。使得构造函数中的this定义的值能够在子类中体现。这样一来,this在子类中都重写了一次,子类就获得了父类的所有this了!OK!说着说着变成了继承了。。其实实例化和继承很像。。真的。
好了。弄明白了。。
接下里把最后一题实验一下.’ffffff’替换成’255,255,255’.实验证明- -我当时写的replace有点问题。。结果是255,255,255,多了一个逗号。。没关系。splice一下就好了0.0
然后就是两个哥哥口头问的问题了!第一个。原型链我没说好。实例化对象时,如果没有原型那么function作为对象也会在实例化的时候被重写一次,我们的所有实例化的对象的方法都是不等的,他们是不同的。这个方法在每个实例化的对象中都被重写了一次。这样重复的去写同样的方法是没有必要的。所有我们引入了原型机制。(OK这里那时候说的不清楚。)
再就是canvas(JS)和CSS动画的区别,首先CSS动画:CSS3是存在有兼容性问题的,JS就没有了。canvas的话,也有兼容性的问题。
通过JS做动画就是操纵图片了。操纵图片配合DIV能够做出很多效果出来。这些只有JS才可以完成。
但是JS在浏览器的主线程中运行,而主线程中海油其他的JS脚本,样式计算,布局,绘制任务等,对其干扰,导致线程出现阻塞,从而会导致丢帧。
CSS动画的话,我们无法绑定回调函数,而且CSS动画智能暂停不能寻找一个特定时间点,不能半途反转动画,不能变换时间尺度。不能再特定位置添加回调函数。如果要实现复杂的动画,代码会非常的笨重。
优点:浏览器可以对动画进行优化!浏览器使用与requestAnimationFrame类似得机制,requesetAnimationFrame比起setTimeout,setInterval它的优势在于:他能把每一帧中的所有DOM操作集中起来,在一次重绘或回流中就完成,并且重绘和回流时间间隔紧紧的跟随浏览器的刷新频率,一般来说,这个频率是每秒60帧。在隐藏或不可见元素中的requestAnimation不会进行重绘或者回流,这就意味着更少的CPU,GPU和内存使用量。然后就是CSS强制使用硬件加速。通过GPU来提高了动画性能。
然后是第二个哥哥问的问题。他的问题问的很少。我没答上来的是那个。。。:react-router的原理你知道吗?卒。第一个哥哥说router这种自己写一个就好:卒。。
这个问题暂时还没研究懂,以后来填坑把。
结语
总之,人生的第一次面试还算顺利。自己准备了很多东西,都没被问到。。明天还有面试Fighting!!!