各大厂的前端面试题以及经典问题提炼

292 阅读1分钟

高德

  1. 上中下,中自适应的布局
  2. div字体什么颜色
.red{color: red}
.blue{color: blue}
<div class="blue red">
  1. 现象
  • 普通函数递归调用 ==> 栈溢出

  • setTimeout递归调用 ==> 正常

  • promise.then递归调用 ==> 页面卡死

    解释

  1. 菲波那切数列
    1. 递归
    • 时间复杂度
    • 时间复杂度优化:使用map保存已经计算过的位置,优化时间复杂度
// 使用map保存已经计算过的位置,优化时间复杂度
let map = [0, 1, 1]
function get(n) {
    if(map[n] !== undefined) {
        return map[n]
    }
    if(n === 1 || n === 2) {
        return 1
    }
    let res = get(n - 1) + get(n - 2)
    map[n] = res
    return res 
}
2. 非递归
	+ 空间复杂度
    + 空间复杂度优化: **只需要维护两个变量即可,不需要维护整个列表**

function get1(n) {
	// 只需要维护两个变量即可,不需要维护整个列表
    let n1 = 1
    let n2 = 1
    if(n === 1 || n === 2) {
        return 1
    }
    for (let i = 3; i <= n; i++) {
        let temp = n1 + n2
        n1 = n2
        n2 = temp
    }
    return n2
}
  1. 模拟异步请求
  2. lazyman
  3. 选择排序,冒泡排序
  4. vue服务端渲染流程
  5. webpack常用plugin

作业帮

  1. 移动端适配方案:媒体查询、百分比布局、rem布局以及原理
  2. 错误收集机制原理: window.onerror xhr.onerror

神策

  1. 删除数组的某一位,不改变原数组(不使用splice)
  2. 求乘积为n的数组 8: [2,2,2,2]; 12:[2,2,3]

好未来

  1. 大数据在前端流畅展示
  2. html渲染过程是一部分一部分渲染的还是一次性渲染的
  3. less 编译成css的原理
  4. 判断数据类型的方法
    • typeOf能判断出一个变量的类型,但是只能判断出number,string,function,boolean,undefined和其他对象类型返回结果都为object.
    • instanceof能判断出一个对象是否是另一个类的实例。
    • Object.prototype.toString.call能判断出所有变量的类型,返回值为[Object ***]

滴滴

  1. 实现reduce函数
  2. 手写promise
  3. 实现flatten(arr, deep)
  4. proxy 相对于object.definePropety的好处
    • Object.defineProperty 拦截的是对象的属性,会改变原对象。 proxy 是拦截整个对象,通过 new 生成一个新对象,不会改变原对象。
    • proxy 的拦截方式,除了上面的 get 和 set ,还有 11 种。选择的方式很多 Proxy ,也可以监听一些 Object.defineProperty 监听不到的操作,比如监听数组,监听对象属性的新增,删除等。

substring(start,end)
substr(start,length) slice(start, end)
splice(start,length,items)

贝壳

  1. vue数据监听原理 介绍observe dep wather
  2. 介绍react context,useContext
  3. 平面中有十万个点,找出在某个圆中的所有点
    • 把十万个点根据xy一定的范围按顺序存储为二维矩阵,提高查找效率
    • 判断某个点在圆内:点和圆心的距离小于半径

头条

  • targetcurrentTarget的区别
    • target:触发事件的节点
    • currentTarget:事件监听、绑定的节点

百度

  • 两个大数相加
  • 两个tab页如何交互

答案

常见问题

  • vue react对比
  • vue react在新项目中如何选型
  • 介绍一下你们的项目架构
  • 你在工作中做过哪些有亮点的事情
  • 你在工作中遇到过什么困难,如何解决的
  • 为什么换工作
  • 你平时学习的通径
    • 需求驱动
    • 问题驱动,遇到了问题一定要刨根问底,找到根源,不要打补丁
    • 自学
  • 最近看过那些书
    • 深入理解es6
    • 小灰的算法之旅
    • 财富自由之路: 注意力、元认知、注重成长、活在未来
    • refactoring UI
  • 以后的职业规划
    • 加深需求理解
    • 拓宽知识广度
    • 及时了解最新技术
  • 对下一家公司的期望
    • 大牛带
    • 项目组氛围
    • 公司平台
    • 成长空间