如何快速上手一个自己不太熟悉的新项目?

一.熟悉新项目的步骤

第一步:了解业务

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

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

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

简单把开发环境搭建一下。搭建的步骤一般都在项目的 README 文档里面。搭建完成之后,需要确保项目能够在自己的电脑上正确运行。

第三步:看项目技术架构

这个直接看项目的相关依赖就好。拿Java后端项目举例子,如果是 Maven 项目的话看pom.xml,如果是 Gradle 项目就看 build.gradle。可能会涉及下面这几部分,但是并不完全:

  • 项目最底层框架是什么?是 Spring 还是 Spring Boot,又或者是其他框架呢?

  • 项目依赖了哪些相关的包?挑重点看,比如数据库是 MyBatis 还是 JPA 或者是公司自研的框架呢?

  • 项目使用的什么数据库?是 MySQL 还是 PostgreSQL,又或者是其他数据库呢?

  • 项目用到了缓存吗?是 Redis 缓存吗?有没有用到本地缓存呢?

  • 项目用到了消息队列吗? Kafka 还是 RocketMQ?

  • 项目的权限管理这块是怎么做的呢?

  • ......

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

不同的公司对于项目的结构的划分可能也不同,不过大体都是类似的。以 Java 后端项目为例,常见的项目可能会分为下面三层。但是,复杂的系统分层可能会更多

  • Repository(数据库操作)

  • Service(业务操作)

  • Controller(数据交互)

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

  • User Interface(用户界面层)

  • Application(应用层)

  • Domain(模型层)

  • Infrastructure(基础实施层)

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

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

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

二.面试之前,准备项目经历的小技巧

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/233445.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Springboot的房产销售系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的房产销售系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Sp…

uniapp2023年微信小程序头像+昵称分别获取

1、DOM <view class"m-user"><view class"user-info"><!--头像 GO--><button class"avatar avatar-wrapper" open-type"chooseAvatar" chooseavatar"onChooseAvatar"slot"right"><im…

Java实现简单的王者荣耀游戏

一、创建新项目 首先创建一个新的项目&#xff0c;并命名为wangzherongyao。 其次在飞翔的鸟项目下创建一个名为img的文件夹用来存放游戏相关图片。详细如下图&#xff1a; 二、游戏代码 1、创建怪物类 1.bear&#xff1a; package beast;import wangzherogyao.GameFrame;…

Moonbeam生态项目分析 — — 去中心化交易所Beamswap

流动性激励计划Moonbeam Ignite是帮助用户轻松愉快体验Moonbeam生态的趣味活动。在Moonbeam跨链连接的推动下&#xff0c;DeFi的各种可能性在这里爆发。DeFi或许不热门&#xff0c;但总有机会捡漏&#xff0c;了解Monbeam生态项目&#xff0c;我们邀请Moonbeam大使分享他们的研…

LeetCode(37)矩阵置零【矩阵】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 73. 矩阵置零 1.题目 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]…

视频监控平台EasyCVR多场景应用,AI视频分析技术助力行业升级转型

传统的视频监控系统建设&#xff0c;经常存在各方面的因素制约&#xff0c;造成管理机制不健全、统筹规划不到位、联网共享不规范&#xff0c;形成“信息孤岛”、“数据烟囱”。在监控系统的建设中缺乏统一规划&#xff0c;标准不统一、视频图像信息利用率低等问题日益突出。随…

arcgis导出某个属性的栅格

选中栅格特定属性想要导出时&#xff0c;无法选中“所选图形” 【方法】spatial analyst 工具——提取分析——按属性提取

Python数据分析从入门到进阶:模型评估和选择(含代码)

引言 之前我们介绍了机器学习的一些基础性工作&#xff0c;介绍了如何对数据进行预处理&#xff0c;接下来我们可以根据这些数据以及我们的研究目标建立模型。那么如何选择合适的模型呢&#xff1f;首先需要对这些模型的效果进行评估。本文介绍如何使用sklearn代码进行模型评估…

九要素微气象仪-气象百科

随着科技的发展&#xff0c;人们对天气的预测和掌控能力越来越强。在这个领域&#xff0c;九要素微气象仪以其精准、快速、便携的特点&#xff0c;成为了气象预测的佼佼者。这款仪器不仅可以预测风向、风速、温度、湿度、气压等九大要素&#xff0c;还可以实时监测环境温湿度、…

四个方法,设置excel文件只读模式

由于excel文件经常用于数据文件&#xff0c;数据就需要特别保护&#xff0c;大家可能需要将文件设置为只读模式来保护数据不被修改&#xff0c;Excel文件想要设置为只读的方法有很多&#xff0c;今天分享四种方法给大家&#xff1a; 方法一&#xff1a;文件属性 右键点击文件…

springboot自定义校验注解的实现

自定义校验注解的实现 通过谷粒商城项目学习了自定义校验器的实现一、编写自定义校验注解二、自定义注解的校验器三、关联自定义的校验器和自定义的校验注解总结 通过谷粒商城项目学习了自定义校验器的实现 近日在学习雷神的谷粒商城项目&#xff0c;其中有一个自定义校验的实…

html/css中位置position的绝对位置absolute顺时针盒子案例图片排序

目标图片&#xff1a; Dreamweaver界面&#xff1a; 代码部分&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>无标题文档</title> <style type"text/css">.red{background-color:r…