天梯180403
1. 下面有关maven和ant的描述,描述错误的是?
A. Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码
B. Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里
C. maven和ant都有“生命周期”的概念,当你输入一个命令后,maven或者ant会执行一系列的有序的步骤,直到到达你指定的生命周期
D. Ant构建文件默认命名为build.xml,Maven默认构建文件为pom.xml
2. Which lines of the following will produce an error?
byte a1 = 2, a2 = 4, a3; //1
short s = 16;//2
a2 = s;//3
a3 = a1 * a2;//4
A. Line 3 and Line 4
B. Line 1 only
C. Line 3 only
D. Line 4 only
3. (不定项)JDK提供的用于并发编程的同步器有哪些?
A. Semaphore
B. CyclicBarrier
C. CountDownLatch
D. Counter
4. 以下Java程序运行的结果是:
public class Tester{
public static void main(String[] args){
Integer var1=new Integer(1);
Integer var2=var1;
doSomething(var2);
System.out.print(var1.intValue());
System.out.print(var1==var2);
}
public static void doSomething(Integer integer){
integer=new Integer(2);
}
}
A. 1true
B. 2true
C. 1false
D. 2false
5. (不定项)以下哪些jvm的垃圾回收方式采用的是复制算法回收
A. 新生代串行收集器
B. 老年代串行收集器
C. 并行收集器
D. 新生代并行回收收集器
E. 老年代并行回收收集器
F. cms收集器
//------------分割线--------------------
C
A
ABC
A
AD
答案详解:
1.
Ant 和 Maven 都是基于 Java 的构建工具。Ant 是软件构建工具,Maven的定位是 软件项目管理和理解工具。
简单来说就是 你写一个2Mb项目却需要用到100Mb的jar包,大家都是,那么我们不如把公用的jar包放到网上,配置好路径需要的时候项目自己去拿。
Ant特点: 没有约定的目录结构;没有生命周期,必须定义目标及其实现的任务序列;没有集成依赖管理;
Maven特点: 拥有约定,知道你的代码在哪里,放到哪里去;拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程;只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情;拥有依赖管理,仓库管理。
2. short转byte 报错;a1*a2结果为int类型,转byte报错。
3. A. Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。
B,CyclicBarrier 主要的方法就是一个:await()。await() 方法没被调用一次,计数便会减少1,并阻塞住当前线程。当计数减至0时,阻塞解除,所有在此 CyclicBarrier 上面阻塞的线程开始运行。
C,直译过来就是倒计数(CountDown)门闩(Latch)。倒计数不用说,门闩的意思顾名思义就是阻止前进。在这里就是指 CountDownLatch.await() 方法在倒计数为0之前会阻塞当前线程。
D,Counter不是并发编程的同步器
4. 如图:
5. 两个最基本的java回收算法:复制算法和标记清理算法
复制算法: 两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法。
标记清理: 一块区域,标记可达对象(可达性分析),然后回收不可达对象。会出现碎片。引出
标记整理: 多了碎片整理,整理出更大的内存放更大的对象。
两个概念:新生代 和 年老代
新生代: 初始对象,生命周期短的
年老代: 长时间存在的对象
整个Java的垃圾回收 是 新生代 和年老代的协作,这种叫做分代回收。
P.S: 新生代 基本采用复制算法,老年代 采用标记整理算法,cms采用标记清理。