面试心得

Java软件开发,一年经验,面试总结:
1.java基础:
(1)final与static的区别?
final修饰的类不能被继承,修改的变量为常量,只能赋值一次并且不能被改变,不能修饰构造方法;
static修饰的成员变量或成员方法,称为静态变量或静态方法,外部可以直接通过类名.变量名或方法访问,static变量前可以有private修饰,表示这个变量可以在静态代码块,或静态成员方法中使用;
(2)String与stringbuffer及stringbuilder区别?
string不可变长字符串,可以空赋值(null),后面两个不能,会出现Null pointer access
stringbuffer 可变长字符串,效率低,线程安全(多线程操作字符串)
stringbuilder 可变字符串,效率高,线程不安全(单线程操作字符串)
(3)集合collection,list,set,map之前的区别?
说起集合:我们首先会想到数组,但是数组有缺点,只能放统一类型的数据而且长度固定;
所以集合便应运而生,集合存在于java.util包中,集合只能存放对象,并且存放的是对象的引用,对象本身还是放在堆内存中,集合可以存放不同类型不用限量的数据类型;
Iterator接口是所有的集合的输出方式,
collection是存储单值集合的最大接口,继承了iterable接口,下面有两个实现子接口:list和set;
list存储数据是有序的可以重复的
Arraylist 底层数据结构是数组,查询快,增删慢;线程不安全,效率高
vector 底层数据结构是数组,查询快,增删慢;线程安全,效率低
linkedlist 底层数据结构是链表,查询慢,增删快;线程不安全,效率高
数组就像是一群人排队买东西有编号,查找时只需根据编号查找,增加删除时后面人需要移动,后面人编号需要改变。
链表就像是一群人手拉手站成一圈,查找某个人时需要一个一个数,而增加删除时只需要解开某两个人的手,并重新牵上新加入的人手就可以了。
set存储元素是无序的,不可以重复的
Hashset,无序,不可以重复,线程不安全,集合元素可以为Null;如果两个对象通过equals方法返回为true,这两个对象的hashcode值也应该相同
linkedHashSet,不可以重复,有序
Treeset,不可以重复,有序,使用红黑树算法,要求放入的元素对象必须实现Comparable接口,不可以传入Null元素
以上三个Set接口都不允许元素重复,都不是线程安全的类,解决方法:Set set = Collections.synchronizedSet(set 对象)
Map存储数据是key-value,键值对形式
Hashmap是根据键的哈希值存储数据,根据键可以直接获取他的值访问速度很快,允许一条记录的键为空,允许多条记录的值为空,是非同步的,即线程不安全
Hashtable同步的,写入时比较慢,不允许键或值为Null
ConcurrentHashMap,线程安全,并且锁分离,内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hash table,自己的锁。多个修改操作发生在不同的段上,它们就可以并发进行
LinkedHashmap,保存了记录的插入顺序,在用Iteraor遍历LinkedHashMap时,先得到的记录肯定是先插入的,在遍历的时候会比HashMap慢,有HashMap的全部特性
TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序(自然顺序),也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。不允许key值为空,非同步的
(4)线程?
线程实现两种方式,继承Thread类,实现Runnable接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值