<<java面试宝典>>学习笔记
2012-08-28 11:23
447 查看
一、基本概念篇
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减少查询次数。
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减少查询次数。
相关文章推荐
- 学习笔记之HTML中<ul>与<ol>的区别
- <<深入Java虚拟机>>-第二章-Java内存区域-学习笔记
- <<SQL Server 2005 高级程序设计>> 学习笔记(4)
- <<C++标准程序库>>中的STL简单学习笔记
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.8 保护模式编程初始化
- <Python高级全栈开发工程师-1>学习过程笔记【181-184】正则表达式 <特殊字符><函数>
- <<High-Speed Tracking with Kernelized Correlation Filters>> KCF(核化相关滤波)跟踪算法学习笔记
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.5 保护
- <<Python基础教程>>学习笔记 | 第09章 | 魔法方法、属性和迭代器
- <第二章>Node 学习笔记 |>简单的模块<|
- <<UNIX环境高级编程>>学习笔记之环境搭建
- <<Python基础教程>>学习笔记 | 第04章 | 字典
- <第三章>Node 学习笔记 |>URL网站解析<|
- Struts2学习笔记-<s:append>与<s:merge>标签
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.7 任务管理
- <<Stochastic Discrete Event Systems >>学习笔记
- Html学习笔记 --- html中<ul>与<ol>区别
- <<Signals and systems>> Chapter 1 学习笔记
- <<SQL Server 2005 高级程序设计>> 学习笔记(3)
- <第四章>Node 学习笔记 |> QueryString 参数处理小利器<|