全栈工程师是当今最著名和需求量最大的 IT 职位之一,很多IT 企业正在寻找全栈开发人才。但随着 IT 行业复杂性和动态性的增加,成为全栈开发人员比以往任何时候都更加困难。
什么是全栈工程师?
全栈工程师可以在应用程序的后端和前端等应用程序开发过程中的任何一个环节工作。应用程序的后端包含逻辑处理、用户身份验证、数据库交互、服务器配置等。应用程序的前端是用户能看到和与之交互的部分。
如果你想成为一名全栈工程师,你不必精通每一个细节。但是,在开发应用程序时,全栈工程师能够同时处理前端和后端,几乎对所有的技术细节都有涉猎。
前端知识
1.基础
基础知识,就是可以写一些基本的样式,并能对页面的元素进行操作。举例来说,就是我们用Spring和JSP写了一个博客,然后我们可以用jQuery来对页面进行一些简单的操作,并可以调用一些API。因此,我们需要基本的HTML / CSS知识,以及JavaScript的开发经验。
同时,我们还需要对DOM有一些基础的了解,才能做一些基本的操作,如修改颜色等等。在这种情况下,最简单的方案就是使用jQuery这样的工具。当然,如果可以自己操作DOM是再好不过的了。
HTML/CSSCSS 预处理器 的优点 (不一定需要了解如何深入使用它们,但是应该了解它们的用途以及它们对开发的帮助)
CSS Media Queries: 定位不同的设备并编写响应式CSS
Bootstrap:一个帮助设计和布局页面内容的框架
JavaScript知道如何 处理DOM ,同时也知道 JSON 是什么,以及如何操作
掌握重要的 语言特性 ,如 functional composition(函数组合),prototypal inheritance(原型继承),closures(闭包),event delegation(事件委托),scope(作用域),higher-order functions(高阶函数) 等
学习如何正确地构建你的代码,并将代码 模块化 ,像 webpack ,browserify ,或者 gulp 这样的构建工具将会很有帮助
了解有关 测试框架 的知识以及它们的重要性
了解一些重要的 ES6 新特性
2.进阶
前端进阶技能,就需要我们对页面进行更复杂的操作。所以,基本上以下这些技能都是需要掌握的:Ajax和JSON这两个技能是必须的,当我们要动态的改变页面的元素时,我们就需要从远程获取最新的数据结果
RESTful是需要掌握的,因为要提交表单到服务器;未来还需要Fetch API,ReactiveX这些技能。
HTML的语义化
DIV / CSS
模板引擎和SCSS / SASS
后端语言
成为一名全栈工程师,一般来讲仅仅掌握一种语言是根本不够的,可以再选择一门语言学习。Node.js:这是一个很好的选择,因为 Node.js 本身只是一个 JavaScript 运行环境,这意味着你不需要学习一种新的语言。而且Node.js也有着良好的框架: Express
Python:Python 是现如今最火爆的语言之一,开发的一些流行框架是 Django 和 Flask 。
Java:涉及到全栈 Web 开发,仍然是一个需求量很大的语言。有Spring、MyBatis、Hibernate等一系列框架。
PHP:仍然是非常需要的语言,它是当今 Web 开发的基石。可以学习的框架有thinkphp、yin
数据库 和 Web 存储
当学习构建 Web 应用程序时,在某些时候你可能想要在某个地方存储数据,以便以后再访问它。所以你应该很好地掌握与 数据库 和 存储 有关的以下主题理解 关系形数据 的好处,例如:SQL
学习 NoSQL (非关系型) 数据库,例如:MongoDB
知道如何使用你选择的后端语言连接数据库(例如: Node.js + MongoDB)
理解像 Redis 或 memcached 这样的内存数据存储的 好处
掌握 Web storage(存储) 可以在浏览器中存储 session ,cookies 和 cached 数据
HTTP & REST
HTTP 是互联网上的无状态应用协议——它允许客户端与服务器进行通信的方式(例如,您的 JavaScript 代码可以通过 HTTP 发起一个 AJAX 请求 ,来获取服务器上运行某些后端代码的结果)。你应该掌握的内容如下:
Web应用架构
当你掌握了 HTML / CSS ,JavaScript ,后端编程 ,数据库 和 HTTP / REST之后,那么接下来就是棘手部分了。这时,如果你想创建一个有点复杂的 Web 应用程序,你需要知道如何构建代码,如何分离文件,在哪里存储您的大型媒体文件,如何在数据库中组织数据,在哪里执行某些计算任务(客户端 vs 服务器端)等等。
下面这些内容,可以帮助你了解如何高效地构建Web应用程序:学习公共 平台服务 ,例如 Heroku 和 AWS 。Heroku 允许您轻松上传您的代码,并且不需要多少的配置 或 服务器维护就可以轻松启动和运行应用程序。AWS 提供了数十种产品和服务来帮助存储,视频处理,负载均衡等等。
针对应用和现代浏览器进行性能优化
最重要的是,你应该尝试和其他开发人员合作,看看 GitHub 上热门的项目代码库,并从高级开发人员那里学到尽可能多的东西。
Git
Git 是一个 版本控制系统 ,允许开发团队中的开发人员跟踪代码库的所有更改。 Git 很重要,这能帮助你正确获取最新代码,更新代码,修复,并修改别人的代码,等等。
算法和数据结构
虽然很多前端工程师、全栈工程师都觉得算法对他们来说无关紧要,但是作为一个合格的开发者,还是应该掌握基本的算法与数据结构,毕竟这才是编程的基石。
算法部分
二分搜索 Binary Search
分治 Divide Conquer
宽度优先搜索 Breadth First Search
深度优先搜索 Depth First Search
回溯法 Backtracking
双指针 Two Pointers
动态规划 Dynamic Programming
扫描线 Scan-line algorithm
快排 Quick Sort
数据结构部分
栈 Stack
队列 Queue
链表 Linked List
数组 Array
哈希表 Hash Table
二叉树 Binary Tree
堆 Heap
并查集 Union Find
字典树 Trie
学习掌握基础的算法知识,同时可以在 LintCode刷题配合巩固。
总之,根据一万小时定律,熟练的掌握全部方向的知识内容,每天都花时间来钻研也得花10年左右的时间。所以,全栈工程师决不是一夜练成的,你需要打好技术基础,强化核心技能,并持续学习才能应对更多的挑战。
已经在准备面试了,但短时间内无法增加项目经验?项目缺少团队协作?
九章算法《全栈开发基础项目课》,专为转专业小白、零开发基础的同学准备。不仅有FLAG工程师亲自带你做项目,更能帮你搞定全栈开发 entry-level 的所有面试问题。
九章算法,硅谷一线工程师在线直播授课,已经帮助30000+人成功拿到心仪offer。
更多课程信息请访问:九章算法