1、Java,C,C+程序员笔试面试的题目大全谈谈final,finally,finalize的区别:final:修饰符(关键字)假如一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally:再异常解决时提供finally块来执行任何清除操作。假如抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进
2、入finally块(假如有的话)。finalize:方法名。Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在拟定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口):匿名的内部类是没有名字的内部类
3、。能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。&和&的区别:&是位运算符。&是布尔逻辑运算符。HashMap和Hashtable的区别:都属于Map接口的类,实现了将惟一键映射到特定的值上。HashMap类没有分类或者排序。它允许一个null键和多个null值。Hashtable类似于HashMap,但是不允许null键和null值。它也比HashMap慢,由于它是同步的。都属于Map接口的类,实现了将惟一键映射到特定的值上。HashMap类没有分类或者排序。它允许一个null键和多个null值。Hashtable类似于HashMap,但是不允许null和
4、null值。它也比HashMap慢,由于它是同步的。Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Mapinterface的一个实现HashMap允许将null作为一个entry的key或者value,而Hashtable不允许尚有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。由于contains方法容易让人引起误解。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而Ha
5、shMap就必须为之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大约同样,所以性能不会有很大的差异Collection和Collections的区别:Collections是个java.util下的类,它包具有各种有关集合操作的静态方法。Collection是个java.util下的接口,它是各种集合结构的父接口。GC是什么?为什么要有GC?(基础):GC是垃圾收集器。Java程序员不用紧张内存管理,由于垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc()Runtime.getRuntime().gc()。Strings=
6、newString(xyz);创建了几个StringObject:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。Math.round(11.5)等于多少?Math.round(-11.5)等于多少:Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11。shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错:shorts1=1;s1=s1+1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1=(short)(s1+1)。shorts1=1;s1+=1对的
7、。sleep()和wait()有什么区别:sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是由于在那个时刻,其它线程也许正在运营并且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运营的线程由于其它因素而阻塞。wait()是线程交互时,假如线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。数组有没有length()这个方法?String有没有length()这个方法:数组没有length()这个方法,有length的属性。String有length()这个方法
8、。Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。假如在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。假如在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Ov
9、erloaded的方法是可以改变返回值的类型。Set里的元素是不能反复的,那么用什么方法来区分反复与否呢?是用=还是equals()?它们有何区别:Set里的元素是不能反复的,那么用iterator()方法来区分反复与否。equals()是判读两个Set是否相等。equals()和=方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。给我一个你最常见到的runtimeexception:ArithmeticException(算法异常如0/9将抛出该异常),ArrayStoreException,BufferOverflowExce
10、ption,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,(类转换异常)CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,Inde
11、xOutOfBoundsException(数组越界异常),MissingResourceException,NegativeArraySizeException(数组定义了一个负数异常),NoSuchElementException,NullPointerException,(空的指向异常)ProfileDataException,ProviderException,RasterFormatException,SecurityException,SystemException,(系统异常)UndeclaredThrowableException,UnmodifiableSetExceptio
12、n,UnsupportedOperationException。error和exception有什么区别:error表达恢复不是不也许但很困难的情况下的一种严重问题。比如说内存溢出。不也许指望程序能解决这样的情况。exception表达一种设计或实现问题。也就是说,它表达假如程序运营正常,从不会发生的情况。List,Set,Map是否继承自Collection接口:List,Set是。Map不是。abstractclass和interface有什么区别:声明方法的存在而不去实现它的类被叫做抽象类(abstractclass),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类
13、中实现该类的情况。不能创建abstract类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义staticfinal成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(
14、即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass):接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。启动一个线程是用run()还是start():启动一个线程是调用start()方法,使线
15、程所代表的虚拟解决机处在可运营状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运营。run()方法可以产生必须退出的标志来停止一个线程。构造器Constructor是否可被override:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。try里有一个return语句,那么紧跟在这个try后的finally里的code会不会被执行,什么时候被执行,在return前还是后:会执行,在return前执行。两个对象值相同(x.equals(y)=true),但却可有不同的hashcode,这句话对不对:不对,有相同的has
16、hcode。当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递:是值传递。Java编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上:switch(expr1)中,expr1是一个整数表达式。因此传递给switch和case语句的参数应当是int、short、char或者byte。long,string都不能作用于swtich。编
17、程题:写一个Singleton出来:Singleton模式重要作用是保证在Java应用程序中,一个类Class只有一个实例存在。一般Singleton模式通常有几种种形式:第一种形式:定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。publicclassSingletonprivateSingleton()/在自己内部定义自己一个实例,是不是很奇怪?/注意这是private只供内部调用privatestaticSingletoninstance=n
18、ewSingleton();/这里提供了一个供外部访问本class的静态方法,可以直接访问publicstaticSingletongetInstance()returninstance;第二种形式:publicclassSingletonprivatestaticSingletoninstance=null;publicstaticsynchronizedSingletongetInstance()/这个方法比上面有所改善,不用每次都进行生成对象,只是第一次/使用时生成实例,提高了效率!if(instance=null)instancenewSingleton();returninstanc
19、e;其他形式:定义一个类,它的构造函数为private的,所有方法为static的。一般认为第一种形式要更加安全些。Hashtable和HashMap的区别:Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Mapinterface的一个实现HashMap允许将null作为一个entry的key或者value,而Hashtable不允许尚有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。由于contains方法容易让人引起误解。最大的不同是,Hashtable的方法是Synchro
20、nize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大约同样,所以性能不会有很大的差异作用域public,private,protected,以及不写时的区别:作用域当前类同一package子孙类其他packagepublicprotectedfriendlyprivate不写时默认为friendly。ArrayList和Vector的区别,HashMap和Hashtable的区别:答:就ArrayList与Vector重要从二方面来说.一.
21、同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为本来一倍,而ArrayList却是本来的一半就HashMap与HashTable重要从三方面来说。一.历史因素:Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程不安全的,不是同步的三.值:只有HashMap可以让你将空值作为一个表的条目的key或value。char型变量中能不能存贮一个中文汉字?为什
22、么:答:是可以定义成为一个中文的,由于java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的。介绍JAVA中的CollectionFrameWork(涉及如何写自己的数据结构):答:CollectionFrameWork如下:CollectionListLinkedListArrayListVectorStackSetMapHashtableHashMapWeakHashMapCollection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)Map提供key到value的映射。jsp有哪些内置对象?
23、作用分别是什么:答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相相应):request用户端请求,此请求会包含来自GET/POST请求的参数response网页传回用户端的回应pageContext网页的属性是在这里管理session与请求有关的会话期applicationservlet正在执行的内容out用来传送回应的输出configservlet的构架部件pageJSP网页自身exception针对错误网页,未捕获的例外。jsp有哪些动作?作用分别是什么:答:JSP共有以下6种基本动作jsp:include:在页面被请求的时候引入一个文献。jsp:useBean:寻找或者实例
24、化一个JavaBean。jsp:setProperty:设立JavaBean的属性。jsp:getProperty:输出某个JavaBean的属性。jsp:forward:把请求转到一个新的页面。jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。JSP中动态INCLUDE与静态INCLUDE的区别:答:动态INCLUDE用jsp:include动作实现它总是会检查所含文献中的变化,适合用于包含动态页面,并且可以带参数静态INCLUDE用include伪码实现,定不会检查所含文献的变化,合用于包含静态页面。两种跳转方式分别是什么?有什么区别:答:有两种,分别为:
25、前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是本来的页面。执行完后还会回来,相称于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相称于goto语句。说一说Servlet的生命周期:答:servlet有良好的生存期的定义,涉及加载和实例化、初始化、解决请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。JAVASERVLETAPI中forward()与redirect()的区别:答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将
26、会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。Servlet的基本架构:publicclassServletNameextendsHttpServletpublicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExce
27、ptionpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException也许会让你写一段Jdbc连Oracle的程序,并实现数据查询:答:程序如下:packagehello.ant;importjava.sql.*;publicclassjdbcStringdbUrl=jdbc:oracle:thin:127.0.0.1:1521:orcl;StringtheUser=admin;StringthePw=manager;Connectionc=nul
28、l;Statementconn;ResultSetrs=null;publicjdbc()tryClass.forName(oracle.jdbc.driver.OracleDriver).newInstance();c=DriverManager.getConnection(dbUrl,theUser,thePw);conn=c.createStatement();catch(Exceptione)e.printStackTrace();publicbooleanexecuteUpdate(Stringsql)tryconn.executeUpdate(sql);returntrue;cat
29、ch(SQLExceptione)e.printStackTrace();returnfalse;publicResultSetexecuteQuery(Stringsql)rs=null;tryrs=conn.executeQuery(sql);catch(SQLExceptione)e.printStackTrace();returnrs;publicvoidclose()tryconn.close();c.close();catch(Exceptione)e.printStackTrace();publicstaticvoidmain(Stringargs)ResultSetrs;jdb
30、cconn=newjdbc();rs=conn.executeQuery(select*fromtest);trywhile(rs.next()System.out.println(rs.getString(id);System.out.println(rs.getString(name);catch(Exceptione)e.printStackTrace();Class.forName的作用?为什么要用:答:调用该访问返回一个以字符串指定类名的类的对象。Jdo是什么:答:JDO是Java对象持久化的新的规范,为javadataobject的简称,也是一个用于存取某种数据仓库中的对象的标准化
31、API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBCAPI的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。此外,JDO很灵活,由于它可以在任何数据底层上运营。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文献、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。xml有哪些解析技术?区别是什么:答:有DOM,SAX,STAX等DOM:解决大型文献时其性能下降的非常厉害。这个问题是由DOM的树结构所导致的,这种结构占用的内
32、存较多,并且DOM必须在解析文献之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文献,不需要一次所有装载整个文献。当碰到像文献开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入解决代码来解决XML文献,适合对XML的顺序访问STAX:StreamingAPIforXML(StAX)。你在项目中用到了xml技术的哪些方面?如何实现的:答:用到了数据存贮,信息配置两方面。在做数据互换平台时,不能将数据源的数据组装成XML文献,然后将XML文献压缩打包加密后通过网络传送给接受者,接受解密与解压
33、缩后再同XML文献中还原相关信息进行解决。在做软件配置时,运用XML可以很方便的进行,软件的各种配置参数都存贮在XML文献中。用jdom解析xml文献时如何解决中文问题?如何解析:答:看如下代码,用编码方式加以解决packagetest;importjava.io.*;publicclassDOMTestprivateStringinFile=c:people.xml;privateStringoutFile=c:people.xml;publicstaticvoidmain(Stringargs)newDOMTest();publicDOMTest()tryjavax.xml.parsers
34、.DocumentBuilderbuilder=javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();org.w3c.dom.Documentdoc=builder.newDocument();org.w3c.dom.Elementroot=doc.createElement(老师);org.w3c.dom.Elementwang=doc.createElement(王);org.w3c.dom.Elementliu=doc.createElement(刘);wang.appendChild(do
35、c.createTextNode(我是王老师);root.appendChild(wang);doc.appendChild(root);javax.xml.transform.Transformertransformer=javax.xml.transform.TransformerFactory.newInstance().newTransformer();transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING,gb2312);transformer.setOutputProperty(javax.xml.
36、transform.OutputKeys.INDENT,yes);transformer.transform(newjavax.xml.transform.dom.DOMSource(doc),newjavax.xml.transform.stream.StreamResult(outFile);catch(Exceptione)System.out.println(e.getMessage();编程用JAVA解析XML的方式:答:用SAX方式解析XML,XML文献如下:王小明信息学院6258113男,1955年生,博士,95年调入海南大学事件回调类SAXHandler.javaimportj
37、ava.io.*;importjava.util.Hashtable;importorg.xml.sax.*;publicclassSAXHandlerextendsHandlerBaseprivateHashtabletable=newHashtable();privateStringcurrentElement=null;privateStringcurrentValue=null;publicvoidsetTable(Hashtabletable)this.table=table;publicHashtablegetTable()returntable;publicvoidstartEl
38、ement(Stringtag,AttributeListattrs)throwsSAXExceptioncurrentElement=tag;publicvoidcharacters(charch,intstart,intlength)throwsSAXExceptioncurrentValue=newString(ch,start,length);publicvoidendElement(Stringname)throwsSAXExceptionif(currentElement.equals(name)table.put(currentElement,currentValue);JSP内
39、容显示源码,SaxXml.jsp:剖析XML文献people.xml%Filefile=newFile(c:people.xml);FileReaderreader=newFileReader(file);Parserparser;SAXParserFactoryspf=SAXParserFactory.newInstance();SAXParsersp=spf.newSAXParser();SAXHandlerhandler=newSAXHandler();sp.parse(newInputSource(reader),handler);HashtablehashTable=handler.
40、getTable();out.println(教师信息表);out.println(姓名+(String)hashTable.get(newString(name)+);out.println(学院+(String)hashTable.get(newString(college)+);out.println(电话+(String)hashTable.get(newString(telephone)+);out.println(备注+(String)hashTable.get(newString(notes)+);out.println();%EJB与JAVABEAN的区别:答:JavaBean
41、是可复用的组件,对JavaBean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于JavaBean是被容器所创建(如Tomcat)的,所以JavaBean应具有一个无参的构造器,此外,通常JavaBean还要实现Serializable接口用于实现Bean的持久性。JavaBean事实上相称于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。EnterpriseJavaBean相称于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被部署在诸如Webspere、W
42、ebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。EJB的基本架构:答:一个EJB涉及三个部分:RemoteInterface接口的代码packageBeans;importjavax.ejb.EJBObject;importjava.rmi.RemoteException;publicinterfaceAddextendsEJBObject/somemethoddeclareHomeInterface接口的代码packageBeans;importjava.r
43、mi.RemoteException;importjaax.ejb.CreateException;importjavax.ejb.EJBHome;publicinterfaceAddHomeextendsEJBHome/somemethoddeclareEJB类的代码packageBeans;importjava.rmi.RemoteException;importjavax.ejb.SessionBean;importjavx.ejb.SessionContext;publicclassAddBeanImplementsSessionBean/somemethoddeclareMVC的各个部分都有那些技术来实现?如何实现:答:MVC是ModelViewController的简写。Model代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),View是应用的表达面(由JSP页面产生),Controller是提供应用的解决过程控制(一般是一个
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100