百度前端提前批一面
-
在联想和小米实习期间,遇到的挑战有哪些?(在小米实习期间,说了一个解决按钮卡顿的问题,被面试官提问的问题有点不知所措,被狠狠虐了)。
-
写了一个瀑布流的布局问题(需要用到 flex 布局,用到的属性有 flex-wrap、justify-content、align-content)
-
js 数据类型、怎么判断数据类型(typeof 和 instanceof 的区别也解释了一下)、怎么判断一个变量为数组
答:undefined、null、boolean、number、string、object、symbol 引用数据类型:object 包括:对象、数组、正则、日期、数学 Math typeof 只能准确判断基本的数据类型 number、string、boolean typeof null typeof [] typeof {}返回的都是 object
instanceof 只能准确判断引用的数据类型 instanceof 的原理是通过原型做比较 手写一个 instanceof 的代码
// [] instanceof Array function myInstanceof(left, right) { let proto = Object.getPrototypeOf(left) // 获取对象的原型 let prototype = right.prototype // 获取构造函数的原型 console.log('proto', proto, 'prototype', prototype) while (true) { if (proto === prototype) return true // 找到了 proto = Object.getPrototypeOf(proto) // 继续找对象的原型 if (proto === null) return false // 找到头了 } } let arr = [1, 2, 3] console.log(myInstanceof(arr, Array)) let a = 3 console.log(myInstanceof(a, Number))判断一个变量是数组的方法 Array.isArray(); [] instanceof Array [].constructor === Array Object.prototype.toString.call([]).slice(8,-1) === 'Array'
-
怎么判断一个对象为空对象(说了一种方式、面试官让多说几种)
答: JSON.stringify({}) === '{}' Obejct.keys({}).length === 0 for 循环
-
介绍一下深拷贝与浅拷贝,然后给了一个对象数组,让我在不影响原数组的前提下改变某一个元素身上的属性。
-
js 的事件循环意义、事件循环的流程、然后有一道很复杂的事件循环代码题
-
URL 输入到浏览器按下回车键都经过了什么
-
http 有哪些请求方法(这个只说了三种,面试官让最少说五种)
-
http 状态码都有哪些 然后又问了一个场景,应该返回哪个状态码(先跳了一个网址、后面又自动跳了一个网址、 这种情况下第一个请求收到的 http 状态码是多少?)
-
http 常见的请求头与响应头有哪些
-
浏览器的跨域策略是干什么的,如何解决跨域,CORS 和 Nginx 的原理是什么
-
介绍一下浏览器的存储,我说了 localStroage\sessionStroage\cookie, 然后让说一下 cookie 的使用场景,有自己设置过 cookie 吗, 什么样的场景让你去自己设置 cookie, 利用 cookie 的过期时间做过什么事情吗