面试笔记
面试流程分析
一面
- 面试官一般为一线高级工程师。目的是考察你的技术和能力。
二面
- 面试官一般为team leader。目的考察你的知识体系以及解决问题的能力。
三面
- 面试官一般为部门主管。目的考察你的知识的广度以及潜力。
简历
简历最重要的两个部分,其实也是个人的知识图谱,是面试前的复习大纲也是面试中的考纲,面试官会从项目不断扩展,延伸到知识点。
面试过程中要引导面试官到自己擅长的领域。
- 个人技能:不写废话,突出重点,在熟悉XX的技术上,加上能力描述/量化,能为公司带来什么。
- 项目经历:STAR法则,结果要量化
简历要做好个人画像,突出自己的擅长的领域
一些常用句式:
个人技能:
- 熟悉 Webpack 等工程化技术,曾通过缓存、并行、减少合并模块等手段提升编译性能,由原来 xxx 降低至 xx
- 熟悉 Web 页面性能优化原理,曾通过压缩、缓存、精简dom等手段提升页面性能,FCP(Whatever)由 xxx 降低至 xxx
- 熟悉 Node 技术栈,曾从0到1主导开发基于 Eggjs + MongoDB +TypeORM 的服务端应用,后续陆续引入 GraphQL、SSR 等技术方案持续提升开发、用户体验
个人评价:
质量:
有极高项目质量意识,曾先后引入 ESLint、Sonar、Jira,以及一系列自研工具,实现研发 全流程质量量化管理曾引入 Sentry or OneAPM or xxx 实现线上效果数据与异常监控,同步梳理轮值 Oncall 流程及若干防劣化措施,线上 异常率保持在 0.xx% 以下,事故率 xx
效率:
重视研发效率,曾主导梳理B/C各种场景的项目脚手架,以及若干业务组件库,至今扔是公司官方标准
曾主导引入 Docker、xxx、xxx等一系列 CI/CD 工具,实现多环境一键部署 and 灰度发布
影响力:
《xxx》作者
个人公众号/博客,blabla
业务:
曾多次以研发 Owner 角色主导业务攻坚项目,
度管理、跨职能合作沟通等,项目进度、质量、效果均符合预期
管理:
曾管理 xx 人团队,期间逐步梳理并落地诸多团队规范、技术分享、个人成长、激励 and 晋升机制,培养 xx 名同学晋升高阶职级,团队离职率始终保持在 xx% 以下
核心:有论点,也有具体案例支撑你的论点
项目经历:
Star 原则
Situation/Task/Action/Result
当前是什么状态/期望达到什么状态/具体做了什么/结果怎么样突出表现项目中遇到的难点与改进,自己怎么主动解决问题的
解决业务中历史遗留问题,重构老旧代码,优化了30%代码量在
xx背景下,通过渐进式架构演进,优化了xx与xx指标,产出了xx工具
项目背景:开发 xx 平台,用于 xx,解决传统 xx 带来的 xx问题,辅助 xx 尽快 xx 与 xx,显著节 约xx,提高了xx。
主要工作、技术难点与优化:。
1.完成原有系統开发任务,并逐步使用 xx 对原有系统进行重构,封装不同部门业务代码,整体代码量减少 xx 行 xx%,减少项目构建时间 xx%,减少部署时间 xx%,降低 xx 同时提高了 xx。
2.采用 xx 部署的方式替代原有 xx 部署方式,解决了原有系统中存在的 xx 问题,提高了xx 效率 xx% 以上。
3.来用 xx 缓存与数据库 xxx 的方式,降低服务器与数据库压力.将数据读取速度提高 ××%。
4.在数据库设计上来用 xx 方案,解决了历史线留 xx 问题,有效降低了数据库读取压力。
5.在生产环境与开发环境,来用 xx 技术将 xx 转化为 xx,有效提高xx%
系統应用:系統目前稳定运行于 xx 部门,在 xx 阶段发挥了 xx 作用,相比于 xx 脚决方案,有效提高 xx%。
个人收获:通过对项目进行重构,对 xx 和 xx 技术有了更深刻的理解,技术选对远比选新好。。
项日背景:对xxx 数据进行爬取并分析,开发xxx网站,用于xxx.辅助解決 xxx,并给出道用解决方案xx。
主要工作、技术难点与优化:,
1.与 xx 进行对接,对项目进行设计与规划,为了解决 xx,调研了 xx 方案,借鉴了 xx,通过xx方式,实现xx。
2.通过调研 xx 网站 xx 协议,研究其反扒策路,针对 xx 给出 xx 解决方案。
3.调研浏览器策略 xx,通过 xx 更好的解决 xx。
4.通过 xx 技术,对爬取收录的数据进行初步分析与清洗,采用 xx 格式进行数据格式化統一,解决xxx问题。
5.通过 xx 技术开发 xx,并对数据进行展示。来用 xx 与 xx 缓存技术,提高数据读取效率。
个人收获:从 0-1 完整开发 xx 项目,对项目完整实现流程有了重深刻的认识,同时对应用的技术有了一定的了解。
项目亮点
方向:
- 大数据量(虚拟列表、大文件上传等)
- 研发效率/质量(lint、脚手架、单测、CICD等)
- 性能体验(首屏优化)
- 难的方向(低代码等)
- 平时的思考
比如说项目中是否用了一些你觉得有价值的技术手段或解决方家,解决了某个项目的难点,提升了效率;或者可以供其他项目接入的方案。 还可以想想项目中是否还存在哪些痛点值得去优化。
- 优化点一定要有数据量化
解决业务中历史遗留问题,重构老旧的业务代码,优化了百分之三十以上的代码量。
优化业务间的逻辑,利用缓存、懒加载、预加载、节流及防抖函数优化了大量系列,使页面由原先的 3.4 秒加载时间减少至 2 秒内。
在组内组织分享关于多端同构实践,使客户同学也能入手开发多代码。
面试知识点
基础知识(八股)
JavaScirpt、TypeScript
HTML、CSS、浏览器、网络
手写代码
算法
框架(原理源码)
- Vue/React
- Webpack、Vite
综合应用(理解思考)
- 前端工程化
- 性能优化
- 设计模式
- 架构设计
实战(结合业务)
- 低代码
- 前端监控
- 微前端
- 其他:CICD、跨端、可视化等
• 并不是研究的越深越好,有限时间内掌握更多核⼼知识点
• 做读书的⼈,⽽不是驮书的驴
• 掌握并练习记忆法
综合问题
Vue和React的设计思路有什么不同?
微前端的原理是什么?
谈谈你对组件封装的认知,如何设计一个组件?
怎么开发和维护一个组件库?
讲一下工作中难的或者有亮点的项目?
谈谈工作中怎么做的性能优化?
聊聊你对前端工程化的认识?
你负责了项目的哪块内容?
项目的难点痛点是什么?你们怎么解决的?
你使用XX技术栈的时候有没有什么坑,你们怎么解决的?
项目中遇到过什么印象比较深的Bug?
遇到XX情况么?怎么解决的,怎么优化的?能多说几种方案么?
你是根据哪些指标进行针对性优化的
你的核心竞争力是什么?
- 自我驱动的反省和总结、优化能吧。不甘现状,发现和反省问题,总结和洞察问题的本因、最后再针对性地进行优化,螺旋式地上升
你认为自己有哪些不足?
注意事项
- 常问面试题要预先准备,有结构地表述出来,写好稿进行口述训练。
- 做好目标岗位的调研,尽可能地了解面试岗位以及公司的业务
- 安排好面试,面试顺序从不想去到想去的公司
- 面试完当天进行总结和复盘,查漏补缺
自我介绍
面试中自我介绍主要目的是介绍自己的技术栈和业务方向和经历,首次的话语权,注意引导(给面试官划重点),2分钟左右即可。
“我先后在两家公司,做过 4 年业务分析师、2 年产品经理和 2 年人力经理,负责过 B2B 和 B2C 系统的业务分析和产品设计,以及 10 人团队的部门管理。因为感觉目前在公司能力提升有限,向往外企的管理文化,所以来应聘您公司的经理职位……”
“我一直在这个项目上工作了 4 年,虽然没有换项目,但是我经历了三个阶段。第一个阶段是处理 XX 模块,提高了 XX 技能;第二个阶段改为负责 XX 功能模块,提高了 XX 技能;第三个阶段,我增加了 XX 职责,做出了 XX 成果……”
我叫小明,xx年本科毕业于xxx大学,xxx专业。具有n年左右的前端开发经验。
我的工作经历主要分为两块,第一块是在A公司前期主要参与双11与618期间的活动页面开发,后面也参与了一些例如活动页面搭建平台等b端项目的开发。经过A公司2年多的锻炼,使我具备良好的技术基础。第二块是在B公司,也是我个人发展和成长最快的段时间。主要负责x小程序的从0-1搭建和日常需求开发,但是随着业务不断迭代,人员的增加,项目上也逐渐暴露了一些问题为了解决这些问题,我当时做了2个项目,一个是提高研发效率的自动化持续集成项目,还有一个项目是设计了一套小程序侧的长连接解决方案提升了页面访问性能。通过独立完成这两个项目,也使我具备独立负责一个项目落地的能力
xxx的岗位十分吸引我,业务领域与技术栈都是我下一个阶段需要学习和发展的方向。
我特别熟悉 Webpack 相关工程化体系,曾输出很多篇原理介绍的文章,也曾在项目中多次折腾,优化编译性能
我现在负责管理一支 xx 人,经过前面很多努力已经沉淀下稳定的人才培养、激励、技术规范等一系列管理方法论,曾经培养 xx 同学晋升到等等xX,
项目经历
- 根据 STAR 法则(Situation-Task-Action-Result)准备项目背后的“故事”。
亮点故事: (背景)有段经历,正好遇到了这个问题……。(复杂性和挑战)一般的做法是做不到的,因为……。(解决方案形成过程)我一开始用到……后来……。(结果、影响、意义)成果是……
项目经历描述: 为了吸引读书 App 的用户成为收费会员,我们 5 人小组,用两个月的时间,做出“消费对比”功能,其中最复杂的是预测模型。我负责模型选型,采用了组合预测模型,解决了预测消费的复杂性,并且优化权度,提高了准确性,使得 App 上线后,入会人数月均增加了 60%。
行为事例提问(有挑战的一个经历): 在 XX 年 XX 月,当时公司面临巨大困难:市场竞争激烈,产品市场份额下降,销售人员流失严重,情景相当危急(S)。我领导了一个销售团队(T),对标并分析了市场信息,同时广泛征求了团队内部以及公司其他兄弟部门的意见,一方面加强团队的文化建设、增强凝聚力,另一方面积极开拓新的销售渠道(A)。最后既有效地稳定了团队,又实现了全年销售业绩提升 XX%,最终完成了当年的销售任务(R)。
通过了解产品未来一年规划,跟产品多次沟通对齐,确认21年增长策略是开辟多个新渠道,由于公司内外没有符合业务现状的成熟技术方案最终决定使用自研的多端框架进行开发,实现一套代码多端部署的目标,完成基于现有的页面在新渠道的快速搭建,同时降低开发和维护成本。
三种答题结构的总结:
- 介绍背景(挑战)和任务
- 解决方案(过程)
- 结果(量化)
- 复盘(思考和总结)
- 背景
商户页是各个业务的核心页面,不同业务差异大,个性化要求高;新业务接入,搭建商户页成本高,且不易维护
- 目标
对于不同业务场景,提供一套搭建商户页的配置化方案,减少商户页的接入成本;提高商户页的一致性和体验优化
- 方案
对接配置平台,搭建商户页模块配置能力;商户页模块化框架开发
- 结果
通过配置化方式搭建商户页面,减少了每个页面80%的开发成本
结构化表达
不管是面试还是述职
- 结构化:借助一定的表达结构,某件事进⾏整理复盘,使其变得更清晰的过程;就是把某件事理清楚说明白
- 如何证明项目经历是自己能力做的:
- 过程 逻辑⾃洽,才能证明自己有能⼒做
通过结构化,⼤脑中形成脉络,讲故事,通过表达,把脉络表述出来,打动对方
在时间线上
识别出哪些问题
运⽤哪些⽅法
将其如何解决
最终收益如何
后续什么计划
在去年 10 ⽉,维护商品⾸⻚的过程中,发现⼤量零碎接⼝请求及⾼频 UI 改动,极其消耗研发资源。
通过与 xxx/zzz 团队沟通,认为有必要做接⼝聚合服务,各团队达成共识,⽴项开发,⽤时 3 周,如架构图所示
BalaBala…如何攻克 xxx/zzz 技术难点…BalaBala,最终实现灵活稳定的接⼝定义、聚合、剪裁服务
⽬前接⼊ 4 个产品线,都有⽂档,共 100+ ⻚⾯,200 个接⼝,⾸屏提速 2 倍,实现秒开,服务稳定运⾏半年
前后端联调效率提升⼀倍,其他数据如图,BalaBala..
⽬前还有更多产品线要接⼊,需要做⼩集群部署,规划如图
在今年 3 ⽉,开发跨端 APP ⾸⻚的过程中…
写逐字稿,勤加练习