Java面试题 每日一练(4.10)

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 等-提供将基础数据类型写入到文件中,或者读取出来.

流的关闭顺序

  1. 一般情况下是:先打开的后关闭,后打开的先关闭
  2. 另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b。例如,处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b
  3. 可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法。

正确答案: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值