本文转载自动力节点 ,如有侵权及时联系。
001 什么是Maven?
Maven是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),一组标准集合,一个项目生命周期(Project LifeCycle),一个依赖管理系统(Dependency managerment System),和用来运行定义在生命周期(phase)中插件(plugin)目标(goal)的逻辑。
002 Maven有什么好处?
首先,maven是一个优秀的项目构建工具。使用maven,可以很方便的对项目进行分模块构建,这样在开发和测试打包部署时,效率会提高很多。
其次,maven可以进行依赖的管理。使用maven,可以将不同系统的依赖进行统一管理,并且可以进行依赖之间的传递和继承。
003 Maven常用命令有哪些?
install 本地安装, 包含编译,打包,安装到本地仓库
clean 清除已编译信息,删除工程中的target目录。
compile 只编译。javac命令
deploy 部署。常见于结合私服使用的命令,相当于是install+上传jar到私服。
package 打包。包含编译,打包两个功能。
004 Maven的生命周期?
在Maven中有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:
Clean清理项目: 在进行真正的构建之前进行一些清理工作。 mvn clean
Default构建项目: 构建的核心部分,编译,测试,打包,部署等等。 mvn compile test package install deploy
Site生成项目站点: 生成项目报告,站点,发布站点。
005 Maven仓库是什么?
Maven仓库是基于简单文件系统存储的,集中化管理Java API资源(构件)的一个服务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径。得益于 Maven 的坐标机制,任何 Maven项目使用任何一个构件的方式都是完全相同的,Maven 可以在某个位置统一存储所有的 Maven 项目共享的构件,这个统一的位置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其它项目使用。 对于Maven来说,仓库分为两类:本地仓库和远程仓库。
006 Maven的工程类型有哪些?
POM工程 POM工程是逻辑工程。用在父级工程或聚合工程中。用来做jar包的版本控制。
JAR工程 将会打包成jar用作jar包使用。即常见的本地工程 - Java Project。
WAR工程 将会打包成war,发布在服务器上的工程。如网站或服务。即常见的网络工程 - Dynamic Web Project。war工程默认没有WEB-INF目录及web.xml配置文件,IDE通常会显示工程错误,提供完整工程结构可以解决。
007 Maven中如何保证这些传递依赖不会引起版本冲突?
使用的元素将会引起冲突的元素排除。
008 使用Maven 经常遇到的问题有哪些怎么解决的?
可能由于网络波动,每有下载完成,又缓存了,这个时候下载多少次都会失败,解决办法就是去本地仓库将对应的依赖全部删除再重新下载
由于依赖传递带来的版本冲突问题,解决办法就是排除依赖。
009 什么是Git?
Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。特点:项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性。
010 Git常用的命令有哪些?
git add 添加文件到暂存区
git commit 提交文件到本地仓库
git pull 从远程仓库拉取项目到本地
git push 将本地仓库的新的改变推送到远程仓库
git clone 将远程仓库复制到本地
git fetch 抓取
git merge 合并
011 git pull、git merge、git fetch三个命令的区别?
git clone:是在本地没有版本库的情况下,从远程仓库克隆一份到本地,是一个本地版本库从无到有的过程
git pull:是在本地仓库已经存在的情况下,将远程最新的commits抓取并合并到本地版本库的过程
git fetch: 从远程版本库抓取最新的commits,不会进行合并
git merge:合并 所以git pull = git fetch + git merge
012 push之前一定要进行哪个操作?
push之前一定要进行本地更新操作。使用git pull命令或者使用git fetch和git merge的命令组合。这时候,可能会出现版本冲突,如果出现的话,需要解决完冲突再进行代码push。
013 Git如何解决版本冲突?
开发过程中,我们都有自己的特性分支,所以冲突发生的并不多,但也碰到过。诸如公共类的公共方法,我和别人同时修改同一个文件,他提交后我再提交就会报冲突的错误。发生冲突,在IDE里面一般都是对比本地文件和远程分支的文件,然后把远程分支上文件的内容手工修改到本地文件,然后再提交冲突的文件使其保证与远程分支的文件一致,这样才会消除冲突,然后再提交自己修改的部分。 特别要注意下,修改本地冲突文件使其与远程仓库的文件保持一致后,需要提交后才能消除冲突,否则无法继续提交。必要时可与同事交流,消除冲突。
014 如果代码出现bug,你们用git是如何解决的?
创建一个bug分支,然后进行bug处理,处理完毕后,合并到review分支,组长review成功后才能够合并到master,合并完成之后删除bug分支,回到dev分支继续开发。
015 git rebase的作用?
在公司开发忘记提交到github托管,在家里又继续开发新的功能,然后到公司昨天的代码跟你的新功能合并的时候可以用git fecth ---> git rebase,那么他的提交记录就不会出现分叉,保持了提交记录的整洁.
016 使用的github 还是gitlab?
用的是github,因为公司比较小,所以没有自己搭建gitlab, 但是用github的时候代码一定要用保密的,9$(美元)建立一个仓库。
017 你使用过git stash命令吗?你一般什么情况下会使用它?
解决冲突文件时,会先执行git stash,然后解决冲突;
遇到紧急开发任务但目前任务不能提交时,会先执行git stash,然后进行紧急任务的开发,然后通过git stash pop取出栈区的内容继续开发;
切换分支时,当前工作空间内容不能提交时,会先执行git stash再进行分支切换;
018 如何查看分支提交的历史记录?查看某个文件的历史记录呢?
查看分支的提交历史记录:
命令git log –number:表示查看当前分支前number个详细的提交历史记录;
命令git log –number –pretty=oneline:在上个命令的基础上进行简化,只显示sha-1码和提交信息;
命令git reflog –number: 表示查看所有分支前number个简化的提交历史记录;
命令git reflog –number –pretty=oneline:显示简化的信息历史信息;
019 Git和SVN的区别?
相同点:git和svn都是版本控制系统,两者都有自己的服务器。 区别: 1.git是分布式,svn不是分布式。 2.git把内容按元数据方式存储,而svn按文件。 3.git分支和svn分支不同。 4.git没有一个全局版本号,svn有。 5.git版本号要优于svn
020 SVN版本冲突问题如何解决?
解决冲突有三种选择: A.放弃自己的更新,使用svn revert(回滚),然后提交。在这种方式下不需要使用svn resolved(解决) B.放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行resolved filename并提交(选择文件—右键—解决)。 C.手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行resolved filename来解除冲突,最后提交。
021 Ctrl系列快捷键有哪些?
快捷键 功能
Ctrl + Y 删除当前行
Ctrl + D(Duplicate复制) 直接在下一行复制出当前行
Ctrl + W 选中文本,连续按可以扩大选中范围(以单词为单位)
Ctrl + Enter 在当前行上面插入一行空行。注意:需要在行首使用该快捷键
Ctrl + Backspace 可以一下字删除整个单词
Ctrl + " + / -" 将当前方法块代码展开 / 折叠
Ctrl + / 添加注释和取消注释,【第一次是添加注释,第二次是取消注释】
Ctrl + shift + / 添加/取消多行注释,【第一次是添加注释,第二次是取消注释】
Ctrl + F(Find 查找) 在当前文件中查找文本
Ctrl + R(Replace 替换) 查找并替换文本,支持多行查找,或者只在代码中查找,或者只在注释中查找,或者使用正则表达式查找
Ctrl + O 快速重写基类或者接口中的方法
Ctrl + 空格 提示代码,在输入代码时可以提示关键字
Ctrl + J 提示代码,在输入代码时可以提示快捷键
Ctrl + H(Hierarhcy层级) 显示类结构图(类的继承层次)
Ctrl + G 快速定位到指定行指定列
Ctrl + [ 快速定位到代码块开始位置
Ctrl + ] 快速定位到代码块结束位置
Ctrl + N 快速搜索和打开类
Ctrl + B 快速定位源码,将光标放在方法上输入Ctrl + B , 可以去到该方法的源码
Ctrl + U 快速转到当前类的父类
022 ALT系列快捷键有哪些?
快捷键 功能
Alt + / 快速补全代码
Alt+Q 显示当前方法的声明
Alt + Enter 快速提示完成,在代码可能存在语法问题时,IDEA 会提示使用该快捷键可以快速自动修正(功能非常强大,最常使用)
Alt + insert 快速生成含有任意形参的构造器,和私有属性的 Getter / Setter 方法等(最常使用)
Alt + 1 快速打开或隐藏 Project 面板
Alt + 7 快速显示类结构,可以显示类中包含的所有属性和方法
Alt + left / right 快速切换代码视图
Alt + Up / Down 在方法间快速移动定位(即光标以方法为单位移动)
023 Shift 系列快捷键
快捷键 功能
Shift + Enter 在当前行下面生成一行空行,光标自动移到空行行首
F2 或 Shift + F2 快速定位高亮错误或警告位置
024 Ctrl + Alt 系列快捷键有哪些?
快捷键 功能
Ctrl + Alt + L 快速格式化代码
Ctrl + Alt + I 自动缩进行
Ctrl+Alt+O 优化导入的类和包
Ctrl + Alt + T 将选中的代码使用 if、while、try/catch 等代码块包装起来(功能强大)
025 Ctrl + Shift 系列快捷键有哪些?
快捷键 功能
Ctrl + Shift + Delete 去除相关的代码块包装,是Ctrl + Alt + T的相反操作
Ctrl + Shift + 向上/下箭头 将光标所在的代码块向上/下整体移动
Ctrl + Shift + F10 快速运行当前的程序,当前你在哪个程序就运行该程序
Ctrl + Shift + / 添加/取消多行注释,【第一次是添加注释,第二次是取消注释】
Ctrl + Shift + J 快速整合两行代码,将光标所在行和下一行的代码合并成一行
026 模板相关的快捷键有哪些?
1)快速生成主函数:psvm/ main
2)快速生成打印语句:sout
3)快速生成普通 for 循环:fori
4)快速生成增强 for循环:iter