社招进一家大厂最有效的点大概就是另一家大厂的经验了。手动狗头。
那没有大厂经验想要进阶挑战一下呢?
前端进阶,可以从写简历开始。看看自己有什么可写的,写好后反向学习和准备。
教育经历和工作经历没有空间,我们能改进的只有专业技能和项目经历了。
我有两家大厂工作经验,阅读过几百份简历,这几年面试过近百人。最近有童鞋请我帮忙改简历,我发现一下还说不完,就总结了出来。
一、专业技能写精通,面试官难以抗拒
对于边界范围相对小的专业技能至少有一两个写精通
我们经常会用了解,熟悉,熟练,精通来描述一项专业技能的掌握程度。如果近十项的专业技能都是熟悉,那这份简历也有点平庸了。
尤其是在教育经历和工作经历等其他方面都不出彩的情况下,这里更要突出重点!
1、基础知识里的HTML和CSS可以精通
作为标记型语言或者说规则型的语言,没有很复杂的内在语言逻辑,我们可以通过花一到两周时间通读API文档和相关书籍来达到“精通”。
如果简历上写了精通,面试官肯定不会轻易放过你,一定要花费精力准备才行,面试的时候相关问题能对答如流,那我们的目的才算达到。
随着学习的深入,我们懂得越多,就会发现我们不懂的也越多了…这个时候不要怂,一些冷门的知识答不上来也不要紧,达到面试“精通”就可以了。
说一个自己的体会:我在校招的时候,简历上就写了:精通HTML和CSS,xxxx,工作了两年之后,我默默把精通改成了熟悉。
简单总结了一下,除了常用的基础知识,搞清楚下面这些概念,面试“精通“就稳了:
- HTML标签,右键查看几家网站的源代码,要包括电商、搜索引擎、资讯等各类网站,了解每个标签的作用
- CSS盒模型、浮动、布局、各种居中对齐的实现
- CSS3动画、动画的性能
- H5带来的新特性
- 语义化、w3c标准、SEO
- 无障碍阅读
- SASS、LESS等CSS语言扩展
- 工程化规范:eslint、BEM等
2、项目中用到的场景可以精通
比如说项目中用到的框架React,是可以尝试去精通的。写上了精通,就要做好准备,如果在项目中仅仅只是熟练的使用,那离“精通”还太远。
React核心功能就是构建UI界面,我们还是可能通过一个短时间强化学习来达到“精通”的。
- 框架本身可以通过读文档、看源码来深入学习
- JSX的运行离不开babel
- 还有状态管理redux、路由router套装
- 打包使用的webpack
- React和React-Native
个人体会,redux相关的flux、react-redux、redux-thunk、redux-saga等等一套我就陆续花了小一周来理解,精通要慎用,除非你已经准备好了。
最好根据自己的项目经验来扩展“精通”方向,比如说项目中用Vue比较多,就选Vue方向,这样准备起来有一些基础,同时项目经验也能提供佐证。简历上写了就得反向过来驱动去学习,这个也是一个进阶的路线。
3、对业务技能做一些补充说明
我以前做过数据可视化相关的业务,虽然项目没有那么复杂,但是我还是花了很多时间去学习。
简历里可以这么写:熟悉Web端数据可视化,熟练使用echarts、d3等工具库实现各种数据可视化场景,熟练的使用Canvas进行图形和动画的绘制,了解SVG和WebGL,对图形和动画绘制过程中的性能优化有一定的理解。
这句话大致可以传达出我对做数据可视化的业务很熟悉,有开源库无法满足的定制需求还能尝试自己实现,对web提供的API比较了解,有一定的图形和数学的基础,会关注可视化业务的性能。而且这一条里提到的内容都是有关联的,会更有说服力。
数据可视化会涉及到数学和图形学的基础,然后就是Canvas等WebAPI的使用了,也有很多开源的工具库可以使用,如果项目有用到,也可以花一定的时间去达到“精通”。
4、精通不要随意写
精通的专业技能不要写太多,毕竟时间也不允许,如果和工作年限不匹配反而不真实。更不能随意写。
例如:JavaScript不要随意写精通,即使你使用的很熟练了。
不同于HTML,JavaScript是编程语言。它有很多自己的特性,有优点也有坑。我们可能需要再去学习一到两个其它编程语言,才能真正解释得清楚,一门语言的优点和缺点往往是需要和另一门有某些相同点的语言对比得来。
这还只是语言的本身,还有它运行的平台V8引擎,还有各个厂家的浏览器提供的特性。我认识一个有事没事就读V8引擎源码的大佬,如果你敢写精通JavaScript,能把你问到泪流。
个人经历:记得我有一次面试被问到这么个问题,数组的sort方法是怎么实现的?它的时间复杂度?我只能如实回答我没有了解过,如果在某些场景下需要优化,可以根据需要去实现对应的排序算法。幸好我简历写的是熟悉JavaScript…
二、项目经历挖掘整体价值
前面的专业技能已经体现了个人的技术特点,如果有精通或者熟练这样的程度就需要在项目经历里同步的体现出来。当我们总结项目的时候,应当把重点放到整个项目,而不再是个人!
如果我们的工作经历里只有负责业务的开发以及辅助主程完成一些功能的实现,写到简历里只能是平平无奇了。与前面吹下的牛,各种精通,也是毫不沾边。
1、站在架构师的角度来总结项目
不想做架构师的程序员不是好螺丝钉。
总结项目的时候要总结自己在这个项目里学到的东西,而不只是自己负责的那一小部分:
- 项目用到的框架,比如说React,选它肯定有理由,比如说项目里其它业务同步使用React-Native,同步使用Taro框架开发小程序,团队里APP使用RN进行混合开发等等,最不济的,团队成员都是这个栈,喜欢用也是一个很重要的理由!
- 用到了webpack,如果通用的配置无法满足项目的需求,还有定制化开发的loader或者插件就更棒了
- 用到了持续集成,自动化部署,提升效率
- 项目配置了代码分割,来优化首屏的加载速度,做了各种策略来进行性能优化
- 项目自研了一个框架来解决某些问题
以上只是举例,可以根据具体的项目来总结。
2、站在主程的角度来总结项目
整理了一下,似乎前端开发里面的难点也没有那么多…例如:
- 业务里有无限加载的DOM,解决了性能问题
- 数据可视化也属于一个难点
- 富文本编辑器的开发
- 复杂的CSS3动画处理
主程在一个团队里往往负责难点的攻关,和架构师的工作内容常有一些叠加。如果在项目里某一个难点不是自己开发的,但只要把这个问题交过来,同样可以做好,就可以写到简历里。无需强行安在自己身上,说明是团队完成的也是一样。
3、站在项目经理的角度来总结项目
一个产品完成后这个产品有多少用户,取得了怎么样的成绩,这些成绩里有哪些是和技术相关的。
例如:
- 经过前端性能优化,页面的加载速度变快,注册的用户变多,转化率提高
- 完善的错误提示,极速的交互响应等可以带来用户体验的提升
- 向下兼容古老的浏览器,可以照顾到极少的那一部分用户
- 精细的响应式设计,让不同尺寸设备的用户都能有完美的体验
这些都是和技术有关的。
4、吹牛
扯一点个人经验:我毕业第一份工作是一家大厂,技术团队很厉害,做的项目也是公司核心业务。然而我在团队里做的主要是业务开发,刚开始进步很快,后来渐渐混吃等死…不知道有多少人和我一样…
当时公司用的一些技术放到现在仍有一部分很前沿。公司有自研的框架,然而在我入职前就已经稳定了,偶尔才需要维护。还有自研的构建工具,当然也是在我入职前就有大佬开发好了。UI组件库也有了。还有很厉害的服务端渲染技术,配合HTTP的chunked编码传输把首屏时间优化到了极致…
虽然这一切牛逼的东西和我关系都不大,但是我是这些技术的忠实践行者啊!后来跳槽面试的时候,直接吹项目里用了啥啥技术做了啥啥,面试成功率100%。
最后,整理不易,如果感觉对自己有帮助,记得点赞收藏~