三本前端广州逆袭拿下double base (6500字干货)

lxf2023-05-16 01:20:09

写在前面

作者是在广州,因为双减政策的原因,上家公司所在部门岗位也在缩编了,所以在去年的12月份离职,直到今年的2月底终于找到了满意的工作,从面试开始大概花了一个多月的时间去面试,无论是offer还是面试经验,我都感到很满意。

总共面了10家公司,大中小都有(没有bat啦~),10家公司的技术面我都通过了,岗位投递的是广州的薪资范围 16+ 以上的。对于此次收获的offer,首先是心水的业务,其次是base也很满意,因为上家公司的base比较低,所以我觉得我能拿到double base已经会是最高点了,在非bat一线大厂以下,各位编程大佬轻喷。

我没有大厂经验,学历(学校)也不怎么亮眼,但通过了10次面试经历,我认为绝非偶然。我总结出一些能一定程度上,让你突破履历和学历限制技巧。当然这些经验不是万能的,是建立在你能力还行但硬性条件不太好的情况。因为每个公司、岗位需要的要求可能也不一样,学历、项目、算法等等都有可能成为被卡的点,作者简历被挂了也不少呜呜。

本文可能不会太深入说关于面试细节的,网上面经也很多了,我会从下面几个方面总结:

  1. 如何学习
  2. 如何写一份吸引人的简历
  3. 简历投递技巧和策略
  4. 面试如何说出让面试官认可的答案
  5. 如何准备hr面

如何学习

我的方法主要是,从体系化学习和碎片化学习两个方面,面向面试组建自己的知识体系库。听起来是不是很功利化。。但这样你能更加有明确的学习方向和目标

体系化学习

对于体系化,其实就是针对某一个知识点去深入的学习,比如学习工程化。

  1. 我会去看看 webpack 的源码,去了解 webpack 究竟是是怎么运行的
  2. 其次会看看周边的一些 loader 和 plugin,我会想去知道为什么要分 loader 和 plugin,他们在 webpack 内部是怎么运作的,他们可以应用到什么场景上,接着你就可以找些平常工作中你用到的 loader 和 plugin 去看看他们的源码。
  3. 我还会研究下webpack的打包产物,他们的模块化方案是怎么做的,延伸下来,我还会看看还有没有什么其他的模块化规范,哦有,amd和cmd,接着我就去看了下seajs源码。

最终其实还是会基于一个原则去学习 --- 求知欲。这样东西我除了会用,我还需要知道为什么要用它,我需要知道它是怎么运行的,我需要知道用它会带来的好处坏处,我需要知道它的替代方案,等等。

碎片化学习

碎片化学习,其实就是编程知乎公众号这些平台,里面会有很多水文,源码原理解读、应用方案、新技术问世、技术圈撕逼等等。平常通勤或者是休息花点点时间就可以去看了,一篇几分钟也不会花很多时间。

这些水文可以拓展自己的技术视野,也可以为自己的提供很多不一样的思路,在工作中设计方案你不一定会用到,但你肯定会去深入调研、了解这些技术,这样也是一个加深学习的过程。

如何写一份吸引人的简历

简历这一关实在太重要了,如果给求职环节中的各个部分打分,我会给简历占 50% 的分数。特别没有名校背景和大厂履历下。下面说说我的简历构成

  1. 基本信息
  2. 工作经历
  3. 个人技能
  4. 项目经历
  5. 自我总结

简历内容最好控制在两页(单面),基本信息不需要太多,联系方式、教育背景、有编程或者github可以放上去,最好控制在一页的五分之一或者六分之一的位置。

工作经历

这块主要介绍你在之前公司担任的职位,任职时长,还有主要的工作职责,负责的这些工作为公司为团队带来了哪些效益。

为什么有项目经历了,还需要写工作经历?我觉得工作经历更多是对你工作的一个总结,你需要在这里展现你的战果,也因为这部分是放在简历的开头位置的,写好一点能让面试官或者hr一眼看出你不是一个普通人,大大提高简历通过率。

那写工作经历有什么技巧呢?可以围绕下面两点写,一般写两到三点就够了,简明扼要说我是做什么的,达到一个什么样的效果

  1. 在 ** 公司担任 ** 职位,负责 ** 工作
  2. 推动 ** 工作,为开发团队/公司带来 ** 提升

可以参照上面两个模板去整理描述,评判标准就是让人一看就知道你是 有潜力/有能力/有执行力/有想法/有深度/有团队凝聚力 的人。

个人技能

个人技能这块不需要所有都写出来,我们只需要把擅长的写出来就好了,控制在5点内结束。

我建议是不要用到精通这个词语去描述掌握程度,不然被问到不会的话,有点尬。一般用熟练、熟悉、了解、知悉这些就好了。

技术栈关键词只需要涵盖到我们常规用的就好,vue/react、linux/nginx、node/express/koa/egg、webpack/vite/qiankun/single-spa、typescript。对于图像库、工具库,还有html御三家之类的可以不用写上去,因为面高级或者资深工程师,大多数面试官都会默认你会~你还可以写些让人觉得耳目一新的技术栈。

项目经历

对于项目经历这块,我认为可以分为两个部分阐述,项目内容技术实现

项目内容尽量控制在50字内,太长的话可以把内容拆分到技术实现里面描述。项目内容主要是交代下这个项目的大概背景、内容,简明扼要即可。

技术实现就把项目内容具象化,将具体的功能点细化表达出来。这里很关键,也是本小节最关键的内容,怎么把具体的工作内容描述好?我整理了一个万能公式模板,供大家参考

用了什么技术,实现了什么功能,带来了什么效益

这个公式我认为既可以把技术、功能两个方面清晰完整地表达出来,又能让面试官和hr知道你不是单单完成了一个组件一个功能的开发,你是有所收获的,你能为团队公司带来效益。

下面我举个例子来实践下:

  1. 封装统一的路由鉴权组件,实现C端产品单点登录功能
  2. 利用高阶组件封装路由鉴权逻辑,制定单点登录体系规范,目前已接入 x 个项目,大大降低开发者的项目上手难度,提升开发效率

可见第一个和第二个例子效果的差别,如果你只说封装了个组件,我会认为这是一个很常见的工作内容,没办法吸引到我的注意力。面试官想看到的是有深度、复杂度、值得深挖的东西。

自我总结

其实个人评价这东西,可以写也可以不写,一般这一点我认为是展现你亮点的一个栏目。

可能有部分同学会在这里写,热爱前端、刻苦耐劳这些,但这些我想很多做前端的同学。。都是会有的一些品质。面试官看到这些字眼,可能就自然而然忽略了。

所以这个环节,就是你的show time,比如

  1. 我leetcode周赛第一名(雾)
  2. 我是 react 的核心 contributor(雾)
  3. 我开源了 100w+ star 的 vue 前端框架(雾)
  4. 编程lv6(雾)

面试官如果能看到上面这几种类似的自我总结,想都不用想,直接call来面试了

技巧总结

如何写简历这一块就算是写完了,其实我也只是提供了一些思路和技巧,这些都不是固定的。固定的是,你的简历要让面试官认为你是一个能力很强/潜力很大的人,你做过一些难度很大/复杂度很高的事情,工作外你还是个很活跃的leetcoder/sharer/open source worker

满足上面三点,你就会拥有一份在招聘市场非常抢手的前端简历(但是学校学历那块还是很的啦~)

简历投递技巧和策略

简历投递我相信很多同学都有过这些担忧:

  1. 好多渠道啊,boss、拉勾、内推、官网,怎么选好呢
  2. jd里面好像好多东西没接触过呀,但又想投咋办
  3. 公司就这些了,机会说多不多说少不少,好怕不过,焦虑啊
  4. 我拿了这个offer,但是还想面,怎么办

投递渠道

我的主要投递渠道有三个,boss、内推和官网。

boss的话,响应速度会比较,你sayhi之后,给他发简历,如果合适匹配的话,基本上一两天内就会约你面试。

内推的话,我有通过编程沸点内推,投了神策、牛客、迅雷,但是。。还没被邀请过面试尴尬,可能也有地区不同的原因,同一个市会更高优先级。更加理想的内推是直接把简历送到睇到面试官手上,这样就能直达面试了。

官网投递的话个人建议还是少投,感觉这里投递的优先级比较低,而且如果这里的简历不通过,你在别的平台投的简历就过不了了。当然别的平台也是简历被挂的可能,但个人觉得官网投递更容易挂。因为目前很多公司都用了moka这个第三方招聘平台,估计里面会有学历一键筛选功能,一键就挂,太蓝了~

简历匹配度问题

大家可能看到jd里面会说,要掌握什么技术、精通什么库,有什么的使用经验,其实这些都是希望你有,但不一定要求你必须有。对于大多数公司和业务来讲,可能大多数都是画画UI,写写界面,其他技术接触的少很正常。

所以就像上一节简历编写里说到的,你需要在简历中体现到你是一个有潜力的人,这样无论是什么技术什么场景,只要能让面试官感受到你是有潜力的,上手其实都是分分钟的事。

比如说,公司要求会react,但你只会vue,没关系的,你只要vue掌握的够熟够深,面试官一样会认为你可以胜任这份工作。

重中之重 - 投递策略

接下来到了最关键的环节,机会只有这么多,我们应该怎么安排自己的投递顺序呢?

真实案例:我身边朋友亲身经历过,在年前他把广州想去的公司都投递了,欢聚、虎牙、bigo、cvte等几个比较大的都投了,虽然基本都进二面了,但都止步于二面。除了面试表现这一原因,我认为更大的因素是,没有很好的规划投递。在面试上面那些有规模的之前,他确实面了不少小公司,有一定的面试经验和状态,但对于心水想去的公司,应该谨慎规划好投递顺序,以更好的状态去迎接会好一点。

因为只要挂了,就有六个月的投递冷静期,也就意味着失去了一个机会了,广州非bat的大厂二十根手指可以数完,太了~所以投递要谨慎再谨慎。

我的投递策略

  1. 分别整理出广州、国内大部分耳熟能详的互联网大厂
  2. 将这些大厂分类为头部、一线、二线
  3. 把投递轮次分为三轮,第一轮是不太会去的,第二轮是必拿下的,第三轮是想去但是难度拉满的
  4. 然后每轮投递都分为市内市外,如果是想留在市内的,优先投递市外获取经验
  5. 每轮投递控制在10 - 14个公司内,不然会应付不来
  6. 当然要预备我一家都拿不下的情况,所以部分想去的小公司,或者很有把握能进的公司,可以适当留作保底投递

上面就是我的投递思路。首先就是整理数据,然后就是根据投递轮次和喜好做个排列组合了。可以根据理想工作城市合理调整投递顺序,当然每一轮投递,简历都不是必过的,所以正常来讲不会出现同时面10 - 14个。

当到达第二轮面试,就要更加重视起来,因为这一轮基本决定了你求职之旅的大部分收获。如果有幸第二轮拿下了心仪的offer,你就可以开启摆烂模式直接一把梭把后面的公司都开投了。如果第二轮不幸,那第三轮压力就更大了,当你手上拥有offer和没有,面试的状态是会有所差异的,有offer的时候你会更加自信从容,相对的表现就会更好。

说了那么多,其实就七个字,第二轮必须拿下!!!

offer 与 面试间的平衡

当有公司想你抛橄榄枝的时候,我还想面怎么办?

首先要看这家公司是不是你目标心水的公司,如果是,后面要不要再面都不重要了,你可以像上面说到那样,开启摆烂模式开投,看要不要多给自己一些选择空间,或者是拿到更多的一些面试经验。如果不是,其实就可以拒绝掉了,或者是看看自己base或者包裹能拿多少,给自己参考,注意不是刷base啊(保命)。。。只是让自己心里有底。

通常hr面之后发offer,可以给自己留个3-5天的思考期。。因为我也不知道可以拖多久,所以我想3-5天应该不会太过分,不过通常不急的话,一周我认为都是合理的。至于是去是留,就看你个人的选择啦。

面试如何说出让面试官认可的答案

对于这一模块,我是有比较大的感悟,因为10家公司的技术面我都通过了,我想我掌握了一些技巧,打动面试官的技巧

最根本的原则是条理清晰,无论是基础、原理源码还是项目,如果你都能很顺畅、有条理地表达出来,即使面试官没有了解过这个技术或者业务场景,但听到你的阐述之后,他有了大概的印象,这样就能让面试官相信你是熟悉的,有深入过的

另一方面,你需要事先准备好你需要回答的内容,比如介绍项目细节,现场才组织语言的话,表达起来会比较磕绊,且很有可能想到什么说什么,没有条理。这样的表达,如何让面试官相信。。这个项目是你负责的。

下面我从基础、原理源码和项目三个方面整理下回答技巧

基础

基础这块的技巧,可以用是什么、为什么、怎么做的思路去回答。用原型来举例

原型:如果我们想让一个对象关联一个提供共享属性访问的对象,我们可以用原型,通过prototype属性去关联目标对象

原型链:如果想要原型对象关联别的原型,就要用到原型链__proto__

也就是说,原型是用来增强对象的,原型链是用来增强原型的。当我们查找一个对象中的方法或者属性时,会优先查找对象本身,如果没有就会查找整个对象的原型,如果这个对象的原型没有,就会通过原型链继续网上查找它所关联的其他原型,直到找不到为止

上面三点的回答,基本涵盖了是什么、为什么、怎么做三个方面的回答,通过这些信息我们能大致了解到原型、原型链是什么,是用来做什么的,怎么做对象关联。

上面的答案是我理解过后整理出来的,当然如果有更好的答案大伙可以提出来,我这个不一定是最好的答案(保命)

原理源码

对于原理、源码,我建议大家可以以水文为基础,协助自己去调试、阅读源码,但千万不要认为看了水文解析,你就真的懂了。只有亲身阅读调试过源码,你才能知道这个库是怎么运行的,它的实现原理和思想是怎么样的,否则你会遗漏很多实现细节,面试官可能稍微问深入一点,你就答不出来了。

就以我自己看react源码的经历,我前前后后花了半年时间去理解,每一次调试我都有推翻掉之前错误的理解,每一次调试都会给自己提问这一块为什么要这样做。

同时我也有将我的理解分享给身边的前端伙伴,让他看看我的理解有没有什么漏洞,从而不断去打磨我对react的理解和认知。这里很感谢我的伙伴,hin,与我在前端学习上共同进步的挚友。

对于原理源码这块的面试现场表达,我认为以由浅入深的方式介绍会比较好,同时可以适当的延申,这样可以展现你知识面的广度,下面以微前端的应用启动原理来举例。

微前端应用启动其实是非常简单的,以qiankun为例,我们知道配置子应用会填上子应用的html url入口。通过这个入口,我们可以用get请求的方式拿到子应用的一整个html文本。这时候解析整个html文档,去获取html中的link、style、script标签,拿到之后就可以在主应用中append这些标签内容,从而达到启动子应用的目的。

延申:同时我还有阅读过seajs的源码,seajs也应用到了相似的方式。传入define的工厂函数,可以理解为就是我们的模块,在加载模块前,我们会将模块字符串化,去解析获取模块中引入 (require) 到的模块。在模块加载的时候同步引入依赖的模块。我认为qiankun的做法也是受到这一思想的启发。

上面两点的回答。。大家也是看看就好了(轻喷),因为也只是个人的愚见,有不同想法的可以评论区提出来,大家探讨。回答这一块我是从用法入手,简单表明了主应用启动子应用的原理,再而谨引申seajs中的模块化实现也是运用相似原理。(这样就能体现我的深度和广度了吧,雾)

为什么说要由浅入深呢?因为原理源码的实现都是比较复杂,调用链路有可能也会很深,所以如果用描述调用链路的方式去解释,面试官有可能会觉得你是不是在背书呀。更好的方式是我先描述它的本质,再去介绍它的实现细节,这样做表达会更清晰,面试官也不会听的云里雾里。

我介绍的例子会不会造成源码内卷,以后大家说微前端都不能打动到面试官了(担忧)

项目

项目这块算是一个比较有难度的点,我相信很多小伙伴都会说。太了,天天都是画UI,报表页活动页,咋样才能让自己脱颖而出呢。

我的建议是,可以适当包装下项目经历,比如你可以找些开源的,有一定复杂度的项目去研究,然后尝试融入自己的经历中。但是,这也是一把双刃剑,用的好可以体现你项目复杂度,用不好面试官会认为这个项目不是你做的或者是伪造的。

所以你最好有 90% 的把握,可以hold住面试官的所有可能会问的问题,你才把他写上去,否则真不建议,很多东西都是自己做印象才会深刻。且包装内容尽量控制占项目经历的 20-30% 左右,太多只会增加自己风险。

接下来说的是表述的关键要点,我觉得这个要点会有点绕口,但你一定能明白我的意思

我们要将复杂的应用场景用最简单清晰的话语表达出来,但不能让面试官认为这是一个简单的场景或者是设计

是不是有点既要又要全都要那味。是的,我们要做的是让面试官知道项目的大概背景前提,然后我们遇到了什么难题,想到了什么解决思路,设计了那些方案,最终是怎么解决的,后面复盘有没有想到什么改进优化的地方.

上面是回答的思路,但不一定要固定按照这个模板回答,硬套上去也会比较别扭,能让面试官知道你做的是什么,遇到什么难题,怎么解决基本就好了,你也可以适当挖点坑引导面试官问你改进和优化方案。

如何准备hr面

hr环节就相对轻松了,但是也是有被挂的风险。可以站在用人单位角度来思考,hr会希望你是什么样的人呢?

  1. 性格不一定说非常外向,但能轻松融入团队,满足团队协作
  2. 团队稳定性,不会随便离职

这两方面只要不表达的比较离谱,一般都是可以轻易过的

谈薪

如果是base比较低,可以大胆直接提double base,如果薪资是较高,也可以往高喊,最终定薪还是根据面试评级来的,只要在评级区间内,涨幅都可以商量。

总结

虽然面的公司没有说非常多,但大概能总结出一些规律,很多时候只要简历过了,跟面试官聊的比较投缘,有来有回,拿下的几率都是比较大的。所以除了要整理面试表述外,平时多训练自己沟通的能力和技巧,说不定在面试中会起到意想不到的作用。

持续一个多月的求职之旅终于结束了,下一段旅程也即将开始,2022我来了。

本网站是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 本网站还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 除此之外,本网站还拥有一个活跃的社区,您可以在社区中与其他前端开发者交流技术、分享经验、解决问题。我们相信,社区的力量可以帮助您更好地成长和进步。 在本网站中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!