首页 > 编程知识 正文

后端开发工程师,前端工程师的未来

时间:2023-05-05 04:10:01 阅读:220278 作者:3995

之前在美团工作过差不多3年,本文来自美团wiki

================================

 

 

基础(项目必备)

成为一个系统/服务/模块的owner

其他/进阶

 

基础(项目必备)

扎实   掌握   了解

 

 知识点要求学习方法/相关连接/书籍推荐进阶开发工具

IDE

扎实

熟练使用IDEA进行开发;

熟练使用快捷键;

会本地和远程Debug

Intellij IDEA 使用教程 

Git

扎实

理解git的分布式

理解git的暂存区、对象

熟练使用push、fetch、rebase、reset等命令

会使用一种Git可视化工具:SourceTree、GitUp、ToriseGit等

Git教程

 

Git权威指南

Maven

扎实

熟练配置及使用;

理解Maven依赖机制,会解决jar冲突问题;

掌握mvn clean、compile、test、install、depoly等命令

Maven教程maven in actionCS基础

操作系统/

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、session原理及跨域等问题的由来及处理方法;

了解前端页面加载过程及常用网络优化技术;

会使用常用抓包工具 charles等;

熟练使用点评、美团APP抓包及Mock工具:Spider使用  mock工具使用说明

TCP/IP详解(卷一)

HTTP权威指南

TCP/IP详解(卷二)

TCP/IP详解(卷三)

数据库

扎实

了解Mysql;

基本操作:sql、数据导出/入、备份/恢复;

掌握常用的mysql存储引擎及索引方式;

会查看sql执行计划,掌握常用sql调优方法;

功能基本原理:复制、文件、日志、事务、锁;

至少了解一种NoSql的原理及使用(mongo). 掌握

MySQL技术内幕:SQL编程

数据模型资源手册(卷1)(修订版) 

高性能MySQL

Java相关

 

 

 

 

 

 

Java基础(要扎实)     

扎实

基本语法:继承、异常、引用、泛型等

JAVA核心技术(卷1)

Java编程思想

 Effective java 中文版(第2版) 类库:集合、序列化等

Jdk源码:

String、 Integer、Long 、Enum、BigDecimal

ArrayList、java.util.LinkedList、

HashMap、LinkedHashMap、TreeMap、ConcurrentHashMap

HashSet、LinkedHashSet、TreeSet

AtomicInteger、ThreadLocal

 

 IO(网络IO、文件IO)、NIO 掌握

《Java网路编程》 Java Network Programming Netty/Mina/grizzly 多线程、并发 Java并发实践(Java Concurrency in Practice) 

JVM: class code、反射、ClassLoader、GC;

常用java监控命令:jstack、jmap、jstat等;

常用java启动参数:gc相关;常用环境变量;

 深入理解Java虚拟机

JVM内存管理与调优

 

 深入Java虚拟机(Inside the Java Virtual Machine)  Java安全 Java Security 反射、动态代理、jmx、jms  

 Java Web

掌握

Servlet/JSP

Struts2/Spring MVC

Spring

MyBatis

MyBatis-Spring

Jetty

UnitTest

JDBCMybatisC3p0

HttpClient

Servlet规范原文

Spring官方文档

MyBatis 官方文档

MyBatis-Spring 官方文档

spring in action

Spring技术内幕:深入解析Spring架构与设计原理;

struts2技术内幕;

源码

第三方类库

掌握

apach commons.*

fastjson、hcdbbt、gson

guava

源码;

Guava Wiki

 

系统部署

了解

负载均衡:F5、SLB、LVS、Nginx

反向代理:Nginx、Tengine

Web容器:Tomcat、Jetty

容灾:数据库冷/热备、异地多活、服务降级

  

工程素质

 

 掌握

api接口设计Restful/MVCRESTful Web Services 编码OO; 业务建模:如何把产品需求转换成合理的软件模型

大话设计模式 

Head First设计模式

Effective java 中文版(第2版) 

重构:改善既有代码的设计 

实现模式 Implementation Patterns

 开发规范

编码规范

数据库规范

日志规范

美团(Java)编码规范-初版_v1

DP JAVA代码开发规范_v0

google java编码风格

数据库开发规范

Log4j问题及使用

 安全规范遵循关于XSS、CSRF、SQL注入等常见安全问题的相关规范

常见网站攻击方式和防御

XSS反射攻击原理及规避修复措施

XSS:http://yw.dp/docs/view/143

 测试

一些基本概念:黑盒/白盒、冒烟、回归、单元测试、集成测试、性能测试

测试工作在项目中的实践:单元测试(JUnit、JMockit)、集成测试(测试环境+checklist?)

Junit,http://junit.org/

Jmockit,https://code.google.com/p/jmockit/

djUnit,http://works.dgic.co.jp/djunit/

 SOA架构

RPC

了解

了解rpc框架的基本原理及使用;

了解rpc框架的核心模块:服务注册与发现、序列化、网络通信、服务治理等

服务框架 Pigeon

MTthrift 设计实现

  

缓存

掌握

了解本地缓存ehcache与guava cache的区别;

了解本地缓存与分布式缓存的区别及使用场景;

了解分布式缓存memcache与redis的区别;

了解Redis基本原理及常用操作

   

消息队列

了解

activemq、rabbitmq、kafka、zeromq

swallow、mafka

官网

源码

  

配置工具ZK

了解

理解分布式的一致性问题

paxos算法

zk使用

zk实现原理,多多益善

   

搜索引擎

了解

lucene

solr

Elasticsearch

Elasticsearch权威指南 

 

 

成为一个系统/服务/模块的owner

技术基础:理解计算机工作原理;算法/数据结构;各种应用技术:Java、Mysql等;有专攻、有覆盖;

沟通:态度、理解、表达

工程能力:

 

 

内容

实现

理解原始需求;判断可行性、代价;

业务建模:完整、准确的把产品需求转换成合理的软件模型

系统设计、快速实现

自身管理:多分支开发、进度控制、代码/资源/对外输出文档管理

质量

功能:

单元测试

集成测试:checklist

性能:

单点响应时间

容量可扩展

健壮性

外部依赖容错,常见问题:连接池(连接数、超时等)

程序回滚、数据恢复能力

功能的可维护、可扩展

设计文档 

高质量的代码、注释

合理的设计

运维

监控/报警/排查、解决问题

监控、展示各种业务、技术数据;关键数据一定要有报警机制

注重日志,查问题的关键

监控数据、日志、使用各种命令/工具在线检查状态,这3点基本就能发现绝大部分问题原因

 

注重降低运维成本:对等节点配置一致;发布部署方式统一

一些琐事:机器申请、磁盘日志清理、自动重启等

 

 

其他/进阶

 

 

 

书籍推荐/相关连接

思维、个人管理合理的方法,提升你的效率

学会提问

金字塔原理

用图表说话

番茄工作法图解

高效能人士的七个习惯

提问的智慧

Get things done (无压工作的艺术)

思考-快与慢

计算机基础计算机如何工作的基本概念

深入理解计算机系统(Computer Systems A Programmer's Perspective)

Unix环境高级编程(Advanced Programming in the Unix Environment)

算法/数据结构基础

算法时间复杂度、空间复杂度的基本认知

熟悉常用数据结构:链表、队列、散列表、树等;

递归、分治、动态规划等基本思想;常用算法应用:排序、查找、比较等

算法导论 其他语言python node.js erlang scala go 软件工程/软件配置管理

git=代码版本、jenkins=集成工具、发布工具、wiki=文档平台、jira=任务/问题跟踪

scrum=敏捷开发过程

持续集成

持续交付

架构设计 

《恰如其分的软件架构 - 风险驱动的设计方法》

《软件系统架构:使用视点和视角与利益相关者合作 第2版》

《程序员必读之软件架构 - Software Architecture for Developers》

《大型网站技术架构:核心原理与案例分析》

《大规模分布式存储系统》

《大数据日知录》

安全 

信息安全

技术部内部其他和安全相关的页面

Web应用安全思维导图

搜索、推荐

核心问题是排序

(待续)

《信息检索导论》、lucene源码

GIS  SOA

soa很多方法论、理念太过于抽象,关于在于把service坐实、落地

wiki搜索soa

SOA知识图谱

虚拟化/云计算

docker

paas saas iaas

 大数据

hadppo、hbase、hive

流式计算: storm、spark、samza

 运维

puppet

机房、网络架设

SysTeam

Linux_Performance_Monitoring.chm

鸟哥的linux私房菜–服务器架设篇

android  iOS  html5/JS  数据挖掘  数据存储flume、hdfs、hive、hbase;etl 技术新闻 

http://news.dbanotes.net/news

https://news.ycombinator.com/

stackoverflow.com

github.com

google.com

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。