解析大厂前端笔试真题,超详细,一看就懂!(一)

也希望能和其他朋友一起讨论前端的知识,一起进步,多学习点东西。

第一套:网易2020校招提前批

==========================================================================

第五题


考点:数据结构中的排序

题目

解析

这道题考的是排序,那么我们就要知道每种排序的思想和特点。恰好直接插入排序符合题目说的要求。该排序有两层循环,第一层将这个数组完整遍历一遍控制趟数,第二层循环将准备插入的数与前面排好的数从后向前扫描比较大小。而希尔排序会考虑到分组。

第四题


考点:js的隐式类型转换

题目:

在试图输出变量的时候会进行隐式转换,自动调用变量的tostring和valueof方法。

做题必备小知识

和=的区别:

  • 出现==: 我们可以将=看作的严格模式,当的时候如果数据类型相同那么就会转换成=;如果数据类型不同那么会自动的进行一次类型转换,转换成相同的类型后进行比较。

  • 出现===:出现三个等号的时候,首先判断的是类型是否相等,如果不相等就会返回false

valueOf方法和toString方法默认调用toString方法

  • 这是为什么呢,我看的有些博客直接说默认调用toString并没有说明原理。其实是这样的,我们看下面的一个例子,虽然colors.valueOf()方法返回的还是一个数组,但是在alert输出的时候隐式调用了toString方法,所以结果是相同的。

  • 但是如果是数值运算优先调用valueOf()方法。

var colors = [“red”, “blue”, “green”]; // 创建一个包含3 个字符串的数组

alert(colors.toString()); // red,blue,green

alert(colors.valueOf()); // red,blue,green

alert(colors); // red,blue,green

解析

  • 第一次输出:arr===“”;类型都不同,不会调用toString也不会调用valueOf。返回false

  • 第二次输出:arr==“”;类型不同但是调用toSrting再进行比较。最后返回true

  • 第三次输出:arr===1;结果是false道理同第一次输出

  • 第四次输出:arr==1;结果是true,道理同第二次输出,两个方法不是都被重写,调用的是toString方法。

  • 第五次输出:arr == 2;结果是true,调用valueOf方法。

  • 第六次输出:类型都是同样的object,但是值不相同,所以返回的结果是false

第五题


考点:let特点,改变this指向

题目:

解析:

  • fun()是在全局window上调用,但是全局并没有a,使用let和const声明的变量不属于window对象,所以打印undefind

  • fun.aplly(obj)改变this指向,结果是1.

  • 值得一提的是第三个。fun.bind(obj1).apply(obj);先通过bind让this绑定到obj1,然后会返回一个新的函数并不执行;且这个新函数确定了this和形参,无法再改变。因而后面的apply相当于失效。结果是2。

  • 第四个new fun()考察new的过程

  • 1.生成一个新对象

  • 2.获得构造函数链接到原型

  • 3.绑定this执行构造函数

  • 4.返回新对象 这个题目里面构造函数没有a属性,返回undefined。

第十题


考点:flex布局计算

题目

解析:

flex-grow: 定义项目放大比例

flex-shrink:定义项目缩小比例

flex-basis:定义了分配多余空间之前,项目占据主轴的空间。

我们看到父元素的宽度是200px,左右分配空间之前的宽度和100px+50px=150px;所以我们的左右盒子应该放大和是50px。根据放大比例是3:2;所以左边盒子50px+30px=80px,右盒子120px。宽度比2:3。

第二套:2020网易校招正式批

==========================================================================

第8题


考点:箭头函数没有this

题目:

解析:

箭头函数不绑定this,箭头函数不绑定自己的this关键字,如果在箭头函数中使用this,那么this将会指向箭头函数定义位置的this。 我们看下面的一个例子

function fn (){

console.log(this);

return ()=> {

console.log(this);

}

}

const obj = {name:‘zhangshan’};

const resFn = fn.call(obj);

resFn();

const resFn = fn.call(obj);让fn的this绑定到obj上;执行resFn()函数就是执行返回的箭头函数,打印的this是fn的this,也就是obj。

然后·回到我们这个题,也是一样的道理,三次都指向共同的父亲的this,也就是箭头函数定义位置的this。三次返回的结果都是foo.

第三套:小米校招前端笔试题1

=========================================================================

第五题


考点:js中的加号含义

题目

解析

我们先来复习一下js中的六大数据类型,undefined、null、string、number、booleam五种基本类型和引用类型object,除基本类型的都是引用类型例如array、function等。

然后加号最终会存在两种类型转换: 1、当加号两边存在符串的时候按照字符串处理拼接成字符串 2.当没有字符串就当数字处理。所以这个李牧两次都应看成字符串的拼接。

第12题


考点:二叉树遍历

题目

解析:

根据前序遍历和中序遍历的特点,c为根节点,所以BAFE是c的左子树,剩余结点是c的右子树。然后我们可以画出如下图所示的二叉树,再后续遍历先遍历左子树,再遍历右子树,最后根节点。结果是bfeahgdc

第13题


考点:数组二分查找

题目

解析:

待解决

最后

=============================================================

前端学习是一条漫长的道路,我们要学习的东西不仅仅只有表面的 技术,还要深入底层,弄明白下面的原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。

千里之行始于足下,愿你我共勉。

金三银四快到了,送给大家一个小福利,下面是我在工作之余整理的一些面试题,包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器、react等等。

HTML 篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值