1、GC是什么?常用的两种方法是什么?
答:
(1)GC是垃圾收集的意思(Garbage
Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供了GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
(2)System.gc()用来强制立即回收垃圾,即释放内存。
java对内存的释放采取的垃圾自动回收机制,在编程的时候不用考虑变量不用释放内存,java虚拟机可以自动判断出并收集到垃圾,但一般不会立即释放它们的内存空间,当然也可以在程序中使用System.gc()来强制垃圾回收,但是要注意的是,系统并不保证会立即进行释放内存。
gc首先要判断该对象是否是时候可以收集。两种常用的方法是引用计数和对象的引用遍历。
2、线程常用的方法是什么?
答:
Thread类的常用方法:
static Thread
currentThread() //静态方法,通过这个方法可以获得主线程的引用,从而达到操作主线程的目的。
static int
activeCount() //静态方法,获得当前活动线程数量
long
getId() //获得当前线程的id
String
getName() //获得当前线程的名字
int getPriority() //获得优先级
boolean isAlive() //当前线程是否处于活动状态。
boolean
isDaemon() //是否为守护线程
void
run() //run()方法,我们用线程,主要就是对run()方法的重写
void
start() //使该线程开始执行;Java虚拟机调用该线程run()方法。
void
sleep() //使当前线程休眠,以执行其他线程,如Thread.sleep(1000)休眠1秒
3、Sleep()和wait()的区别?
答:
sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。因为在那个时刻,其他线程可能正在运行而且没有被调度为放弃执行,除非“醒来”的线程有更高的优先级,或者正在运行的线程因为其他原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调用对象进入等待状态,直到被唤醒或等待时间到。
4、EJB和JavaBean都是什么?
答:
javabean是客户端组件,EJB是服务器端组件。
其实EJB和javabean最根本的区别是分布性。
5、EJB都有哪些构成?
答:
Session Bean,Entity Bean,Message Driven Bean.
6、Servlet的生命周期,比CGI有什么优点?
答:
web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不用的do***()方法。结束服务,web容器调用servlet的destroy()方法。
Servlet是Java平台上的CGI技术。Servlet在服务器端运行,动态地生成Web页面,与传统的CGI和许多其他类似CGI的技术相比,JavaServlet具有更高的效率并更容易使用。对于Servlet,重复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并访问的。
7、存储过程和函数的区别?
答:
本质上没有区别。只是函数有只能返回一个变量的限制,而存储过程可以返回多个。函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都是一样。函数限制比较多,比如不能用临时表,只能用表变量。还有一些函数都不可用等等,而存储过程的限制相对就比较少。
8、Java Server Page 和
servlet的联系与区别?
答:
JSP在本质上就是servlet,但两者的创建方式不一样。
servlet完全是Java程序代码构成的,擅长流程控制和事务处理,通过servlet来生成动态网页很不直观。
JSP是由HTML代码和JSP表情构成,可以方便地编写动态网页。
因此实际应用中采用servlet来控制业务流程,而采用JSP来生成动态网页,JSP是servlet技术的拓展,本质上就是Servlet的简易方式,JSP编译后是“类servlet”。
9、Java中Collection和Collections的区别?
答:
java.util.Collection是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,Collection接口在Java类库中有很多具体的实现,Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
java.util.Collections是一个包装类,它包含各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
10、ArrayList和Vector的区别,HashMap和HashTable的区别?
答:
(1)ArrayList 和 Vector的区别主要从两方面来说
同步性:Vector是线程安全的,也就是同步的,ArrayList是线程不安全的,也就是不同步的。
数据增长:当需要增长时,Vector默认增长为原来的一杯,而ArrayList却是原来的一半。
(2)HashMap和HashTable的区别
历史原因:HashTable是基于陈旧的Dictionary类,HashMap是java1.2引进的Map接口的一个实现。
同步性:HashTable是线程安全的,也就是同步的,HashMap是线程不安全的,也就不是同步的。
值:只有HashMap可以将空值作为一个表的条目的key或value。
11、interface和abstrac的区别?
答:
(1)相同点
a、两者都是抽象类,都不能实例化
b、interface实现类及abstract class的子类都必须要实现已声明的抽象方法
(2)不同点
a、interface需要实现要用implements,而abstract class需要用继承entends
b、一个类可以实现多个interface,但一个类只能继承一个abstract class
c、interface强调特定功能的实现,而abstract class强调所属关系
12、Overload和Override的区别?
答:
Overload:重载,它可以表现类的多态性,可以是函数里可以有相同的函数名,返回值,类型不能相同,或者说可以改变参数类型、返回值,但函数名字依然不变。
Override:重写,在子类继承父类的时候子类中可以定义某方法与其父类有相同的名称和参数,当子类在调用这一函数时自动调用子类的方法,而父类相当于被覆盖了。
方法Overriding和Overloading是Java多态性的不同表现,Overriding是父类与子类之间多态性的表现,重载是类中多态性的表现。