又是 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,欢迎大家的加入!

相关推荐
Annuo、2 分钟前
php中根据指定日期获取所在天,周,月,年的开始日期与结束日期
java·服务器·前端
流氓也是种气质 _Cookie16 分钟前
21 vue3之发布npm插件(hook&自定义指令)
前端·npm·node.js·发布插件
荔枝要好学23 分钟前
node.js从入门到快速开发一个简易的web服务器
服务器·前端·node.js
MortalTom34 分钟前
HTML·第三章课后练习题
前端·html
AiFlutter40 分钟前
Flutter屏幕适配
前端·javascript·flutter
鱼干~1 小时前
【echarts】报错series.render is required.
前端·javascript·echarts
懒羊羊大王呀1 小时前
CSS——边框过渡效果
前端·css
是二牙1 小时前
Mac pnpm安装
前端·vue.js
csstmg1 小时前
vue2+keep-alive h5端 从首页进入客户列表-客户列表更新,从客户列表进入客户详情再返回,客户列表需要缓存筛选条件以及滚动位置
前端·缓存
weightOneMillion2 小时前
鸿蒙界面开发(九):列表布局 (List)
前端·学习·华为·list·harmonyos