1 Star 0 Fork 31

tankai / Ebooks

forked from Java精选 / Ebooks 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
最新2022年项目管理工具面试题高级面试题及附答案解析.md 10.00 KB
一键复制 编辑 原始数据 按行查看 历史

最新2022年项目管理工具面试题高级面试题及附答案解析

全部面试题答案,更新日期:01月30日,直接下载吧!

下载链接:高清500+份面试题资料及电子书,累计 10000+ 页大厂面试题 PDF

项目管理工具

题1:Maven 中 dependencies 和 dependencyManagement 有什么区别?

dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)。

dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

dependencies中的jar直接加到项目中,管理的是依赖关系(如果有父pom和子pom,则子pom中只能被动接受父类的版本);

dependencyManagement主要管理版本,对于子类继承同一个父类是很有用的,集中管理依赖版本不添加依赖关系,对于其中定义的版本,子pom不一定要继承父pom所定义的版本。

题2: 列举工作中常用的几个 Git 命令?

新增文件的命令:git add file或者git add

提交文件的命令:git commit –m或者git commit –a

查看工作区状况:git status –s

拉取合并远程分支的操作:git fetch/git merge或者git pull

查看提交记录命令:git reflog

题3:为什么选用 Maven 进行构建?

1)Maven是一个优秀的项目构建工具。

使用Maven可以比较方便的对项目进行分模块构建,这样在开发或测试打包部署时,会大大的提高效率。

2)Maven可以进行依赖的管理。

使用Maven 可以将不同系统的依赖进行统一管理,并且可以进行依赖之间的传递和继承。

Maven可以解决jar包的依赖问题,根据JAR包的坐标去自动依赖/下载相关jar,通过仓库统一管理jar包。

多个项目JAR包冗余,使用Maven解决一致性问题。

4)屏蔽开发工具之间的差异,例如:IDE,Eclipse,maven项目可以无损导入其他编辑器。

题4:Maven 中如何避免子工程引用不同版本导致编译出错?

dependencyManagement用来统一管理依赖版本的,其目的是防止不同子项目引用不同的版本而导致编写代码的时候出现意外错误。之前的面试题已经说明了该参数的作用,此处就不在阐述。

配置方式

1、假设父工程pom文件,如下:

<groupId>com.jingxuan</groupId>
<artifactId>J</artifactId> //项目名称J
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
//对项目A的版本进行了统一管理,子类使用A时可以不写<version>标签。
<dependencyManagement>
	<dependencies>
		<dependency>
			  <groupId>com.jingxuan</groupId>
			  <artifactId>A</artifactId>
			  <version>0.0.1-SNAPSHOT</version>
		</dependency>
	</dependencies>
</dependencyManagement>

2、假设子工程需要使用A包

方式一:parent标签,子类POM文件编写如下:

//引用父工程J
<parent>
	<groupId>com</groupId>
	<artifactId>P</artifactId>
	<version>0.0.1-SNAPSHOT</version>
</parent>
//子工程使用A包
<dependencies>
	<dependency>
		  <groupId>com.jingxuan</groupId>
		  <artifactId>A</artifactId>
	</dependency>
</dependencies>

方式二:import标签,子类POM文件编写如下:

//子工程使用A包,注意使用import标签时,不再使用<parent>标签
<dependencies>
	<dependency>
		  <groupId>com.wentian</groupId>
		  <artifactId>A</artifactId>
		  //这里并没有使用<version>标签
	</dependency>
</dependencies>
//表示将项目J的dependencyManagement拿到本POM中,不再继承parent
<dependencyManagement>
		<dependencies>
			<dependency>
				    <groupId>com</groupId>
					<artifactId>P</artifactId>
					<version>0.0.1-SNAPSHOT</version>
					<type>pom</type> //必须是type=pom
					<scope>import</scope> //必须是scope=import
			</dependency>
		</dependencies>
</dependencyManagement>

题5:Maven 中 什么是 MOJO?

MOJO是一个Maven普通的旧Java对象。每个MOJO是Maven中的可执行目标,插件是一个或多个相关mojos的分发。

简单来说,MOJO是一个maven目标,扩展maven中没有的功能。

题6:Git 提交失误时如何撤销?

如果撤销提交到索引区的文件,可以使用git reset HEAD file命令。

如果撤销提交到本地仓库的文件:

可以使用git reset –soft HEAD^n恢复当前分支的版本库至上一次提交的状态,索引区和工作空间不变更;

可以使用git reset –mixed HEAD^n恢复当前分支的版本库和索引区至上一次提交的状态,工作区不变更;

可以使用git reset –hard HEAD^n恢复当前分支的版本库、索引区和工作空间至上一次提交的状态。

题7:Maven 版本管理都有哪些规范?

版本号定义,通常下载jar包时都会有类似1.2.3-beta-2版本。

约定 < 主版本 >.< 次版本 >.< 增量版本 >-< 里程碑版本 >

“1”:表示该版本的主版本号;

“2”:表示该版本的次版本号;

“3”:表示该版本的增量版本号;

“beta-2”:表示该增量的某一个里程碑,例如SNAPSHOT快照版本、beta、rc、release稳定版等。

主版本:表示项目的重大架构变更,例如:Maven2和Maven1相去甚远;Struts1和 Struts2采用了不同的架构。

次版本:表示较大范围的功能增加和变化及Bug修复。例如Nexus1.5较1.4添加了LDAP的支持,并且修复了很多Bug,但是从总体架构来说,没有什么变化。

增量版本:顾名思义,这往往指某一个版本的里程碑。例如Maven3已经发布了很多里程碑版本,3.0-alpha-1 、3.0-alpha-2 、3.0-bata-1等。这里的版本与正式版本3.0相比,往往表示不是非常稳定,还需要进行很多测试。

题8:Maven 中 LASTEST、RELEASE、SNAPSHOT 有哪些区别?

LASTEST:是指某个特定构件最新的发布版或者快照版(SNAPSHOT),最近被部署到某个特定仓库的构件。

RELEASE:是指仓库中最后的一个非快照版本,代表稳定的版本。

SNAPSHOT:泛指。版本一般用于开发过程中,代表不稳定、尚处于开发中的版本。

题9:Maven 中有哪些依赖原则?

1)依赖路径最短优先原则。

项目Demo依赖了两个jar包,其中A-B-C-X(1.0)和A-D-X(2.0)版本。由于X(2.0)路径最短,因此项目中使用的是X(2.0)版本。

2)pom文件中申明顺序优先。

如果A-B-X(1.0)和A-C-X(2.0)版本,相同路径长度的情况下,maven会根据pom文件声明的顺序加载,如果先声明B,后声明C,那就最后的依赖就会是X(1.0)版本。

3)覆写优先原则。

子pom文件内声明的优先于父pom中的依赖包。

题10:Maven 下载依赖包如何更换数据源?

编译Maven项目需要自动从中央仓库(远程仓库、本地仓库)下载项目所需的依赖jar包,但是正常情况下,中央仓库服务在国外,下载速度缓慢,可以将其改为远程仓库下载所需依赖包,即阿里巴巴的镜像。

打开Maven解压目录下conf文件夹,修改settings.xml文件,更换成阿里镜像,提高下载依赖包速度。

<mirror>
	<id>nexus-aliyun</id>
	<mirrorOf>central</mirrorOf>
	<name>Nexus aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

题11:maven-如何管理多模块项目依赖

题12:maven-规约是什么

题13:maven-的内置构建生命周期是什么

题14:git-中什么是“裸存储库”

题15:git-提交时冲突是什么原因所致如何解决

题16:maven-常用命令有哪些

题17:maven-和-ant-有什么区别

题18:git-和-svn-有什么区别

题19:maven-中依赖的解析机制是什么

题20:git-中提交项目文件命令是什么

题21:什么是-maven-存储库

题22:什么是-maven

题23:maven-构建阶段是什么

题24:maven-中如何解决-jar-包冲突

题25:-什么是-git

大厂面试题

大厂面试题

大厂面试题

Java
1
https://gitee.com/tankkai/ebooks.git
git@gitee.com:tankkai/ebooks.git
tankkai
ebooks
Ebooks
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891