盒子
文章目录
  1. 离职原因
    1. offer 情况
  2. 字节-内容经营分析方向(二面挂)
    1. 一面
    2. 二面
    3. 小结
  3. 神策-营销云
    1. 一面
    2. 二面
    3. 三面 - 交叉面
    4. 总结
  4. 途家(1/2/3 面)- 没有消息
    1. 小结
  5. FreeWheel
    1. 一面
    2. 二面
    3. 三面
    4. 四面(三个外国人,我选择死亡)
  6. 美团(1/2/3/HR 面)
  7. 极米科技
    1. 一面
    2. 二面
    3. 小结
  8. 阿里-重庆蚂蚁
    1. 一面
    2. 二面
    3. 三面
  9. 重庆腾讯云
    1. 一二面
    2. 三面
    3. 四面
    4. HR 面试

面试经历

离职原因

Just let it go~

offer 情况

最终选择了重庆吉利,薪资肯定和北上广肯定比不了。四五月份的时候就很想走了,各中原因导致战线拉得很长。这个期间也经常问自己我对未来的职业诉求到底是什么?为了达到目标,我将要付出怎样的努力?

  1. 重庆腾讯云 offer
  2. 美团 offer,base 北京
  3. 吉利 offer
  4. 蚂蚁因 HC 的原因无缘

「面试造火箭」这个过程也异常煎熬;这个期间可以反馈出自己很多问题从而查漏补缺,也可以从很多经验老道的前辈学习。无论是基础知识、算法、系统设计都能反应出一个人的靠谱程度。

从技术角度:要求高一点需求对项目有一定的架构能力,需要建立起一个前端工程师应该有的能力模型,如工程化/监控/性能/质量保证都有一定的认知。
从业务角度:作为技术我们应该关注业务指标 → ROI → 落地的业务数据 → 归因。技术本身是产品很小的一环,最终给我们带来收益 💰 的还是业务。多多思考怎么用技术为业务赋能,多做一些有意义的事~

字节-内容经营分析方向(二面挂)

一面

  1. 最近两年的业务,项目的技术栈?

  2. Monorepo 和 Lerna 的好处

    1. 避免重复安装包,因此减少了磁盘空间的占用,并降低了构建时间
    2. 内部代码可以彼此相互引用
    3. 减少重复配置
  3. 可视化平台一些相关介绍

  4. 业务中 Node 的使用,有什么是自己主导的

  5. 闭包(闭包的使用场景,闭包的执行和当前的函数机制。我没太明白这个啥意思)

    闭包 - JavaScript | MDN

  6. GC(新生代、老生代、标记清除)

  7. 作用域提升聊了点

  8. TCP/UDP 的区别

  9. http 的缺点,然后顺势提到了 https,讲一下自己了解的加密算法

  10. CSS 三栏算法的实现

  11. 对 React、Class 组件和 Function 组件的理解以及生态

  12. 对 V8 的理解

  13. 算法题:自定义 Myset 的实现,需要 o(1),可以借助辅助 Map

二面

面试官很和蔼,一上来没问技术基础,问的项目上关于 Cookie 共享的

  1. 项目 Cookie,同域共享
  2. 手写 curry
  3. 手写 Promise

小结

二面挂了,从面试内容来说不是很难,没有考很难的算法。但手写代码时候卡卡的,关于柯里化和 手写 Promise 的手写其实都有看过的…(然后柯里化的实际场景我确实也没太感受出来,我理解柯里化的最强 buff 就是利用闭包做缓存?

虽然都写出来了,但是费了挺大劲的 =.=。所以 coding 前还是要自己动手实践一下。

神策-营销云

一面

  1. CSS 垂直居中布局

  2. position 的属性

  3. React Hooks 常见的 Hooks

    1. useCallback 和 useMemo 的区别
    2. 提了下我还没怎么搞明白的 useImperativeValue 😂
  4. React 的 Key 作用(我回答的两个

    1. 做 diff 算法的时候,会通过 key 和 props 来判断是否更新
    2. 值得注意的是,在数组的情况下。React 会用 key 作为增删改的标志,所以如果 key 一致,可能会引起数据不对?(比如做一个todo-list)我这里回答得不好 ☹️
  5. 兄弟组件如何传值(我先简答总结了下个问题的考点:状态管理,然后可能多的去回答:

    1. 通过数据流管理工具 Redux 之类的
    2. 使用 context
    3. 使用 useReducer
    4. 让父组件代理传值
    5. 使用 eventBus
    6. 大炮打蚊子:使用 webscoket,当然这只是开个玩笑 😂
  6. 手写 deepClone

    1. 数组有些小问题,面试官提醒写出来了
  7. 手写 PromiseAll

  8. 简单聊了下 Eventloop

  9. async/await 的原理

    1. 我先说是 Generator 的语法糖吧。再说:有人的说法不是 Generator 的语法糖,我也不知道该怎么回答你 😂,那你的理解呢?

    2. 面试官:我们知道 Generator 需要调用 next 方法才能有返回值,await 对这个进行了封装,其实想问你这个。

      内心OS:我好真诚啊 😂…后续查了资料,其实可以用 Generator 手写出 async/await

  10. 关于项目的一些问题:性能守卫平台/低代码平台,其实我很想聊聊微组件市场

    1. 我:您知道模块联邦吗?
    2. 面试官:太了解了(感觉他有很好的实践?
    3. 我:哦微组件市场实现的效果和模块联邦一致,但是最终技术方案没有使用模块联邦…然后没聊了….😂

两家公司都面到了 Promise

二面

  • 聊项目,性能守卫
    1. 「性能守卫」的意义
    2. 设计详情 确定性与不确定性
  • 聊项目,微组件市场
    1. 设计详情
    2. 数据情况

三面 - 交叉面

  1. 最有压力的一段时间
  2. 马化腾来了有个重要的需求,核心开发出车祸了着急上线怎么办?
  3. 最自豪的事

总结

我居然被交叉面挂了,原因

  1. 项目经验相对简单
  2. 缺少做成一件事的决心 ??

三面的面试官一直在强调我 5 年的经验…再加上我看起来确实很显小,难受…

途家(1/2/3 面)- 没有消息

  1. 基础
  2. 简单聊了下项目
  3. RN 是如何做性能优化的
    1. QP 包瘦身
    2. 预加载
    3. 接口拆分
    4. 使用 FlatList 进行性能优化
    5. 从代码层面进行 SCU/Memo 处理
  4. 如何解决 RN 的弹窗层级关系
  5. Webpack 的构建优化
  6. 如何设计一个监控系统

小结

一面的小姐姐很喜欢问性能优化的事,怎么说呢,性能优化确实是前端应该关注的点,性能优化在网上一搜一大把 ,目前我主要是做中后台系统的建设,关注的点在于:

  1. 在业务逻辑复杂的场景下减少平台使用者出错的可能性,提高系统易用性
  2. 保证数据的正确、完整性以及数据私有性

FreeWheel

一面

  1. 简单聊了下「微组件」市场,针对可能出现的问题聊了下
    1. 这个面试官不错,其他人还得给他解释半天微组件市场是啥… …
  2. 聊了下对 C 端和对 B 端开发的看法,如何有些地避免 bug
    1. eslint 从某种程度可以避免
    2. 严格的 CR
    3. 单测和 E2E 测试应该也可以有效地避免(这个我没回答上来 😫)
  3. 单测的执行情况,会要求覆盖率吗?
    1. 不强制要求,一些通用的工具函数会做单测,另外就是一些关键业务做单测
    2. 确实还有 E2E 的测试项目,但那个我不是很熟悉
  4. 针对 CI/CD 的流程进行了一些简单了解
  5. UI 库怎么打包的/怎么发版的?

  1. var、let 和 const 的区分?😅

    1. 如何冻结一个常量对象?Object.frezee(),面试官表示可以,我说实际使用得不多 😅
  2. 如何 deepClone 一个对象(如何判断一个数组,哎)

  3. 如何浅拷贝一个对象

  4. React:SCU React.PureComponent, React.memo

  5. React 常用的 Hooks / React 兄弟节点如何传值

  6. 自定义 Hooks 值得注意的地方

  7. 如何发起一个请求(xhr 和 fetch)

    1. 为什么要让我描述原生的 xhr?(呜呜呜,我就XHMHTTPRequest 对象。然后那个 xhr 做一些状态值的监听?我真的记不住那个了 😅,其实我还想说值得注意的是 IE 要做兼容处理….就 面试题.next() 了
    2. fetch 的请求可以中断吗?(可以,利用 AbortController 高版本的 Node 天然支持,浏览器端需要 polyfill 处理
  8. 扯到了异步流程控制上,除了 Promise 还有哪些方案?我说 async/await、Generator?async/awai 返回的是啥?我想打死我自己,天天在 async/await 函数后面写 .then .then 这不是一个 Promise 吗?!!!!我答的 Generator ,可以再给我一次机会狡辩吗?😂

  9. 如何实现继承

    1. extends

    2. 原型链

    3. 构造

    4. 寄生

    5. …下次可以谈一下 Object.create 这个

      还有一些其他的,其实就是这些方法组合排列…

二面

项目

三面

  1. hashMap 的底层原理
  2. Leetcode 一个 medium 的题
  3. 如果设计一个秒杀系统

四面(三个外国人,我选择死亡)

  1. hoist
  2. class 是否可以被 hoist
  3. closure
  4. how to detect the performance
  5. RBAC 模型
  6. unit test / e2eTest
  7. why change this position

挂了,相互听不懂,视频面试, Mac 本上用 MircoSoft 的软件。还共享不了屏幕,没写代码

美团(1/2/3/HR 面)

一二三,怼项目,一面有算法题:关于二叉树的回溯

三面交叉面,聊了些和后端相关的东西

  1. HR 面试
  2. 结婚没?打算去台湾吗?
  3. 项目中的难点
  4. 你有什么核心竞争力?

极米科技

一面

  1. 极端情况下 FC 和 ClassComponent 的性能
  2. 数据是如何通知视图的变更
  3. React 和 Vue 或者框架的优缺点
  4. React Hooks 的优缺点
  5. ReactClass 的优缺点

我从函数式编程和面向对象编程分别说起,然后基于自己的理解

二面

聊项目

没消息

小结

一面面试官挺有意思,具体怎么有意思不详细说了。一开始面试的时候以为自己遇到了一个青铜,结果后来发现是一个王者 👑

阿里-重庆蚂蚁

一面

  1. 简单聊了下项目
  2. CSS 盒模型
  3. 触发 BFC 解决外边距合并的问题
  4. typeOfinstanceOf的区别
  5. 浏览器缓存机制
  6. http 协议 / 跨域处理
  7. 对 B 端和 C 端的理解
  8. 对统一工作流的认识
  9. 俩算法(40 分钟)

和面试官关于项目、技术什么的狂扯了将近两个小时

二面

  1. 业务中遇到重难点(编辑器/视频上传效率问题)
  2. 技术项目
  3. qiunkun 是如何解决微应用切换资源消耗的问题(思路完全正确! ~😄)
  4. 技术项目中问题的解决思路
  5. 团队中的角色/有没有开源项目(我说自己折腾的东西拿不出手 😂
  6. 有没有关注新的技术/趋势(esbuild/next)啥的

三面

完颜大佬

  1. 前端技术深广度
    1. 前后端都略有涉及
    2. 一些业务场景数据相关
  2. 业务理解度
  3. 团队协作能力

许愿蚂蚁 OC

重庆腾讯云

一二面

  1. TCP 三次握手
  2. https 请求的过程
  3. 了解 RPC 吗?
  4. React 状态管理相关
    1. Redux/Context/Recoil
  5. 算法
    1. 位运算
    2. map

三面

  1. 怼项目
  2. Redis 和 MySQL 的区别
  3. 团队的情况,自己的一个角色
  4. 未来规划

四面

  1. 问了些工作的问题,自己怎么去处理的

HR 面试