96lsf 发表于 2019-11-28 10:50

常见的Java基础面试题

**1.java中实现多态的机制是什么?**
靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。
**2.GC是什么?为什么有GC?**
Java程序员不需要进行内存管理,是因为垃圾回收器会自动进行内存管理。垃圾回收器通常是一个单独的低级别的线程,不定时的清除和回收死亡的对象或没有被引用的对象。
垃圾回收机制有分代复制垃圾回收机制,标记垃圾回收机制和增量垃圾回收机制。
**3.你对Spring的理解?**
spring是一个轻量级的实现IOC和AOP的框架。
a)开源框架,实现了工厂模式的工厂类
b)IOC(控制反转)也称为(依赖注入)是一种设计思想,将类的创建和依赖关系写在配置文件里,由配置文件注入,实现了松耦合。所有对象都被spring控制。提高系统的灵活性和可维护性。
c)AOP(面向切面编程)就是系统中有很多不相干的类的方法,在这些众多的方法中,要加入某种系统功能的代码,例如,加入日志,加入权限判断,加入异常处理等等,将安全,事务等程序逻辑相对独立的功能抽取出来,利用spring的配置文件将这些功能插进去,实现了按照方面编程,提高了复用性。
**4.sleep()和wait()有什么区别?**
sleep()是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行;
wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒,或者等待时间到。
**5.jsp和servlet有什么关系?**
Jsp本质相当于一个Servlet,JVM只能识别Java的类,所以Web容器把Jsp编译成JVM可识别的Java类。
Jsp更适用于页面显示,而Servlet更适用于页面控制。
**6.Int和Integer有什么区别?**
int是java的八大基本类型之一,Integer是java为int提供的包装类型。int的默认值是0,Integer的默认值是NULL。在Web表现层EL表达式里Integer的默认值是NULL即空字符串,而int默认值是0,所以Integer比int更适合表现层。
**7.aop是什么?aop的作用是什么?**
oop:纵向的业务
Aop:oop的一个横向的服务,是对oop进一步的补充,提供安全、事务、日志等的集中式处理,相关的装备before、around、after exception
**8.说出一些常用的类,包,接口,请各举5个**
常用的类:BufferedReaderBufferWriterFileReaderFileWriterString,Integer
常用的包:java.langjava.iojava.utiljava.sqljavax.servletorg.apache.struts.actionorg.hiberate
常用的接口:RemoteListMapNodeListServlet   HttpServletRequest   HttpServletResponse   
**9.抽象类和接口的区别?**
声明方法的存在而不去实现它的类叫被叫做抽象类(abstract class),它用于要创建一个体现某些行为的类,并未该类声明方法,但不能再该类中实现该类的情况。不能创建abstract类的实例。
接口(interface)是抽象类的变体。接口中,所有的方法都是抽象的。多继承性可通过实现这样的接口而获得。接口只可定义static final成员变量。
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
**10.Class.forname的作用?为什么要用?**
将数据存放到内存中,提供一系列的添删改查方法,方便对数据进行操作.就是存数据的
**11.char型变量能不能存贮一个中文汉字?为什么?**
char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以char型变量当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,name,这个char型变量就不能存储这个特殊的汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。
**12.说出ArrayList,Vector,LinkedList的存储性能和特性,HashMap和Hashtable的区别**
ArrayList和Vector都是使用数组方式存储数据,插入数据
慢,查找快;Vector线程安全,通常性能上j较ArryaList差而LinkedList使用双向链表实现存储,插入快,查找慢。
1.同步性:Vector线程是安全的,也就是说是同步的,而ArrayList是线程不安全的,是不同步的
2.数据增长:当需要增长时,Vector默认增长为原来的一倍,而ArayList却是原来的一半。

HashMap中键值允许为空并且是非同步的;
Hashtable中键值不允许为空是同步的
继承不同(Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现),但是都实现了Map接口
页: [1]
查看完整版本: 常见的Java基础面试题