后端开发工程师,前端工程师的未来发展方向,后端开发工程师,前端工程师的未来前景
之前在美团工作了快3年,本文来自美团wiki。
================================
基础(项目所需)
成为系统/服务/模块的所有者
其他/高级
基本(项目必备)有扎实的理解。
知识点需要学习方法/相关链接/书籍推荐高级开发工具IDE
健全的
熟练运用发展理念;
熟练使用快捷键;
将进行本地和远程调试。
Intellidia教程Git
健全的
了解git的分布
了解git的临时存储区域和对象
熟练使用push、fetch、rebase、reset等命令。
会用到一个Git可视化工具:SourceTree,GitUp,ToriseGit等。
Git教程
Git权威指南
专家
健全的
精通配置和使用;
了解Maven的依赖机制,会解决jar冲突问题;
掌握mvn清理、编译、测试、安装、解部署等命令。
Maven教程actionCS基础操作系统中的maven/
Linux操作系统
抓住
Linux/OS基础知识:中断/异常、地址空间、系统调用、进程调度、文件系统等。
Linux系统管理:文件、权限、vim使用、shell脚本、启动过程、crtontab、syslog等。
常用命令:less、grep、cut、sed等。Top、netstat、tcpdump、vmstat、iostat等。
越了解Linux的使用和原理越好。
Linux简介
每天一个Linux命令
波导linux私房菜
对linux内核的深刻理解
UNIX环境高级编程
对计算机系统有深刻的理解
网络
抓住
TCP/IP基础知识:IP、子网、路由、TCP
HTTP、HTTPS等协议的基本原理
掌握cookie的由来和处理方法,会话原理和跨域问题;
了解前端页面加载流程和常用的网络优化技术;
会使用常用的抓袋工具查尔斯等。
熟练使用点评、美团APP抓取包和模仿工具:蜘蛛使用模仿工具的说明
TCP/IP的详细解释(第1卷)
HTTP权威指南
TCP/IP的详细解释(第2卷)
TCP/IP的详细解释(第3卷)
资料库
健全的
了解Mysql;
基本操作:sql、数据导出/导入、备份/恢复;
掌握常用的mysql存储引擎和索引方法;
查看sql执行计划,掌握常用的sql调优方法;
基本功能原理:拷贝、文件、日志、事务、锁;
了解至少一个NoSql (mongo)的原理和用法。掌握
MySQL的技术内幕:SQL编程
数据资源手册(第1卷)(修订版)
高性能MySQL Java相关
Java基础(要扎实)
健全的
基本语法:JAVA核心技术,如继承、异常、引用和泛型(第1卷)
在java中思考
有效的java中文版(第2版)类库:集合、序列化等Jdk源代码;
字符串、整数、长整型、枚举、BigDecimal
ArrayList、java.util.LinkedList、
哈希映射、链接哈希映射、树形映射、并发哈希映射
HashSet、LinkedHashSet、TreeSet
AtomicInteger、ThreadLocal
IO(网络IO,文件IO),NIO主机
055-79000 Java网络编程Netty/Mina/Grizzly多线程与并发实践中的Java并发JVM: Classcode、Reflection、ClassLoader、GC;
常见的java监控命令:jstack、jmap、jstat等。
常见的java启动参数:gc相关;常见的环境变量;
深入了解Java虚拟机
JVM内存管理和调优
深入Java虚拟机(Java虚拟机内部)Java安全Java安全反射,动态代理,jmx,jms Java Web。
抓住
Servlet/JSP
支柱2/弹簧MVC
春天
米巴蒂斯
迈巴蒂斯泉
码头
单元测试
JDBCMybatisC3p0
客户端
Servlet规范文本
春季公文
MyBatis官方文件
MyBatis-Spring正式文档
春天在行动
Spring的技术内幕:Spring架构和设计原理的深度分析;
2 struts2技术内幕;
源代码
第三方类库
抓住
阿帕奇公地。*
fastjson、hcdbbt、gson
番石榴
源代码;
番石榴维基
系统部署
明白;理解
负载均衡:F5、SLB、LVS、Nginx
反向代理:Nginx,Tengine
Web容器:Tomcat、Jetty
容灾:数据库冷/热备,异地居住,服务降级。
工程质量
抓住
Api设计Restful/MVCRESTful Web服务编码OO;业务建模:如何将产品需求转化为合理的软件模型设计模式。
头部优先设计模式
有效的java中文版(第二版)
重构:改进现有代码的设计。
实现模式实现模式
开发代码规范
数据库规范
日志规范
美团(Java)编码规范-第一版_v1
DP JAVA代码开发规范_v0
谷歌编码风格
数据库开发规范
Log4j问题和用法
安全规范符合XSS、CSRF、SQL注入和其他常见安全问题的相关规范。常见的网站攻击方法和防御
XSS反射攻击原理及规避修复措施
XSS:http://yw.dp/docs/view/143
测试一些基本概念:黑盒/白盒、烟雾、回归、单元测试、集成测试、性能测试。
项目中测试的实践:单元测试(JUnit,JMockit),集成测试(测试环境清单?)
http://junit.org/朱尼特
https://code.google.com/p/jmockit/jmockit
http://works.dgic.co.jp/djunit/朱尼特
建筑RPC
明白;理解
了解rpc框架的基本原理和使用;
了解rpc框架的核心模块:服务注册和发现、序列化、网络通信、服务治理等。
服务框架鸽子
MTthrift的设计与实现
躲藏
抓住
了解本地缓存ehcache和guava缓存的区别;
了解本地缓存和分布式缓存的区别和使用场景;
了解分布式缓存memcache和redis的区别;
了解Redis的基本原理和常见操作
信息排队
明白;理解
activemq、rabbitmq、kafka、zeromq
燕子、玛芙卡
官方网站
源代码
配置工具ZK
明白;理解
了解分布式一致性问题
Paxos算法
Zk使用
Zk实现原则,多多益善
搜索引擎
明白;理解
全文搜索引擎
使用
弹性搜索
Elasticsearch权威指南
成为一个系统/服务/模块的拥有者技术基础:了解计算机的工作原理;算法/数据结构;各种应用技术:Java,Mysql等。专精兼盖;
沟通:态度、理解和表达
工程能力:
内容
了解原始需求;可行性和成本的判断;
业务建模:将产品需求完整准确地转换成合理的软件模型。
系统设计和快速实施
自我管理:多分支开发、进度控制、代码/资源/外部输出文档管理。
质量功能:
单元测试
测试:清单
性能:
单点响应时间
可扩展容量
稳健性
外部容错,常见问题:连接池(连接数,超时等。)
回滚、数据恢复功能
的功能具有可维护性和可扩展性。
设计文件
高质量的代码和注释
合理的设计
运行和维护监控/报警/故障排除和问题解决
监控和显示各种业务和技术数据;关键数据必须有报警机制
注意日志,检查问题的关键。
监控数据、日志,使用各种命令/工具在线检查状态,基本上可以找出大部分问题的原因。
注意降低运维成本:对等节点配置方式相同;统一部署模式
一些琐事:机器应用,磁盘日志清理,自动重启等。
其他/高级
推荐书籍/相关链接
合理的思维方式和个人管理,提高你的效率,学会提问。
金字塔原理
用图表说话
番茄工作法图解
高效人士的七个习惯
提问的智慧
把事情做完(无压力工作的艺术)
思考——快与慢
计算机如何工作的基本概念,从程序员的角度对计算机系统的深刻理解
Unix环境中的高级编程
对算法/数据结构算法的时间复杂度和空间复杂度的基本认识
熟悉常用的数据结构:链表、队列、哈希表、树等。
递归、分治、动态规划等基本思想;常用算法:排序、搜索、比较等。
算法介绍其他语言python node.js erlang scala go软件工程/软件配置管理git=代码版本,jenkins=集成工具,发布工具,wiki=文档平台,jira=任务/问题跟踪
Scrum=敏捷开发过程
连续累计
连续交货
建筑《Java网路编程》
《恰如其分的软件架构 - 风险驱动的设计方法》
《软件系统架构:使用视点和视角与利益相关者合作 第2版》
《程序员必读之软件架构 - Software Architecture for Developers》
《大型网站技术架构:核心原理与案例分析》
《大规模分布式存储系统》
信息安全
技术部门内的其他安全相关页面
网络安全思维导图
搜索和推荐的核心问题是排序。
(未完待续)
055-79000,lucene源代码
许多方法和概念太抽象了,它们是关于使服务实用和基础的。
搜索wiki soa
SOA的知识地图
虚拟化/云docker
paas saas iaas
大数据hadppo、hbase、hive
流式计算:风暴、火花、samza
作战傀儡
机房和网络架设
系统
Linux _性能_监控. chm
兄弟的linux私人厨房-服务器设置
AndroidiOShtml5/JS数据挖掘数据存储flume、hdfs、hive和hbase;http://news.dbanotes.net/news ETL技术新闻
https://news.ycombinator.com/
stackoverflow.com
github.com
google.com