0%

关于我

自我介绍

你好,我叫赵柯宇。14 年本科毕业自学前端后,开始了前端职业生涯。17 年跳槽来到聚美优品担任前端工程师,负责一些街电项目的开发支持。后来调至电商负责电商、增长业务的前端团队。任职期间协调团队上线了多款小程序与快应用如聚美优品,鹿尚生活,白金大脑等等,也上线了多个若干拉新裂变活动,打通了 APP,H5 和小程序渠道。目前团队内部正在孵化一个基于 electron 的在线课堂直播项目。我除了需求评审,管理团队,制定协作规范之外,更多的是在担任一个技术选型,框架搭建的角色。

对于我个人技术而言,前端方面所需的框架,工程构建等技术基本都有接触过。自己下来也折腾实现过一个基于 proxy 的 MVVM 框架,在掘金上也发表过 webpack 源码和 vue 源码分析系列等前端技术文章,希望为社区也做了一些微小的贡献。

用最短的话,向面试官灌输你的优点,并且让面试官在当前大致的范围内考察你。
成体系,逻辑清晰,先思考再回答,刚才您说的问题,我来描述一遍 xxxxxxx,您表达的是这个意思吗?

基础知识的准备

css

  • rem em
  • 居中
  • flex
  • bfc
  • padding/line-height
  • box-sizing

js

  • JavaScript 类型、接口
  • 函数声明,表达式,作用域,this,垃圾回收
  • 闭包,原型链
  • 异步:回调,Promise,Generator,async,await

其他

  • 前端安全
  • 储存 cookie、localstorage
  • 登录鉴权
  • 正则表达式
  • url 从输入到页面显示(事件循环,页面加载,渲染过程,HTTP,缓存,JS 引擎解析)

项目亮点的准备

你觉得你最擅长什么?

MVVM

webpack 源码

vue 全家桶源码

vue 与 react 区别

  • Vue1.x: 完全的响应式,每个数据变化,都通过响应式通知机制来新建 Watcher,海量 watcher 即为性能瓶颈。 MVVM?
  • React15.x: 通过 vdom,没有响应式,数据变了整个新数据和老的数据做 diff,算出差异,就知道怎么去修改 dom。如果 dom 节点持续变多,每次 diff 的时间超过了 16ms,就可能会造成卡顿(60fps)
  • Vue2.x: 引入 vdom,控制了颗粒度,组件层面走 watcher 通知,组件内部走 vdom 做 diff,既不会有太多 watcher,也不会让 vdom 的规模过大,diff 超过 16ms。
  • React 16 Fiber: 走 cpu 调度,把 vdom 这棵树微观变成了链表,利用浏览器的空闲时间来做 diff。如果超过了 16ms,有动画或者用户交互的任务,就把主进程控制权还给浏览器,等空闲了继续 diff。(time-slice)
  • Vue3: Proxy 响应式+组件内部 vdom+静态标记

react

React 中 setState 什么时候是同步的,什么时候是异步的

scu 生命周期、memo;usememo & usecallback 记住一些值不用重新计算;虚拟列表;immutable+scu/memo;原生 js;

jumei-sdk

growth-upgrade

人员需求如何管理的

我们有一张在线的需求排期石墨文档,上面记录了各个需求对应的 prd 地址,figma 地址,BUG list 地址,git 仓库地址,对应的开发人员,测试人员,产品人员,开始时间,结束时间 测试时间,进度,埋点等等来管理整个项目进度。对应前端而言,我参与项目评审后,将任务分解,会根据人员层级经验划分小组,会配置 1 高级别+2 低级别这种,来负责开发不同的的任务模块。开发采用 gitflow 方式协作,我会收集各个组在开发中遇到的问题或重复开发的地方,问题形成文档,基建收纳到 jumei-sdk,或各自的公共 utils 里。

手写代码

  • js 数组去重
  • promise 实现
  • debounce & throttle
  • forEach、filter、every、some、map、reduce 实现
  • 柯里化与反柯里化
  • 排序