在网络上白嫖了这么多年技术,现在也想输出一点自己粗陋的见解,希望可以帮助到你,砥砺前行。
四年多的时间,我从抓耳挠腮的菜鸟到可以独当一面高T,薪资涨幅超过1000%,10倍不止。这一切都要感谢公司提供的平台、自己付出的努力、同事伸出的援手。
关于我
程序员中的底层卑微人士的我,于16年毕业于一所不知名的专科学校。空有一番豪云壮志的我便试图开始开始混迹于大神云集的程序员行业。
工作经历
在前端开发大肆流行的风口,走出学校的我凭借着切图码页面的功底, 在一个二线城市找到了一份温饱的工作,月薪 2900 、没有五险一金、偶尔加班。
虽然是一个二线城市、一家创业公司,但是因为我的学历和能力,无疑是公司最低端的人,还好同事人不错且公司就我一个前端,独苗,所以那时的我算是公司前端的天花板了吧。哈哈。虽然我只会html、css。
半年后,公司卒,大家挥手告别,各奔前程。
面试了七八家公司之后才有幸能加入一家中型公司,电商行业。在这里真正的体会到了互联网产品的完整的体系,还有就是无尽的加班加班加班。曾在11点下班的路上被老板打电话“回去加班,如果做不完的话,第二天自己去辞职”。此时的我,js 还写的不利索。虽然是加班,虽然是单休。但是我依旧每天晚上看视频、看教程,学习自己不会的知识,直到深夜。
因为我在技术上面试图求助于我的leader的时候,被告知,“大家都是打工人,我不可能花时间在你的身上帮助你提高技术,得靠自己”。自己暗暗发誓一定要成为一个高T。
四个月后,业务组濒临解散之前,主动辞职到大城市去接受社会的毒打。
受限于自己的学历和工龄,在北京四处碰壁,才有幸加入了一家公司。
依旧是创业公司,依旧是我一个前端。公司除了我以外,都是985 211或者留学归来的同社会顶尖人才。还好同事都比较nice。不加班,平时业务也比较清闲,所以花费了很多时间在学习新的技术上。
继续夯实自己的js基础、学习了React技术栈并重构了公司项目,学习webpack、网络协议等等一切一个前端应该掌握的技能。
并且坚持写技术博客。,这一点很重要。
积极参加线上线下的论坛活动。学习新的知识。那时的我就像一个元素精灵种子遇水一样(地域男爵桥段)。
深知自己学历的短板,报考了自学本科考试,并在三年后顺利拿到了毕业证。这一点也很重要。
来北京这一年,都是在不停的学习、学习、学习。
一年后,公司卒。
那时的我发了一个朋友圈。
次月,再一次加入了一家创业公司,还好没有倒闭,在职至今。
我欢呼雀跃终于不是一个人在战斗了,10多个前端小伙伴,如火如荼的干着。从公司只有一个B端系统,到几十个。从10端个前端小伙伴,干到只有我一个。你们能体会到我的那种心情么?能么?我特么....
打不死你的会让你更强大,多年的前端单兵作战经历,让我的攻坚能力特别的强,这也是我最近找新工作的最大优点。
有人可能要问了,为什么不换个公司呢?我的想法是:技术人员不要频繁的跳槽,不利于你技术能力的沉淀。我们要知道,技术是服务于业务的。真正能给公司带来现金的业务的发展。给我们自己带来价值的是你在这个业务中的成长。虽然技术的能力也同样重要。
但是又有人要问了,那你为什么在这个时候离职呢?每个人都有自己的计算逻辑和想法,深夜卜了一挂。现在走最合适。
面试准备和经历
网上各种面试教程、各种技能树层出不穷。但是终究都是别人的东西。包括我接下来说的也可能只适合我,如果能帮助到你,倍感荣幸。
我的面试准备大概准备了三个月的时间,你可能觉得时间很长。但是按照我司的每天工作时长来讲,夹缝中求发展,这个时间也不算长。
因为我们长期伏于业务代码,好多基础知识点会有些许忘却,所以第一步就是知识点的复习。
简单的说一下我复习的知识点。
第一步:复习知识点
- React相关知识
- Webpack相关知识
- ES6、7
- JS基础知识
- 网络知识 包括但不限于 http2 https 等
- nginx
- 算法
- 网络安全
- css3 等
- 设计模式
- node
- 常见的手写代码题
- 复习自己撸过的源码
- ......
当然每个大的知识点细分下去会有很多细小的分支。我们尽可能都复习到。
这里我们要根据自己的能力和技术栈来计划自己的复习点。不要一味的相信那种 ...工程师必须掌握的...技能。自己经常使用什么技术,使用什么框架只有自己清楚。比如我来讲,我不会去复习 TS 、GraphQL等。虽然自己有学习过,但是工作中并不使用,没有多深入的见解。把时间花到点子上。 面试中提问到了就说自己工作中不使用,不怎么掌握,但是了解一点(可千万别说自己不知道,一点都不会)。要是你真的一点都不了解,说明你还有好多东西要学,要继续努力。
这里给自己加点自信,人不是什么都会的。面试的时候你这样想“要是LZ什么都会,就不是你面试我了,而是我面试你”,虽然面试官也不是什么都会。哈哈哈。心态很重要。
第二步:刷题
求职必走的道路,网上的面试题特别多,刷个半个月基本上都差不多了。我所遇到的题目,我在后面会列出来。
第三步:写简历
大多数人会忽视一份好简历的作用,以及如何写一份好的简历。因为简历是一个拿到面试机会的敲门砖,所以如何写好一个简历是一个很重要的软技能。
拿我自己来举列吧。专科毕业的我明显是我的短板。所以学历等资质我不会放到显眼的地方。项目能经历丰富和经常性的博客输出是我简历的最大卖点。所以会优先展示。
在这里我要着重说一句:写博客真的是一个稳赚不赔的事情,无论从你的求职还是自己的技术沉淀上来说。有些人会觉得自己文笔不好,写的太烂。说句实在话,没有人一开始就写的很好。都是慢慢练出来的。就好比我自己的博客,到现在依旧写的很烂。但是又有什么关系呢,好记性不如烂笔头。常年写博客最起码代表着你注重技术的积累和反思复盘。 写博客并不局限于写什么新的技术点。自己的反思,复盘,见解,见识,都可以。
简历中自己的博客地址一定要写到最显眼的地方。
个人经验,最近的面试,大多数面试官都会和我谈及到我博客中所写的一些东西,深入来讲讲等。 效果都不错。
项目经历切记不要流水账
大多数前端同学都是这么写的
- 参与某某项目的开发
- 根据需求文档编写页面……
- 使用props,state来做状态管理
- 使用**.js 来实现某某功能
- 使用**.js 来实现某某功能
- 项目的上线和需求迭代
- ......
这种流水账式的简历,一点可嚼性都没有。寡淡无味。我们要多写一些难点、亮点项目。比如可以这么写。
- 负责整体前端项目的开发和进度把控
- 需求评审和项目讨论,并提出建设性意见
- 使用lazyload技术加快首屏渲染速度,1s内首屏渲染率达到90%... (数字总会让人感到真实)
- redux 管理全局状态,state分管各组件状态,使用优化手段来降低render率,提升性能。(面试官会问你 优化等手段,正中下怀)
- 项目上线做业务预期达成率的评估和分析。(复盘的习惯很好)
- 项目中的难点:,使用手段或者方式来解决,并输出了技术文档或者是复盘文档。(显示你的攻坚能力)
虽然两种方式都是写的同一种经历,但是明显后一种要比前一种更让人眼前一亮。
作为面试官的我 就有点想多了解你一点。
第四步:找练手公司
如果你不是信心满满,就先找练手公司吧。大多数人都是这么做的。在你多年没有参加过面试的时候,先找几家练手公司显的尤为重要。最起码了解一下市场行情和面试真题。
比如我,就是先找的几家非知名的大公司和上市公司来做练手。自己想去的公司放到后面来面。疫情过后基本上所有公司都是线上面试,这也给我们省下了不少的时间。
几家过后就会发现目前市场上面试题问的就是哪几种。因为排的比较多,所以我每天基本上都是重复的回答着相同的问题。
耗时一个多月的面试时间。也顺利的拿到了 美团、阿里、头条的offer。虽然也挂了不少,有的也是一看非全学历 就直接pass的。我也是没有办法。
最终也是谈到了一个令自己满意的待遇条件。想想自己着4年多的技术发展路,坎坷但是一直都在努力。作为一个专科毕业的同学,能发展到现在,确实不错了(先肯定一下自己),但是还是要继续努力,砥砺前行。
面试题目
在面了多家公司,包括多家大厂的不同部门之后。整理了一些面试手写题目。
- 手写Bind、Apple、Call 【美团、神策数据】
- 手写debounce、throttle 【美团、快手】
- 基础算法题:冒泡、快速、插入、深度优先(DFS)、广度优先(BFS)、二分查找 【不知名的小公司】
- 合并乱序区间 【快手、美团】
- 连续子数组最大和【阿里】
- 千分位【阿里】
- 无重复字符串的最长子串
- 数组转树形对象【头条】
- 数组拍平和对象拍平【快手】
- 数组乱序
- 手写一个简易版的redux
- 两数之和
- 合并有序数组【便利蜂、快手、美团】
- 字符串全排列 【头条】
- 实现一个dialog 【快手】
- 实现一个并发控制的request【快手】
- 实现一个多维数组代理器 【快手】
- 实现一个lazyman 【阿里】
- 深克隆
我所经历的就是这些。当然还有一些简单的算法题。DP相关的,都比较容易。只要刷过几道DP题的基本上都会。
鼓励大家自己实现这些代码,多多学习,如果你想直接查看答案,可以到我的公众号中查看。
总结
这篇文章主要还是记录一下自己最近的心得体会。和面试中的一些我认为有用的点。不是特别详细,希望大家可以补充。
四年多的时间,自己成长很多,但是还是没有达到预期。还得努力。
自认为四年内成绩平平,还望各位大佬多多指教,不胜感激。
如果有帮助到你,可以点个关注。愿我们 只争朝夕不负韶华。
欢迎交流讨论。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。