跳到主要内容

2024-八股文系列

自我介绍​

面试官您好,我叫丘伟康,在互联网上有4年多的前端开发经验,有待过几家科技公司,涉及到的业务有茶饮、供应链、指标系统、数据大屏都有做过,熟悉ToB、ToC的项目

  • 主要负责项目的性能优化工程化构建,定制组件开发
  • 用的技术栈是vue和react, 主要用的是react技术栈,也有node相关经验
  • 也有过开源的经历,开源过taro的一些组件,多端表格、多端图表组件,当时是有业务的报表需求,在taro的社区没找到合适的组件,就自己写了个组件根据业务场景结合,在公司的生产线也稳定使用了, 也开源了,在社区上也看到有部分人有使用
  • 也开源过脚手架,是基于webpack,对webapck常用的配置优化集成了,快速搭建创建项目
  • 具备分析业务需求、和团队沟通能力以及能够合理的需求工时评估排期 ,以及资源协调分配,确保项目顺利进行

介绍项目​

会员/点单小程序​

  • 该项目是面向茶饮业务的场景,为用户提供在线点单、可以查询配送订单、查询商品详情、以及结合卡券营销、和优惠券叠加这种策略来促进用户点单

vue系列​

1、vue是如何收集依赖的​

依赖收集的目的,是数据发生变化了,可以更新

  • 每个数据都由dep属性,存放他所依赖的watcher,在组件渲染的时候,会创建对应的watcher
  • 当数据发生变化的时候,会通知dep属性触发对应watcher, 调用watcher的update方法

2、说下vue的双向绑定​

首先先说下单向绑定,单向绑定的话,数据流是单向的,状态变化只能手动触发,通过数据层去改变视图层,而双向绑定是 视图层和数据层都可以互相影响

  • 核心原理就是,当vue实例初始化时候,会遍历数据对象所有属性,vue2通过Object.defineProperty方法、vue3通过proxy 来转换为对应的getter和setter
    • 当数据对象发生变化会触发setter,setter方法被调用,会通知对应视图更新
  • vue的v-model指令就是数据双向绑定的语法糖

js系列​

1、说说闭包理解​

  • 闭包的产生本质原理

    • 利用函数作用域链特征

    • 利用当前内部环境作用域存在指向父级作用域的引用 从而形式闭包

  • 闭包的形成 简单来说 内部函数引用外部函数的变量

2、事件循环​

3、精度丢失是js问题吗​

  • 精度丢失不是js问题,是因为Number采用的是IE 754 64位双精度浮点数编码,而IE 754标准存储位有限

小程序​