裁员,旅游,找工作
我是3月份从上家公司被裁员离职的,其实这件事在去年年底就确定了的,当时也写了一篇文章:我的2023,被裁员,现在也过去3个月了,这3个月我真的过得特别艰难。3月初从上家公司拿了赔偿走人后,我出去短暂的旅游了一下,回来后我开始改写简历,但我工作日不工作,阳光明媚的下午,别人在上班,我在家躺,多少有点emo,所以一开始是想着先玩一个月,再开始找的,后来觉得有些慌,就开始写简历,投简历了。
对自己的一些思考
对于我这个30+的双非科班来说,进大厂是没有机会的,不是我通过不了大厂的面试,是我没有大厂的面试机会,我觉得对于学历好的同学来说,最好进大厂的机会是校招的时候,对于普通学历的人来说,进大厂最好的机会是工作3年的时候,但这时候你一定要表现非常亮眼才有机会。对于大厂外包转内部这种,我是非常不看好的,当然也有人成功了,但是不建议轻易尝试。对于我来说,这2次都错过了,再进大厂的可能就微乎其微了。这几年,大厂本来就招人少,再加上一堆人跟你抢,如果你有内推机会最好走内推,这样你的简历通过的机会大一些,我也找了不少人内推,估计看我资历平平,都没通过。
关于找工作
简历是敲门砖,是最重要的,对于我来说,双非科班,大龄30+了,一直是从事web前端开发,最后一家有一部分管理工作,整个资历非常普通。所以简历基本没什么亮点,我室友也是前端开发,在大厂,待遇是我的double,他建议是让我多看看源码,都这个年纪了,不会再问普通的面试问题了。于是就找他给我模拟面试了一次,他让我从自我介绍,到问一些基础问题,再到一些高级的问题,比如说vue3的diff算法做了哪些优化,双端比较是什么实现的,为什么能降低时间复杂度等等。模拟面试完了后,我才意识到自己的不足,第一个简历上没有亮点,第二个对底层原理了解的不多,工作多年一直停留在表面。 针对上面2个问题,我做了一些调整和学习。
简历没有亮点
对于我这种学历普通,没有大厂经历的,只能从项目经验上找差异了,很多人项目做完了,没觉得项目上有什么难点,这是大多数人的共性,因为我也是这么觉得的,我做了很多大型的B端项目,但是奈何平时自己没有整理总结,到写项目经验的时候,只能写项目的业务需求是什么,不能写出项目的难点,以及解决思路等。于是我翻看以前的项目源码,硬找出一些难点,比如说微前端改造(以及遇到的困难,样式冲突,路由限制,跨域等)。比如说复杂的树形组件封装,比如说复杂的表单联动、大文件断点续传、单点登录等等、项目优化(防抖节流,打包优化,定制规范)。不得不说上面的难点如果你写到简历里面了,你一定要准备好回答的话术,我之前有过半年招人的经验,如果你简历上面写了,我大概率会问的,如果你答不好,基本上就pass了。
对底层源码的理解不足
如果你是面试高级开发,一定要多研究底层的原理,作为一个老前端,我个人认为我是不合格的。如果你是vue技术栈的,你一定要了解vue2的响应式原理,和vue2的diff算法,vue3相对vue2做了哪些改进,为什么要做vue3这个升级,vue3的响应式原理是什么,vue3的diff算法怎么实现的,vue3的diff算法做了哪些优化,怎么理解vue中computed的缓存等等,如果你是react技术栈的,一定要了解它的fiber架构,diff算法,hook等。
投简历
简历是重中之重,简历是敲门砖,没有面试机会,找工作的可能性等于0。修改完简历后,我开始投简历,我是采用广撒网的方式,哪怕投到不想去的公司,也可以刷经验。我筛选掉了规模小于100人的公司,待遇低于20k的岗位开始投递。我是在boss,智联招聘,猎聘,前程无忧,拉钩招聘,陌陌都有更新简历,然后投递。大家可以看我安装的应用的截图:
下面简历投递要注意的几个问题:
主动找上来门的,一般不是好的
boss上我放开简历后,一开始我发现二十多个boss主动找我,一开始还挺鸡冻的,等我主动去问才发现,这些全是外包,或者是一些做灰色产业的。所以主动找你的,一般不是好的,除非你特别优秀,985 211也许会有一些好的企业来找你
一定要坚持
投简历一定要坚持,我一开始是投完了,就等待,但是你会发现反馈一般没那么快,这也是为啥我后来入职了国企后,还有那家私企来找我去面试的原因,一般投递简历后,反馈没那么快,我第一家offer让我去的时候,hr说她2天没看boss,就收到了五百多份简历,所以hr看到你的简历没那么快,一定要坚持。第二个是一定要持之以恒,有些同学投递一段时间后,都没有面试机会,就开始摆烂放弃投递了,其实不要放弃,只是符合你的那个岗位没有出现而已,所以一定要坚持,上午10点投一次,下午2点投一次,把新出来的岗位符合你需求的都投递一次。不要懈怠,闲下来了,你就emo了,所以要多给自己找点事情做,可以尝试阅读源码:vue2、vue3、react,手写代码:bind、promise、柯里化、算法等。不要面试不通过,或者投递石沉大海就沮丧,坚持最重要,面试完,一定要总结,总结做的好的地方,不好的地方,把不会的面试题赶紧做一遍。
一定不要用固定的打招呼语言
很多平台,比如说boss,前程无忧等,都支持设定默认的打招呼语,我一开始也忽略了这个细节,我都设置成通用的,但是一般没有什么反馈,反而错过了自己喜欢的公司,后来我才意识到,一般hr不会直接看你的简历,只有你的招呼语吸引到她了,她才会打开你的简历,所以重中之重是先看一下岗位要求,比如说加分项:有一门后端语言,有微前端经验,有大型项目经验,对代码质量有追求,英语能力等。你看到这些加分项后就可以这么说:本人除了满足基本要求,还有nodeJs后端经验,英语良好,考过了CET6级等等,这些才能吸引hr去看你的简历,才有机会面试。再者有些公司在招聘信息里面写了,要求熟练使用elementUI。但对于经验足的前端来说,这种小技能一般不会写到简历里面,但hr并不知道这个其实并没那么重要,她在看你的简历的是,没有这个经验,可能直接给你pass了。所以一定要针对岗位要求来回复打招呼语,必要时根据岗位提供不同的简历。
突出自己的亮点
如果你没有好的学历,也没有大厂经验,一定要找到亮点,并且突出显示,这样很大概率能获得面试机会。 下面列举一些常见的,比较能吸引公司的亮点。
- 微前端经验,很多公司系统多,这几年微前端也流行,所以是相对比较有优势的亮点
- 有带团队经验,有些公司是内部外包一起协作开发的,所以有些公司需要有自己的开发有一定的管理能力
- 有3D经验,比如说熟练使用webgl,熟练使用three.js等,现在3d技术越来越流行了,3d技术很吃香,待遇也很高
- 有electron经验,有些公司使用electron开发客户端的web应用,最新版QQ就是基于这个改造的,vscode也是用这个开发的,所以这也是一大亮点,而且待遇不低
- 有从零到一独自完成项目的经验,这种能力是很多公司喜欢的
- 有GitHub开源项目,或者有技术博客,最好是赞比较多的,如果没啥知名度,最好别写
- 有视频格式解析方面的经验,视频流推送解析等
- 有过特殊性能优化经验等等
上面这些亮点是我认为在当前环境下,比较吃香的一些技能,如果你都没有,则可以选择一个方向去学习,去提升,我一度有想过往3d方向发展,因为我感觉这是个不错的方向。我的亮点可能就是上面的1和2.我在23年的时候还考了一个pmp,就因为有管理能力,才拿到了这个国企的offer,所以某些不经意的举动,可能还是给你带来意想不到的收获的。
收到面试
我开始的想法是面试来者不拒,小公司也去面试,哪怕刷经验。 我在投递一周后,终于收到了第一个面试,是一家大型的物流公司,公司规模很大,公司办公楼也很气派,我都没待过这么大规模的公司。是2轮面试,下面是我记得的一些的面试题:
一面
- js中map和object的区别
- 数组中找出最大的,和最接近最大的数
- 实现一个简易的模块联邦
- promise的catch先执行,还是reject先执行
- 什么是架构思维
- 找出二叉树的深度
.... 还有一些其他的我忘记了,反正发挥的不好
二面
- 说出vue3与vue2的区别,为什么要做vue3的变革
- 你的优缺点是什么
- 遇到最大的困难,最大的成就
- 为什么离开上一家公司
- 为什么选择我们公司
- 你认为架构师的特质是什么,什么是架构师
这家公司我虽然没发挥好,但是还是通过了面试,hr给我谈薪资我也没啥底气,待遇没怎么涨,要知道上家公司3年都没涨,来这边还不涨,我就很不甘心,还有想到这才第一个面试,也不能这么快把自己给交代了,然后就拒绝了。
第二家公司是一个家光伏公司,规模比较小,招聘的是技术经理,不是很匹配,但也想往管理方面走,就去试了试,下面是面试题:
一面
- 微前端改造有遇到哪些问题
- 项目中遇到哪些问题
- 模块联邦有没有考虑过包体问题
- 2个子应用之间如何通讯
- 项目管理过程中有没有什么总结,与如何实践
- 有没有可能像pnpm文件管理模块一样来共享项目内的公共组件
这家公司面完就没后续了,我感觉他们是不招人,实际上是套经验的,之后收到一个找国外工作的,相信很多人都听说过,就是出国去新加坡,马来西亚,日本等国家,去做开发,待遇很高,基本上是国内的double+。还有一种是远程办公的,没有国外高,单也很多,当时我是不感兴趣的,后来想着刷刷经验,下面是面试题:
一面
- vue和react的区别
- 为什么react有fiber架构,vue却没有,是不需要吗?
- jsx是什么,会写吗?
- 你做了哪些项目,有遇到什么难点,你是怎么解决的
- 浏览器存储有哪些
- js有哪些常见的数据类型
- 你使用过哪些设计模式,具体哪些应用
二面
二面基本没问什么技术问题,都是问一些项目问题,二然后就很轻松的通过了,然后远程工作,做菠菜,发工资也是一、以U的方式,我感觉有风险,然后问了很多人,我当时想法是看能不能回老家做2年就退休,因为2年攒一攒就基本上就一百万了,哈哈,后来想了想怕被发现进去踩缝纫机。
下面一家公司是深圳某地铁物业公司,规模也做的挺大的。
一面
- 项目做了哪些优化
- 为什么选择这个微前端框架
- 响应式原理是如何实现的
- 原生小程序的生命周期有哪些,onShow和onLoad的区别
- vite热部署原理是什么
二面
- 你做了哪些项目
- 你的职业规划是什么
- 项目中最难的是什么,你是怎么解决的
- 你觉得你们的架构的问题是什么
这家公司后来他们人事说我没通过,说希望找一个经验更足的人,其实我觉得并不是这个原因,是因为我的诉求他们达不到,我希望有些管理工作,不想只做普通的业务开发,而他们就只差业务开发。
下面一家公司是一个做跨境电商商家管理平台的。
一面笔试
- localStorage,sessionStorage区别
- 元素脱离文档流的当时有哪些,举例说明
- 讲解你理解的This指向
- 闭包是什么
- 什么是Bfc
- 写一个深拷贝函数
- 用正则写一个邮箱格式检验
- li循环,修改li样式
const allLi = document.querySelectorAll('li')
for(var i = 0; i < allLi.length - 1; i++) {
setTimeout(() => allLi[i].style.backgroundColor = 'red')
}
// 上面的代码结果是什么,如何修改达到想要的效果
- 200+'2'-'2'的值是什么
- 手写一个打平数组的工具函数
二面
- 事件循环,为什么要事件循环,解决什么问题
- 作用域链
- 原型链
- 原型链应用场景
三面
- Http优化有哪些
- 说自己的2个优点,2个缺点
- 做的最难的项目是什么
- 项目中做了哪些优化
这家公司很卷,离我住的地方也很远,面试基本通过了,只是感觉各种不合适,就没后续了。下面是一家国企,也是我入职了的,后来又试用期辞职了。
一面笔试
- 回答下面的代码,执行结果:
let [x=1,y=2]=[undefined,nul]
console.log(x,y)
- 讲解你了解到的css中
position
样式 - 下面的代码执行结果是什么:
const two=0.2
const one=0.1
const eight = 0.8
const six=0.6
console.log([two-one === one, eight - six === two]):
- css中可以继承的属性有哪些?
- 简述let和const的区别
- 请写出下面代码的输出结果:
for(var i=1;i<=6;i++){
setTimeout(function timer (){
console.log(i);
},i*1000)
}
// 输出:
for(let i=1;i<=6;i++){
setTimeout(function timer (){
console.log(i);
},i*1000)
}
// 输出
- 请编写一个方法,用正则表达式将一个字符串前后的空格清除掉。
- 如何将一段单词倒序输出?把"Hello Shenzhen,Hello NingHao!"变成"!NingHao Hello,Shenzhen Hello"?
二面
- 微前端改造遇到哪些问题
- 自己实现一个new过程
- js事件循环是咋样的
- ...后面我忘了,反正主要是笔试题,笔试通过了,面试就随便问了问
这家国企总共有4轮面试,不过就第一轮笔试和第二轮技术面比较难,后面的面试都很愉快,当下下午就给我offer了,然后我对比了一下,这个是我相对最好的一个offer了,我就同意入职了。结果第二天还有个硬件公司让我去面试,我看了一下,感觉规模挺大,待遇也高,就去试了试,下面是面试题:
一面
- 说说你理解的TS
- 微前端改造遇到什么问题
- node上传中间件如何实现
- 是否有使用过TS的高阶类型
- 为什么选择MicroApp而不选择QianKun
- 有没有做过单点登录
- http三次握手,四次挥手是什么
这家公司技术面我基本上所有问题都回答上来了,本身问的也不算复杂,而且我加入了很多自己的思考和总结,使得面试官很满意。之后二面就是研发负责人和部门主管来问,没问什么技术问题,问我一些总结性的问题
二面
- 什么是前端,说说你的理解
- 什么是全栈工程师
- 你觉得什么时候该采购系统,什么时候该自研
- 说说你自己的缺点 总体来说就是这些比较宽泛的问题,这种问题你只要加入自己的理解,加上一些总结性的回答,就很容易打动面试官,通过面试。最后我是选择了这家公司,后面我再具体说原因。
上面的面试题我已经整理成PDF和答案了,可以加我进群获取,大家也可以在群里面分享面试的一些总结,和遇到的面试题,我看到了都会给大家解答的
关于面试及回答问题的一些总结
-
千万要自信
我最开始的状态是投递了一周,没有反馈,开始相信他们说的,市场差,前端转前台,后端转后厨了,所以在面试谈薪的时候,表现得极度不自信,甚至在第一家给我offer不给我涨薪的时候,我都一度犹豫要不要去,到后来那家国企说到他们的待遇的时候,我内心是极度不愿意的,但还是无法拒绝,因为这已经是我这一个月最好的一个offer了,所以还是同意入职了。后来我有了这个offer就有底气了,达不到就不妥协,因为你妥协了,入职了,内心还是有些不愉快,导致工作也不顺心,所以一定要定一个自己的底线,比如说不加班多少钱,加班多少钱,能达到才接受,达不到免谈。 -
自我介绍
自我介绍最基础的是要流畅,不能卡壳,要突出自己的亮点,比如说经验丰富,熟练使用的技术栈,上线过大型项目等等。这个可以自己对着镜子多练,把时间控制在一分钟左右,内容除了基本信息,一定要突出自己的亮点,语速可以慢一点。 -
回答问题需要加上总结
比如说面试官问什么是全栈工程师,常规回答就是说一个研发把前端,后端都做了,叫全栈工程师,一个人承担前后端的工作。这个时候你的回答不能结束了,你需要加上自己的总结:从某种意义上来讲,全栈工程师减少了公司的人力,节省了开支,但是我个人而言,前后端分离,同步进行,整体研发效率更高,另一个是专业的人,做专业的事这样做出来的应用也更可靠,体验更好。再别说面试官问http三次握手,四次挥手是什么,你不只是要回答他们是什么,还要回答为什么要这么做,总结来说就是让客户端和服务端之间的通讯变得可靠。 -
不会的问题可以回答相关或类似的问题
如果你回答不上面试官的问题,一定不要直接回答不会,要回答相关的问题,如果同样是个漂亮的回答,面试官对你的印象分瞬间拉满。面试官问你react
的diff算法是如何实现的,你回答不上来,你可以回答vue的diff算法,同样也回答了面试官的问题。因为你连vue的diff算法都能理解,再理解react的diff算法并不是难事,再说这个大大大的前端,你怎么保证你啥都写过,啥都会呢,重点是你的能力。 -
不要着急回答问题
回答问题千万不要着急,面试官很多时候也会给你思考时间的(但不要思考太久,超过1分钟这种),比如说我之前就被问到普通object
对象和map
对象区别。我没思考就回答,结果就漏掉了map是有序的,object是无序的。
个人的一些思考
作为程序员一定不要懈怠
工作多年,我真的见过只会curd的程序员,拷贝一个,能跑就行。所以有时候我很惋惜,那些很上进,很有思考能力的程序员在做外包,如果你正处于相同的处境,一定要考虑找一个大点的平台,这样你才能更好的发光发热。程序员一定要持续给自己充电,对于工作前五年来说,技术一定是根本,我个人也很懒,大多数时候都很懈怠,但我有个习惯是每天看一看技术论坛,把论坛看到的一些东西进行一些可行性实验,必要时用到项目里面,实在没用的,用来吹牛皮也行。千万不要停在能用就行的思维上,要有一些追求,不要只是简单的拷贝代码,这样迟早会被替代。正常技术路线我认为应该是:初级,中级,高级,资深,架构师,不到大多数人都停在中高级了,所以程序员这个青春饭就更短了。
前端比后端的处境更难
前端注重效果展示,用户交互和体验,反而忽略了底层业务。所以在重要性上,大多数应用的业务还是更重要一些(一些可视化项目除外),所以大多数时候前端的重要性比后端低,可替代性也比后端强。所以如果你才刚入行,我毫不犹豫推荐你做后端,我是15年入行的,那时候刚好公司有前端岗位空缺,我才入了前端的门,后来也是个人原因,固步自封,一直没有转后端,前端的上限太低了,但这并不意味着前端简单,从面试来看就知道了,这个前端要学的东西太多了。前端转管理也更困难,我经历的几家公司,很少有让前端来主导项目的,都是以后端开发来担任小组长,或者项目经理,前端的话语权太低了,这样会显得很没有成就感,所以前端的出路到底在哪呢?如果有人能给我解惑,那真的太感谢了
想要拿高薪一定要提供更高的价值
如果你一直只是个开发,那你给公司提供的价值那也只有你写的那点业务代码了,如果你有话语权,你能定制规范,提供底层公共组件,给整个公司的研发来用,那你的价值自然增加了。如果你当上了管理,你带领团队来完成了任务,那你提供的价值更高,所以想涨薪,像拿高薪,一定是给公司提供更高的价值,所以我觉得不同阶段你要有不同的思考,要达到对应的层级,比如说工作3年,你要完成从一个初级到中级的转变,工作5年你要达到一个高级程序员的能力,工作5年以上,你要做到架构师,或者做到管理,带团队的能力,如果达不到,那你就是负分了。这就是为啥我工作8年,放弃这家安逸的国企,要去私企的原因,这边我只是一个普通的业务开发仔,没有任何话语权,系统稳定,没有底层建设。去那边私企,系统需要重新搭建,给的是架构师的title,领导也很懂我的需求,这种才是我理想的公司,虽然风险很大,我在这边本可以安心躺平的,去那边可能试用期都不过被pass,但我内心是愿意接受挑战的,即使失败了,也不要后悔,选择了就要坚定的走下去。
半年后的补充
上面的内容是我让入职这家公司的时候写的,现在半年我已经转正了,中间很多波折,能力遭到质疑,上司不看好等等,但最后还是得到了大家的认可.这边内部前端研发很少,很多项目都是老项目,前后端不分离那种,这也让我有机会写一些后端代码.在这边可能对我的技术的成长不多吧,这边更多的是采购系统,不是自研,只能说能学一些管理能力,大公司的组织架构与做事方式.
总结
我回头看了一遍文章,哈哈,总体来讲我可能表现得太激进了,给大家的感觉也比较负面,有时候我也在想,留着深圳这个城市是干嘛呢,安逸点,拿个不高不低的待遇老老实实干呗。说实话,我来深圳都没感觉到累,可能是我待过的公司基本都不怎么加班,然后一直住的近,也没怎么挤地铁。我也很满足于一些简单的快乐,一杯奶茶,出去看看山,看看海,都很开心。不过是因为太i了, 一直单身(在掘金沸点发过一个相亲贴没人理我),哈哈,随着年龄渐长,脱单,定居,找工作,这些都让人发愁。年龄大了,发现时间也越过越快了,疫情是20年的时候,转眼4年了,时间真快。所以呢?我们更要搞事情,留下更多值得纪念的时间点,这样在回忆起来的时候,也多一些让你印象深刻的事情,才会觉得时间过得慢一点吧,然后一定要做总结,总结一个月,总结一年,把过去做过的事情拿出来琢磨琢磨,也许对你也很有帮助,比如说去年做了一个刷题小程序,也很有成就感,考了PMP也有点成就感,把公司应用的组件做了一个改造,也值得被记录。还有就是我上面说到的,有时候可能一个不经意的举动,让你有意想不到的收获,拿个人举例:我因为考了PMP,才拿到这个国企的面试机会,才能拿到offer。就因为我帮我哥写了个小程序,有node服务的中间件文件上传,刚好在我想去的那家公司的面试题里面出现了这个面试题。所以多搞事情就对了,哈哈。
最后再说句实在的,我之所以很多面试题都会,不只是平时的积累,还跟我一直坚持用我自己做的小程序:程序员八股文,上前道面试题及答案,这都是我自己工作中遇到的和平时刷题总结的一些题目,平时上来刷刷题,对面试真的很有帮助,我自己做的应用对你们有帮助,其实我也很欣慰,比较有成就感。