k@M0me’s Humble Abode      博  客   时 间 线   归  档 



如何成为Web工程师
Published on Mon Feb 24 2020 14:00:00 GMT+0000

职位需求

阿里巴巴

科技创新中心-前端专家-上海

岗位描述:

1.持续关注Web技术的发展,掌握新技术的核心点,从中挑选适合公司业务发展的新技术;
2.围绕公司业务进行前端框架和工具的设计和维护;
3.技术攻坚,指导和帮助团队成员在业务中成长。

岗位要求:

1.三年以上前端开发经验,对前端领域一个或多个方向有深入研究,是该方向的专家;
2.熟悉主流前端框架(如React、Vue、Angular等)的原理及演化过程,有一定的前端框架设计经验;
3.熟悉W3C/WHATWG规范,了解规范设计的思考,以及研发过程中的最佳实践;
4.具备良好的沟通、规划和项目推动能力,以及独立解决技术难题的能力。

蚂蚁金服-高级前端工程师/专家-蚂蚁保险

岗位描述:

  1. 与产品经理、设计师、开发同学紧密合作,打造极致体验的互联网保险产品;
  2. 参与多种平台的应用开发,包括Web及Mobile等产品,负责前端交互的实现;
  3. 能充分理解项目需求和设计需求,具有一定研发精神,能解决各种未知问题;
  4. 与团队成员分享经验和新技术,帮助团队成长,学习研究新的技术,并能迅速转化到潜在项目中。

岗位要求:

  1. 熟练掌握移动端H5开发、熟悉主流移动浏览器的技术特点;

  2. 熟练运用JavaScript语言与HTML5、CSS3等技术, 熟悉移动端Web绘图相关高级特性, 如canvas,webGL, CSS3动画效果等;

  3. 熟悉模块化、前端编译和构建工具,熟练运用主流的移动端JS库和开发框架,并深入理解其设计原理,例如:Webpack、ReactJS、Vue等;

  4. 熟悉 NodeJS Web 应用开发,了解koa、express的核心设计思想和原理;

  5. 个性乐观开朗,逻辑性强,善于和各种背景的人合作;

  6. 对技术有强烈的进取心,具有良好的沟通能力和团队合作精神、优秀的分析问题和解决问题的能力;

  7. 有小程序、ReactNative开发经验者优先;

  8. 有开源项目经验和长期维护技术博客经验者优先;

  9. 有全栈开发、具有服务端开发经验优先。

口碑-H5前端开发-上海、杭州

岗位描述:

1、负责面向商家、对内运营体系等的各种企业级泛中台产品应用的前端架构设计和研发工作;
2、参与本地生活前端技术体系建设,包括组件开发、工程化效能建设、多端架构设计、Node全栈、质量监控和保障体系建设等;
3、深入理解业务和产品,不断提升产品的用户体验,技术驱动业务的发展;
4、关注相关前沿技术研究,通过新技术服务团队和业务;

岗位要求:

1、前端HTML/CSS/JavaScript等基础技术扎实,数据结构、网络等基础知识掌握牢固,熟悉浏览器原理机制;
2、精通至少一种主流前端框架,如React/Vue/Angular等,能深入理解其设计原理,并对其他类似框架有所了解,有库或框架设计者优先;
3、理解前端工程化,熟练使用相关工具,如Npm/Yarn/Webpack/Rollup等,有对前端工程化有自己的实践者优先;
4、熟悉Node相关知识,有Koa/Egg/Express等的实践经验,若有其他后端语言如Java/PHP/Python/Golang等的开发经验优先;
5、熟悉iOS/Android等客户端相关知识,具备ReactNative/Weex/Flutter能力和经验者优先;
6、对前端技术有强烈的热情和进取心,具有良好的沟通能力、团队合作精神,优秀的分析问题和解决问题的能力;

腾讯

30628-腾讯广告Web前端开发工程师

工作职责

负责腾讯广告业务的web前端的开发工作; 负责微信广告业务的web前端系统分析、优化与架构工作。

工作要求

1.本科及以上学历,计算机相关专业; 2年以上前端开发经验,有完整的前端项目经验;
2.熟悉JavaScript、HTML、CSS和HTTP协议等Web开发所需技能和知识点;
3.熟悉各种前端框架(React、Vue)并有相关使用经验;
4.良好的学习能力、沟通能力、团队协作能力、及分析问题解决问题能力,责任心强。
5.熟悉golang/php等后台语言,有互联网广告相关业务开发经验者优先。

25927-web前端开发工程师(上海)

工作职责

负责先游海外版web前端开发;
负责前端架构设计及性能调优工作。

工作要求

本科及以上学历,计算机相关专业,3年以上成功产品web开发经验;
精通js、h5、css等基本前端开发技术;
熟练掌握主流js框架(vue/react)及web前端打包工具webpack等;
熟练掌握Linux/unix 操作;
熟悉后台语言者优先,如node/php;
有良好的团队合作能力,技术视野开阔,对业界最新的前端技术和实现有浓厚的兴趣及深入的见解。

S2-高级web前端开发工程师

工作职责

主要负责财经领域前端技术框架的统一规划及后续发展,推动前端后分离开发模式。
1.负责财经IT整体前端架构设计与开发;
2.负责前端开发流程的规范,工具、组件等建设;
3.负责新技术的预研、落地,及前端技能内部培训;

工作要求

1.本科及以上学历,计算机相关专业,5 年以上 Web 前端开发经验;
2.熟悉 HTTP 基本原理,能熟练运用 HTML、CSS、JavaScript 构建高性能的 Web 应用程序;
3.熟悉原生 JavaScript,熟悉 jQuery,至少掌握一种主流的前端框架,对vue或者react有丰富的开发经验,具备一定的框架设计能力;
4.有使用 grunt、gulp、webpack 等工具进行前端工程化经验;
5.有nodejs开发经验,对前后端分离模式有深入理解并有实际项目经验;
6.工作积极主动,乐于分享,具有良好的逻辑思维及语言表达能沟通力和团队协作精神。

字节跳动

前端工程师

上海社招

职位描述

1、负责产品的前端开发工作;
2、参与前端工程体系建设,建设工具、抽象框架、提炼组件;
3、与团队配合完成整体项目规划、设计与开发。

职位要求

1、熟练掌握JavaScript、CSS、HTML、DOM、动画、协议、安全、网络、性能优化等前端技术;
2、对主流前端框架( React、Vue、Angular )至少一种有深入应用并深入理解其设计原理;
3、熟悉MVC,MVVM,Flux,Redux等相关工程知识;
4、熟悉W3C,ECMAScript,CommonJS,ES6等相关技术标准;
5、熟练掌握 Grunt、Gulp、Webpack、FIS 其中任意一项构建工具的使用和配置;
6、能对具体的产品进行性能优化,实现极致的页面加载、执行和渲染时间;
7、注重产品质量,具有良好的代码风格、接口设计与程序架构;
8、关注业界发展,对最新的前端技术有浓厚的兴趣及独特的见解,关注前端前沿技术研究,通过新技术服务团队和业务。

前端架构师

职位描述

1、负责沟通和协同类效率工具 PC客户端、Web端相关产品的架构、设计、优化;
2、负责基础库、框架和关键模块的开发和改进;
3、指导团队其他成员的设计和Coding,保证工程质量;
4、优化前端团队的开发方式和流程、规范,提高团队效率。

职位要求

1、大学本科及以上学历,4年以上前端开发经验,能理解目前流行的框架(react/redux/mobx)的设计思路并能进行源码分析;
2、基本功扎实,精通HTML5,CSS3,ES6,ES7,熟悉 ECMAScript 语言规范;
3、有丰富的前端工程方面的经验;
4、注重代码质量,设计经验丰富,能够产出高质量的设计和代码;
5、自我驱动能力、自我学习能力强,对前端前沿领域有比较高的热情和关注度,执行力好,良好的沟通协作能力,注重效率,能够深刻影响其他人;
6、有知名开源项目者优先和客户端架构经验者优先。

前端开发工程师 — 大数据

职位描述

1、参与字节跳动大数据基础设施以及相关可视化产品的建设,为今日头条、抖音、火山、西瓜等旗下产品提供稳定高质量的数据服务;
2、持续的性能优化和架构升级,不断提升团队效率和产品的用户体验;
3、结合业务和数据场景,提出专业合理的可视化方案建议,并推动可视化技术产生更多的业务价值;
4、提供全栈场景,不设边界。

职位要求

1、对技术充满好奇心,乐于学习,愿意分享,具备良好的服务意识,责任心,团队沟通和协作能力、发现并解决问题的能力;
2、有扎实的前端技术和计算机基础,包括但不限于 HTML / CSS / JavaScript / DOM / Http / 数据结构等;
3、精通至少一门 MVVM 框架,如 AngularJS/Vue/React,使用 React 开发过大型项目或者复杂单页面应用者优先;
4、熟练掌握 SVG / Canvas / WebGL 等前端绘图技术及标准,至少使用过一个数据可视化类库,包括但不限于 D3 / G2 / Three.js / ECharts / Highcharts,有一定计算机图形学基础的优先;
5、掌握至少一门服务端编程语言,并有实战经验。熟悉 NodeJS / Python 者优先;
6、有过大数据产品(Hadoop / Hive / Spark 等)相关开发经验者优先;
7、有移动端开发经验并且有实际性能优化案例者优先;
8、有自己的技术产品、开源作品或活跃的开源社区贡献者优先。

总结:职位需求与自身能力

需求:按重要程度排列 完成情况 侧重企业
HTML CSS JS Web基础 5% 所有
熟练掌握Linux/unix 操作; 5% 所有
主流前端框架(如React、Vue、Angular等) 0% 所有
数据结构与算法;计算机网络等专业课 7% 所有
熟悉后台语言者优先,如node/php; 1% 腾讯、字节跳动
有后台/全栈开发经验 3% 阿里巴巴
有自己的技术产品、开源作品或活跃的开源社区贡献者优先。 目前影响力:有限 字节跳动
有小程序、ReactNative开发经验者优先; 0% 阿里巴巴
有使用 grunt、gulp、webpack 等工具进行前端工程化经验; 0% 腾讯、字节跳动
熟悉golang/php等后台语言 0% 腾讯
掌握至少一门服务端编程语言,并有实战经验。熟悉 NodeJS / Python 者优先; 0% 字节跳动
熟悉MVC,MVVM,Flux,Redux等相关工程知识 0% 字节跳动

设计师如何学习前端技术(转载自:黄玄的知乎回答)

作者:黄玄
链接:https://www.zhihu.com/question/21921588/answer/69680480
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

背景篇

在这个时代学习新东西,一定要善于使用 Bing/Google 等搜索引擎…网络上的资源非常丰富,自学能力也尤为重要,尤其是对于学习技术!

入门篇(HTML/CSS)

说起设计师希望学前端的初衷,大概还是因为各种华丽的网页特效/交互太过吸引人,这种感觉大概就是:“Hey,我的设计可以做成网页访问了呢!”
好在,“展示”对于前端技术来说反而是最简单的部分。所以,放下你对“编程”两个字的恐惧,从“称不上是编程语言”的 HTML/CSS 开始,先做点有成就感的东西出来吧!

对于设计师来说,最有成就感的一定是“可以看到的东西”,而 HTML/CSS 正是用来干这个的,HTML 就是一堆非常简单的标签,而 CSS 无非就是把你画画的流程用英语按一定的格式写出来而已:

1
2
3
4
5
<p> p is paragraph! </p>

<style>
p { color: red;}
</style>

是不是非常容易,就跟读英语一样!
接下来,你就需要开始自学啦,比如常用 HTML 标签的意思,各种 CSS 的属性,还有 CSS 的盒模型、优先级、选择器……放心,它们都很容易;能玩得转 PS/AI/Flash/Axure/AE/Sketch 的设计师们,学这个洒洒水啦

推荐几个资源:

  • w3school 在线教程 (中文,一个很 Low 但是又很好的入门学习网站)
  • Learn to code (Codecademy,如果你英文 OK,强烈建议你使用它进行交互式的学习!里面从 HTML/CSS 到搭建网站的课程都有,免费,生动直观)

这个阶段的练习主要是“临摹”:用代码画出你想画的网站,越多越好。

对于书,我非常不推荐上来就去看各种厚厚的入门/指南书,没必要!这一个阶段应该快速上手,培养兴趣,培养成就感。先做出可以看的东西再说,掌握常用的 HTML/CSS 就够用了

如果完成的好,这个阶段过后你大概就可以写出一些简单又好看的“静态网页”了,比如这个作品集/简历:Portfolio - 黄玄的博客 (好久没更新了…丢人现眼)

入门篇(JavaScript/jQuery)

想要在网页上实现一些交互效果,比如轮播图、点击按钮后播放动画?那你就必须要开始学习 JavaScript 了!JavaScript 是一门完整、强大并且非常热门的编程语言,你在浏览器里看到的所有交互或者高级功能都是由它在背后支撑的!

举个小栗子:

1
alert("Hello World!")

就这一行,就可以在浏览器里弹出 Hello World 啦!

在了解一些基础的 JavaScript 概念(变量、函数、基本类型)后,我们可以直接去学习 jQuery,你不用知道它具体是什么(它是一个 JavaScript 代码库),你只要知道它可以显著地降低你编写交互的难度就好了:

1
2
3
$('.className').click(function(){
alert("Hello jQuery")
})

通过 jQuery,我们可以继续使用在 CSS 中学到的“选择器”

对于没有编程基础的人来说,想要完全掌握它们两并不容易。作为设计师,很多时候我们可以先不必深究它们的原理,而是尝试直接应用它!这样成就感会来得很快,并且你可以通过实际应用更加理解 JavaScript 是用来做什么的。

我仍然推荐你使用 w3school 在线教程http://www.codecademy.com/ 进行学习。另外,你可以看一看诸如《锋利的jQuery (豆瓣)》 这一类非常实用的书籍,可以让你很快上手做出一些简单的效果来!

如果学习得顺利,你还可以尝试使用各种丰富的 jQuery 插件,你会发现写出支持用户交互的网站也没有那么困难~很多看上去很复杂的功能(比如轮播图、灯箱、下拉菜单),搜一搜然后看看文档(教程)、改改示例代码就好了。

比如说,配合 Huxpro/jquery.HSlider · GitHub 这样的轮播图插件,你可以很轻松的写出 HSlider | Demo 这样的网页相册或者 HSlider | Weather 这样的手机端 App 原型~

最后,我想推荐下 Bootstrap · The world’s most popular mobile-first and respons ,这是世界上最知名的前端 UI 框架之一,提供了大量 CSS 样式与 jQuery 插件。它非常容易学习并且中英文教程都非常健全,你并不需要理解它背后的工作原理就能很好的使用它,让你快速达到“可以建站的水平”。有余力的话,你不但可以学习如何使用它,还可以学习它背后的设计思想。

转职方向一:前端重构 (Web Rebuild)

业内通常把专精 HTML/CSS 的前端从业人员称为重构,而对于注重视觉效果的设计师来说,在掌握基本的 HTML/CSS 后,就可以朝着这个方向发展了。

到了这个阶段,你不但要知道怎么写页面,还要知道它们都是为什么,并且知道怎么做更好。这对你理解 Web 世界非常有帮助,并且能帮助你做出更“系统化”的设计。

CSS 的学问很多,你需要开始理解文档流、浮动流等各种定位的方式与原理,理解 CSS 的继承复用思想、理解浏览器的差异、兼容、优雅降级……这里强烈推荐一本书:《精通CSS(第2版) (豆瓣)》,虽然前端技术突飞猛进,但这本书的思想永远不会过时。

HTML 方面,要开始注重语义化、可访问性与结构的合理,你要开始学习“结构与样式的分离”,这里有一本神书将这种分离做到了极致:《CSS禅意花园 (豆瓣)

另外,各种炫酷屌的 CSS 3 属性你一定会喜欢:你可以用媒体查询做响应式网页设计,你可以用 transiton 和 animation 做补间动画与关键帧动画,用 transform 做缩放、旋转、3D变换,还有圆角、渐变、阴影、弹性盒!样样都是设计师的神器!

如果你还掌握了 入门篇(JavaScript/jQuery)的知识,那么恭喜你!你已经可以做出很多有趣的网页了!很多 minisite 或者微信上的“H5” 小广告,这个程度的你已经可以轻松完成了!

配合上你的设计功力,你可以开始尝试创作一些好玩的东西,比如这种富含交互和动画的网站 绅宝 SENOVA ,它仍然是基于 Huxpro/jquery.HSlider · GitHub 实现的!或者给自己做个小小的个人网站试试

转职方向二:前端工程师(Front-end Engineer)

如果你觉得上述的这些都还满足不了你,你渴望做出更多了不起的交互,甚至你已经喜欢上了编程,想要转行做工程师,或者成为一名全栈设计师,那么你可以朝着这个方向继续发展!

这个阶段的最大难度,是你必须学会像一名软件工程师一样思考。你需要踏踏实实学习编程语言,深入理解作用域、对象、类、封装、继承、面向对象编程、事件侦听、事件冒泡等一大堆编程概念,你还需要了解浏览器,学习 DOM、BOM、CSSOM 的 API,你甚至还需要学习一些网络原理,包括域名、URL、DNS、HTTP 请求都是什么…

你可能会被这一大堆名词吓到。确实,想要搞定他们并不容易。但是,你要相信只要你肯花功夫它们也没有那么难,而更重要的是,如果你能拿下他们,你所收获的并不只是这些而已,而是真正跨过了一道大坎 —— 你的世界将因此打开, 你看待世界的方式将因此改变

对于这个阶段,你可以继续在 http://www.codecademy.com/ 上学习,但是 w3school 已经不够用了,遇到不会的语法,我推荐你查阅 Mozilla 开发者网络,这是少数中英文都有的非常专业且友好的网站。

同时,你可能需要看一些书本来帮助你学习 JavaScript :

如果你能顺利得渡过了这个阶段,我想你已经能做出很多令你自豪的网站了!试着向身边的工程师朋友询问如何购买域名、配置简单的静态服务器,或者搜搜“Github Pages”,然后把你的作品挂在网络上让大家欣赏吧!

你还可以试着用 JavaScript 写写小游戏,这不但能锻炼你的编程水平还非常有趣~比如这是我刚学 JS 不久后 hack 一晚的产物 —— 用 DOM 实现的打飞机:Hux - Aircraft (不支持手机)

入行篇

如果你能完成上述所有的学习,你已经是一名非常出色的前端学徒了!对于只是想要丰富技能的设计师或者产品经理来说,接下来的内容可能会让你感到不适 ;(
但如果你铁了心想要真正入行进入大公司从事专职前端开发的工作,那么你可以接着往下看:

近几年的前端技术发展迅猛,前端工程师早已不是切切图写写页面做点特效就完事的职位,你需要具备相当完善的工程师素质与计算机知识,成为一名真正的工程师。

你需要非常了解 JavaScript 这门语言,包括 闭包、IIFE、this、prototype 及一些底层实现(ES、VO、AO)、熟悉常用的设计模式与 JavaScript 范式(比如实现类与私有属性)。另外,新的 ES6 已经问世,包括 class, module, arrow function 等等

你需要非常了解前端常用的网络及后端知识,包括 Ajax、JSON、HTTP 请求、GET/POST 差异、RESTful、URL hash/query、webSocket、常用的跨域方式(JSONP/CORS、HTTP 强缓存/协商缓存,以及如何利用 CDN 、静态网站/动态网站区别、服务器端渲染/前端渲染区别等等

你需要学习使用进阶的 CSS,包括熟悉 CSS 3,使用 Scss/Less 等编译到 CSS 的语言,使用 autoprefixer 等 PostCSS 工具,了解 CSS 在 Scope/Namespace 上的缺陷,你还可以学习 CSS Modules、CSS in JS 这些有趣的新玩意

你需要非常了解前端的模块化规范,可能在你学习到这里的时候,Require.js/AMD 已经再见了,但是 CommonJS 与 ES6 Modules 你必须要了解。(你可以观看我的分享《JavaScript Modularization Seven Day》 来学习 JS 模块化的历史)

你需要熟悉 Git 与 Shell 的使用,包括基于 git 的版本管理、分支管理与团队协作,包括简单的 Linux/Unix 命令、你要知道大部分程序员的工作可以通过 shell 更快更酷的完成,并且很多“软件”只能通过 shell 来使用。你还可以把你的代码放到 github 上与人分享,并且学习 github 上其他优秀的开源代码

你需要熟悉并且习惯使用 Node,包括了解 npm、使用 Grunt/Gulp/Browserify/Webpack 优化你的工作流、对你的代码进行打包、混淆、压缩、发布,你还可以使用 Express/Koa 配合 MongoDB/Redis 涉足到后端领域,或者尝试用 Node 做后端渲染优化你的首屏体验

你需要了解各种 HTML 5 的新 API,包括 video、audio,包括 Canvas,webGL、File API、App Cache、localStorage、IndexedDB、Drag & Drop、更高级的 DOM API、Fetch API 等等

你需要学习 JavaScript 的单线程与异步编程方法,因为它们非常非常常用、包括 setTimeout/setInterval,回调与回调地狱、事件与event loop、还有 Promise 甚至 Async/Await

你需要非常了解浏览器,包括主流浏览器的名称、内核与差异、包括私有属性与 -webkit- 等厂商前缀,你需要学习如何使用 Chrome DevTool,你需要了解浏览器渲染的 reflow/repaint 来避免 Jank 并进行有针对性的性能优化

你需要专门学习 Mobile Web,因为移动互联网是趋势。包括 viewport、CSS pixel、 touch 事件、iOS/Android 浏览器的差异与兼容、移动端的性能优化、300ms delay 等等…你还需要知道 Hybrid 是什么,包括 Cordova/Phonegap,更复杂的比如和 iOS/Android 通信的机制,比如 URI Scheme 或者 JS Bridge

你需要学习一些**非常火热的前端框架/库**,他们不但能帮助你更快的进行开发、更重要的是他们背后所蕴含的思想。包括 Backbone、Angular、Vue、React、Polymer 等等、了解它们背后的双向数据绑定、单向数据流、MVC/MVVM/Flux 思想、Web Component 与组件化等等

你需要学习如何构建 web 单页应用,这是 web 的未来,包括利用 history API 或者 hash 实现路由,包括基于 Ajax + 模版引擎或者其他技术的前端渲染、包括组织较为复杂的软件设计等等

我还建议你学习更多的计算机知识,它们能对你的代码能起到潜移默化的作用,包括简单的计算机体系结构、更广泛的编程知识(面向对象/函数式等)、栈、堆、数组、队列、哈希表、树、图等数据结构、时间复杂度与空间复杂度以及简单的算法等等

你需要了解业内的大神并阅读它们的博客/知乎/微博,比如

@尤雨溪@贺师俊@张云龙@徐飞@张克军@玉伯@拔赤@寸志@题叶@郭达峰 等等等等,很多思想和新东西只有从他们身上才能学到。我还推荐你多参加技术交流会,多认识一些可以一起学习的小伙伴,你们可以互相交流并且一起成长

你需要具备很强的自学能力、对技术有热情并且不断跟进。因为 JavaScript/前端的社区非常非常活跃,有太多的新东西需要你自己来发现与学习:比如 Universal JavaScript、Isomorphic JavaScript、前端测试、HTML5 页游、WebRTC、WebSocket、CSS 4、SVG、HTTP/2、ES 7、React Native、Babel、TypeScript、Electron 等等等等…

虽然一下扯得有点多,但这些确实就是你未来将会遇到的。你并不需要全部掌握它们,但是却多多益善;你也可以专精在某几个方面,这已经足以让你成为非常专业的前端工程师。

最后,英语英语英语,无论是学习还是工作,这都是一个决定天花板的重要技能。

以上。