前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java面试系列16-jdbc、hibernate、流、线程实现、多态、继承事程序执行顺序等

Java面试系列16-jdbc、hibernate、流、线程实现、多态、继承事程序执行顺序等

作者头像
Java帮帮
发布2018-03-19 16:33:02
5530
发布2018-03-19 16:33:02
举报

1

JDBC,Hibernate 分页怎样实现?

方法分别为:

1) Hibernate 的分页:

Query query = session.createQuery("from Student");

query.setFirstResult(firstResult);//设置每页开始的记录号

query.setMaxResults(resultNumber);//设置每页显示的记录数

Collection students = query.list();

2) JDBC 的分页:根据不同的数据库采用不同的sql 分页语句

例如: Oracle 中的sql 语句为: "SELECT * FROM (SELECT a.*, rownum r FROM

TB_STUDENT) WHERE r between 2 and 10" 查询从记录号2 到记录号10 之间的

所有记录

2

java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?

有两种实现方法,

分别是继承Thread类与实现Runnable接口   

用synchronized关键字修饰同步方法  

反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。

结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。

此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资 源,就会造成死锁。

所以不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起, 便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。

3

java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 

字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。

在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

4

java中实现多态的机制是什么?

方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现

5

继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?

父类:

package test;

public class FatherClass {

public FatherClass() {

System.out.println("FatherClass Create");

}

}   子类: package test;

import test.FatherClass;

public class ChildClass extends FatherClass {

public ChildClass() {

System.out.println("ChildClass Create");

} public static void main(String[] args) {

FatherClass fc = new FatherClass();

ChildClass cc = new ChildClass();

}

}

输出结果:

C:\>java test.ChildClass

FatherClass Create

FatherClass Create

ChildClass Create

内部类的实现方式?

答:示例代码如下:

package test;

public class OuterClass {

private class InterClass {

public InterClass() {

System.out.println("InterClass Create");

}

} public OuterClass() {

InterClass ic = new InterClass();

System.out.println("OuterClass Create");

} public static void main(String[] args) {

OuterClass oc = new OuterClass();

}

}  

输出结果:

C:\>java test/OuterClass

InterClass Create

OuterClass Create

再一个例题:

public class OuterClass {

private double d1 = 1.0;

//insert code here

}

You need to insert an inner class declaration at line 3. Which two inner class declarations are valid?(Choose two.)

A. class InnerOne{

public static double methoda() {return d1;}

}

B. public class InnerOne{

static double methoda() {return d1;}

}

C. private class InnerOne{

double methoda() {return d1;}

}

D. static class InnerOne{

protected double methoda() {return d1;}

}

E. abstract class InnerOne{

public abstract double methoda();

}

说明如下:   

1.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 故 A、B 错   

2.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;故 D 错   

3.非静态内部类的非静态成员可以访问外部类的非静态变量。 故 C 正确   

4.答案为C、E

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java帮帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档