前言
今年依旧是像去年一样,整个互联网行业都在大裁员,大厂毕业员工更是蜂拥而出,竞争压力越来越大。我在Boss上看到很多滴滴,美团,京东的员工在投递简历,我一个不是Hr的Boss,每天都会有很多人主动找我投递简历。那在这个很差的大环境下,前端找工作到底难不难?
下面我介绍一位大神级的朋友(虽然我们俩一直是形影不离,从杭州到北京,但是。。。人与人的差别咋就那么大捏???我就显示菜不可言,实在是有点惭愧,得加把劲)最近的一些面试情况,大家可以借鉴一下他的一些面试经验。
先说一下结果吧:百万年包Offer,技术专家职级。
简明扼要,从下面几个方面对他的面试做个总结:
- 简历
- 项目
- 技术
- 算法
- 重点面试题汇总
简历&项目
简历很重要,在做所有面试准备之前,请先准备你的简历,因为在准备简历的过程中,同时也是对以往做过的项目和业务进行一个汇总。
我相信走到这一步的技术,每一天都是在不断成长的,这时候回过头梳理以往的项目和工作内容时,会从一个更高的角度去看待技术与业务之间的关系。
我个人的话会从以下几点去思考:
- 什么业务背景下做了什么事?(项目为了解决什么问题)
- 业务流程和技术架构存在怎样的因果关系?
- 做成这部门工作内容(项目&团队),给业务带来怎样的收益?如何衡量这部分工作内容所带来的价值?
在以上几点的答案有所思考之下,完成对以往工作内容、技术项目的整体梳理。那么,简历内容就随之出现了。
简历内容遵循老生常谈的某原则了,比如我是这样撰写技术项目的:
当然,如果有带团队的经验,请一定要将其写在简历中。比如团队的从0到1的建设,团队目标的任务拆解与团队成员的辅导晋升。
其实,当你的简历梳理出以上内容时,围绕着项目的所有技术面试,cover起来就绝对没有问题。
求职意向
前端架构师、前端主管、资深/专家级前端开发。
技术介绍
- 精通 React,Vue及其相关生态;
- 熟悉基于Webpack4/5,rollup,vite的开发环境搭建与优化,具备⾃研打包⼯具的能⼒;
- 熟悉代码单元测试,基于cypress⽣态的端到端单元测试集成,实现测试部⻔客户端⽤例⾃动化测试;
- 熟悉前端监控体系建设,熟悉异常监控、性能监控系统搭建,具有⻔神系统开发经验。
- 负责部⻔前端架构团队-⼯程化-质检组的从零到⼀的建设,负责质检⼯具与效能⼯具的开发,进⾏规范集成和流程推⼴;
- 负责协助组内成员的招聘⾯试、落地⼯作展开与晋升,定期对公司新⼊前端进⾏培训。
- 负责业务解决⽅案的技术评审与技术⽀撑,确保需求迭代的技术可⾏性及提供技术解决⽅案。
项目经验
- XXX系统
- 描述: xxx项目介绍。由于项⽬巨⼤,为便于迭代管理和敏捷开发,使⽤⻜冰(icejs)框架落地微前端⽅案。
- 职责: 搭建并维护业务组件库; 对XXX⼦项⽬负责,带领团队对项⽬进⾏开发并维护,及跨部⻔沟通协作;对项⽬进⾏持续优化⼯作;
- 技术:
- 对fusion进⾏⼆次封装产出可复⽤组件(包含动态表单),基于dumijs(现已开源)搭建业务线物料库⽂档,使⽤jest对组件进⾏测试⽤例集成;
- 使⽤nodejs开发⽣成⻚⾯模板的cli⼯具;
- 基于react+ts进⾏⼦项⽬的开发及维护;
- 结果: 系统稳定性提升XXX,接入用户上升至XXX。
多余的就不写了。。。大家懂的。
关于技术
技术这块,我认为p6的话就应该对整个前端开发-生产链路有一个全面的认知,并对某主修技术栈有个比较深的认知。
而p7的话,是在以上的前提下,深挖过某块领域。并对某块具备完整的技术解决方案和解决经验。如果有相关开源输出的话,请一定标记在你简历的最上方。
注意:仅仅是处在了解和demo阶段的技术栈我不建议写上去。技术栈当然越全面越好,但尽量不要给自己挖坑。
受益于以往的工作角色和前leader的培养,以及自己亿丢丢的学习,我个人的技术栈相对比较丰富。
说点凡尔赛的话,只要是我写在简历中的技术,面试官能问倒我就算我对不起熟练两个字。
总结而言,写出自己的亮点,突出自己的重点,不要轻易给自己挖坑。
关于算法
到了这个级别,算法基本是必面的。
请不要抱有任何的侥幸心理!至少把基本的数据结构和算法题刷明白。
前端这块,主要还是围绕 hash表、栈、队列、链表、二叉树这些比较基本的算法题,基本要笔试。
这里说下我个人刷题的经验——量无所谓,关键是理解。在明白什么样的数据结构和算法能解决什么场景的问题的时候,基本就不怕了。
目前而言,比如蔚来的三轮技术全部都有笔试题,但好在基本都是围绕hash表、链表、队列,以及树的遍历。
时间复杂度一定不要超出!宁可只有思路,代码没有落实完,也不要上去就是暴力循环。
最后说下我算法大概刷了不到两年。基本每周回顾一种基本的数据结构和相关算法,然后刷刷动态规划和回溯之类的。
重点面试题汇总
一、蔚来:
- 客户端事件循环;
- DNS 解析 IP 地址的过程
- 解决JSON.parser造成数字精度丢失的问题(AST/正则, bigInt);
- react18并发模式;
- 实现webpack的loader和plugin(对应某种技术场景);
- 笔试题: 实现LRU算法(我是基于hash表和链表结合,确保每次操作时间复杂度o(1)); 查找树符合条件的路径(我是基于队列做的广度遍历,树的操作我不建议使用递归)。
总结:还有部分八股文相关的就不列出来了。蔚来的面试官问的技术相对最深入一些,可能跟我面的职级有关。算法题基本每场一道,但都不是很难(没有动态规划哎~)。我个人的话,三场纯技术应该是全cover了,面试官还算比较满意。
面试结果:base 北京-对标阿里p7。
二、硕磐
- CSS弹性盒与栅格,弹性盒的计算原理;
- 浏览器的静态资源缓存方案(绝对缓存和协商缓存,seviceworker,我这里顺便讲了下workbox);
- TS实现将一个interface中的key-type提取出来;
- width: auto 与 width: 100%;
- tree shacking 原理,追问你配置的tree shacking生效了吗;
- Vue2和3的区别;
- react的diff(重点讲一下调度,我顺便讲了下react18并发模式下的调度);
- 笔试: 队列转换成树。(这个没啥好说的,hash表,一遍遍历)。
总结: (一开始的有笔试试卷,看了下都是比较基本的东西,所以我直接写了“请直接问”四个大字交了白卷。。。后面的童鞋不要学我)。三位面试官(三面CTO)都是大厂出身,业务经验丰富。比较偏向项目经验,技术相关问的基础更多一些。一下午面完的,确实挺累的。
面试结果:base杭州-P7+期权。
三、众安
- React的diff和vue的diff区别(分别分版本讲讲宏观和具体实现);
- canvas转json数据结构(AST);
- 检测死链(AST+触探请求);
- 口述算法题: 忘了,基于队列,一遍遍历;
- 继承。
总结:相对轻松过关 base上海-待hr沟通。
四、回响科技
- ast;
- 针对某场景下的性能优化;
- react setState同步异步(这里我专门多讲了18版本并发模式下的setState和调度);
- vue如何实现响应式依赖收集;
- 微前端的js路由实现,沙箱隔离的原理,父子应用通信是怎么做的。
总结:面试官都不错,问的问题很有角度。
面试结果:base-上海-待hrd面试沟通。
五、白龙马
- webpack性能优化;
- 模块化与它们之间的区别;
- react的hooks实现;
- vue2和vue3的区别;
- 大数据优化业务和解决方案;
- 如何做性能分析的;
- 微前端方面的;
- 算法题:树的遍历;
- leader如何管理团队。
总结: 偏项目问的很多。问的问题很有角度。公司是盈利的。
面试结果:P7-base-北京。
总结
- 问项目的话,结合业务背景去思考和回答,要答的合情合理;
- 问场景下的技术解决方案的话,尽量答的相对完善一些,包括流程和核心技术实现;
- 前端八股文(老生常谈的东西)肯定都得准备一下话术的;
- 回答问题要条理清晰,精准围绕面试官问的问题;
- 算法一定要刷,不要抱有任何侥幸心理;
- 管理相关的问题,适当结合公司组织架构和业务背景去聊。
最后
以上就是我朋友这次面试的全部总结,祝在岗的同志们继续艰苦奋斗,毕业的同志们早日能找到一份自己的心仪的工作,继续搬砖。