Java面试题目(常考一)

多线程有几种实现方法?

多线程有两种实现方法,分别是继承thread类和实现Runnable。

 

多线程状态有哪些?

创建:new一个线程对象

就绪:调用stat方法,但是没立即抢到CPU时间片

运行:程序启动后,线程体run方法在执行

等待中:线程处于阻塞状态,等待外部处理结束

睡眠中:线程被强制睡眠

阻塞:java虚拟机不会给线程分配CPU,直到线程进入就绪状态,才会有机会获得运行状态

死亡:当线程执行完run方法中调用了stop方法,或者遇到未捕获的异常,就会退出run方法,此时进入死亡,该线程结束生命周期。

 

Java内存泄露主要原因有哪些?

JVM没及时对垃圾回收造成。一基于设计,二是基于开发。

(1)设计上:对于应用加载级别判断错误,导致JVM内存分配不合;

应用请求常链接设计,常连接会一直占用后台资源,不能及时释放;

数据库操作时候,存在很多耗时连接,导致大量资源不能释放;大量的监听设计等。

(2)基于开发上,大量静态变量的使用,如指向集合或者数据会一直占用资源;

不合理的方法使用,如jdk6的substring就可能导致内存泄露;

数据库连接没能及时关闭;

单例模式的使用,通常加载资源信息,如果加载信息里面有大量的集合、数据等对象,这些资源会一直在内存中,不容易释放。

 

 

Java如何实现序列化

实现serializable接口。

 

SQL语句

查询:Select * form 表名称

插入:INSERT INTO 表名称 VALUES (值1, 值2,....)

删除:DELETE FROM 表名称 WHERE 列名称 = 值

修改:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

 

描述MVC

Model——view——control层

Model:业务逻辑模块,每一个处理一个模块。(通过javabean,ejb等组件实现)

View:视图层,负责页面的显示,model处理结果给用户,实现数据到页面转换过程。(一般jsp实现)

Control:控制层,负责每个请求分发,把form数据传递给model处理,把处理结果传递给view显示。(一般是一个servlet)

 

过滤器的用法。

实现filter接口,同时覆盖接口的方法:Init、dofilter、filter、destroy。

 

B/SC/S的联系与区别?

C/S 是客户端与服务端结构,服务器通常用高性能的PC,工作站或小型机,安装oracle、sybase等。客户端需要安装专用客户端软件。一般建立专用网络上。

B/S是浏览器和服务器结构的应用。客户机只需要安装一个浏览器,服务端安装一系列数据库,安装oracle、sybase等。建立在广域网上,不必是专门的网络硬件环境。

 

面向对象的特征有哪些方面?

答:

抽象,包括过程抽象与数据抽象。

继承,对象的一个新类从现有的类中派生,这个过程称为继承。

封装,把过程数据包围起来,对数据的访问只能通过已定义的界面。

多态,允许不同类的对象对同一消息作出反应。

 

原始类型与封装类型?

原始类型:boolean,char,byte,short,int,long,float,double

封装类型:Boolean,Character,Byte,Short,Interger,Long

 

StringStringBufferStringBuilder的区别?

String是长度不可以变化。

StringBuffer是长度可变的。如果经常对字符串中内容进行修改,则用StringBuffer。

StringBuilder常优先使用,是JDK5开始为StringBuffer所补充的一个单线程使用的等价类。因为支持所有相同操作,但它不执行同步,速度很快。

 

JVM加载class文件的原理机制?

JVM中类的装载是由ClassLoader和他的子类来实现。JavaClassLoader是一个重要的java运行时候系统组件,它负责在运行时查找和装入类文件的类。

 

Char能不能存储一个中文汉字?

Java中以Unicode编码。一个Char占16个字节,所以放一个中文没问题的。

 

重写overrider与重载overload的区别?

重写:父类与子类多态性的表现,子类定义的方法和父类有相同的名称和参数,则是重写。

重载:一个类多态性中的表现,子类定义时候多个与父类同名但是有不同的参数个数和不同的参数类型时候,则成为重载。且可以改变返回值的类型。

 

抽象类和接口的区别?

抽象类:指向具体子类的一个实例。不能有抽象构造函数或者抽象静态方法。它的子类需要实现它中所有的抽象方法,否则该子类也是抽象类。

接口:所有方法都是抽象的,所有成员变量都是public static final ,一个类可以实现多个接口。

 

GC是什么?

垃圾回收集意思。内存处理是编程人员容易出现的问题的地方。忘记或者错误的内存会导致程序或者系统不稳定甚至崩溃。

 

Errorexception的区别?

Error表示系统级错误程序不必处理的异常。

Exception是需要捕捉或者程序处理的异常。

ListSetMap是否继承自Collection接口。

List,Set是;Map不是。

 

简单描述arraylistvectorlinkedlist的存储性能和特性

Arraylist和vector都是使用数组方式存储数据。查找快但是插入数据慢。

Vector是线程安全的,而Arraylist是不安全的。

Linkedlist是双向链接,实现存储。插入数据很快。

 

CollectionCollections的区别

Collection是java.util下的接口,各种集合的父接口,继承他接口的主要有set和list;

Collections是java.util下的类,针对集合的帮助类,提供一些列静态方法实现对各种集合的搜索,排序,线程安全化等操作。

 

HashMapHashtable的区别。

二者都实现了Map的接口。

HashMap没有排序,允许一个null键和多个null值,而hashtable是不允许;

hashMap把hashtable的contains去掉了,改成containsvalue和containsKey。

Hashtable的方法是synchronize,而hashMap不是。

多线程访问Hashtable时候不需要为它的方法实现同步。而HashMap就必须为之提供外同步。

猜你喜欢

转载自blog.csdn.net/qq_36411874/article/details/103014700