没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
前几天参加了阿里巴巴的电话面试,把他们问的问题都记录了下来,希望对那
些正准备面试的人有用。
一、String,StringBuer, StringBuilder 的区别是什么?String 为什么是不
可变的?
答:String 是不可变的,StringBuer 是可变的;StringBuer 是线程安全
的,StringBuilder 是非线程安全的。
因 而 在 大 部 分 情 况 下 字 符 串 的 拼 接 速 度 为 :
StringBuilder>StringBuer>String
解释如下:
因为 String 是不可变的(通过 ide 的 debugger 可以发现其属性大都为 nal
类型),因此每次对其操作改变其变量值,其实是生成一个新的对象,然后将
变量引用指向新对象;因此速度慢。
StringBuer 则不同,对其操作即直接操作对象指向的引用,无需产生新对象,
速度很快;它是线程安全的,在维护多线程的同步等也会消耗一点性能。
StringBuilder 是 jdk5 之后新增的,其用法与 StringBuer 完全一致,但它
是线程不安全的,在单线程中最佳,因为其不需要维护线程的安全,因此是最
快的。
内存效率。
字符串重复的概率很高,
当其不可变时,就可以多个变量共享了。
二、VECTOR,ARRAYLIST, LINKEDLIST 的区别是什么?
答:1 ArrayList 底层是采用数组实现的(并且改数组的类型是 Object 类型
的)2 如果是 jdk6 的话,采用 Array.of()方法来生成一个新的数组,如果是
jdk5.0 的话,使用的是 System.arraycopy 方法(将数组拷贝)
3 List list = new ArrayList();时,底层会生成一个长度为 10 的数组来存放对
象,如果预先知道 list
会存放多少个对象的话,最好通过 new ArrayList(int length)的方式先确定
数组的最小长度,如 new
ArrayList(50),这样能提高底层的效率。
4 对于 ArrayList 与 Vector 来说,底层都是采用数组方式来实现的(该数组是
一个 Object 类型的数组)
5 对于 ArrayList,所有方法都不是同步的,对于 Vector,大部分是 public 的
方法都是同步的。
资源评论
- 白兰丶2015-10-02资源还不错,但是题还是不够全面啊。。。
雨咝咝
- 粉丝: 6
- 资源: 51
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功