1.下面哪一项不属于优化Hibernate所鼓励的?
- 使用单向一对多关联,不使用双向一对多
- 不用一对一,用多对一取代
- 配置对象缓存,不使用集合缓存
- 继承类使用显式多态
解析:
优化Hibernate所鼓励的7大措施:
1.尽量使用many-to-one,避免使用单项one-to-many
2.灵活使用单向one-to-many
3.不用一对一,使用多对一代替一对一
4.配置对象缓存,不使用集合缓存
5.一对多使用Bag 多对一使用Set
6.继承使用显示多态 HQL:from object polymorphism=“exlicit” 避免查处所有对象
7.消除大表,使用二级缓存
正确答案 A
2.关于下面这段Java程序,哪些描述是正确的:( )
public` `class` `ThreadTest ``extends` `Thread {
public` `void` `run() {
System.out.println(``"In run"``);
yield();
System.out.println(``"Leaving run"``);
}
public` `static` `void` `main(String []argv) {
(``new` `ThreadTest()).start();
}
}
- 程序运行输出只有In run
- 程序运行输出只有Leaving run
- 程序运行输出先有In run后有Leaving run
- 程序运行输出先有Leaving run后有In run
- 程序没有任何输出就退出了
- 程序将被挂起,只能强制退出
解析:
Thread.yield()方法作用是:暂停当前正在执行的线程对象,并执行其他线程。
yield()应该做的是让当前运行线程回到可运行状态,以允许具有相同优先级的其他线程获得运行机会。因此,使用yield()的目的是让相同优先级的线程之间能适当的轮转执行。但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。
结论:yield()从未导致线程转到等待/睡眠/阻塞状态。在大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果。
正确答案 C
3.下列流当中,属于处理流的是:()
- FilelnputStream
- lnputStream
- DatalnputStream
- BufferedlnputStream
解析:
按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。
- 节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.
- 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
JAVA常用的节点流:
- 文 件 FileInputStream FileOutputStrean FileReader FileWriter 文件进行处理的节点流。
- 字符串 StringReader StringWriter 对字符串进行处理的节点流。
- 数 组 ByteArrayInputStream ByteArrayOutputStreamCharArrayReader CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)。
- 管 道 PipedInputStream PipedOutputStream PipedReaderPipedWriter对管道进行处理的节点流。
常用处理流(关闭处理流使用关闭里面的节点流)
-
缓冲流:BufferedInputStrean BufferedOutputStream BufferedReader BufferedWriter 增加缓冲功能,避免频繁读写硬盘。
-
转换流:InputStreamReader Outputstreamwriter 实现字节流和字符流之间的转换。
-
数据流 DataInputStream DataOutputStream 等-提供将基础数据类型写入到文件中,或者读取出来.
流的关闭顺序
- 一般情况下是:先打开的后关闭,后打开的先关闭
- 另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b。例如,处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b
- 可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法。
正确答案:CD
4.单例模式中,两个基本要点是
- 构造函数私有
- 静态工厂方法
- 以上都不对
- 唯一实例
解析:
通常单例模式在Java语言中,有两种构造方式:
1.懒汉方式。指全局的单例实例在第一次被使用时构建。
//懒汉式
public class Singleton2 {
private static Singleton2 INSTANCE=null;
private Singleton2(){}
public static Singleton2 getInstance(){
if(INSTANCE!=null){
INSTANCE = new Singleton2();
}
return INSTANCE;
}
}
2.饿汉方式。指全局的单例实例在类装载时构建。
//饿汉式
public class Singleton {
private final static Singleton INSTANCE = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return INSTANCE;
}
}
正确答案 AD
5.以下哪一个正则表达式不能与字符串“https://www.tensorflow.org/”(不含引号)匹配?()
- [a-z]+://[a-z.]+/
- https[😕/]www[.]tensorflow[.]org[/]
- [htps]+://www.tensorflow.org/
- [a-zA-Z.😕]+
解析:
[://]
这是个很明显的陷阱
[ ] 里面是不重复的,所以等价于[😕]
如果[ ]后面没有带+号的话,是不会贪婪匹配的,就只能匹配到://中的其中一个
正确答案 B
6.下面的程序 编译运行后,在屏幕上显示的结果是()
public class test {
public static void main(String args[]) {
int x,y;
x=5>>2;
y=x>>>2;
System.out.println(y);
}
}
解析:
5 >> 2 相当于 5除于2的平方,等于1 ,>>> 表示无符号 右移,高位用0 填充,0001 右移两位 0000,所以答案选 A
正确答案:A
class` `Foo {
``final` `int` `i;
``int` `j;
``public` `void` `doSomething() {
``System.out.println(++j + i);
``}
的输出是?
- 0
- 1
- 2
- 不能执行,因为编译有错
解析:final作为对象成员存在时,必须初始化;但是,如果不初始化,也可以在类的构造函数中初始
因为java允许将数据成员声明为final,却不赋初值。但是,blank finals必须在使用之前初始化,且必须在构造函数中初始化
正确答案 D
8.关于 访问权限说法正确 的是 ? ( )
- 外部类定义前面可以修饰public,protected和private
- 局部内部类前面可以修饰public,protected和private
- 匿名内部类前面可以修饰public,protected和private
- 以上说法都不正确
解析:
对于外部类来说,只有两种修饰,public和默认(default),因为外部类放在包中,只有两种可能,包可见和包不可见。
对于内部类来说,可以有所有的修饰,因为内部类放在外部类中,与成员变量的地位一致,所以有四种可能。
正确答案 B