本文转载自动力节点 ,如有侵权及时联系。

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