所有栏目

java课程总结心得 java实验总结与心得

作者:范文虾

1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。

2)java的堆和栈的区别:

堆:是一个运行时数据区,类的对象从中分配空间。这些对象通过new,newarray,anewarray和muitianewarray等指令建立,它们不需要程序代码来显示释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是运行时动态分配内存的,Java垃圾收集器会自动收走这些不再使用的数据。但是缺点是:由于是要在运行时动态分配内存,存取速度较慢。

栈的优势:存取速度比堆要快,仅次于寄存器,栈数据可以共享。缺点是,存在栈中的数据大小与生命期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量

(int,short,long,byte,float,double,boolean,char)和对象句柄。

3)java算法:

1、冒泡排序:从头开始,依次对相邻的两个元素进行比较,发现有顺序错误就将它们调换过来!重复地进行,直到没有元素需要交换。是稳定排序法,最好的时间复杂度是O(n);

2、快速排序:思想是(Divide)选取一个基元X开始(一般选取数组的第一个元素),通过某种分区操作将数组划分成两个部分,左边部分小于等于X,右边部分大于等于X。(Conquer)左右两个子数组递归地调用Divide过程,(Combine)快排作为就地排序算法,不需要任何合并操作!

3、递归:程序调用自身,并非不会无休止地调用下去,需要有一个出口,当满足条件时程序也就结束!不然的话,就会出现程序死循环。

4)JVM调用GC的频度还是很高的,主要两种情况下进行垃圾回收:第一个就是当应用程序线程空闲,另一个是java内存堆不足时,会不断调用GC,若连续回收都解决不了内存堆的不足。

4)、junit测试的方法的类型必须是public ,其他类型运行时会报错。方法的返回类型也必须是void,并且不能有参数。

5)、List

args = null; args.add(param);//这样会报错

分析原因:List是一个接口,没有实现是不能使用的,需要ArryList的实现类或者其他实现类才能使用

应该改为:List

args = new

ArrayList

();args.add(param);

6)、如A是父类,B是继承于A,两者都有构造函数和A有print(),B也覆盖了A的方法,那么可以A a = new B();此时a.print();调用的是B的print()方法,如果B的print()没有覆盖父类的方法,而是自己创建的print();那么这时a.print();调用的还是B的print()方法。另外,假设A有print1()方法,B没有覆盖A的print1();这时a.print1();不会报错,它

将调用的是A自己的print1()方法。最后,加入A没有了print()方法,而是print()是只有B有,这时a.print();将直接调用B的print();方法,总结: 对于类的继承,父类通过子类实例化后,构造方法都在先执行父类的构造方法,再依次执行子类的构造方法。方法的调用原则是先执行子类的方法,如果子类复写了父类的方法,将执行子类的方法,如果子类没有复写父类的方法,但是方法重名,也会只执行子类的方法。如果子类没有对应的方法,那么就执行父类的`方法!(不要以为子类没有该方法编译器会报错,因为继承了父类的方法!)请注意:B b = new A();编译器会报错,这也是不合逻辑的!

热点导航
教育资讯 知道问答 公考资讯 司法考试 建筑知识 工作范文 大学排名 报考专业 学习方法 句子美文 秒知回答 作业解答 精选答案 知途问学