Java:每天三道大白话面试题(005)

前言

大白话讲面试题,每天更新三题,提倡每日积累而不是临阵磨枪,我的目的不是为了背题,而是通过这种方式来更好的巩固自身所掌握的知识。

题目的星星代表难度等级,五星为满,并且我会列出需要掌握的前置知识。

大家一起,冲鸭!

线程的状态都有哪些,它的生命周期是怎样的?⭐⭐

目的:多线程与并发编程基础考察

前置知识:理解 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 生命周期中都给你列好了,顺序都一样。

引用

在这里我会放上所有我参考的资料链接

猜你喜欢

转载自juejin.im/post/7041529336108679176
今日推荐