又是 WXG!秋招胜利结算 ✌️✌️

微信 hr 面结束的时候,我也打算结束秋招了,这篇文章会记录面试的全过程,以及一些个人的感悟,希望能给大家一些帮助

一、背景

先说一下背景,秋招期间,本来打算各个大厂都尝试一下,然而转正后时间的分配越来越紧张,因此改变战略,面个微信,最终的秋招结算如下:

  • 抖音电商本部门转正
  • 微信 A 部门,2 面后主动结束流程
  • 微信 B 部门,等待意向

下面我会把面经分享给大家,也不要觉得某某问题很难,每个人的情况不同,面试的内容也会不同~

上集回顾: 终于拿到了 WXG 的 offer,却只能无奈放弃 🥺

二、面试记录

没想到微信开秋招了,同时没想到,上次面暑期实习的微信部门(不过是兄弟部门)找我约面了!!!

好啊,那就面!

微信 A 部门

1 面

一面面试官非常硬核,对我做的事情能问的非常深入,面试过程没有什么八股,基本围绕项目展开:

  1. 最近两个月做了啥

  2. VSCode 插件具体实现过程

    • 背景,解决什么问题

    • 具体实现......

    • 数据如何做映射

    • js 基本数据类型有哪些

    • int32、int64、float 在 js 中怎么转换

    • 核心实现逻辑中,数据转类型代码为什么要用 quickType,直接手写转换不行吗

  3. 反爬

    • 做了什么

    • 数据校验怎么做的

  4. 手写题:异步并发任务调度器

  5. 反问

2 面

没有自我介绍,上次面兄弟团队的面评留下了,面试官直接说基础考核之前都看到了,这次就不问基础了(爽!

  1. 城市能否接受,上次拒绝的主要原因

  2. 电商留用了吗,结果如何?

  3. 为什么秋招想看看外面机会,基于我说的理由给了回应/建议,这些内容我放在最后展开聊聊

  4. 你部门现在的技术栈有哪些

  5. 为什么要有这么多技术栈,这些技术栈会舍弃开发体验,为什么还要做?

    • 考虑到综合因素,我们的这套架构可以降低不发版率,同时也能和客户端实现更深入的合作......
  6. 聊一下最有成就感,技术有闪光的需求:飞书妙记构建工具升级

    • 技术评审怎么做的,结构

    • 升级过程中的一个亮点难点:手写了一个 webpack 插件

    • 工程那么大,加载过程有做什么优化吗?

    • 构建有什么经验:编译流程编排

    • 资源加载有什么经验:babel-runtime、懒加载、拆包、同一包多版本统一、特定包优化(lodash -> lodash-es

    • 还有什么可以优化 fpfcp 的点:提高缓存命中率、异步加载、主接口数据优化(拆分)

    • 说的不够,再扩展扩展:

      • 图片资源优化
      • 控制 html script 标签的加载模式,控制资源加载模式
      • JS 主接口加载前逻辑后移(非先决条件)
      • prefetch
  7. 埋点治理怎么做的,详细讲讲你做的类型代码生成插件

    • 核心原理

    • 解决了什么问题,能彻底解决失误率吗、带来了什么收益

    • 如何让埋点消费类型代码的

  8. 学分修完了吗

  9. 校招 ok 的话,能提前入职吗,可以的话最好提前来

  10. 看你做的大多是技术为主,你后续对业务和技术的认知和接受程度是咋样的

    • 7分业务 3分技术,面试官很认可这个定位
  11. 反问

    • 总体业务构成 + 技术栈

    • 还有几轮面试:因为之前拒绝过兄弟部门,需要和他们再沟通一下,想办法证明我是可以被捞回来的,意愿是否改变了

    • 建议

很遗憾的是,最后得到两个选择:

  • 保留之前的实习名额,让我现在去实习然后走转正路线
  • 继续推进面试,但是保证通过后一定要选择这里

然而我没法放弃字节这些的 offer,因此决定结束流程(太痛了

微信 B 部门

上面的事过去不久,微信 B 部门就约面试了,好啊,那也试试吧~

1 面

一面面试官也是非常硬核,但是问了很多八股,这对我来说是个弱项,但好在也是通过了面试~

  1. 自我介绍

  2. 讲讲你的实习经历

    • 反爬怎么做的,核心技术,你负责哪里,实现了什么
    • 做的最有技术深度的事情
  3. 做题

    • EventListener
    • 修补房屋保护财产,滑动窗口
  4. React 如何保证高效率渲染

  5. fiber 原理,如何实现两个 dom 树的交换

  6. 任务队列存在的意义是什么

  7. 说说浏览器事件循环,微任务和宏任务的本质区别,为什么要存在

  8. 说说 Https 的定义,全流程,CA 证书是什么

  9. 说说 node 的多线程,如何开辟多线程,说说 fork 对内存的影响

  10. 反问

2 面

  1. 说说飞书中实习经历比较有亮点的(把一个脏活累活做漂亮且实现自动化、延伸、分享)

  2. 电商中做了哪些业务(低价分流)

    • 低价分流的业务逻辑,你做了什么,哪里比较难
    • 脱离前端的角度,从全链路分析低价分流要考虑什么(上限问题,很重要!)
      • 是否触发低价分流(基于品类判断)
      • 平均价格水位判断
      • SKU 基于标签分类,基于推荐算法进行引流
      • 多样的表达方式,实现低价引流表达强化
      • 埋点,衡量数据
      • 用户人群划分
      • 高比价欲望:提高引流入口唤出频率
      • 低比价欲望:不做唤出,保证 GMV 增长
      • 用户行为检测:截图、复制链接/标题、划出后台等行为,强制唤出低价分流入口
    • 如何跟客户端、后端同学协调好工作内容
  3. 写题 数组 origin,他的内容 * 2 加上 origin 本身后,打乱,形成 changed,给定 changed,计算任意一个可能存在的 origin

    • 如:[1,3,4,2,6,8] => [1,3,4]
  4. 反问

3 面

进入里面委环节,很幸运的是,几轮面委都非常的友善,他们更倾向考察上限的问题,对某个点的深入也完全是基于我的经历展开的

  1. 自我介绍

  2. 讲一下你觉得比较有技术难度的需求:pnpm + monorepo

  3. 为什么用 pnpm 而不是 npm

  4. 幽灵依赖是什么?pnpm 怎么解决的

  5. 能给我讲讲 pnpm 架构设计嘛?【开始上强度了】

    • pnpm 命令执行器是怎么实现的

    • pnpm 命令的结构是咋样的,一个命令都需要什么内容

      • 执行器 handler
      • 帮助 help
      • 触发此命令的命令名列表(比如一些缩写) commandNames
    • 跟我说说 pnpm run

      • 如何判断执行到 package.json 的命令
      • 为什么 pnpm
  6. npm 的一些安全问题你知道吗,讲几个 case(操作本地文件、读取用户信息并上传)

    • 怎么解决安全问题:
      • sdk 的选择,基于下载量、更新频率等
      • 操作系统权限控制
      • 网络请求拦截器(yy 的,估计说的不对)
      • 新增依赖时,通过脚本读取命令是否包含文件操作、发送请求等内容,输出日志
      • 域名加白,发送请求时,如果有陌生域名,限制并输出内容
  7. 反爬安全怎么做的

  8. 反问

4 面

  1. 基于过去的经历做个自我介绍,有什么比较有成就的

  2. 为什么大一就这么早决定走前端这个路呢

  3. 你现在的想法有变化吗,是否突破了这个 scope,你是如何突破的

  4. 你怎么看待前端深度和广度的问题

  5. 大部分人对于广度很热衷,学习各种技术栈,但在深度上浅尝辄止,你怎么看待,你如何解决这个问题

  6. 你平时工作中的沉淀是怎么做的

    • 这个积累是碎片式的,你怎么保证能够系统化学习呢
  7. 你能系统化学习,那你怎么保证你的方向是选择正确的呢

  8. 你是否阶段性遇到一个很难的问题,你是怎么看待的,如何处理的

  9. 反问(我直接把他问我的问题抛回去了hhh)

    • 你能系统化学习,那你怎么保证你的方向是选择正确的呢
    • 你是否阶段性遇到一个很难的问题,你是怎么看待的,如何处理的
    • 一个合格 leader 的能力模型是怎么样的

个人感觉,面试官人很亲切,经常以我名字后两个字开头,后面评价说觉得我能想的挺远还是很不错的,接下来会有 hr 联系我(蚝!

hr 面这边就不展开说啦,整体的面试过程就是如此,可能对一些问题没有展开说明我是如何回应的,我会在下面展开聊聊

三、个人感悟

这次的面试经历也让我有了很大的成长,下面我会基于一些主题进行展开 这一部分我不会做什么长篇大论,讲一些大道理,更多是把我个人的理解表达出来,不接受的话可以忽略不计~

基础知识的积累问题

可能很多人认为基础就是八股,但其实这两个的差异是很大的

首先我们要认识到基础的重要性,从编程语言的语法规则算法数据结构 ,从数据库操作系统网络通信 ,在工作中,很可能会因为一些奇怪的问题(我们称之为"坑")而显现

在这个节点上,基础扎实就能很快定位并解决问题

当然这个很多人都知道,那如何让自己有效地学习基础知识呢?

我理解就是基于工作内容去发散,比如:

  1. 第一次用 Charles 做移动端调试,那我是不是应该看看 Charles 代理是如何实现的?
  2. 第一次启动公司项目,还得下载一个证书,那证书的意义是什么呢?
  3. ......

平时多做这些发散,去花精力总结,就能逐渐培养基础能力,当然,我们要尊重过程

至于如何更好地落实 ------ 写文档,可以写博客,也可以写给团队的同学,给他们整一个 xxx 研发 onePage,记录你 xx 开发的感悟,思考,以及一些深入的研究(好处不言而喻)

评判研发能力的真正标准

解决问题的能力、沟通能力!

相比于此,技术能力都排不上号。技术虽为基础,但无非是一个人是否花时间、花多久的问题,没有多少核心竞争力,但是像解决问题、沟通,是很多人一辈子都学不好的。

具备优秀的解决问题能力的人是怎样的?

  • 深入分析问题 :拿到问题(或者说需求),不仅停留在完成任务,而是深入挖掘,关注更多,如:
    • 排期与风险评估
    • 边界问题处理
    • 可挖掘的闪光点
    • 产品设计是否有误
    • ......
  • 优先级评估、计划与时间分配:对于程序猿来说,业务并行是常态,同时处理多个事情是必须要经历的过程,因此在比较慌乱的时候,需要快速做好优先级调整,保证需求的顺利推进
  • ......

具备优秀的沟通能力的人是怎样的?

  • 清晰表达 :沟通时,注重上下文,不会含糊表达,比如
    • 小 A,上次的事(xx 平台的技术评审)帮我再推一下
  • 文档优秀:文档可以视为一个非常重要的能力,比如技术评审,基于文档展开,你要搞明白要表达什么,评审的时候要落实好什么事,作为载体的文档一定会肩负最大的责任
  • 情绪稳定,适应不同受众 :这也是一种职场能力的体现 ------ "多元兼容",根据不同的沟通对象调整自己的沟通方式和语言表达,面对不好的 case,也需要保持情绪的问题。在入职的初期,我在沟通上也曾收到很大的委屈,但当时 ld 告诉我说,你只需要负责完成 xx 任务,如果因为某人导致 block,直接上升至对方 ld 即可。(总的来说:沟通上的心智负担是自己给自己的,重点是我们如何调节看法)

至于如何提升,只能多多在工作中学习,观察师兄师姐的行为模式,遇到问题、挫折,解决之后好好复盘,这也是一个必须要经历的过程(尊重过程 * 2~)

简而言之:多观察多思考,少刷短视频(🌚

脏活累活的定义与看法

脏活累活如何定义?

通常是指那些繁琐、重复、技术含量相对较低的工作,例如:数据录入、环境配置、看板搭建等

谁都讨厌脏活累活,但是脏活累活是不可避免的。 一般来说,团队中的资源是不断流转的:某个节点,A 同学有晋升诉求,他的资源就会得到倾斜,相对的其他同学,就会分担一定的脏活累活

对于 "脏活累活",我们应该有正确的看法(这不是 PUA)。首先不可避免,我们在遇到脏活累活时可以多思考是否有可以解决 "脏"、"累" 这两个属性的方式:

  1. "脏":工作内容繁琐、重复,可以通过自动化工具来减少 "脏" 的程度。例如,对于数据整理工作,可以编写脚本或使用数据处理软件,实现自动筛选、分类和汇总
  2. "累":工作强度大、耗费时间长,这点无所谓,按照人力顺排即可(你提早卷完了也得干别的)

所以核心在于如何处理 "脏" 这个问题,可能 70% 的场景下都没有快速解决的办法(只能接受,这就是你的工作),但剩下的 30% 的场景,我们可以通过脏活累活做出很亮眼的事情,这在 ld 的眼里就是 ------ 超出预期

全栈的看法

非常接纳!理由如下:

  1. 前端的 scope 还是太小了,仅仅专注于前端,可能会限制对整个项目架构和业务流程的理解深度
  2. 全栈能够提供更全面的视角,可以设想,我们了解后端技术、数据库管理、服务器配置等各方面的知识,在项目设计和开发过程中:
    • 能够从全局出发,做出更合理的决策
    • 提高对接能力,能从对方的角度出发思考问题的合理性
    • 一些 node 无法解决的问题,可以用 go、java 等解决(尤其在性能上的问题)
  3. 跨栈能力能很大程度增强职业竞争力,现在企业对综合性人才的需求也越来越高,是一个很不错的趋势

如何做好选择,找对方向

选择大于努力,最重要的就是规划和对自我认知的程度,这个话题太大了,我们可以从两个小点出发:

  1. 沟通学习: 了解方向
    • 多多和别人交流,打破信息差
    • 多找前辈请教,可以提供很多方向的指引
  2. 自我思考: 确认自己的处境
    • 是否能给负责的业务带来明显收益
    • 你做的投入产出比是否呈指数增长(否则就是 1:1 的脑力换金钱)

四、最后

每个阶段都有不同的成长,像第三部分就是我秋招以来的收获,都是从面试、答辩中学习到的,在这里分享给大家,如果有想要深入探讨的,随时欢迎交流!

最后,如果你想加我们的技术社区,想要打破信息差、水群、提问、参与开源,可以加我:Tongxx_yj,欢迎大家的加入!

相关推荐
电筒4 分钟前
URL重定向需要多次encodeURIComponent
前端
程序员鱼皮7 分钟前
Stack Overflow,彻底凉了!
前端·后端·计算机·程序员·互联网
Nicholas6818 分钟前
Flutter动画框架之AnimationController源码解析(二)
前端
鹏程十八少29 分钟前
2. Android 第三方框架 okhttp责任链模式的源码分析 深度解读二
前端
贵州数擎科技有限公司31 分钟前
LangChain 快速构建你的第一个 LLM 应用
前端·后端
京东云开发者32 分钟前
京东携手HarmonyOS SDK首发家电AR高精摆放功能
程序员
张先shen36 分钟前
Redis的高可用性与集群架构
java·redis·面试·架构
ze_juejin38 分钟前
Mongoose 与 MongoDB 数据库教程
前端
FogLetter39 分钟前
深入理解React的useLayoutEffect:解决UI"闪烁"问题的利器
前端·react.js
冰糖雪梨dd41 分钟前
h() 函数
前端·javascript·vue.js