面试积累-5

154 阅读2分钟

百度前端提前批一面

  1. 在联想和小米实习期间,遇到的挑战有哪些?(在小米实习期间,说了一个解决按钮卡顿的问题,被面试官提问的问题有点不知所措,被狠狠虐了)。

  2. 写了一个瀑布流的布局问题(需要用到 flex 布局,用到的属性有 flex-wrap、justify-content、align-content)

  3. js 数据类型、怎么判断数据类型(typeof 和 instanceof 的区别也解释了一下)、怎么判断一个变量为数组

    juejin.cn/post/711913…

    答: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'

  4. 怎么判断一个对象为空对象(说了一种方式、面试官让多说几种)

    #juejin.cn/post/711988…

    答: JSON.stringify({}) === '{}' Obejct.keys({}).length === 0 for 循环

  5. 介绍一下深拷贝与浅拷贝,然后给了一个对象数组,让我在不影响原数组的前提下改变某一个元素身上的属性。

  6. js 的事件循环意义、事件循环的流程、然后有一道很复杂的事件循环代码题

  7. URL 输入到浏览器按下回车键都经过了什么

  8. http 有哪些请求方法(这个只说了三种,面试官让最少说五种)

  9. http 状态码都有哪些 然后又问了一个场景,应该返回哪个状态码(先跳了一个网址、后面又自动跳了一个网址、 这种情况下第一个请求收到的 http 状态码是多少?)

  10. http 常见的请求头与响应头有哪些

  11. 浏览器的跨域策略是干什么的,如何解决跨域,CORS 和 Nginx 的原理是什么

  12. 介绍一下浏览器的存储,我说了 localStroage\sessionStroage\cookie, 然后让说一下 cookie 的使用场景,有自己设置过 cookie 吗, 什么样的场景让你去自己设置 cookie, 利用 cookie 的过期时间做过什么事情吗