1 Star 0 Fork 31

tankai / Ebooks

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

2022年最全项目管理工具面试题附答案解析大汇总

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

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

项目管理工具

题1:什么是 Maven 插件?

Maven生命周期的每一个阶段的具体实现都是由Maven插件实现的。插件通常提供了一个目标的集合,并且可以使用下面的语法执行:

mvn [plugin-name]:[goal-name]

Maven提供了两种类型的插件:

1)Build plugins:在构建时执行,并在pom.xml的元素中配置。

2)Reporting plugins:在网站生成过程中执行,并在pom.xml的元素中配置。

一些常用插件列表:

clean:构建之后清理目标文件。删除目标目录。

compiler:编译Java源文件。

surefile:运行JUnit单元测试。创建测试报告。

jar:从当前工程中构建JAR文件。

war:从当前工程中构建WAR文件。

javadoc:为工程生成Javadoc。

antrun:从构建过程的任意一个阶段中运行一个ant任务的集合。

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

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

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

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

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

题3:Maven 和 ANT 有什么区别?

1、maven&ant同属apach是流行的构建工具

都是为了简化软件开发而存在的。但是maven因为自身管理一个项目对象模型(project object model),这个模型其实就是抽象了一个项目的开发流程,它包含了一个项目的生命周期的各个阶段,并将这个周期固定下来,这也就是约定大于配置。约定大于配置的意思就是,我maven将项目开发的各个阶段固定起来了,每个文件的存放位置,每个阶段要生成什么文件、保存为什么格式并且要把它放在什么位置,我都固定好了。我知道一个软件是怎么开发出来,如果一个项目要使用maven,可以,但你要遵循我的规则,文件目录不要乱建乱放,只有这样maven才会将源码用起来。这就是约定大于配置,因为maven已经将流程固定下来了,只要遵守约定,就不需要自己手动去配置了,这将大大地提高开发效率。

2、maven的中央仓库和pom.xml文件

中央仓库统一存放了开发用到的各种jar包,要用时只需要添加依赖到pom文件中,maven就会自动下载,当然为了方便一般会在本地建一个仓库,减少下载时间。pom文件是maven的配置文件,maven就是通过管理pom文件和一些核心插件来管理项目。当然我前面将maven拟人化了,其实maven是没有智力的,一切都是封装好的流程,只是maven将很多操作隐藏起来了。

3、ant的build.xml文件

build文件是ant的配置文件,ant依靠它来执行操作,与maven不同的是ant没有固定一条程序链。你想要执行什么操作以及操作之间的顺序和依赖关系,都需要手动添加到build文件中,一点一滴都要写清楚,否则ant就不会执行。

4、maven和ant区别

Maven拥有约定,只要遵守约定,它就知道你的源代码在哪里。Maven是声明式的。你需要做的只是创建一个pom.xml文件然后将源代码放到默认的目录。Maven会帮你处理其它的事情。Maven有一个生命周期,当你运行mvn install的时候被调用。这条命令告诉Maven执行一系列的有序的步骤,直到到达你指定的生命周期。缺点是运行许多默认目标。

而ant没有约定,项目生命周期,它是命令式的。所有操作都要手动去创建、布置。甚至连build.xml文件都需要手动创建。

题4:Git 中提交项目文件命令是什么?

提交项目文件命令

git commit -a

含义:-a参数是指通过在命令行上加-a指示git提交已修改的所有被跟踪文件的新内容。

注意的是如果第一次提交新文件,可以在执行git commit -a命令之前先执行git add 命令。

题5:Maven 如何管理多模块项目依赖?

通过在父模块中声明dependencyManagement和pluginManagement,然后让子模块通过元素指定父模块,这样子模块在定义依赖时就可以只定义groupId和artifactId,自动使用父模块的version,统一整个项目依赖的版本。

举例dependencyManagement方式的父类模块

父类pom.xml配置文件部分内容:

<dependencyManagement>  
	<dependencies>  
		<dependency>  
			<groupId>org.eclipse.persistence</groupId>  
			<artifactId>org.eclipse.persistence.jpa</artifactId>  
			<version>${org.eclipse.persistence.jpa.version}</version>  
			<scope>provided</scope>  
		</dependency>
	</dependencies>
</dependencyManagement>

子类pom.xml配置文件部分内容:

<dependencies>
	<dependency>  
		<groupId>org.eclipse.persistence</groupId>  
		<artifactId>org.eclipse.persistence.jpa</artifactId>  
		<scope>provided</scope>  
	</dependency>  
</dependencies> 

Dependencies相对于dependencyManagement,所有生命在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。

题6: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中的依赖包。

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

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

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

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

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

查看提交记录命令:git reflog

题8:Git 和 SVN 有什么区别?

Git是一个分布式的版本控制工具;而SVN是集中版本控制工具;

Git属于第3代版本控制工具;而SVN属于第2代版本控制工具;

Git客户端可以在其本地系统上克隆整个存储库;而SVN版本历史记录存储在服务器端存储库中;

Git支持离线提交;而SVN必须在线提交;

Git中Push/pull命令操作更快;而SVN中Push/pull命令操作较慢;

Git工程可以用commit命令实现自动共享;而SVN不支持自动共享。

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

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

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

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

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

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

题10:Maven 中工程都有哪些类型?

POM工程

POM工程是逻辑工程。用在父级工程或聚合工程中。用来做jar包的版本控制。

JAR工程

将系统打包成jar工程,用作jar包使用。是最常见的本地工程Java Project。

WAR工程

将系统打包成war工程,发布在服务器上的工程。比如网站或服务。

常见的网络工程Dynamic Web Project。

war工程默认没有WEB-INF目录及web.xml配置文件,但是在IDE工具中通常会显示工程错误,需要提供完整工程结构才可以解决问题。

题11:maven-中-什么是-mojo

题12:-什么是-git

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

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

题15:什么是-maven

题16:maven-中如何避免子工程引用不同版本导致编译出错

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

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

题19:maven-规约是什么

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

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

题22:maven-中-lastestreleasesnapshot-有哪些区别

题23:为什么选用-maven-进行构建

题24:maven-版本管理都有哪些规范

题25:maven-中--是什么

大厂面试题

大厂面试题

大厂面试题

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

搜索帮助

53164aa7 5694891 3bd8fe86 5694891