ssm/java 常见面试题
面试问题:
- Arraylist和linkedlist的区别,使用场景
- List和set区别
- Gc是什么
- List集合的排序怎么实现
- hashcode和equals的区别
- hashmap讲一下
- 聊下一下你知道的锁
- Ni/o和i/o
- Bean的生命周期和注入过程
- hashtable和hashmap的区别
- redis怎么保持跟数据库的一致性
- Redis 持久化你是怎么做的
- mq怎么保证数据不丢失
- stringbuffer和stringbuilder和string的区别
- 多线程创建的方式
- 如何防止表单重复提交
1.Arraylist和linkedlist的区别,使用场景
ArrayList是实现了基于动态数组的数据结构,LinkedList是基于链表结构。
对于随机访问的get和set方法,ArrayList要优于LinkedList,因为LinkedList要移动指针。
对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。
2. List和set区别
list:
1.可以允许重复的对象。
2.可以插入多个null元素。
3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。
4.常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适。
set:
1.不允许重复对象
2. 无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序。
3. 只允许一个 null 元素
4.Set 接口最流行的几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基于 HashMap 实现的 HashSet;TreeSet 还实现了 SortedSet 接口,因此 TreeSet 是一个根据其 compare() 和 compareTo() 的定义进行排序的有序容器。
3. Gc是什么
GC是垃圾回收的意思,java的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的.
4. List集合的排序怎么实现
Collections.sort(list); // 升序排列
Collections.reverse(list); // 倒序排列
5. hashcode和equals/==的区别
== :当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。
equals: 默认情况(没有覆盖equals方法)下equals方法都是调用Object类的equals方法,而Object的equals方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象)。
hashcode:hashCode()方法给对象返回一个hash code值。这个方法被用于hash tables,例如HashMap。
6. hashmap讲一下
自己百度吧
7. 聊下一下你知道的锁
自己百度吧
8. Ni/o和i/o
自己百度吧
9. Bean的生命周期和注入过程
自己百度吧
10. hashtable和hashmap的区别
HashTable和HashMap的区别详解
11. redis怎么保持跟数据库的一致性
解决方案大概有以下几种:
- 对删除缓存进行重试,数据的一致性要求越高,我越是重试得快。
- 定期全量更新,简单地说,就是我定期把缓存全部清掉,然后再全量加载。
- 给所有的缓存一个失效期。
12. Redis 持久化你是怎么做的
Redis 持久化存储方案
13. mq怎么保证数据不丢失
rabbitmq如何保证消息的可靠性
14. stringbuffer和stringbuilder和string的区别
15. 多线程创建的方式
1)继承Thread类创建线程
2)实现Runnable接口创建线程
3)使用Callable和Future创建线程
4)使用线程池例如用Executor框架
16. 如何防止表单重复提交
幂等性