基础题
1、 String str = new String(“xyz”)一共产生几个对象
A 1个
B 2个
C 3个
D 4个
2、 下面代码片段的输出结果是:
int count = 0;
if(count ++ == 1){
System.out.println(“count== 1”);
}else if(count == 2){
System.out.println(“count== 2”);
}else{
System.out.println(“其他结果”);
}
A count == 1
B count == 2
C 其他结果
3、 下列关于访问修饰符的问题,哪一个是正确的
A 不带任何访问修饰符的成员方法可被子类调用
B 带有protected 访问修饰符的成员方法可以被同一包中的其他类调用
C 带有priivate 访问修饰符的成员变量可被子类引用
D private 不能和static同时使用
答:
修饰符 | 当前类 | 同 包 | 子 类 | 其他包 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。Java中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的修饰符可以是以上四种。
4、 下列关于final的说法,哪个是错误的
A final 修饰的类不能被继承
B final 方法不能被覆盖
C final 变量必须在声明的时候初始化
D final 变量引用的对象本身可能被修改
5、 变量”result”是boolean类型,下列哪个答案是合法的
A result = true;
B if(resule = true){//do something..}
C if(result <> 0 ){// do something..}
D result = 1;
编程题:
1、 一个ip地址:192.168.1,将中间两段替换成*(192.*.*.1),最好用正则表达式实现
2、 给一个三位数的正整数(如123),求各个位上数字的和(sum= 1 + 2 + 3)
3、 任意位数的正整数,求各个位上数字的和
回答题
1、 java接口相对于抽象类的优缺点
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
2、 项目开发中什么时候用StringBuffer,为什么
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
3、 在synchronized修饰的方法中sleep()和wait(),有什么区别
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
4、 Forward和redirect有什么区别
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
5、 数据库连接池的工作机制
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
6、 有如下三张表:
订单表(order)
Cost_id | 客户号 |
Goods_id | 商品id |
Sale_Date | 购买日期 |
Qty | 数量 |
Price | 单价 |
客户表(Customer)
Cust_id | 客户号 |
Cust_name | 客户名称 |
希望统计出如下形式的报表,每个客户购买的总数量和总金额
客户名称 | 商品名称 | 购买数量 | 购买金额 |
张三 | 键盘 | 5 | 100 |
7、 有表如下:
表1:user
Id | Name |
1 | Tom1 |
2 | Tom2 |
3 | Tom3 |
表2:userinfo
Id | address |
1 | 长宁 |
2 | 浦东 |
3 | 静安 |
4 | 普陀 |
请写出如下SQL的结果:select * from user u left joinuserinfo ui on u.id = ui.id
id | Name | Id | address |
1 | Tom1 | 1 | 长宁 |
2 | Tom2 | 2 | 浦东 |
3 | Tom3 | 3 | 静安 |
8、 有学生选课的需求,请您设计一下数据库表结构,要求可以方便的实现如下功能:
(不要考虑诸如授课老师,授课地点等细节)
1、 查询某个学生选了哪些课程
2、 查询某个课程被哪些学生选择
S( Sid, Name, ...)
C(Cid, CourseName, ...)
SC( Sid, Cid,...)