<<java面试宝典>>学习笔记

一、基本概念篇

1、以下程序错误的是()

short s=1; s=s+1;            //s+1为int型,不能直接赋值给short

注意类型转换:低级可直接转高级变量,即自动类型转换;高级转低级需强制转换(可能导致溢出或精度下降)

2、什么时候使用assert

3、判断一个数是不是2的次方。

private boolean judge(int a){

if(((a-1)&a)==0 ** a!=0)

return true;

else

return false;

}

4、Java对象序列化

必须让对象实现Serializable接口。序列号对象的时候,先创建一个OutputStream,然后把它嵌进ObjectOutputStream。这时,用writeObject()方法吧对象写入OutputStream。

读取的时候,需要把InputStream嵌到ObjectInputStream中,再调用readObject()方法。

参考:http://blog.csdn.net/mr_it/article/details/1441056

5、下列程序输出什么

public static void main(String args[]){
for(int a = 0; a < 5; a++)
int k = 1;
System.out.println("hello");
}

编译错误:for循环可以不使用"{}"。但仅限于执行语句(其中不包括变量声明语句)。同理,if,while语句也一样。


6、下列输出:

Value obj1 = new Value(1);
Object obj2 = new Value(1);
Value obj3 = new Value(1);
System.out.println(obj1.equals(obj2));
System.out.println(obj1.equals(obj3));


class Value{
private int i;
public Value(int i){
this.i = i;
}
public boolean equals(Value v){
System.out.println("equals is called");
if(v== this)
return true;
if(v instanceof Value){
Value tmp = (Value)v;
return i==tmp.i;
}
return false;
}
}

分别输出 false,true。

第一个调用的是Object类的equals方法。


7、继承extends也会调用父类的构造方法:

package com.tsc.utl;
class X{
private Y y = new Y();  //主动调用类Y,初始化Y,输出Y
X(){
System.out.println("X");   //初始化X,输出X
}
}
class Y{
Y(){
System.out.println("Y");  //初始化Y,输出Y
}
}
public class Z extends X{  //继承X,先调用X的构造方法
Y u = new Y();   //创建Y的实例,初始化Y类,输出Y
Z(){
System.out.println("Z");
}
public static void main(String args[]){
new Z();
}
}

输出顺序为YXYZ。


8、String 的substring(int start, int end)方法:前包括,后不包括。

 String s = “abcdef”.substring(2,4);  // 结果为:s=“cd”

9、 对于 String s = new String(“abc”);或者StringBuffer sb = new StringBuffer(“abc”);这样的语句,创建了两个对象,“abc”本身是String pool中的一个对象,还有一个String或者StringBuffer这样的对象(在运行new String()的时候,把String pool中的对象放到heap中,且将这个对象的引用交给s)

10、执行数据库查询时,如果要查询的数据有很多(1000万条),怎样提高查询效率?

(1)数据库设计方面:建立索引;分区(mysql,比如按时间分区);尽量使用固定长度的字段;限制字段长度;

(2)在数据库I/O方面:增加缓冲区;如果涉及表的级联,不同的表存储在不同的磁盘上,以增加I/O速度。

(3)SQL语句方面:优化SQL语句,减少比较次数;限制返回的条目数(Mysql中使用 limit)

(4)Java方面:如果是反复使用的查询,使用PreparedStatement减少查询次数。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值