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

关于该文章的说明

这是关于大厂面试题的整理,是一些个人觉得有价值的题和自己的错题。所以本文适合刷笔试题的朋友看。

高中的时候记得每门学科都会有错题本。前几天做题就想着什么时候把自己练习的错题整理到一起,玲珑觉得笔试题做的不在多,而是能够达到做一题会一类的效果。所以便有了这篇文章,文章也会随着做题的数量越来越长。

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

第一套:网易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 篇

  • 图片中 title 和 alt 区别?
  • Html5 有哪些新特性、移除了哪些元素
  • 浏览器是怎么对 Html5 的离线储存资源进行管理和加载的呢
  • 行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
  • canvas在标签上设置宽高 和在style中设置宽高有什么区别
  • 浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?

CSS 篇

  • CSS中link与@import的区别:
  • position的absolute与fixed共同点与不同点:
  • BFC 有什么用
  • 清除浮动的几种方式
  • Css3 新增伪类 - 伪元素
  • IE盒子模型 、W3C盒子模型
  • display:inline-block 什么时候不会显示间隙?
  • 行内元素float:left后是否变为块级元素?

JavaScript篇

  • js的各种位置,比如clientHeight,scrollHeight,offsetHeight ,以及scrollTop, offsetTop,clientTop的区别?
  • js拖拽功能的实现
  • 异步加载js的方法
  • js的防抖
  • 绕不过去的闭包
  • 说说你对作用域链的理解
  • JavaScript原型,原型链 ? 有什么特点?
  • 请解释什么是事件委托/事件代理
  • Javascript如何实现继承?

Vue

  • vue中 key 值的作用
  • Vue 组件中 data 为什么必须是函数?
  • vuex的State特性是?
  • 介绍一下Vue的响应式系统
  • computed与watch的区别
  • 介绍一下Vue的生命周期
  • 为什么组件的data必须是一个函数
  • 组件之间是怎么通信的

由于篇幅有限,只能分享部分面试题,更多面试题及答案可以【点击我】阅读下载哦~无偿分享给大家,算是一个感恩回馈吧

React

  • 介绍Redux,主要解决什么问题?数据流程是怎么样的?多个组件使用相同状态如何进行管理?
  • React-Redux到react组件的连接过
  • Redux中间件是什么东西,接受几个参数
  • redux请求中间件如何处理并发
  • 如何配置React-Router
  • 路由的动态加载模块
  • React生命周期及自己的理解,以及V16对生命周期的修改
  • 为什么使用虚拟dom?

浏览器

  • 跨标签页通讯
  • 浏览器架构
  • 浏览器下事件循环(Event Loop)
  • 从输入 url 到展示的过程
  • 重绘与回流
  • 存储
  • Web Worker
  • V8垃圾回收机制
  • 内存泄露
  • reflow(回流)和repaint(重绘)优化
  • 如何减少重绘和回流?
  • 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
  • localStorage 与 sessionStorage 与cookie的区别总结

更多面试题及答案可以【点击我】阅读下载哦,无偿分享给大家~

猜你喜欢

转载自blog.csdn.net/hugo233/article/details/113121840