前言
大白话讲面试题,每天更新三题,提倡每日积累而不是临阵磨枪,我的目的不是为了背题,而是通过这种方式来更好的巩固自身所掌握的知识。
题目的星星代表难度等级,五星为满,并且我会列出需要掌握的前置知识。
大家一起,冲鸭!
线程的状态都有哪些,它的生命周期是怎样的?⭐⭐
目的:多线程与并发编程基础考察
前置知识:理解 java.lang.Thread 类
当我们 new 了一个线程时,它刚刚被创建,还没调用 start()
方法,此时处于初始状态。
当调用了 start()
方法后,线程会处于一个就绪状态,表明线程处在“万事俱备,只欠东风”的状态,这个状态的线程叫就绪状态;当这个线程被选中执行的时候,叫运行状态,在 Java 中,就绪和运行这两种状态统称为运行状态。
假如线程在运行中,被锁阻塞,就会进入阻塞状态,当获取到锁后,就会重新回到就绪状态。
如果线程主动调用了 wait()
方法,就会进入等待状态,这个状态中的线程需要等待其他线程主动唤醒它,才能继续运行;如果在进入等待状态时我们指定了超时时间,那么就会进入超时等待的状态,如果超过这个时间没人唤醒它,它会重新回到就绪状态。
最后就是终止状态,代表线程已经执行完毕。
常见的项目构建工具都有哪些,你们一般使用哪些工具来管理和构建项目?⭐
目的:考察知识的广度,考察你是否只会埋头写代码,而不关注这些司空见惯的东西
前置知识:无
常用的项目管理工具有 Maven、Gradle。
Maven 是基于 XML 进行配置,而 Gradle 使用 Groovy 进行配置。
我们现在的话,两个都有用到,使用 Maven + Nexus 私服的方式管理微服务项目,用 Gradle 来管理一些独立插件性质的项目。
Maven 构建的生命周期了解吗?⭐⭐
目的:底层知识考察,司空见惯的东西看你会不会去了解其原理
前置知识:Maven 工具
为了完成项目的构建,Maven 有三个标准的生命周期:
- clean:清理上一次构建生成的文件。
- build:构建项目。
- site:建立和发布项目站点。
那所谓构建的生命周期就是 build 阶段,它由以下几个部分组成:
验证 validate | 验证项目 | 验证项目是否正确且所有必须信息是可用的 |
---|---|---|
阶段 | 处理 | 描述 |
编译 compile | 执行编译 | 源代码编译在此阶段完成 |
测试 Test | 测试 | 使用适当的单元测试框架(例如JUnit)运行测试。 |
包装 package | 打包 | 创建JAR/WAR包如在 pom.xml 中定义提及的包 |
检查 verify | 检查 | 对集成测试的结果进行检查,以保证质量达标 |
安装 install | 安装 | 安装打包的项目到本地仓库,以供其他项目使用 |
部署 deploy | 部署 | 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 |
说白了 IDEA 里的 Maven 生命周期中都给你列好了,顺序都一样。
引用
在这里我会放上所有我参考的资料链接
- Maven 构建生命周期 | 菜鸟教程 (runoob.com)
- Jetbrain IDEA