搜档网
当前位置:搜档网 › Java大量面试题目

Java大量面试题目

Java大量面试题目
Java大量面试题目

J a v a大量面试题目

Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

Java基础方面:

1、作用域public,private,protected,以及不写时的区别

答:区别如下:

作用域当前类同一package 子孙类其他package

public √ √√√

protected √ √√ ×

friendly √ √ ××

private √× ××

不写时默认为friendly

2、ArrayList和Vector的区别,HashMap和Hashtable的区别

答:就ArrayList与Vector主要从二方面来说.

一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

就HashMap与HashTable主要从三方面来说。

一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 引进的Map 接口的一个实现

二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的

三.值:只有HashMap可以让你将空值作为一个表的条目的key或value 。

两个对象值相同(y) == true),但却可有不同的hash code,这句话对不对

不对,有相同的hash code。

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。(它能使用长度是在int范围之内的)

下面都是正确的main方法签名。

public static void main(String[] args)

public static final void main(String[] args)

static public void main(String[] args)

static public synchronized void main(String[] args)

说出一些常用的类,包,接口,请各举5个?

答案:常用类-System,ArrayList,FileInputStream,Thread,Socket.

常用的包常用接口-Collection,Connection, Cloneable, Comparable, Serializa ble

进程和线程的区别:

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:

简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

线程的划分尺度小于进程,使得多线程程序的并发性高。

另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了

程序的运行效率。

线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行了序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源

(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

3、char型变量中能不能存贮一个中文汉字为什么(方正简答题)

答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16位,所以放一个中文是没问题的。

Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overridi ng是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Ov erriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

Set里的元素是不能重复的,那么用什么方法来区分重复与否呢是用==还是equals()它们有何区别

Set里的元素是不能重复的,用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。

equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

error和exception有什么区别

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

abstract的method是否可同时是static,是否可同时是native,是否可同时是synch ronized

都不能

接口是否可继承接口抽象类是否可实现(implements)接口抽象类是否可继承实体类(concrete class)

接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

启动一个线程是用run()还是start()

启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

构造器Constructor是否可被override

构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloadi ng。

是否可以继承String类

String类是final类故不可以继承。

当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法

不能,一个对象的一个synchronized方法只能由一个线程访问。

4、多线程有几种实现方法,都是什么同步有几种实现方法,都是什么

答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

同步的实现方面有两种,分别是synchronized,wait与notify

4.1谈谈final, finally, finalize的区别。

final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为fina l的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为fina l的方法也同样只能使用,不能重载

finally再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

finalize方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

4.2 &和&&的区别。

&是位运算符。&&是布尔逻辑运算符。

4.3 HashMap和Hashtable的区别。

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。

Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

4.4 Collection 和 Collections的区别。

Collections是个下的类,它包含有各种有关集合操作的静态方法。

Collection是个下的接口,它是各种集合结构的父接口。

4.5 String s = new String("xyz");创建了几个String Object (方正选择题)

两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

4.6 等於多少等於多少

返回(long)12,返回(long)-11;

4.7 short s1 = 1; s1 = s1 + 1;有什么错 short s1 = 1; s1 += 1;有什么错(方正选择题)

short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为sh ort型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

4.8 sleep() 和 wait() 有什么区别搞线程的最爱

sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级

(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

4.9 数组有没有length()这个方法 String有没有length()这个方法

数组没有length()这个方法,有length的属性。

String有length()这个方法。

valid(Choose two.)

A. class InnerOne{

public static double methoda() {return d1;}

}

B. public class InnerOne{

static double methoda() {return d1;}

}

C. private class InnerOne{

double methoda() {return d1;}

}

D. static class InnerOne{

protected double methoda() {return d1;}

}

E. abstract class InnerOne{

public abstract double methoda();

}

说明如下:

一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。故 A、B 错

二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错。

故 D 错

三.非静态内部类的非静态成员可以访问外部类的非静态变量。故 C 正确

四.答案为C、E

7、垃圾回收机制,如何优化程序

希望大家补上,谢谢

8、float型float f=是否正确

答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float) 9、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构) 答:Collection FrameWork如下:

Collection

├List

│├LinkedList

│├ArrayList

│└Vector

│└Stack

└Set

Map

├Hashtable

├HashMap

└WeakHashMap

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection 的元素(Elements)

Map提供key到value的映射

10、Java中异常处理机制,事件机制

11、JAVA中的多态与继承

希望大家补上,谢谢

12、抽象类与接口

答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。

13、Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示

答:Server端程序:

package test;

import .*;

import .*;

15、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入

“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。(方正编程题)

答:代码如下:

package test;

loopCount=()%SplitByte==0)()/SplitByte):()/Split

0ewldfls=103",4);

();

}

}

16、JAVA多线程编程。用JAVA写一个多线程程序,如写四个线程,二个加1,二

个对一个变量减一,输出。

注:因为这4个线程共享J,所以线程类要写到内部类中。

加线程:每次对j加一。

减线程:每次对j减一。

public class TestThreads

{

private int j=1;

etName()+"-inc:"+j);

}

etName()+"-dec:"+j);

}

者完全转向新页面,不会再回来。相当于go to 语句。

Servlet方面

2、Servlet版本间(忘了问的是哪两个版本了)的不同

希望大家补上,谢谢

3、JAVA SERVLET API中forward() 与redirect()的区别

答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

4、Servlet的基本架构

public class ServletName extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

}

}

Jdbc、Jdo方面

1、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询. (方正编程题)

2、的作用为什么要用

答:调用该访问返回一个以字符串指定类名的类的对象。

3、Jdo是什么

答:JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

4、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。

答:一种分页方法

<%

int i=1;

int numPages=14;

String pages = ("page") ;

int currentPage = 1;

currentPage=(pages==null)(1):{(pages)}

sql = "select count(*) from tables";

ResultSet rs = (sql) ;

while()) i = (1) ;

int intPageCount=1;

intPageCount=(i%numPages==0)(i/numPages):(i/numPages+1); int nextPage ;

int upPage;

nextPage = currentPage+1;

if (nextPage>=intPageCount) nextPage=intPageCount; upPage = currentPage-1;

if (upPage<=1) upPage=1;

();

sql="select * from tables";

rs=(sql);

i=0;

while((i

%>

3cdoc = ();

3c root = ("老师");

3c wang = ("王");

3c

3c

EJB方面

1、有哪些内容分别用在什么场合和的区别

答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。JSP,Servle t,EJB,JNDI,JDBC,JMS.....

2、EJB与JAVA BEAN的区别

答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如To mcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现S erializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCO M,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB 组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

J2EE,MVC方面

1、MVC的各个部分都有那些技术来实现如何实现

答:MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controll er" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

2、应用服务器与WEB SERVER的区别

希望大家补上,谢谢

3、J2EE是什么

答:Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(compo nent-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

4、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSD L解释。

答:Web Service描述语言WSDL

SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。

UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Serv ice提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的We b Service注册,以使别的企业能够发现的访问协议的实现标准。

5、BS与CS的联系与区别。

C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。

B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互。

C/S 与 B/S 区别:

a.硬件环境不同:

C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.

B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行

b.对安全要求不同

C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.

B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。

c.对程序架构不同

C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.

B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟.

d.软件重用不同

C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.

B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子

e.系统维护不同

C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统

B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.

f.处理问题不同

C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统

B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.

相关主题