




免费预览已结束,剩余43页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java企业面试题整理Java企业面试题整理1. 1+2+3+100构建一个函数。(易)答案:public int Sum(int n)if(n = 1)return 1;elsereturn n + Sum(n - 1);2. 描述冒泡算法。(易)答案:基本思路:对尚未排序的各元素从头到尾依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。可以看出如果有 n 个元素,那么一共要进行 n-1 轮比较,第 i 轮要进行 j=n-i 次比较。(如:有5个元素,则要进行5-1轮比较。第3轮则要进行5-3次比较)3. 堆和栈的区别!(难)答案:申请方式栈:由系统自动分配。例如,在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间堆:需要程序员自己申请,并指明大小,在c中malloc函数申请后系统的响应栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,申请大小的限制栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。申请效率的比较:栈由系统自动分配,速度较快。但程序员是无法控制的。堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.堆和栈中的存储内容栈: 在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。小结:堆和栈的区别可以用如下的比喻来看出:使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。4. 索引是怎样来提高搜索速度的!(难)答案:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(lname)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。5. 画一个项目的体系结构图。(难)答案:6. 同步和异步有何异同,在什么情况下分别使用它们?(难)答案:通俗版:举个例子:普通B/S模式(同步)AJAX技术(异步)同步:提交请求-等待服务器处理-处理完毕返回 这个期间客户端浏览器不能干任何事异步: 请求通过事件触发-服务器处理(这是浏览器仍然可以作其他事情)-处理完毕-同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。-举个例子 打电话时同步 发消息是异步综述版:异步通信”是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。当然,接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。异步通信的好处是通信设备简单、便宜,但传输效率较低(因为开始位和停止位的开销所占比例较大)。异步通信也可以是以帧作为发送的单位。接收端必须随时做好接收帧的准备。这是,帧的首部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始。这也称为帧定界。帧定界还包含确定帧的结束位置。这有两种方法。一种是在帧的尾部设有某种特殊的比特组合来标志帧的结束。或者在帧首部中设有帧长度的字段。需要注意的是,在异步发送帧时,并不是说发送端对帧中的每一个字符都必须加上开始位和停止位后再发送出去,而是说,发送端可以在任意时间发送一个帧,而帧与帧之间的时间间隔也可以是任意的。在一帧中的所有比特是连续发送的。发送端不需要在发送一帧之前和接收端进行协调(不需要先进行比特同步)。每个字符开始发送的时间可以是任意的t0 0 1 1 0 1 1 0起始位结束位t每个帧开始发送的时间可以是任意的以字符为单位发送以帧为单位发送帧开始帧结束。“同步通信”的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。收发双方不停地发送和接收连续的同步比特流。但这时还有两种不同的同步方式。一种是使用全网同步,用一个非常精确的主时钟对全网所有结点上的时钟进行同步。另一种是使用准同步,各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。串口进行通信的方式有两种:同步通信方式和异步通信方式。同步通信方式要求通信双方以相同的时钟频率进行,而且准确协调,通过共享一个单个时钟或定时脉冲源保证发送方和接收方的准确同步,效率较高;异步通信方式不要求双方同步,收发方可采用各自的时钟源,双方遵循异步的通信协议,以字符为数据传输单位,发送方传送字符的时间间隔不确定,发送效率比同步传送效率低。7. 说说你所熟悉或听说过的J2EE中的几种常用模式,及对设计模式的看法(中)答案:工厂模式、单例模式、代理模式、门面模式等设计模式就是解决某一类问题的方法论8. 下列是类和对象关系得是(B)(易)A苹果和橘子 B.水果和苹果C.水果和水果刀 D.苹果和水果刀9. int i=0; i=i+;执行这2句话后变量i的值为(A)(难)A. 0 B. 1 C. 2 D. 310. 怎样用2个栈实现队列(难)答案:队列的要求是先进先出,用两个栈可以很容易的实现 假设其中一个栈为s1, 另一个为s2 l 入队:将元素放入s1中,s2始终为空 l 出队: 1). 首先将s1中的元素全部导入s2的栈中,清空s1;2). 然后再将s2栈顶元素出栈,保留下来;3). 将s2剩余元素导入s1中,恢复数据原有顺序,就可以了。11. 用递归实现任意一个数的阶乘(中)public class test public static void main(String args) System.out.println(fuc(100); public static double fuc(int n) if(n=1) return 1; else return n*fuc(n-1); 12. 使用递归检索指定文件夹中的资源(难)package com.accp;import java.io.File;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class Recursive private static List fileList = new ArrayList();/* * 使用递归搜索指定文件夹中的资源 * param path 要搜索的文件目录 * return 包含文件路径的列表 */public static List searchFile(String path) try / List fileList = new ArrayList();File dir = new File(path);File files = dir.listFiles();if (files = null) return null;for (int i = 0; i files.length; i+) if (filesi.isDirectory() fileList.add(filesi.getAbsolutePath();searchFile(filesi.getAbsolutePath(); else String strFileName = filesi.getAbsolutePath().toLowerCase();fileList.add(filesi.getAbsolutePath();return fileList; catch (Exception e) e.printStackTrace();return null;public static void main(String args) String path = c:java;long start = System.currentTimeMillis();Recursive r = new Recursive();List files = r.searchFile(path);System.out.println(共有文件数量: + files.size();System.out.print(总共用时:);System.out.println(System.currentTimeMillis() - start);Iterator i = files.iterator();while (i.hasNext() System.out.println(i.next();13. 编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。(难)import java.io.*;public class Dicemalpublic static void main(String args) throws Exceptionint shang=0,yu;boolean flag=false;System.out.println(请输入一个数字(最大值为+Integer.MAX_VALUE+):);InputStream is = System.in;InputStreamReader isr=new InputStreamReader(is);BufferedReader br=new BufferedReader(isr);String str=br.readLine();char ch=new charstr.length();str.getChars(0, str.length(), ch, 0);for(int a=0;astr.length();a+)if(!Character.isDigit(cha)System.out.println(有非数字字符);System.exit(0);tryshang=Integer.parseInt(str);flag=true;catch(Exception e)System.out.println(数字过大);str=;if (flag)while (shang != 0)yu = shang % 2;shang = shang / 2;str = yu + str; System.out.println(str);14. 请写出你知道的JAVA开源软件,并用一句话说明其功能。(中)答案:Struts WEB框架Spring IOC/AOP 框架ibernate ORM框架DWR ajax 框架Log4j 日志调试Validator验证框架15. 构建工具Ant使用的缺省xml文件名是?(中)答案:Build.xml16. 简述什么是SOA。(难)答案:面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。17. XML在JAVA中有那些解析方法。(难)DOMSAX18. WAR包中的jar一般是放在哪个目录下?(难)答案:lib19. 简述Junit和单元测试的作用?(中)答案:检查程序和预期设计的是否一致20. 什么是工作流?(难)答案:工作流(Work Flow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。我们可以将整个业务过程看作是一条河,其中流过的河水就是工作流。 工作流属于计算机支持的协同工作(Computer Supported Cooperative Work,CSCW)的一部分。后者是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。 许多公司采用纸张表单,手工传递的方式,一级一级审批签字,工作效率非常低下,对于统计报表功能则不能实现。而采用工作流软件,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下跑,下一级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,大大提高了效率,实现了知识管理,提升了公司的核心竞争力。21. JavaEE是什么?(中)答案:是sun提出的一种规范和标准现在有很多种实现22. 什么是webService? (中)答案:WEB服务是一种面向服务的架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。WEB服务的核心主要包括:l SOAP:一个基于XML的可扩展消息信封格式,需同时绑定一个传输用协议。这个协议通常是HTTP或HTTPS,但也可能是SMTP或XMPP。l WSDL:一个XML格式文档,用以描述服务端口访问方式和使用协议的细节。通常用来辅助生成服务器和客户端代码及配置信息。l UDDI:一个用来发布和搜索WEB服务的协议,应用程序可借由此协议在设计或运行时找到目标WEB服务。WEB服务实际上是一组工具,并有多种不同的方法调用之。三种最普遍的手段是:远程过程调用(RPC),面向服务架构(SOA)以及表述性状态转移(REST)。23. Struts,webWork 的理解. (中)答案:两个实现了MVC的WEB应用程序开发的框架24. ORM的中间控件有哪些(举例). (中)答案:ibernate , IbatIs, JDO , EntityBean25. 写出java异常处理的5个关键字(中)答案:Try , catch, finally, throw, throws26. 描述break和continue控制循环的流程不同之处(中)答案:break 退出牡循环体,continue指退出当前这次循环,继续进入下一次循环27. try 里有一个return语句,那么紧跟在这个try后的finally 里的code会不会被执行,什么时候被执行,在return前还是后?(易)会执行,在return前执行。28. 常见的runtime exception有哪些?。(易)ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException,ClassCastException,CMMException, ConcurrentModificationException,DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationExceptionNullPointException29. 代码推断?(中)Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)=12Math.round(-11.5)= -11round方法返回与参数最接近的长整数.30. 构造器Constructor是否可被(覆盖)override? (易)构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。31. Java有没有goto?(易)java中的保留字,现在没有在java中使用。32. 启动一个线程是用run()还是start()?(中) 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。33. 两个对象值相同(x.equals(y) = true),但却可有不同的hash code,这句话对不对?(中)不对,有相同的hash code。34. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? (中)switch(expr1)中,expr1是一个整数表达式。应该是 int、 short、 char、byte。long,string 都不能作用于swtich。35. 编程题:写一个Singleton出来。 难Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。public class Singleton private Singleton() private static Singleton instance = new Singleton(); public static Singleton getInstance() return instance; 第二种形式: public class Singleton private static Singleton instance = null;public static synchronized Singleton getInstance() if (instance=null)instancenew Singleton(); return instance; String tempStr = ; try tempStr = new String(str.getBytes(ISO-8859-1), GBK); tempStr = tempStr.trim(); catch (Exception e) System.err.println(e.getMessage(); return tempStr; 36. String与StringBuffer的区别(中)答案:String一但声明,在内存中是不可改变的,而SringBuffer是可变的字符序列。37. char型变量中能不能存贮一个中文汉字?为什么?(中)答案:可以,就为采用Unicode编码38. Float型float f=3.4是否正确?(易)答案:不正确,应为:float f = 3.4f;39. 下面语句执行后的结果是什么?(难)答案:true ;false String a=teststringA;StringBuffer b =new StringBuffer(teststringA);String c=teststringA;System.out.println (a.equals(b.toString();System.out.println (a=c);40. class.forname的作用?为什么要用?Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。41. JSP中动态INCLUDE与静态INCLUDE的区别?(难)答案:动态包含可以传递参数,而静态则不可以。42. 以下程序代码将输出什么? (难) 答案:3 nullpublic class Test static int a = 3;static String b = null;public void reset()a =4;b = abc;public static void main(String args) System.out.println(a + + b);43. 以下程序代码输出的变量i的值为多少?(难)答案:public class Test public static void main(String args) int i = 99;add(i);System.out.println(i + 100);public static void add(int i)i += 100;44. 以下程序代码中哪行代码将产生错误?(难)class Parent private String name;public Parent()public class Child extends Parentprivate String dev;public Child()public String getValue()return name; /产生错误public static void main(String args) Parent p = new Parent();45. 以下程序代码的输出结果为?(难)答案:mqvpublic class Test public static void test()trygenerateException();System.out.print(e);catch(NumberFormatException ex)System.out.print(j);finallySystem.out.print(m);public static void generateException()throw new ArrayIndexOutOfBoundsException();System.out.print(h); /语法错误public static void main(String args) trytest();catch(Exception ex)System.out.print(q);finallySystem.out.print(v);46. forward 和redirect的区别(易)forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。47. JNDI是什么?(难)JNDI全称 Java Naming and Directory Interface。JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAP、CORBA Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术,包括EJB都依靠JNDI来组织和定位实体。 48. 错误404,500分别表示什么?(中)404,没有找到该页(没有找到资源)。500,内部错误。49. 数据库联接的几种方式?(中)JAVA连接数据库的方式有多种。根据所需要的不同数据库驱动分,分为四种:l 桥连(Bridge Connectivity):JDBC-ODBC桥的方式。但这种方式不适合程序的重用与维护,不推荐使用。需要数据库的ODBC驱动。l 本地连接(Native Connectivity):JDBC+厂商API的形式。厂商API一般使用C编写,所以,这种方式也不长使用。l 数据源连接(Datasource Connectivity):JDBC+厂商Database Connection Server+DataBase的形式。这种方法就是在JAVA 与 DATABASE之间价起了一台专门用与数据库连接的服务器(一般由数据库厂商提供)。在程序运行的外布环境中又称(Context)设置一个datasource数据源,有一个jndi 名称,程序只须查找此名称就可得到一个数据库连接的对象。他的好处在于能优化连接。l 纯Java连接(Pure Java Connectivity):纯JDBC+DATABASE的连接方式。在程序中硬性编入数据库连接的所须参数。50. 抽象类和接口的区别?(中)l abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。l 在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。l abstract class和interface所反映出的设计理念不同。其实abstract class表示的是is-a关系,interface表示的是like-a关系。l 实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。l 接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。l 抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。l 接口中的方法默认都是 public,abstract 类型的。51. String s = new String(“abc”);是几个对象?(难)如果在此语句之前没有用到”abc”,该语句会创建两个对象,xyz就是创造了一个String对象,然后调用的String类中的String(String)的构造方法创建的另外一个对象,xyz在全局数据区,s指向的对象在堆中。 如果语句如下: String s1 = new String(abc); /创建二个对象 String s2 = new String(abc); /创建一个对象,并且以后每执行一次创建一个对象 52. Sevlet的生命周期?(易)Servlet 是一种可以在Servlet容器中运行的组件,那么理所当然就应该有一个从创建到销毁的过程,这个过程我们可以称之为Servlet生命周期。 Servlet的生命周期可以分为加载、实例化、初始化、处理客户请求和卸载五个阶段,体现在方法上主要是init()、service()和 destroy()三个方法。生命周期的具体说明如下:Servlet容器完成加载Servlet类和实例化一个Servlet对象init()方法完成初始化工作,该方法由Servlet容器调用完成service()方法处理客户端请求,并返回响应结果destroy()方法在Servlet容器卸载Servlet之前被调用,释放一些资源53. 简述TCP的3次握手建立连接(难)在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。l 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN: 同步序列编号(Synchronize Sequence Numbers)l 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;l 第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据54. 数据库左连接和右连接的区别?(易)左连接就是保留左边表的相关字段,如果右边表相关字段有不匹配的,以null填充之。 右连接就是保留右边表的相关字段,如果左边表相关字段有不匹配的,以null填充之55. 简述垃圾回收?(中)Java语言中一个显著的特点就是引入了垃圾回收机制,使c+程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收56. 用任意语言写出一个堆栈的代码(中)使用java.util.Stack可以直接创建堆栈对象,Stack 类描述了一个对象的后进先出(LIFO)堆栈,pop()方法删除栈顶的对象并把它作为该函数的值返回,push(Object)把一个对象压入栈顶。 用LinkedList也可以模拟堆栈实现:public class Stack private LinkedList list = new LinkedList();public void add(Object obj)list.addLast(obj);public Object get()return list.removeLast();public static void main(String args)Stack stack = new Stack();stack.add(1);stack.add(2);System.out.println(stack.get();57. 用递归求出斐波那契数列的第30位数?(中)public static long fib(int n) if (n = 1 | n=2) return 1; else return fib(n-1) + fib(n-2); 调用fib(30)即可得到结果58. 写出一个函数实现将两个有序数组合并位一个有序数组(中)void MergeArray(int pArray1, int nLen1, int pArray2, int nLen2, int pArray) int i, j, n;i = j = n = 0;/ 循环一直进行到拷贝完某一个数组的元素为止while (i nLen1 & j nLen2) / 拷贝array1的元素 if (pArray1i pArray2j) pArrayn+ = pArray2j+; / 相等的元素拷贝 else pArrayn+ = pArray2j+; +i; / 如果array1已经被拷贝完毕就拷贝array2的元素 if (i = nLen1) while (j nLen2) pArrayn+ = pArray2j+;/ 如果array2已经被拷贝完毕就拷贝array1的元素 else while (i nLen1) pArrayn+ = pArray1i+; 59. 说出ArrayList,Vector, LinkedList的存储性能和特性(中)ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。60. Collection 和 Collections的区别。(易)Collection是集合类的上级接口,继承于它的接口主要有Set 和List。Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。61. HashMap和Hashtable的区别。(中)HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。62. final, finally, finalize的区别。(中) final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。63. sleep() 和 wait() 有什么区别? (中) sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。64. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?(易)方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。65. error和exception有什么区别?(易)error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。exception 表示一种设计或实现问题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国移动鸡西市2025秋招笔试题库含答案
- 临汾市中石油2025秋招笔试模拟题含答案法律与合规岗
- 中国广电焦作市2025秋招笔试行测题库及答案市场与服务类
- 宜昌市中石油2025秋招面试半结构化模拟题及答案油品分析质检岗
- 克拉玛依市中储粮2025秋招面试专业追问题库综合管理岗
- 中国移动襄阳市2025秋招笔试行测题库及答案互联网运营
- 巴彦淖尔市中储粮2025秋招财务资产岗高频笔试题库含答案
- 中国广电克拉玛依市2025秋招笔试行测题库及答案财务审计类
- 国家能源六安市2025秋招面试专业追问及参考法学岗位
- 2025年供热二次网考试题及答案
- 消防政治工作课件
- 松木桩地基处理施工方案
- 二城市轨道交通类型111课件
- 研学活动合同协议书模板
- 工程勘察设计收费标准(2002年修订本)
- 规范团费账户管理制度
- 销售团队组建方案-
- 坚持以人民为中心 课件
- 物业服务提升方案模板
- 不同茶叶的冲泡方法
- 人教版高中地理必修第一册第一章宇宙中的地球第一节地球的宇宙环境练习含答案
评论
0/150
提交评论