后端开发工程师需要掌握的内容
1. 语言相关
1.1 Java
- 核心知识点
- Java的类加载机制
- JVM相关:JVM内存模型和结构,GC原理,性能调优
- 泛型
- 集合体系
- 异常体系
- IO体系
- 多线程编程
- 反射
- Servlet
- 推荐数据
- 《Java编程思想》
- 《Effective Java》
- 《深入理解Java虚拟机》
1.2 Shell、Python等脚本语言
- 介绍
- 此类脚本语言的意义在于辅助后端开发,包括系统运维,工具集成(借助管道、重定向),文本处理,数据计算等工作,提升后端工作效率
- 核心知识点(Shell)
- 常用的linux操作和运维命令
- 管道、重定向
- awk、sed等文本处理工具
- 推荐书籍
- 《linux与unix shell编程指南》
- 《鸟哥的Linux私房菜》
- 《Python编程 从入门到实践》
1.3 SQL 语言
- 介绍
- 通用于传统关系型数据库和大数据场景的结构化查询模型语言。传统数据库方面要精通mysql的sql语法;大数据场景主要掌握Hive SQL(Impala和Spark SQL等均在兼容Hive SQL)
- 核心知识点
- 区分DDL和DML
- 经典查询语句主要结构
- 表连接(内连接,左外连接,右外连接,全连接)
- 函数(普通函数,聚合函数)
- 索引
- 分区
- 适用场景
- 传统数据库,传统SQL:用于事务性数据操作,通常用于系统的业务库;
- 大数据场景下的SQL:用于数据分析,交互式查询,批量数据处理等。
- 推荐书籍
- MySQL:《高性能MySQL》
- Hive SQL:《Hive编程指南》
2. 开发工具
2.1 开发IDE Intellij/Eclipse
- 核心知识点
- 配置良好代码风格模板,包括文件注释,类注释,方法注释,缩进换行等
- 安装使用必要的插件:代码规范检查插件(Alibaba Java Coding Guidelines),源码潜在bug检查插件(pmd),字节码潜在bug检查插件(findbugs)等
2.2 工程构建 MAVEN
- 核心知识点
- maven 仓库
- maven pom.xml文件配置
- maven 构建的生命周期
- maven 插件
- 能力要求
- 学会配置maven多级工程结构
- 能够解决工程构建中常常出现的jar包冲突等问题
- 熟练使用maven
- 推荐书籍
- 《Maven实战》
2.3 版本管理 GIT
- 介绍
- git是一个开源的分布式版本控制系统,通过规范化的工具和流程,使得开发者之间高效协同,保持产品稳定运行
- 推荐文章
- Git && Git Flow 使用总结
3. 开发/测试框架
3.1 Spring框架体系 Spring MVC/Spring Boot
- 核心知识点
- Spring框架的模块组成
- IOC和AOP的设计思想和实现原理
- Bean的作用域和生命周期
- 参考说明
- 有条件地阅读spring核心模块的代码,debug Spring框架的启动和Bean服务的过程是比较好的理解spring原理的方式
- 最新的版本更新和参考文档可以直接浏览 Spring官网
3.2 orm框架 mybatis/hibernate
- mybatis介绍
- 持久层框架,通过xml映射的方式,使得开发者主要关心sql实现即可,由框架实现从实体到java类的映射,数据访问层服务实现,访问优化等等
- 核心知识点
- 熟练配置使用mybatis,掌握mapper xml的写法
- 会使用mybatis-generator的mvn插件自动生成DAO层代码和xml配置
- 理解mybatis的一、二级缓存,了解sql session创建过程和sql执行过程
- 推荐资料
- 最新的版本更新和参考文档可以直接浏览 Mybatis官网
3.3 测试框架 Junit/TestNG
- 核心能力要求
- 熟练使用Junit/TestNG进行单元测试,接口测试
- 学会借助Mockito解决外部系统,模块依赖的mock测试
- 学会使用maven的surfire plugin和jacoco plugin等插件,度量测例的通过率,测试代码覆盖率等指标
4. 服务端中间件
4.1 key-value存储系统
- 典型:redis/memcache
- 核心知识点
- redis配置策略(持久化策略,替换算法等)
- redis的部署模式(standalone单机,sentinel哨兵,cluster集群),哨兵的本质是主从切换,cluster是真正的分布式部署可以线性扩展内存资源
- redis支持的数据结构
- 适用场景
- 分布式session存储,数据缓存,分布式锁,简单的消息队列,计数器(累加器)
4.2 消息队列
- 典型:rabbitmq/kafka
- 核心知识
- AMQP协议对应消息模型中的主要概念
- 两种集群模式对比:普通集群和镜像集群(HA)
- kafka
- 基于zk的分布式拓扑结构
- 理解kafka支持的消息的写入流程,写入模式,消息的存储模式,消息的消费方式等
- rabbitmq
- 适用场景
- 消息中间件一般适用于:系统之间需要高度解耦;异步传输数据(非阻塞);保证数据传输过程中数据可以持久化,解决生产端和消费端能力不一致的问题,避免峰值数据对下游服务节点的冲击等
- 对比rabbitmq和kafka: rabbitmq主要适用数据可靠性,一致性要求比较高的场景;kafka主要适用数据吞吐量比较的场景,如日志数据的实时传输等
4.3 分布式文件存储
- 典型:网易nos/阿里云oss
- 适用场景
- 存储需要在分布式架构下共享的文件对象:如前端静态文件,图片资源,大文件资源等
4.4 服务治理/RPC框架
- 典型:阿里dubbo
- 核心知识点
- 注册中心,服务注册、服务发现、负载均衡、序列化、反序列化、编码、解码等核心概念
- 适用场景
- 在相对复杂的应用服务网络中,扮演服务治理,服务解耦,负责均衡,简化服务调用方式的作用
4.5 Java Web容器
- 典型:tomcat/jetty等
- 介绍
- 本质上是一个servlet容器,即可以在其上运行Java Web的应用程序
4.6 Nginx
- 介绍
- nginx本质上是一个的HTTP和反向代理服务器
- 适用场景
- http服务器,反向代理,软负载均衡器等
4.7 关系型数据库
- 典型: MYSQL/ORACLE
- 核心知识点
- 索引
- 事务与事务隔离级别
- 存储方法
- 触发器
- 不同关系型数据库的SQL差异
- 推荐书籍
- 《高性能MySQL》
- 《Oracle从入门到精通》
5. 大数据存储和计算框架等
- 核心能力要求
- 了解大数据体系整体的框架、组成
- 熟悉各种大数据存储,计算框架,查询引擎等主要的架构、功能和适用场景
- 能够在项目的架构过程中进行合理的大数据技术方案选型
6. 其他
6.1 权限相关
- 介绍:
* 权限相关涉及到:身份认证,鉴权,权限管理等 - 核心知识点:
- RBAC(基于角色的权限控制)模型
- 理解OAuth 2.0的设计思想和运行流程
6.2 安全相关
- 介绍
- 在后端开发中需要关注很多的安全问题,这些安全问题可能来自恶意的攻击,也可能来自系统本身的安全性和健壮性不足。防止应用安全漏洞产生的前提是理解常见的漏洞概念、原理以及产生的原因
- 核心知识点
- 水平权限和垂直权限漏洞,以及在程序开发中怎样避免
- SQL注入攻击(mybatis预编译可以避免)
- 常用的限流策略
- CSRF 攻击
- XSS 攻击
6.3 日志相关
- 核心知识点
- Log4j、Logback、SLF4J之间的关系,应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J中的API
- 日志的等级(error/warn/info/debug)
- 日志的保留时间
6.4 异常处理相关
- 核心知识点
- 异常的分类,正确区分异常处理方式
- 异常处理原则
- 学会借助spring框架等,将异常转为对用户或者调用方更加友好的错误码和错误信息
6.5 RestFul接口设计相关
- 介绍
- restful在目前是使用较多的接口设计和服务间依赖http接口设计的主要原则,基于良好的约定规范,可以使得接口简单易懂,提高团队协作的效率
- 推荐文章
- RESTful API 设计指南
6.6 线上问题排查流程和工具
- 核心知识点
- 系统问题排查:学会使用w/uptime、top、df、netstat、iostat以及各种可视化监控工具排查本机的负载、磁盘、内存、网络等系统问题
- 应用问题排查:学会依据应用系统错误日志以及jps、jinfo、jstat、jstack、jmap以及各种可视化监控工具,排查应用系统问题
- 数据库问题排查:学会借助mysql慢查询日志、explain以及各种可视化工具排查mysql使用过程中的各种问题
- 网络问题排查:学会借助telnet、ping、wget、nc等工具排查网络问题
6.7 多线程编程
- 核心知识点
- Java线程相关接口和类的实现和关系
- Java线程池
- 线程同步,锁等
6.8 网络相关
- 核心知识点
- 掌握http协议消息体划分、连接和通信过程
- 掌握http主要的返回状态码意义
- 掌握https协议的连接和通信过程
6.9 设计原则和设计模式
- 核心知识点
- 单例模式
- 策略模式
- 代理模式
- 观察者模式
- 装饰模式
- 适配器模式
- 组合模式
- 工厂模式
- 模板方法模式
- ...
- 单一职责原则
- 里氏替换原则
- 依赖倒置原则
- 接口隔离原则
- 迪米特法则
- 开闭原则
- 组合/聚合复用原则
- 七大设计原则
- 一些常用的设计模式
6.10 分布式系统设计相关
- 核心知识点
- Quartz,基于数据库锁的抢占式分布式定时器
- 基于数据库
- 基于缓存
- 基于zookeeper
- 一致性理论
- 分布式事务解决方案
- 一致性模型
- CAP定理
- BASE 理论
- 强一致性
- 弱一致性
- 最终一致性
- eBay 事件队列方案
- TCC (Try-Confirm-Cancel)补偿模式
- 缓存数据最终一致性
- 强一致性(两段提交和三段提交模型, Paxos或者Raft算法)
- 最终一致性
- SOA
- 微服务
- Servless
- 分布式系统架构设计
- 分布式事务
- 分布式锁
- 分布式定时器
后端开发工程师需要掌握的内容相关推荐
- 下列不属于python第三方库的是-python后端开发工程师考证试题
原标题:python后端开发工程师考证试题 python开发工程师考证试题 选择题 题目 关于 Python 程序格式框架的描述,以下选项中错误的是 ( A ) A: Python 语言不采用严格的& ...
- [笔试题目] 美团2015年9月后端开发工程师笔试题
由于题目是我通过草稿回顾,可能表述不清,但是内容大致一样.希望该博客内容对你有所帮助,题目所有权归美团公司所有,我只是想分享给大家学习,还望贵公司海涵~ 面试职位 应聘职位:后端开发工程师 岗位描述: ...
- 【计算机就业-后端开发工程师】校招想去互联网公司担任后端开发工程师该怎么准备
前言 hello大家好,我本次分享的主题是计算机专业校招想去互联网公司担任后端开发工程师该怎么准备,比如说计算机专业投什么岗,笔试面试需要准备什么.我将结合自己以及身边小伙伴们的秋招经历来进行简要的分 ...
- java后端开发工程师笔试_后端开发工程师面试参考
为什么要写这篇文章 后端开发工程师的知识体系大而杂,从Java基础到算法.数据库.操作系统.网络.中间件.系统设计等都可以理解为后端的射程.下定决心开始准备面试时,可谓是千头万绪无从下手.我的开始源于 ...
- 后端开发工程师的生命周期,生命在于学习
后端开发工程师的生命周期 1 职业发展方向: 标准:需要不断学习.主动思考.不断锻炼.多提问 技术专家:三年.五年.八年的时间节点 2 后端学习成长路线 2.1 后端技术图谱 2.2 Go语言技术图谱 ...
- IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略
IT:后端进阶技术路线图(初级→中级→高级).后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介.技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略 目录 后端 ...
- python后端工程师简历_【社招】字节跳动 - 后端开发工程师( Python Golang)-懂车帝...
[字节跳动-懂车帝-后端开发工程师] 想加入最有梦想最年轻有活力的团队么,懂车帝研发团队呼唤你!懂车帝今年 3 岁,已经成为发展最快的汽车类资讯平台. 如果你热爱编程,热爱汽车,那么动动手指投出简历吧 ...
- 以下python语言关键字在异常处理_python后端开发工程师考证试题
原标题:python后端开发工程师考证试题 python开发工程师考证试题 选择题 题目 关于 Python 程序格式框架的描述,以下选项中错误的是 ( A ) A: Python 语言不采用严格的& ...
- php架构师之路 知乎,知乎后端开发工程师 交叉面(第一次面试遇到架构师)
知乎 架构师面 知乎一面面经: 一面 2021 秋招面经汇总 : 面经汇总 我的其他文章: 分享汇总 职位: 后端开发工程师 结果:通过 面试我的据说是知乎架构师,感觉经验很丰富,面试体验相当不错 面 ...
最新文章
- NLP精选10个实现项目推荐-涉及预训练Bert、知识图谱、智能问答、机器翻译、对话等...
- 获取窗口上指定控件集合 2012-08-22 16:14 498人阅读 评论(0) 收藏...
- 部署 Node.js 应用以完成服务器端渲染 Server Side Rendering 的性能调优
- dataframe类型数据的遍历_Python零基础入门到爬虫再到数据分析,这些你都是要学会的...
- 当前时间加30分钟_男性早晨坚持慢跑30分钟,一段时间后,或许这些变化不请自来...
- jQuery获取动态创建元素的内容
- OpenCV学习:Windows+VS2010+OpenCV配置
- 修改 oracle 数据库 TNSLSNR.exe 占用 8080 端口
- uniapp php接口如何写,uni-app入门教程之接口的基本使用
- 微pe工具箱 系统安装教程_微PE工具箱《U盘给电脑装GHOST系统》教程
- 怎样保存CAD图纸到电脑桌面呢?
- 怎么安装win10系统?Win10系统安装教程
- 舒淇陈坤言承旭周渝民 揭秘与助理的爱恨纠葛
- 第二届“梧桐杯”复赛开战在即,邀您观赛!
- 论文阅读-2022.1.2-A Neural Network Approach for_2016_一种用于知识驱动响应生成的神经网络方法
- 日本互联网的十大知名巨头!你听说过几个?
- Lock锁及获取锁的四种方法
- html网页注册信息不完全时有警示_如何提升网页的用户体验?
- java web添加背景图片_java web项目中如何插入背景图片
- obd协议 混动车_OBD协议介绍
热门文章
- 机器学习入门的绝佳材料:斯坦福大学机器学习课程原始讲义(含公开课视频)
- 三分钟给女神画张素描照
- 赶时间发布 ChatGPT 竞品后,Google 遭员工反讽:太仓促、拙劣、非 Google Style
- unity图像压缩算法原理
- linux的crontab 命令,每三个月的月末执行一次
- 【Leetcode】[190] 颠倒二进制位
- 暗影精灵三 英伟达显卡 Ubuntu16.04 安装网卡驱动连接wifi
- 经典ps教程600例 打造ps高手
- Excel技能之实用技巧,高手私藏
- java计算机毕业设计个人交友网站源码+数据库+系统+lw文档+mybatis+运行部署