集微笔记 / Java面试 / Java面试(二)

0 0

   

Java面试(二)

2018-03-20  集微笔记
11.Java序列化和反序列化
序列化(Serialize)
    把内存中的Java对象转换成平台无关的二进制流的过程称为对象的序列化
    对象的序列化主要有两种用途: 
    1)把对象的字节序列永久的保存到硬盘上,通常存放在一个文件中;
    2)允许在网络上传输对象的字节序列。
    序列化机制使得对象可以脱离程序的运行而独立存在,所有可能在网络上传输的对象的类都应该是可序列化的,否则程序将会出现异常;所有需要保存到磁盘里的对象的类都必须可序列化,比如Web应用中需要保存HttpSession或ServletContext属性的java对象。目前有两种方式实现序列化:Serializable、Enternalizable。
反序列化(Deserialize)

    把字节序列恢复为Java对象的过程称为对象的反序列化

12.==和eqauls()的区别

    ==是运算符,用于比较两个变量是否相等,而equals是Object类的方法,用于比较两个对象是否相等.默认Object类的equals方法是比较两个对象的地址,此时和==的结果一样。换句话说:基本类型比较用==,比较的是他们的值。默认下,对象用==比较时,比较的是内存地址,如果需要比较对象内容,需要重写equal方法。

13.hashCode与equals的区别与联系

    hashCode()方法是相应对象整型的hash值。它常用于基于hash的集合类,如Hashtable、HashMap、LinkedHashMap等等。它与equals()方法关系特别紧密。根据Java规范,两个使用equal()方法来判断相等的对象,必须具有相同的hashcode。

  将对象放入到集合中时,首先判断要放入对象的hashcode是否已经在集合中存在,不存在则直接放入集合.如果hashcode相等,然后通过equal()方法判断要放入对象与集合中的任意对象是否相等:如果equal()判断不相等,直接将该元素放入集合中,否则不放入。

有没有可能两个不相等的对象有相同的hashcode?

  有可能,两个不相等的对象可能会有相同的hashcode值,这就是为什么在hashmap中会有冲突。相等hashcode值的规定只是说如果两个对象相等,必须有相同的hashcode值,但是没有关于不相等对象的任何规定。

14.switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?

    在Java 5以前,switch(expr)中,expr只能是byte、short、char、int。从Java 5开始,Java中引入了枚举类型,expr也可以是enum类型,从Java 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

15.数组有没有length()方法?String有没有length()方法?

    数组没有length()方法,有length 的属性。String有length()方法。JavaScript中,获得字符串的长度是通过length属性得到的,这一点容易和Java混淆。

16.抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰?

    都不能。抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。本地方法是由本地代码(如C代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。synchronized和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。

17.如何实现字符串的反转及替换?(使用递归)

public static String reverse(String oStr){

if(oStr == null || oStr.length() <= 1){

return oStr;

}

return reverse(oStr.substring(1)) + oStr.charAt(0);

}

18.一个".java"源文件中是否可以包含多个类(不是内部类)?有什么限制? 

    可以,但一个源文件中最多只能有一个公开类(public class)而且文件名必须和公开类的类名完全保持一致。

19.Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口? 

    可以继承其他类或实现其他接口,在Swing编程和Android开发中常用此方式来实现事件监听和回调。

20.内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?

    一个内部类对象可以访问创建它的外部类对象的成员,包括私有成员。








    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    猜你喜欢

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多