一、JAVA工作解析:
1. 整体工作:
需求拆解、编码实现、测试部署
2. 常见职责:
负责功能模块设计,开发及单元测试;
协助并快速定位及解决开发及运行过程中的技术问题;
负责公司产品技术架构演进(可用性、扩展性提升)落地;
3. 工作方向:
- 服务端开发——互联网应用、新能源、直播视频流媒体、互联网券商
- 大数据——Hadoop
- 网络安全
- CI(持续集成)/CD(持续交付、部署)效能——是一种软件开发实践,核心是通过引入自动化的手段来提高软件交付效率
- 什么是 CI/CD ?_cicd_Z1404686551的博客-CSDN博客CI、CD 其实是三个概念,包含了一个 CI 和两个 CD,CI全称 Continuous Integration,表示持续集成,CD包含 Continuous Delivery和 Continuous Deployment,分别是持续交付和持续部署。这三个概念之间是有前后依赖关系的。CI/CD 并不是一个工具,它是一种软件开发实践,核心是通过引入自动化的手段来提高软件交付效率。CI/CD 最终目的:让工程师更快 & 更高质量 & 更简单的交付软件!......https://blog.csdn.net/Z1404686551/article/details/126629428
- 算法——应用算法
服务端开发工作:
需求评审&拆解(用户的需求点-->产品的功能点-->系统的设计点)
概要设计说明书【模块划分(几个功能模块)、错误码定义(预期的错误:例如用户的非法请求或不合理输入、怎么清晰地告知用户)、接口定义(是否符合微服务的API标准、接口的鲁棒性怎么样、接口的兼容性怎么样/有没有多版本)、库表设计(哪些表、哪些存储、为什么)】
详细设计说明书(例如模块中的函数说明、库表中的字段说明、接口实现的伪代码、UML时序图)
编码实现
单元测试(需要通过单测覆盖率检测)
部署&维护
大数据开发工作
工具&组件:Excel、Hadoop、Spark、HDFS、Yarn、Hive、Pig、Kylin、Scala等
程序:部分常见程序举例:
程序 | 内容 |
数据采集 | 对多种数据源进行采集,常用Flume。 |
数据存储 | 对涉及计算的事项进行测算,再与被审公司会计测算的数字进行对比。 |
数据计算 | 将本期数字与上期对比,分析变动的原因。 |
数据应用 | 银行函证、往来款项函证、律师询证函、代管存货函证 |
二、Java工作所需的核心能力:
- 需求理解能力:基于BRD(商业需求文档)/PRD(产品需求文档)进行需求拆解,转化为功能点。
- 技术能力:微服务、Web技术、系统架构等。
- 项目管理能力:熟练使用项目管理工具甘特图等。(应届生可弱化一些)
- 学习能力:有不断接触学习新知识新领域的能力和意愿。
- 经验:电商行业、短视频工作(实习)经验、项目经验、行业经验。
- 英语:能够看懂英文技术资料。
三、Java工程师公司与方向的推荐:
1. 公司:
大厂——阿里/腾讯/美团/滴滴/京东/网易/字节跳动
阿里:电商中台、广告、个性化推荐;
腾讯:Spring Cloud开源维护、支付/金融科技;
美团:本地生活、营销部门;
京东:商城、健康;
网易:云音乐;
2. 方向:
业务开发
网络协议
开源软件
大数据
架构师
四、Java项目实例——某公司“互联网医疗会员营销平台”项目
1. 前期工作
- 项目立项:项目KO(kick off),进行PR(Project Review)项目评审,进行交互评审
- 技术方案设计:架构设计,根据PRD(product requirement document)和交互方案,全链路技术同学设计技术方案(后端、前端、QA(质量保证)、部署)
2. 编码实现
- 库表设计:设计表结构、评估数据规模;
- DAL(数据访问层)层开发:使用Mybatis等ORM(Object Relational Mapping 的缩写,译为“对象关系映射”,它解决了对象和关系型数据库之间的数据交互问题)框架进行数据层实现
- Service层开发:基于业务逻辑实现业务服务层;
- Controller层开发:基于Use Case(用例)实现业务用例;
3. 自测&联调
- 自测:技术同学基于测试用例进行冒烟自测(在将代码更改嵌入到产品的源树中之前对这些更改进行验证的过程,冒烟测试设计用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性。)
- 联调:FE(前端)与BE(后端)做整体联调,解决过程中的bug
4. 项目上线
- 测试:技术同学解决测试过程中的bug
- 部署:准备上线方案与机器资源
- 灰度:基于灰度策略对部分用户开放,观察业务指标(大厂)
- 全量:对公网所有用户开放访问