欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

网易2020前端笔试提前批试题解析

程序员文章站 2024-03-15 19:37:42
...

第一题

网易2020前端笔试提前批试题解析
解析:题目讲的是两个节点的二叉树,所以只是一个父节点和一个子节点的二叉树。如图所示
网易2020前端笔试提前批试题解析

第二题

网易2020前端笔试提前批试题解析
HTTP报文分为请求报文和响应报文,但是并不是每个服务器都支持GET\HEAD\PUT等7种请求方法,而且应该是GET,POST,DELETE,PUT,OPTIONS

第三题

网易2020前端笔试提前批试题解析
题目很明显的暗示插入排序,我脑子瓦特了。选择是选每次遍历最小的,放进去。

第四题

网易2020前端笔试提前批试题解析
=的区别:

  • 出现==:
  • 我们可以将=看作的严格模式,当的时候如果数据类型相同那么就会转换成=;如果数据类型不同那么会自动的进行一次类型转换,转换成相同的类型后进行比较。
  • 出现===:出现三个等号的时候,首先判断的是类型是否相等,如果不相等就会返回false
  • valueOf方法和toString方法默认调用toString方法
  • 这是为什么呢,我看的有些博客直接说默认调用toString并没有说明原理。其实是这样的,我们看下面的一个例子,虽然colors.valueOf()方法返回的还是一个数组,但是在alert输出的时候隐式调用了toString方法,所以结果是相同的。
  • 但是如果是数值运算优先调用valueOf()方法。
    解析:
  • 第一次输出:arr==="";类型都不同,不会调用toString也不会调用valueOf。返回false
  • 第二次输出:arr=="";类型不同但是调用toSrting再进行比较。最后返回true
  • 第三次输出:arr===1;结果是false道理同第一次输出
  • 第四次输出:arr==1;结果是true,道理同第二次输出,两个方法不是都被重写,调用的是toString方法。
  • 第五次输出:arr == 2;结果是true,调用valueOf方法。
  • 第六次输出:类型都是同样的object,但是值不相同,所以返回的结果是false

第五题

网易2020前端笔试提前批试题解析

  • fun(),执行的是obj.b(),此时的this.a中的this是指向window的,而全局变量的a=0,所以第一个fun()的输出是0
  • fun.apply(obj),把obj对象传进去,这相当于执行fun()的时候,this.a其实是obj.a,this指向obj,所以输出是1
  • fun.bind(obj1).apply(obj); bind函数有个特点,绑定之后永久生效,因为先执行fun.bind(obj1),所以this指向obj1,this.a其实是obj1.a,输出为2.
  • new fun(),新建了一个对象,this指向的是new的对象,而这个new的对象并没有属性a的,所以输出undefined.

第六题

网易2020前端笔试提前批试题解析
首先,对象的prototype最终指向都是object,这是js原型链定义的。而在JavaScript中函数也是一个对象,所以一开始typeof func.prototype输出的是object
然后func函数对象的原型有getName()方法。``Obj.__proto__ = func.prototype;这句让obj也继承了func函数对象的原型。让obj也有getName()方法。
然后func.call(Obj);然后this指向了obj相当于obj.name="Hellen"
所以后面的输出自然是yes ,Hellen, end.

第七题

网易2020前端笔试提前批试题解析
对象的prototype最终指向都是object,这是js原型链定义的。而在JavaScript中函数也是一个对象,所以一开始typeof func.prototype输出的是object

第八题

网易2020前端笔试提前批试题解析

      function func(source) { 
                var target = {}; 
                for (var key in source) { 
                    // key==a1,a2,a3.....
                    if (Object.prototype.hasOwnProperty.call(source, key)) {
                        // 判断是否有a1该属性
                        // console.log(source[key]) 键的值
                        // console.log(typeof null);//object
                         if (typeof source[key] === 'object') { 
                             // 若有则键的值是对象,则返回函数之后的数据
                             // 但是由于js的一个bug,typeof null==object,所以还会调用func(null)返回的是初始的target,{},然鹅其他的要么是数组,要么是字符串,undefined不是Object。所以判断为false,执行else语句
                            target[key] = func(source[key]); 
                         } else { 
                            target[key] = source[key]; 
                         }
                    } 
                } 
                return target; 
            }
            var a = { a1: "a1", a2: { b1: "b1", b2: "b2" }, a3: undefined, a4: null, a5: 1 };
            var b = func(a); 
            console.log(b);

第九题

网易2020前端笔试提前批试题解析
画布大小和CSS中设置width:250px height:500px一致,其width和初始值比例为1:1,height和初始值比例为2:1。**因此渲染出来的矩形的高度也将扩大一倍为20px,**则矩形渲染出来的实际面积20X20=400

第十题

网易2020前端笔试提前批试题解析
首先我们知道外层flex被设置为flex布局,然后left层的flex:3 0 50px;意思就是放大3倍,然后flex-basis定为50px,意思就是宽度为50px。
同理看right布局,flex: 2 0 100px;意思是放大两倍,flex-basis定为100px,宽度为100px。
现在我们外层flex总宽度为200px,减去left的50px,再减去right的100px,剩下50px。剩下的50px按照各自的放大倍数比例去分配空间,left分到50*3/5=30px,right分到20px。所以最后left布局应该是80px,right布局应该是120px。他们的宽度比2:3

除此之外,我们要注意的是,flex-basis为0%时,表示在分配多余的空间之前。该项目已经不占据空间了,他的 width已经失效了,这个元素的width为0 ,而最后的width还是要这个元素的width加上分配完全部剩下的按放大比例分配的width。 当flex-basis为auto时,则width取值为这个元素原先设置的width。最后的width算法同上。

相关标签: 前端面试/笔试