JAVA面试试题及答案_2018网易

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vv___/article/details/79654954
  1. java如何接受request域中的参数? request.getParameter()
    request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。getAttribute是返回对象,getParameter返回字符串。
  2. 下列关于java 中的 wait()方法和 sleep()方法的区别描述错误的是?
wait()方法属于Object类,sleep()属于Thread类
调用wait()方法的时候,线程会放弃对象锁
调用sleep()方法的过程中,线程不会释放对象锁
sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程
sleepwait的区别有:
  1,这两个方法来自不同的类分别是Thread和Object
  2,最主要是sleep方法没有释放锁,而wait方法释放了锁,使得敏感词线程可以使用同步控制块或者方法。
  3wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在
    任何地方使用
   synchronized(x){
      x.notify()
     //或者wait()
   }
   4,sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
  1. 正确的是:
    实例方法可直接调用超类的实例方法
    实例方法可直接调用超类的类方法、
    实例方法可直接调用子类的实例方法
    实例方法可直接调用本类的实例方法
A错误,类的实例方法是与该类的实例对象相关联的,不能直接调用,只能通过创建超类的一个实例对象,再进行调用
B错误,当父类的类方法定义为private时,对子类是不可见的,所以子类无法调用
C错误,子类具体的实例方法对父类是不可见的,所以无法直接调用, 只能通过创建子类的一个实例对象,再进行调用
D正确,实例方法可以调用自己类中的实例方法

  1. 以下哪项不属于java类加载过程?
    生成java.lang.Class对象
    int类型对象成员变量赋予默认值
    执行static块代码
    类方法解析
不应该选D,而应该选B
类的加载包括:加载,验证,准备,解析,初始化。
选项A:生成java.lang.Class对象是在加载时进行的。生成Class对象作为方法区这个类的各种数据的访问入口。
选项B:既然是对象成员,那么肯定在实例化对象后才有。在类加载的时候会赋予初值的是类变量,而非对象成员。
选项C:这个会调用。可以用反射试验。
选项D:类方法解析发生在解析过程。
  1. 下列哪种情况可以终止当前线程的运行?

正确答案: D 你的答案: D (正确)
当一个优先级高的线程进入就绪状态时
当该线程调用sleep()方法时
当创建一个新线程时
抛出一个异常时

优先级高的并不一定会马上执行。
sleep方法会阻塞一个线程并不会终止
创建一个新的线程时也不会终止另一个线程
当抛出一个异常后程序会结束,所以线程也会被终止
  1. 下面有关SPRING的事务传播特性,说法错误的是?
    正确答案: B 你的答案: 空 (错误)
    PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行
    PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常
    PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起
    PROPAGATION_NESTED:支持当前事务,新增Savepoint点,与当前事务同步提交或回滚
PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 
PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。 
PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。 
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。 
PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 
PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。 
  1. 代码片段:
byte b1=1,b2=2,b3,b6; 
final byte b4=4,b5=6; 
b6=b4+b5; 
b3=(b1+b2); 
System.out.println(b3+b6);

关于上面代码片段叙述正确的是()
输出结果:13
语句:b6=b4+b5编译出错
语句:b3=b1+b2编译出错
运行期抛出异常

final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了
而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。
Java中的byteshortchar进行计算时都会提升为int类型。

猜你喜欢

转载自blog.csdn.net/vv___/article/details/79654954