高数, 基本的几率统计 - 基本数据结构 能用JS写出linked list, stack, queue, (binary)tree, graph, hashtable么? - 基本算法 能用JS实现各类search(linear, binary..), 各类sort(bubble, insertion, merge, quick, selection), 以及树的搜索(Breadth First/Depth First)和遍历(3种顺序)么? - 设计模式 知道什么是singleton, factory, strategy, decrator么? - Git 不要只是停留在把Github当作一个网络储存器的层面上, 知道branch, diff, merge么? - 基本的英语能力(不要求据说, 只用来读/写文档资料) - 基本的计算机知识 知道位运算, 溢出, thread, lock, concurrency, parallelism么? - 熟悉unix的基本命令么? 知道ssh public/private key都是干吗的么? - 知道正则么? 可以熟练的使用么? - 能写出详细的注释/文档, 让阅读你代码的人知道你要干吗么? 能短期内快速地读懂来自你同事或者其余地方(github, blog)的代码, 知道什么东西应该写在什么地方, 以便迅速地参与其中么? - 给你一个你历来没有接触过的库/语言, 能可以在较短的时间内在你的代码里正确使用么? - 有一个驾轻就熟用的熟练地编辑器/IDE么? 不要求你们都是vim/emacs大神, 但也不要作什么都是用鼠标来点. - 基本的检索查询能力(google, stackoverflow, MDN) - 单独思考解决问题的能力, 团队合做, 与人相处 若是以上的内容都有所了解(这里不会强调精通), 恭喜你, 你拥有了成为前端工程师的基础知识. 继续. ### 前端专业知识 - 知道什么是AMD, COMMONJS么? 知道call, apply, bind么? 知道JS中foreach, filter, some, every么? 知道怎么实现functional JS(curry等)么? - 知道各类所谓的高级HTML的API(File, Web Audio, WebSocket)么? - 知道各类CSS Preprocessors么? 能讲出他们各自的优势和缺点么? 熟悉而且会用其中的一种么? - 知道各类CSS框架么? 能讲出他们各自的优势和缺点么? 熟悉而且会用其中的一种么? - 知道canvas, SVG么? - 知道怎么把你的东西作成responsive, cross-browser support么? - 知道什么是SEO而且怎么优化么? 知道各类meta data的含义么? - 知道什么是Ajax, restful, get, post么? 知道怎么和后台交互么? - 知道各类JS框架(Angular, Backbone, Ember, React, Meteor, Knockout...)么? 能讲出他们各自的优势和缺点么? 熟悉而且会用其中的一种或多种么? - 知道什么是webkit么? 知道怎么用浏览器的各类工具来调试和debug代码么? - 知道如今前端通常的工做流程(gulp, grunt, git, svn, npm)么? - 知道怎么测试代码么? 知道BDD, TDD, Unit Test么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)? - 知道前端templating(Mustache, underscore, handlebars)是干吗的, 怎么用么? - 知道npm, V8, node, express, socket么? (这里补充一点, 如今愈来愈多的公司都采用: '前端网页 -> 前端后台 -> 后台'这种构架来搭建东西, 也就是说, 前端工程师不只要作传统前端的网页, 还要写本身的后台, 来跟真正的后台进行交互, 至于前端的后台用什么语言来写, 通常是node/python/ruby, 不太会用到庞大的java, 因此这里我把node列为前端工程师必需要掌握的技能之一) 知道cache, authentication么? - (若是要用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么? - 另外, 前端这个行业跟传统的c/c++/java程序员仍是有必定的差异的. 因为是新兴产业, 因此各类行业标准, 框架, 库会随时随地的产生和更新 (做为一个c程序员, 十年前怎么写东西如今仍是怎么写东西). 今天出了node和react, 明天又出了io和mean. 因此, 积极关注各类前端产品, 跟上变化的节奏, 也是身为一个前端程序员必备的技能之一. 知道ECMAScript 6里怎么写class么? 知道react, flux, reflux么? 知道polymer, dart么? 知道meteor么?