前言
- 笔者的一个好友(女生),学历普通一本,非科班出身,在国内一家大型外包公司上班
- 因迟迟无法转正成为正式甲方员工(当初入职的时候承诺,有一定的几率转正成为甲方员工)
- 且在这家公司认真工作了三年多了,三年只涨工资500块钱
- 遂在六月份开始准备跳槽去甲方
- 历时将近三个月,总算是在8月底拿到了自己满意的offer
- 一共是通过了9家的面试,其中有6家是外包公司(练手的面试)
- 当然,外包的公司,在通过后,没有接对方的offer,以免耽误对方招聘
- 拿到了三个甲方的offer,分别是17.8K、18K、19K(她当前是15K)
- 最终她选择去了18K的这家公司(17.8K的公司HR说可能会有大小周的情况、19K的公司是初创型公司应该会稍微辛苦一些)
- 特此分享其面试过程中的一些细节
感谢她提供的文章素材,涉及到个人隐私,简历和offer文章不展示
在职跳槽——平衡面试安排
- 首先,她因为是在职状态,不方便频繁请假
- 所以,尽量是和面试官沟通,电话面试+视频面试
- 能不去对方公司,就不去对方公司
- 实在是必须去现场的时候,才会调休请假下午半天动身前往
- 且,会在这个下午半天,提前协调好公司面试时间,规划好路线
- 风驰电掣般面试至少两家公司,将效率提到最高
- 面试中录音,面试后及时复盘
- 针对于面试中,遇到的自己不会的问题,当天就争取将其研究明白
- 用她的话说,面试也是学习,查漏补缺的过程
面试策略——从外包公司练手开始
- 笔者朋友因为三年多面试了,所以,简历还是以往老旧的版本(主Vue副React)
- 在花费了一周多,更新简历项目后
- 于是,从外包开始练手(找面试感觉)
- 在面试的过程中,再适当去优化完善自己的简历内容
- 经过六月份的前期练手后
- 在七月上旬,感觉到自己练手工作已经完成的差不多了
- 于是,便开始投递甲方公司(部分公司的招聘流程有些长...)
- 经过一轮、二轮、三轮甚至还有四轮面试(听老板讲未来公司发展前景...)
- 最终,拿到offer选择觉得合适自己的公司入职
面试中,印象深刻的几个问题
问题一:一个数据加工后端说是前端做,前端说是后端做,你如何沟通
- 笔者朋友的回答是:如果后端时间多一些,就商量让后端加工,如果前端时间充足,就前端干
- 面试官:要做好开发规范,你不要当一个老好人,啥活都往自身上揽,所有数据加工的操作,都要尽可能让后端操作。比如,菜单的树结构数据,后端数据库存储的是一条又一条数据,通过parentId去关联子节点,后端还是应该要加工好一个树结构的数据返回给前端的,不能说让前端加工。
笔者朋友连连点头,内心吐槽,后端要是不好商量,不听也没办法呀,加工的活还是得有人干呀
问题二:有一个需求很紧急,加班也干不完,你如何处理
- 笔者朋友的回答是:评估具体需要延期多久,尽可能赶一赶加加班,把延期部分的需求,延期上线,已经做完的需求先上线,若是这一版本啥都不上线,的确不太合适
- 面试官:你思考的重点应该是为何会出现很紧急的需求,加班也干不完的情况,不要本末倒置
笔者朋友连连点头,内心吐槽,前端开发人微言轻,产品硬塞一个需求,也只能尽可能赶一赶咯
问题三:你是什么星座?
- 笔者朋友有些懵...
- 面试官:比如双鱼座的人,性格就有些脆弱,抗压能力就不行
笔者朋友连连点头,内心吐槽,星座命格真的靠谱吗?要不要来点占卜?(面试官是一个女生)
问题四:如果你接手的项目写的很烂,这种情况下你会如何处理?
- 笔者朋友的回答是:首要是保证项目正常运行,新需求,尽量规范起来,往事不谏,来者可追
- 面试官:你要尽量想办法,把烂代码变成高可用的代码,要胆大心细,去优化完善这些烂代码,这样才能体现你的价值
笔者朋友连连点头,内心吐槽,诗山代码上雕花吗?这...
话不多说,以下是她遇到的部分面试题,大家参照一下,看看是否都会,都能回答上来
面试题
一号面试
- 预览功能,用的是什么技术?前端怎么实现?怎么不让后端实现
- 大文件上传用的哪个库?还有其它包吗?是怎么实现说思路?
- 自动化脚本写过吗?怎么实现的?
- 如何处理git回退版本的情况?
- Vue2和Vue3的区别?了解过她们的diff算法区别吗?
- JS和TS的区别?
- Vue3模板语法和JSX哪个性能更好一点?
- nodejs的express框架,简单介绍一下
- Vue里面的指令
- Vue组件通信方式
- Vuex或者pinia说一下数据的流转方式
- Vue2的时候有遇到什么问题,怎么解决的?-->最近项目中遇到什么问题,怎么解决的
- 写React用的函数式,常用的hooks都说一下
- Webpack和Vite的区别
- Webpack项目大了,包大了,冷启动和热更新慢了,有什么方案?
- Vite的缺点,技术选型的时候都得考虑
- 微前端用的乾坤?父应用和子应用如何通信?iframe通信如何实现的?
- nginx里面有哪些API?
- nginx的应用场景
- node里面如何新开一个线程?主线程和子线程是怎么通信的?
- js数据基础类型?Map和对象有什么区别?
- 如何判断数据类型?
- “==和===的区别”
- 隐式转换的东西
- 项目平时是怎么管理的?
- revert 和 reset的区别
- --host和--hard的区别
- 说说git的stash
- Webpack配置哪些东西?从0到1配置哪些东西
二号面试
- 简单的讲一下,技术上自己的优势,作为前端的开发自己的特长和优势
- 开发任务时候怎么样的思考模式
- 这个思考方式的优势是什么?
- 期望的环境和团队
- 第一个项目周期,时长,在项目中的工作和角色
- 数据加载这个难点,是怎么去想到这个问题的,
- 技术上怎么去实现触底加载的功能的,逻辑怎么实现的
- 这个项目整体结束后,学到了什么,自己有什么成长
- 介绍一个曾经做过的项目
- 加载慢,为什么慢?如何分析,你的分析手段是啥?
- 现在会如何去优化小程序
- css3的一些特性
- flex布局实现哪些功能上,结合具体的项目去介绍
- 自适应用到哪些技术点
- 项目开发中常见的ES6的语法
- ES6深拷贝
- 你自身还有什么不足
- 你的职业规划,
- 最近研究的问题
- RBAC,了解到其它的角色模式吗
- promise.all
- 对数字孪生的了解,就是大屏
- 我的问题
- 良好的编码习惯,code review咋做的
三号面试
- 介绍一个你的项目,挑一个你认为是自己做的比较复杂的,详细讲一下用到的技术栈、遇到的问题及如何解决的
- 刚刚提到的文件预览的难点在哪里
- 打开美团APP看首页,你从前端开发的角度,你认为可以封装的组件有哪些?
- 美团购物车这个页面,组件会怎么设计?
- 组件中消息传递如何设计?
- 现在开发一个管理系统,系统中会用到表格展示数据,不同页面需求有差异,有的要排序,有的要可选,列配置不同,自定义单元格渲染,你如何设计一个可复用组件满足这些需求?
- 实际项目中,有没有处理过这种表格组件业务逻辑解耦
- 有做过优化吗?(性能优化)
- eachrts提供的渲染模式有哪几种?
- 项目中有遇到跨域的问题吗?如何解决?
- 详细讲一下,从浏览器接收到html到完成渲染的过程
- 如何控制缓存
- 你的优势是啥
- 短板和长板
- 一个数据加工后端说是前端做,前端说是后端做,你如何沟通
- 有一个需求很紧急,加班也干不完,你如何处理
四号面试
- 做过这么多项目,挑一个你觉得自己做的比较好的项目讲解一下
- 谈谈你对大模型的理解
- 现在有一个数字人功能,你的思路是啥
- package.json生命周期
- vite插件开发过吗?
- webpack构建有很多过程,你认为你写的这个loader是在什么时机执行的?
- webpack执行过程知道吗?
- 你项目中远程大数据下拉框 的触底加载是如何实现的?触底加载的三个高度,你记得是它们的关系吗?
- 触底加载除了滚动条监听,还有其它方法吗?
- Vue2和Vue3的区别?
- 说一下Vue2的mixin
- mixin中属性方法和组件内属性方法冲突,如何处理?
- mixin中生命周期和组件内生命周期冲突,如何处理?
- mixin在Vue3中怎么用?
- ElementPlus的tree组件,如果让你去设计,你会如何设计?
- 给你一个tree的数据结构,深度不知道,渲染出来,渲染过程如何实现?
- dfs和bfs
- 三栏布局,左右两边固定,中间自适应,如何实现?
- 用flex:1,那两边宽度大,内容较少,中间宽度小,但内容较多,会出现什么情况?
- 除了flex可以实现,还有用别的方式实现吗?
- 定位,A元素相对窗口绝对定位,A元素有子集B也是绝对定位,子集B最后是相对于 谁 定位的?
五号面试
- 自我介绍和最近1-2个核心项目担任的角色和职责
- 我的问题偏原理和概念比较多,你的回答可以多偏向这个方面。
- Vue3的响应式系统是怎么工作的,和Vue2的区别是什么?
- Vue组件间的通信方式有哪些?
- Vue里面虚拟DOM是什么?
- Vue项目做性能优化主要关注哪些点或者说怎么做?
- Vue中ref和reactive有什么区别?
- Vue中的key属性的作用是什么?
- 封装过哪些组件,介绍一下有亮点的组件
- Vue组件的懒加载是怎么做的
- Vue第一次进入页面会触发哪几个生命周期
- 介绍一下插槽的类型和作用
- 计算属性和watch的区别和应用场景是什么?
- Vue中路由实现hash和history模式的区别介绍一下
- 介绍一下Vue-Router的跳转是怎么跳的
- 介绍一下Keep-alive是干嘛的,使用场景是什么?
- Vue双向绑定的原理
- 在复杂系统里面,讲一下状态管理方案和思路
- Vue的代码分割做过吗?大概介绍一下
- 代码分割的目的是什么?
- 我们这次对前端的标准化构建要求比较高,项目从开始到落地整个前端工作过程中,对标准化,工程化,流程化有要求的话,你觉得要注意的关键点有哪些?
六号面试
- 第一份工作2年的时间做的是什么项目呢?
- 为什么从第一家公司离开呢?
- 任选一个你的项目介绍一下,说你自己做的部分
- 你做的效能开发工具,后面有评估节省了多少时间吗?
- 你为什么想要从现在这家公司离职
- 这三年你有学新的东西吗?当前公司
- 你做的最大的项目简单介绍一下
- 你想找一个什么样的工作?
- 项目中要和产品,UI,后端配合,你认为哪一个岗位最好沟通,哪一个最难沟通?
- 你做过这么多种类的项目,你个人更喜欢哪一类的项目?
- 你是什么星座?
- 如果项目上线前,发现一个非技术问题,比如说一个重要流程没考虑到,时间又很紧,你会怎么处理?
- 团队如果有人对你的技术选型有不同的意见,你怎么沟通和处理?
- 你是非计算机转行过来的,你这个背景有没有给你带来独特的视角?
- 你认为你现在跟入行时候有什么区别?
- 你认为你身上有你团队人员喜欢和信赖的点是什么?
七号面试
- 目前在职还是离职?
- 选一个你的项目讲一下背景,功能,你负责的模块,遇到过哪些难点和问题,如何解决的?
- 为什么要把文件给到后端,让后端去存minio,为什么不直接从前端往minio里面存呢?
- 请求失败重试如何实现
- 请求并发,和请求顺序控制
- 讲一下xx项目的性能优化
- 雪碧图,具体怎么实现,具体css代码是啥
- 缓存到底是存在那个地方?
- memory cache 和 disk cache
- 用户看到A屏幕时,有没有什么办法把后面B屏和C屏的内容加载?
- 强水印功能如何实现的?这个API换个IE浏览器可能就失效了,有什么方案解决吗?
- nodejs可以做后台服务器,做过哪些服务?
- 接手老项目,封装requet请求就是http请求的包,在项目中有一层封装叫request.js,request.js中使用axios的包做http请求,你有一个新功能,有一个接口超时时间长,超过10s,老代码里面默认全局超时是10s,新功能受限,会报错超时,需要你把request.js再次封装,达到2个目的, 1、不指定超时时间时,超时时间默认10s 2、需要指定时间时,超时时间为20s 如何封装这个request.js实现这个功能
- 有5000支股票,每3秒从中挑选出2000支股票的数据实时刷新页面,如何才能快速筛选。
- 现在 让你重构一个项目,你的策略有哪些?
八号面试
- 中间层了解过吗
- 有处理过大模型数据不是一次性返回的的吗?流式返回数据了解过吗
- 大文件分片上传怎么处理的?
- 讲一下你写的这个效能工具
- Vue3和Vue2的区别
- 为什么Vite比Webpack快?
- 你写的这个自定义loader为什么要这么做?
- 你项目中做了哪些性能优化?
- 你的虚拟列表是怎么处理的?
- CSS一般是怎么写的?用到过tailwind吗?
- 若依框架是用的全部,还是只用的前端?了解过它登录时的加密算法吗?
- Vue3的Watch和WatchEffect的区别
- Vue3的组件通信方式有哪些?
- Pinia相对Vuex好在哪些地方?
- TS用的多吗?
- 模板编译原理了解过吗?源码看过吗?
- 页面中有并发请求,是怎么处理的?
- 有做请求的队列方式吗?
- 对ElementPlus有封装过组件吗?
- 通用的组件,是从一个项目copy到另一个项目吗?
- 除了若依框架,还用过其它的成熟框架吗?
- 谈谈你对低代码平台的理解
- 谈谈你对0代码平台的理解
九号面试
- 项目工作情况,个人优势,先介绍一下
- 有用过流程引擎,表单引擎吗?
- 你做过的大一点的项目的人员配比
- 项目的工作流程
- 个人作品有吗?
- 为什么要离职?
- 现在公司加班多不多?
- 原生js实现lcp
- 写一个冒泡排序,还有别的排序方式吗
- react路由、redux
- 函数式组件和类组件
- react和vue涉及的理念,谈谈
- 谈谈你对于技术选型的理解
- 你的组员对于某个技术选型有着不同的理解,你如何安排协调沟通
- 你有产品思维吗?或者说前端应该涉足产品设计吗?
- 前端应该涉足后端设计吗
- 你会自测吗?你如何把控代码质量
- 是什么完美的没有任何bug的性能高效的废代码?
- 谈谈对面试百度编程的理解
- 接触的项目都是从0到1还是半路接手的?
- 半途接手项目,如何快速熟悉项目,做开发任务?
- 如果你接手的项目写的很烂,这种情况下你会如何处理?
十号面试
- 数据data为什么是一个function
- 用过mixin吗?
- vue3的setup和create先执行?
- 介绍封装组件
- 说说插槽的使用场景
- 大文件上传你是如何实现的?
- 文件预览组件你是如何实现的?
- vue3组件通信,$attr是如何使用的?父组件访问子组件的一些方法啥的,需要什么条件?
- v-model实现原理
- ref和reactive区别,从底层原理说下
- v-if和v-show的区别
- 三次握手为什么要比四次挥手少一次
- 浏览器输入url发生了什么
- 状态码说一下,工作中具体遇到的状态码
- 项目发布使用docker吗
- 说一下链表的具体应用场景
- 你刷了多少道算法题?算法场景题
- 手写一个深度克隆
- 比较两个对象是否相等
- 为何有闭包这个东西,它解决了什么问题
- 你如何看待加班?
- 你有什么想要问我的吗?
好友的总结
以下,来自笔者好友的总结
-
面试中,时有沮丧,失落,时而我又可以了。
-
但是!!
-
每天坚持学习,你可以打败10%的人,
-
每天坚持投递,你又打败10%的人,
-
每场面试录音回顾,你又打败20%的人,
-
你坚持动作一个月,你又打败10%的人。
-
你已经打败一半的人啦!!!
-
好的面试官,确确实实使人如沐春风。
-
好的面试,录音反复听,让人回味无穷,且温故而知新。
-
感谢给面试机会的公司,面试中愿意解释,愿意引导的面试官!!