面试题总结1
来源:互联网 发布:查看淘宝商品类目插件 编辑:程序博客网 时间:2024/06/06 03:08
1.用代码实现以下的图形:
*****
****
***
**
*
public class Picture {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=0;i<5;i++){
for(int j=0;i+j<5;j++){
System.out.print("*");
}
System.out.println();
}
}
}
2.java 事件委托机制的概念:一个源产生一个事件并将它送到一个或多个监听器那里。在这种方案中,监听器简单的等待,直到它收到一个事件。一旦事件被接受,监听器将处理这个事件,然后返回。
垃圾回收机制: 垃圾收集是将分配给对象但不再使用的内存回收或释放的过程。如果一个对象没有指向它的引用或者其赋值为 null,则次对象适合进行垃圾回收。
3.什么是 java 序列化,如何实现 java 序列化?
序列化与反序列化的概念:Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。
什么情况下需要序列化 :a.当你想把的内存中的对象保存到一个文件中或者数据库中时候;
b.当你想用套接字在网络上传送对象的时候;
c.Remote Method Invoke远程方法调用时,需要进行序列化。
如何实现序列化:将需要序列化的类实现Serializable接口就可以了,Serializable接口中没有任何方法,可以理解为一个标记,即表明这个类可以序列化。
序列化和反序列化例子:
public class mytest implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String name = "xujiang";
private int age = 24;
public static void main(String[] args) {
xuliehua();
//fan();
}
public static void xuliehua() {
try {
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("xj.dd"));
mytest mt=new mytest();
oos.writeObject(mt);
oos.flush();
oos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@SuppressWarnings("resource")
public static void fan() {
try {
ObjectInputStream ois =null;
ois=new ObjectInputStream(new FileInputStream("xj.dd"));
mytest mt=null;
mt=(mytest) ois.readObject();
System.out.println(mt.name);
System.out.println(mt.age);
} catch (Exception e) {
e.printStackTrace();
}
}
}
序列化ID:
序列化 ID 在 Eclipse 下提供了两种生成策略,一个是固定的 1L,一个是随机生成一个不重复的 long 类型数据(实际上是使用 JDK 工具生成),在这里有一个建议,如果没有特殊需求,就是用默认的 1L 就可以,这样可以确保代码一致时反序列化成功。这也可能是造成序列化和反序列化失败的原因,因为不同的序列化id之间不能进行序列化和反序列化。
序列化前和序列化后的对象的关系:
插入知识点:==与equal的简单比较:
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
==比较的是2个对象的地址,而equals比较的是2个对象的内容。
显然,当equals为true时,==不一定为true;
回答正题:系列化与反序列化后的对象的关系是深度复制;
序列化前后对象的地址不同了,但是内容是一样的,而且对象中包含的引用也相同。
静态变量能否序列化:
序列化会忽略静态变量,即序列化不保存静态变量的状态。transient后的变量也不能序列化
序列化的总结:
a)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
b)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
c) static,transient后的变量不能被序列化;
- 面试题总结1
- 面试题总结1
- 面试题总结1
- 面试题总结1
- 面试题总结1
- 面试题总结1
- .net面试题总结1
- Android面试题总结1
- hadoop面试题总结1
- hadoop面试题总结1
- hadoop面试题总结1
- 面试题总结1-50
- hadoop面试题总结1
- C++面试题总结1
- 面试题总结(1)
- 英语面试题总结(1)
- oracle面试题总结(1)
- c++面试题总结(1)
- 小命令保证大性能
- Linux GCC编译
- Java中的文本操作的一些方法
- java练习 六、循环语句 while循环语句
- Java对【JSON数据的解析】--官方解析法
- 面试题总结1
- jq 获取用户选择的:性别,所在地 等
- AngularJs:Directive指令用法
- EOS中在java代码中直接访问逻辑流
- IOS调试正常,打包闪退
- 条件注释判断浏览器<!--[if !IE]><!--[if IE]><!--[if lt IE 6]><!--[if gte IE 6]>
- 剑指offer 32. 1到n整数中2出现的次数
- SSD(Single Shot MultiBox Detector):绘制训练过程loss,accuracy曲线
- 弹簧动画-----Spring Animation