终于从前几天的面试打击中走了出来,人不能没有自信,不仅要自信,更要盲目自信;当然前提是自己的技术要变得牛逼,让自己的工作经验变成自己可以拿出去面试的资本,工作一年了,三年五年了,长进了吗?日复一日的做着重复的事情,会有长进吗?当然不会。工作了,好多基础知识就忘了,这是理由吗?当然不是,这是借口。还是需要平时多读书,不管人丑不丑,都得多读书,emmm...推荐一下think in java 这本书,比较适合我这种菜鸟,好了,废话不多说,回想一下前几天面试的时候,面试官问了我什么吧。
多态的实现原理
多态是通过重载和重写实现的。重载是在一个类中有着一样的方法名,不一样的参数,不一样的参数是指参数的个数或者类型或者类型的顺序。返回类型就无所谓了,可以一样也可以不一样。重写是子类中有一个和父类中方法名一样的方法,但是方法里面的实现是自己的,而不是父类的。方法的参数也必须和父类要一样。
堆、栈
堆栈就是java划分的堆内存和栈内存。所有的对象和数组都存放入队中,当堆中的对象不用了的时候,由java垃圾回收机制自动回收。栈中存放的是对象的引用,栈的存取速度比堆快。由于两个对象可以指向同一个引用,所以就是说栈中的数据可以共享。
GC机制
java虚拟机采用一种自适应的垃圾回收技术。有一种做法:停止-复制(stop-and-copy),该做法首先会暂停程序的运行,然后将所有的存活的对象从当前堆中复制到另一个堆,没有被复制的都是垃圾。这种“复制式回收器”效率会降低,原因一,需要在两个分离的堆直接来回折腾,从而维护比实际多一倍的空间。原因二,程序进入稳定状态之后,可能只会产生少量垃圾,或者干脆就没有垃圾,这种方式仍然会将所有内存复制到另一处。为了避免这种情况,java虚拟机会进行检查:如果没有新的垃圾,会转换另一种工作模式(这就是自适应),标记-清扫(mark-and-sweep),从堆栈和静态存储区出发,遍历所有引用找到所有活着的对象,每找到一个就给个标记,最后全部标记完了之后就开始清理动作,没有标记的对象就被释放。-----来自于think in java一书的第五章初始化与清理的读后总结。
Object类有哪些方法
clone() equals() finalize() getClass() hashCode() notify() notifyAll() toString() wait()
其他的就是一些简单的问题比如面向对象三大特性啊,equals和==啊,mysql的什么排序order by啊,分组group by啊,去重distinct啊,inner join left join right join啊我就不写了,嗯,还有就是ssm框架,为什么用索引比不用索引快。
为什么用索引比不用索引快
索引是什么?索引是对记录按照多个字段进行排序的一种方式。
不用索引会查询整个数据,这个很慢是毋庸置疑的。
对表中的某个字段建立索引会创建另一种数据结构,其中保存着字段的值,每个值又指向与它相关的记录。这种索引的数据结构是经过排序的,因而可以对其执行二分法查找。(原本需要N次,现在只需要log2N次就可以)
还有就是我对未来的规划和为什么要换工作。这个就不说了吧,大家都懂啊哈哈哈。。。
equals 和==的区别
基本数据类型(byte,short,char,int,long,float,double,boolean)的比较,应该用==,比较他们的值,
当用==来比较两个变量时,只要两个变量的值相等就返回true。
当用==来比较对象时,比较的是对象在内存中的存放地址,只要不是同一个对象,就是false。
比如: String a = new String("abc");
String b = new String("abc");比较a==b,就会返回false。
如果是这样:String d = "abc";
String e = "abc"; 比较d==e,就会返回true,因为e和d的引用都指向同一个对象“abc”。
==比较的是两个对象的地址,而equals比较的是2个对象的内容。