1、mysql oracle 区别?
1、提交方式
oracle默认不自动提交,需要用户手动提交
mysql默认是自动提交
2、分区表和分区索引
oracle的分区表和分区索引功能都很成熟,可以提高用户访问db的体验
mysql的分区表还不太成熟稳定
2、mysql postgresql 区别?
1、mysql更加快速,但是支持的特性较少,但是postgresql则有丰富的特性。
2、mySql是多线程模型,Postgresql是多进程模型。
多线程相比多进程的优点:线程的创建删除和切换成本低
多线程相比较多进程的缺点:更容易出现bug
3、ArrayList和HashMap的默认大小是多少?
java7中ArrayList的默认大小是10个元素,HashMap是16
4、我们能自己写一个容器类,然后用for-each循环码?
可以,你可以写一个自己的容器类,如果你想使用java中增强的循环来遍历,你只需要实现Iterable接口,如果你实现Collection接口,默认就具有该属性。
5、Java中的HashSet,内部是如何工作的?
HashSet的内部采用HashMap来实现。由于Map需要key和value,所以所有key都有一个默认value,类似HashMap,HashSet不允许重复的key,只允许一个null key,
6、Java中的TreeMap是采用什么树实现的?
java中的TreeMap是采用红黑树实现的。
7、Java中的LinkedList是单向链表还是双向链表?
双向链表。
8、java中怎么打印数组?
Arrays.toString()
9、poll()方法和remove()方法的区别?
poll()和remove()都是从队列中取出一个元素,但是poll()在获取元素失败的时候会返回空,但是remove()失败的时候会抛出异常。
10、“a==b”和”a.equals(b)”有什么区别?
a==b是指比较两个对象的引用,只有当a和b指向的是堆中同一个对象才会返回true,a.equal(b)是进行逻辑比较
11、Java 中堆和栈有什么区别?
栈通常要比堆小,也不会在多个线程之间共享,而堆被整个jvm的所有线程共享。
12、你能保证GC执行吗?
不能,虽然你可以调用System.gc()或者Runtime.gc(),但是没有办法保证GC的执行。
13、int和Integer那个会占用更多的内存?
Integer对象会占用更多的内存,因为Integer是一个对象,需要存储对象的元数据,但是int是一个原始类型的数据
14、Java中++操作符是线程安全的吗?
不是线程安全的操作。它涉及到多个指令,
15、事物的理解
1、事物具有原子性,一致性,持久性,隔离性。
原子性:是指一个事物中,要么全部执行成功,要么全部失败回滚
一致性:事物执行之前和执行之后都处于一致性的状态
持久性:事物多数据的操作是永久性
隔离性:当一个事物正在对数据进行操作时,另一个事物不可以对数据进行操作。
16、高并发处理
synchronize是锁同步一次只能一个人进行,这时候可以用到锁机制,采用乐观锁可以解决这个问题,乐观锁的简单意思是在不锁定表的情况下,利用业务的控制来解决并发问题,这样既保证数据的可读性,又保证数据的可读性,排他性,保证性能的同时解决了并发带来的脏数据问题