本篇的作者是来自淘系 D2C 团队的泽壹,作为准入职的淘系前端开发工程师,写给师弟们的这封信有着中肯的建议和诚挚的祝福。
你好,我是准入职淘系前端开发工程师泽壹,去年春天到夏天的求职历程还记忆犹新,走过些弯路,大一是车辆工程专业,大二时候转入软件工程专业,大二下学期接触前端,大三秋招很荣幸拿到阿里淘系 offer,这一路走来说下心得体会,希望可以帮助到正在求职的同学们。
在阿里,我认为挑战与学习并存。
曾在社交平台上看到阿里师兄对 ATA 内部技术社区赞不绝口,` 我不止一次提过 ATA 那仿佛宝库一般的内部技术社区,你发的文章以及技术评论,会收到来自集团各个 BU 的大佬一起探讨,甚至转移到钉钉 1:1 深入交流,真的是太美妙了 `,当我切身目睹 ATA 这一片知识汪洋后,确实名不虚传,你可以化身为浪里小白龙投入到知识海洋中。
前端的深水区比如涉及到计算机图形学的互动图形和可视化,算法与前端交叉融合的前端智能化,在淘系都有相应的场景,充满挑战,天花板效应在这里似乎是不存在的,同时在手淘上有你写的代码也是可以向经常逛淘宝的女朋友吹嘘的一件事。
技术是安身立命之本,我想很多同学跟我一样在前端学习的道路上是独自前行的,在刚开始接触前端的时候我是根据岗位的 JD 制定学习计划,我将前端学习过程分为 3 个阶段。
1.入门阶段
所谓基础不牢,必然地动山摇。入门阶段要打好基础,《JavaScript 高级程序设计》、《ES6 标准入门》、《你不知道的 JavaScript》、《CSS 权威指南》、《CSS 揭秘》我认为都是前端必读书籍。在学习基础知识的时候,要多加练习,而入门最好的方式莫过于模仿,可以尝试模仿一些比较复杂的页面,能够很快的熟悉各方面的基础知识。比如看看别人的页面是怎么布局的,样式是怎么写的,有什么技巧等。同时可以看看 underscore 代码,学习常用的比如节流、防抖是如何实现的。
2.提升阶段
紧接着学习前端流行框架 Vue/React, 两者的官方文档值得细品,除了快速入门以外还有些高级指引、最佳实践,如 Error Boundaries、你可能不需要使用派生 state。同时大家应该在实战中成长,向大家推荐一个全栈练手项目 Spectrum,是一个用于开源社区聊天的,论坛 + 聊天室的结合体,整个技术栈我觉得不错:
前端:React/Redux/React-Router/DraftJS
后端:Nodejs/GraphQL/RethinkDB/WebSocket/Redis
从中你可以学习到很多,比如:
- 如何构建一个 GraphQL 的服务端
- React 如何和 GraphQL 交互
- 如何去用 Redux 管理复杂的应用程序状态
- 如何实现 SSR
等等。
3.深入阶段
深入阶段可以分为两个维度:技术广度和技术深度。
扩展技术广度可以通过多逛逛技术社区,那些你没听到过的技术词就是你要学习的新知识,日常工作中必定会面临一些新的场景,技术广度可以帮助你,知道某个技术能干什么,原理大致是什么,是否适合当前业务的场景等。
技术深度是对技术底层或设计理念有比较透彻的理解,可以阅读 React、Vue 源码,深入理解框架的运行机制以及背后的设计模式,并可以通过对原理的理解来优化代码,这些可以作为项目中的技术亮点。
同时在学习的过程中,一定要多实践,爱折腾,千万不要眼高手低,最后会形成“简单问题不想搞,复杂问题搞不定”,往往问题的本质都是在解决一个个问题的过程中总结出来的。同时通过折腾,逐渐沉淀出一些成熟的项目,能达到解决现实问题的更好,这些都是让面试官眼前一亮、增加面试筹码的有利资产。
所有的面试技巧都是建立在面试者已经具备了相对合格的实力的基础之上。
首先,大家还是要先储备足够的知识,这些知识包括操作系统、计算机网络、数据结构、算法、安全等计算机基础知识、前端知识 和其他的加分项知识。
其次,可以看看同学们的面试经验分享,我认为看面经不是应试的过程,更多的是查漏补缺的过程。
然后,做过的项目要总结完善,面试官会从广度和深度来挖掘项目中的亮点,比如你的懒加载是如何实现的,知道 IntersectionObserver API 吗? 有读过它的 polyfill 吗?给面试官一个选你的理由。
最后,面试的过程中要充满自信,多表达自己的理解,展示自己解决问题的思路。
学习没有捷径可走,在学习的过程希望你能够保持对技术的好奇心,收获一份理想的 offer 固然不易,放下一些东西,专注于事情,内心有相信,行动有坚持,结果有落地,offer 往往是水到渠成的,各位加油,你也可以是个 offer 收割机。
泽壹
2020.3.27