百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

公司新来的小朋友总爱问:新人如何上手一个新项目的开发?

lipiwang 2025-03-05 17:49 7 浏览 0 评论


作者:Guide哥
来源:公众号“JavaGuide”
原文链接:
https://mp.weixin.qq.com/s/bVXfSFIGHWgpv1IfxsXjRw

今天的文章标题就是我平时被问过的一个高频问题。

确实,很多小伙伴在学习或者接手一个项目的时候,不知道如何快速了解项目。

今天这篇文章我就简单聊聊“怎么吃透一个 Java 项目?新人如何上手一个新项目的开发”。

个人能力有限。如果文章有任何需要补充/完善/修改的地方,欢迎在评论区指出,共同进步!

下面是正文!

项目学习五步走

一般项目都会有遗留文档,不论是传统的项目开发模式还是敏捷开发模式。上项目之前自己抽时间看一下相关文档,大概了解一下这个项目整体的情况比如基本的业务还有技术选型啊这些。

如果项目是单机的话,大部分就是增删改查的逻辑,主要是对于业务的理解。

如果项目是分布式或者微服务的话,会涉及各个服务之间的调用以及一些其他问题比如限流、分布式锁、分布式 ID 这些,稍微会复杂一些。

不过不论是什么类型的项目,上手的姿势大概是下面几步。

第一步:了解业务

先搞清你接受的新项目:

  1. 是做什么的? 主要面向什么人群使用?
  2. 主要提供了哪些功能?
  3. 项目背景是什么样的?
  4. 项目涉及的关键业务流程是怎么样的?
  5. 项目目前面临的挑战是什么?未来规划是什么?
  6. ......

技术本身就是为了业务而服务,只有首先搞清楚了业务之后你才真正算是步入了这个项目的大门。

第二步:搭建项目开发环境

是骡子是马总要拉出来溜溜。所以,第二步我推荐你简单把开发环境搭建一下。搭建的步骤一般都在项目的 README 文档里面。

搭建完成之后,需要确保项目能够在自己的电脑上正确运行。

第三步:看项目技术架构

这个直接看项目的相关依赖就好。拿 Java 后端项目举例子,如果是 Maven 项目的话看 pom.xml,如果是 Gradle 项目就看 build.gradle。

可能会涉及下面这几部分,但是并不完全。

  1. 项目最底层框架是什么?是 Spring 还是 Spring Boot,又或者是其他框架呢?
  2. 项目依赖了哪些相关的包?挑重点看,比如数据库是 MyBatis 还是 JPA 或者是公司自研的框架呢?
  3. 项目使用的什么数据库?是 MySQL 还是 PostgreSQL,又或者是其他数据库呢?
  4. 项目用到了缓存吗?是 Redis 缓存吗?有没有用到本地缓存呢?
  5. 项目用到了消息队列吗?Kafka 还是 RocketMQ?
  6. 项目的权限管理这块是怎么做的呢?
  7. .......

第四步:看项目的代码结构

项目的代码结构是怎么划分的,比如常见的项目可能会分为下面三层(复杂的系统分层可能会更多)。

  1. Repository(数据库操作)
  2. Service(业务操作)
  3. Controller(数据交互)

如果是 DDD 分层架构的话,可能是下面这样的:

  1. User Interface(用户界面层)
  2. Application(应用层)
  3. Domain(模型层)
  4. Infrastructure(基础实施层)

另外,不同的公司对于项目的结构的划分可能也不同,不过大体都是类似的。比如《阿里巴巴Java开发手册》中所推荐的项目代码结构是下面这样的。

第五步:从功能主线/问题出发研究项目源码

一个比较成熟的项目的源码量是非常多,我们不可能都完完整整地看完,也没有必要。

你可以通过 debug 调试,研究项目核心代码逻辑。比较推荐的方式就是通过一个功能主线(比如 Dubbo 是如何暴露服务的?)或者问题(比如 SpringBoot 的自动配置原理?)出发。

对于企业项目来说,大部分还是知道如何进行 debug 调试的。但是,对于 Spring 这种顶级开源框架来说,很多人就不知道怎么打断点了。

我比较推荐的是你可以先把源码拷贝到本地,然后运行源码中提供的 Demo。对于你想研究的问题比如 Spring 的 IoC 源码,你先去找找对应的 API 调用方式的 Demo,然后根据 Demo 中的方法调用来研究整个过程。如果你觉得这种方法比较难的话,你也可以先去网上看看别人的分析。

相关阅读: 《你可以 3 分钟熟悉一个系统吗?- 阿里中间件》

项目经历的四个小技巧

面试中,对于项目经历的考察是重中之重。下面我就分享 4 个面试被问项目经历的小技巧:

1.提前搞清楚项目的架构图、技术选型等等。

比如下面这个就是我之前写的一个简易 RPC 框架(guide-rpc-framework)的架构图。

再比如下面这个是一个微服务的电商网站的架构图。

2.提前想好项目的亮点,针对项目涉及的关键技术进行深度复习。

比如说,你的项目用了消息队列的话,你就很有必要提前想好怎么回答消息队列相关的一些问题:消息队列解决了什么问题、常见消息队列对比、如何保证消息只被消费一次、如何保证消息不被重复消费......。

3.引导面试官问你熟悉的技术。

比如说,你对消息队列比较了解的话,介绍项目的时候就可以多介绍一下自己通过消息队列解决了什么问题。

4.突出个人的贡献比如自己在项目中解决了什么问题,而不只是叙述自己做了什么。

最近迷上了《赘婿》,真心好看,真心上头!哈哈哈!

我是一名从事多年开发的java老程序猿员,目前辞职在做自己的java私人订制课程,今年年初我花了一个月整理了一份最适合2021年学习的java学习干货资料,从最基础的javase到spring各种框架都有整理,送给每一位java小伙伴,想要获取的可以关注我的头条号并在后台私信我:02,即可免费获取。

相关推荐

如何在 Linux 中压缩文件和目录?(linux压缩文件夹到指定目录)

在Linux系统中,文件和目录的压缩是一项常见且重要的操作。无论是为了节省存储空间、便于文件传输,还是进行备份管理,掌握压缩技术都能极大地提升工作效率。Linux中常用的压缩工具1.tar:打...

什么是LIM模具?与普通硅胶模具有何本质区别?

要深入理解LIM模具及其与普通硅胶模具的本质区别,需从成型逻辑、技术架构、应用价值三个层面拆解,以下是系统性解析:一、LIM模具:定义与核心技术1.定义LIM模具(LiquidInj...

前后端安全机制(前后端分离安全的token)

一、密钥安全管理方案1.动态密钥分发机制密钥与会话绑定后端为每个用户会话生成临时密钥(如AES-256密钥),通过HTTPS加密传输给前端,会话结束后自动失效。例如:javascript//...

Switch 2芯片细节曝光,英伟达专门定制支持DLSS,网友:掌机模式相当于PS4

Switch2处理器,细节被实锤!数毛社(DigitalFoundry)消息,已经确定Switch2采用的是英伟达真·定制版芯片,包含8核CPU和12GBLPDDR5X内存。GPU则基于Amp...

独立站的PageSpeed Insights 指标在seo中的作用?

这是一个非常关键的问题,关于独立站(如Shopify、WordPress、自建FastAPI/Vue等网站)的PageSpeedInsights指标(Google的网页性能评分工具)在...

前端工程化-webpack 分包的方式有哪些?

Webpack的分包(CodeSplitting)是优化应用性能的重要手段,主要通过合理拆分代码减少首次加载体积、提升缓存利用率。以下是常见的分包方式及生产/开发环境配置建议:一、Webpack...

液态硅胶(LSR)套啤注塑件的关键技术难点与解决方案?

液态硅胶(LSR)套啤注塑件(即二次注塑成型,一次成型基材+二次LSR包胶)在医疗、电子、汽车等领域应用广泛,但其关键技术难点需从材料、模具、工艺等多维度突破。以下是核心难点及解决方案:一、关...

spa首屏加载慢怎样解决(spa首屏优化)

SPA(SinglePageApplication,单页应用)首屏加载慢是一个常见问题,主要原因通常是首次加载需要拉取体积较大的JavaScript文件、样式表、初始化数据等。以下是一些常见的...

揭秘|为什么新华三(H3C)要自主研发运维管理软件?

1概述1.1产生背景随着互联网技术的快速发展,企业对计算、网络的需求也越来越大。为了保证整个数据系统可靠、稳定地运行,相关企业对运维系统的要求越来越高,运维成本也在随之逐步增加。H3C公司自主研发的运...

动态主机配置协议——DHCP详解(dhcp动态主机配置协议的功能是?)

一、DHCP简介DHCP(DynamicHostConfigurationProtocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会...

OGG同步到Kafka(oggforbigdata到kafka)

目的:测试使用OGG将数据单向同步到Kafka上。简要说明:Kafka使用单节点单Broker部署;单独部署简单ZooKeeper;需要使用到JAVA1.8;OGG需要2个版本,一个fororacl...

Zabbix入门操作指南(zabbix4.0使用手册)

上篇:安装与配置一.概述在开始之前,一些概念和定义需要我们提前了解一下(以下内容摘自官方网站)。1.1几个概念架构Zabbix由几个主要的功能组件组成,其职责如下所示。ServerZabbixs...

绝对干货!升级MySQL5.7到MySQL8.0的最佳实践分享

一、前言事出必有因,在这个月的某个项目中,我们面临了一项重要任务,即每年一次的等保测评整改。这次测评的重点是Mysql的一些高危漏洞,客户要求我们无论如何必须解决这些漏洞。尽管我们感到无奈,但为了满足...

pytorch v2.7.0震撼发布!Blackwell GPU支持+编译性能狂飙,AI开发

重点内容测试版(Beta):oTorch.Compile支持Torch函数模式oMega缓存原型(Prototype):o支持NVIDIABlackwell架构oPyTorch...

kubernetes1.31.3集群搭建(上)(kubectl连接集群)

1集群规划1.1物理机环境电脑操作系统CPU内存硬盘网卡IP地址(静态)虚拟机软件服务器操作系统联想Windows11Intel12900K24核128GB4TBPcIE4.0无线网卡192...

取消回复欢迎 发表评论: