几道简单容易被问的题

1. ArrayList,Vector,LinkList区别?
2. HashMap和Hashtable的区别?
3. String类为什么要重写hashCode和equals方法?如果重写equals方法而不重写hashCode方法会出现什么问题?
4. 写出下面程序运行的结果,给出简单的理由说明为什么会出现这样的结果?
Integer i1=130;
Integer i2=130;

Integer j1=70;
Integer j2=70;

Integer m1=new Integer(10);
int m2=10;
Integer m3=new Integer(20);

System.out.println(i1==i2);
System.out.println(j1==j2);
System.out.println(m3==(m2+m1));
5.简述String,StringBuffer,StringBuilder之间的区别?

1、
①.ArrayList和Vector都是基于数组实现的,LinkedList是基于链表实现的。
②. ArrayList和LinkedList都是线程非同步的,Vector是线程同步的。可以使用Collections.synchronizedList()来进行同步。
③.ArrayList对于查找元素效率高,不适于大量元素的插入和删除。LinkedList对于插入和删除元素的效率高,不适于查找元素。由于Vector实现了同步,在性能上要比ArrayList的效率低。
④.ArrayList在容量不足时进行扩容扩充为原来的1.5倍,Vector扩展为原来的2倍。

2、
①. 两者实现的功能基本相同, HashMap是线程非同步的,Hashtable是线程同步的。(jdk5中引入了并发包,其中的ConcurrentHashMap基本可以代替 Hashtble,Hashtable已经基本上不在使用了.)
②.HashMap的键和值均允许空值null,Hashtable不允许。
③. 两者都实现了Map接口,Hashtable基础了Dictionary类,HashMap没有继承该类。
④. HashMap的迭代器Iterator是快速失败机制(fail-fast机制),Hashtable的迭代器enumerator不是快速失败机制。
3、
①. String类中重写了Object的HashCode和equals方法,equals方法比较的是两个对象的内容是否相等,如果两个对象的内容相等则两个对象的hash码必需要相等。
如果不重写equals,那么比较的将是两个对象的地址是否相等,即相当于使用的是==进行比较。
②.String类在比较两个对象 是否相等是首先会计算对象的Hash码,如果两个对象的Hash码不相等,那么这两个对象必定不相等,就不会 在调用equals进行比较了,由于Hash码是基于Hash表存储的,查找只需一次。两个对象不等时,不在比较equals,可以提高比较的效率。
③.重写equals方法时,一定要重写hashCode方法。hashCode方法一般用于HashSet/HashMap等集合类来比较两个对象是否相等,如果重写equals方法(比较的是成员属性是否相等)而不重写hashCode方法,那么当两个对象相等时,他们的hashCode却不相等,这就会造成理解的不一致。(Set集合将可能会存储相同的对象)。

4. false
true
true
理由:Integer是包装类类型,会进行自动 装箱和拆箱。在进行自动拆箱操作时实际上调用的是Integer.valueOf()这个方法,该方法中对于-128-127之间的数会将它直接进行转换成int类型(相当于一个常量池),对于不在这个范围的数,将它存入常量池IntegerCache.cache中,要重新用new关键字创建对象。

对于第一个超过范围127,要重新创建对象,==只是比较地址是否相等,用equals比较则会返回true.
对于第二个在范围在-128-127,直接进行拆箱,和String类String s=”liuq”
String n=”liuq” s==n比较一样,返回true.
对于第三个当m1+m2相加 后得到的是一个int 类型的变量,==比较时 Integer m3会进行自动拆箱转换成int,所以实际上是比较int 20==20.

5、String类 字符串不可变的,另外两个均可以变。String类用final关键字修饰,可以用于多线程环境下,StringBuffer是线程安全的类,StringBuilder不是线程安全的,不能用于多线程环境下。
性能上:StringBuilder>StringBuffer>String.

时间: 2024-08-10 19:16:46

几道简单容易被问的题的相关文章

opennebula 一些问t题讨论

ou_ian - June 8th, 2011 11:13 am非常想请教一下如何设置VM的ip为DHCP? 我们的VM都需要通过eth0 (通过公司的DHCP获得ip)来连接到公司的网络(Internet),并且所有的VM都需要通过已注册的MAC地址才可以正确地获得IP,请问在opennebula的network template中应该如何设置呢? 我已经测试过单个的kvm实例,先通过bridge建立br0,然后桥接eth0和tap,这样vm可以正确地获得IP并连接internet,但是实在是

淘宝API学习之道:简单介绍淘宝API功能接口作用

前一阵子按照上级指示,根据淘宝API开发符合自已应用的系统,比如批量上传,批量修改名称,价格等功能什么的,在此就将我的开发历程写一写,为自己前段时间的工作做个总结. 淘宝开发平台(http://www.taobao.com/theme/tao_source/#prev),向第三方开发者提供API接口和相关开发环境的平台,使开发者可以开发属于自已的系统应用于淘宝店铺和阿里上,同时,运用SAAS模式,开发者开发的系统也可以在该平台上进行销售. 为进行开发做的准备,得在开发同盟网站注册帐号(http:

【leetcode 简单】 第七十题 有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 说明: 你可以假设字符串只包含小写字母. 进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况? class Solution:

【leetcode 简单】 第七十一题 二叉树的所有路径

给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 输入: 1 / 2 3 5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x

【leetcode 简单】 第七十七题 单词模式

给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式. 这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应模式. 示例1: 输入: pattern = "abba", str = "dog cat cat dog" 输出: true 示例 2: 输入:pattern = "abba", str = "dog cat cat fish&

【leetcode 简单】 第九十六题 最长回文串

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字符串的长度不会超过 1010. 示例 1: 输入: "abccccdd" 输出: 7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7. class Solution(object): def longestPalindrome(self, s): &quo

面试被问MySQL总回答不好:总结100道MySQL面试题和21题MySQL性能优化

前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面试文章,发现其中的一些问题自己也回答不好,虽然知识点大部分都知道,但是无法将知识串联起来 因此决定搞一个MySQL灵魂100问,试着用回答问题的方式,让自己对知识点的理解更加深入一点 主要针对的是开发人员需要知道的一些MySQL的知识点,主要包括索引,事务,优化等方面,以在面试中高频的问句形式给出答案 索引相关 什么是索引? 索引是个什么样的数据结构呢? Hash索引和B+树所有有什么区别或者说优劣呢? 上面

几道常问的题

是在牛客网上的某大神面经里看到的,大神总结了一下问题,我给写上答案方便查阅,有不对的请留言,随时修改. J2SE基础 1. 九种基本数据类型的大小,以及他们的封装类. 基本类型 大小/byte 封装类 byte 1 Byte short 2 Short char 2 Character int 4 Integer float 4 Float double 8 Double long 8 Long boolean - Boolean 2. Switch能否用string做参数? 在jdk7之前不能

15道简单算法题

passport.baidu.com/?business&un=%E7%BA%A2%E6%B2%B3%E5%B0%8F%E5%A6%B9%E6%83%85%E4%B8%80%E5%A4%9C#0 passport.baidu.com/?business&un=%E7%BA%A2%E6%B2%B3%E5%B0%8F%E5%A7%90%E6%89%BE%5F%5F#0 passport.baidu.com/?business&un=%E5%A4%A7%E7%90%86%E5%B0%8F