最近几天,我参加了好几个面试。我主要找的是java,并且在简历上写明了只会java基础知识,现在在这里总结一下面试题。
Java面试题
- java的基本数据类型是什么
A: java的基本数据类型包括byte,int,long,float,double,boolean,char ==
和equals
的区别
A: ①==
常用来比较基本数据类型,8种基本数据类型有byte、short、long、double、char、int、float、boolean,因为变量直接存储的就是他们的值,所以用==
去比较,比较的就是他们的值。但是复合数据类型用“==”比较的是他的堆内存地址。
②equals
对于复合数据类型比较的也是它的堆内存地址(不能作用于基本数据类型的变量)。对于String(还有Date,Integer)类型重写了equals方法,使其比较的是存储对象的内容是否相等,而不是堆内存地址。- 谈谈对深拷贝和浅拷贝的理解
A:①浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对“主”对象进行拷贝,但不会复制主对象里面的对象。”里面的对象“会在原来的对象和它的副本之间共享。
简而言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象
②深拷贝: 深拷贝是一个整个独立的对象拷贝,深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。当对象和它所引用的对象一起拷贝时即发生深拷贝。深拷贝相比于浅拷贝速度较慢并且花销较大。
简而言之,深拷贝把要复制的对象所引用的对象都复制了一遍
数据库
- java如何防止两个人同时更改数据库,造成覆盖?
A: 悲观锁。在查询的时候加上行级锁,让其他用户无法访问这些记录
select … from table for update
暂时先写到这里,后面如果有面试再继续补充。