Java大量面试题目

上传人:Sc****h 文档编号:148156621 上传时间:2022-09-04 格式:DOC 页数:46 大小:815KB
返回 下载 相关 举报
Java大量面试题目_第1页
第1页 / 共46页
Java大量面试题目_第2页
第2页 / 共46页
Java大量面试题目_第3页
第3页 / 共46页
点击查看更多>>
资源描述
Java 基础方面 :1、作用域 public,private,protected,以及不写时的区别答:区别如下:作用域 当前类 同一 package 子孙类 其他 packagepublicprotectedfriendlyprivate不写时默认为friendly2、 ArrayList和 Vector的区别 ,HashMap 和 Hashtable的区别答:就 ArrayList与 Vector主要从二方面来说.一. 同步性 :Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二 . 数据增长 : 当需要增长时 ,Vector 默认增长为原来一培,而 ArrayList 却是原来的一半就 HashMap与 HashTable 主要从三方面来说。一. 历史原因 :Hashtable是基于陈旧的Dictionary类的, HashMap是 Java 1.2引进的 Map接口的一个实现二. 同步性 :Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三. 值:只有HashMap可以让你将空值作为一个表的条目的key 或 value。2.1两个对象值相同(x.equals(y) = true),但却可有不同的hash code ,这句话对不对?不对,有相同的hash code 。2.2当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?是值传递。 Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。 对象的内容可以在被调用的方法中改变, 但对象的引用是永远不会改变的。2.3 swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上 ?switch应该是( expr1 )中, expr1int、 short、 char是一个整数表达式。因此传递给switch或者 byte 。 long,string都不能作用于和 caseswtich语句的参数。 ( 它能使用长度是在int范围之内的)2.4下面都是正确的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)2.5说出一些常用的类,包, 接口,请各举5 个?答案:常用类 -System,ArrayList,FileInputStream,Thread,Socket. 常用的包常用接口 -Collection,Connection, Cloneable, Comparable, Serializable 2.6 进程和线程的区别:进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:简而言之 , 一个程序至少有一个进程, 一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执 行了序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动, 进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体, 是 CPU调度和分派的基本单位, 它是比进程更小的能独立运行的基本单位 . 线程自己基本上不拥有系统资源, 只拥有一点在运行中必不可少的资源( 如程序计数器 , 一组寄存器和栈), 但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程; 同一个进程中的多个线程之间可以并发执行.3、 char 型变量中能不能存贮一个中文汉字?为什么 ? (方正简答题)答:是能够定义成为一个中文的,因为 java 中以 unicode 编码,一个 char 占 16 位,所以放一个中文是没问题的。3.1 Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?方法的重写Overriding和重载 Overloading是 Java 多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载 Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言, 父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。 Overloaded 的方法是可以改变返回值的类型。3.2 Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用 =还是 equals()?它们有何区别?Set里的元素是不能重复的,用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。equals()和=方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。3.3 error和exception有什么区别?error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。exception表示一种设计或实现问题。也就是说, 它表示如果程序运行正常,从不会发生的情况。3.4 abstract的 method 是否可同时是static,是否可同时是native,是否可同时是synchronized?都不能3.5接口是否可继承接口? 抽象类是否可实现(implements)接口 ? 抽象类是否可继承实体类(concrete class)?接口可以继承接口。抽象类可以实现(implements)接口, 抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。3.6 启动一个线程是用run()还是start()?启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run() 方法可以产生必须退出的标志来停止一个线程。3.7 构造器Constructor是否可被override?构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。3.8是否可以继承String类?String类是 final类故不可以继承。3.9当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法 ?不能,一个对象的一个synchronized方法只能由一个线程访问。4、多线程有几种实现方法, 都是什么 ?同步有几种实现方法, 都是什么 ?答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify41 谈谈final, finally, finalize的区别。final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值, 而在以后的引用中只能读取, 不可修改。 被声明为 final 的方法也同样只能使用,不能重载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是个 java.util下的类,它包含有各种有关集合操作的静态方法。Collection是个 java.util下的接口,它是各种集合结构的父接口。4 5 String s = new String(xyz);创建了几个String Object?(方正 选择题 )两个对象,一个是“ xyx”, 一个是指向“ xyx”的引用对象s。4 6 Math.round(11.5)等於多少 ? Math.round(-11.5)等於多少 ?Math.round(11.5)返回( long ) 12, Math.round(-11.5)返回( long ) -11;47 short s1 = 1; s1 = s1 + 1;有什么错 ? short s1 = 1; s1 += 1;有什么错 ? (方正选择题 )short s1 = 1; s1 = s1 + 1;有错, s1 是 short型, s1+1 是 int型 , 不能显式转化为short型。可修改为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()这个方法。5、继承时候类的执行顺序问题, 一般都是选择题, 问你将会打印出什么?答: 父类:package test;public class FatherClasspublic FatherClass()子类 :package test;import test.FatherClass;public class ChildClass extends FatherClasspublic ChildClass()public static void main(String args)FatherClass fc = new FatherClass();ChildClass cc = new ChildClass();输出结果:C:java test.ChildClassFatherClass CreateFatherClass CreateChildClass Create6、内部类的实现方式?答:示例代码如下:package test;public class OuterClassprivate class InterClasspublic InterClass()public OuterClass()InterClass ic = new InterClass();public static void main(String args)OuterClass oc = new OuterClass();输出结果 :C:java test/OuterClassInterClass CreateOuterClass Create再一个例题:public class OuterClass private double d1 = 1.0;/insert code hereYou need to insert an inner class declaration at line 3. Which two inner class declarations arevalid?(Choose two.)A. class InnerOnepublic static double methoda() return d1;B. public class InnerOnestatic double methoda() return d1;C. private class InnerOnedouble methoda() return d1;D. static class InnerOneprotected double methoda() return d1;E. abstract class InnerOnepublic abstract double methoda();说明如下:一. 静态内部类可以有静态成员,而非静态内部类则不能有静态成员。故 A 、 B 错二. 静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1出错。故 D 错三. 非静态内部类的非静态成员可以访问外部类的非静态变量。故 C 正确四. 答案为 C、 E7、垃圾回收机制, 如何优化程序 ?希望大家补上,谢谢8、 float型 float f=3.4是否正确 ?答: 不正确。精度不准确, 应该用强制类型转换,如下所示:float f=(float)3.49、介绍 JAVA中的 Collection FrameWork(包括如何写自己的数据结构)?答: Collection FrameWork如下:CollectionList LinkedList ArrayList VectorStackSetMapHashtabl eHashMapWeakHashMapCollection是最基本的集合接口,一个Collection代表一组Object ,即 Collection的元素( Elements )Map提供 key 到 value 的映射10、 Java 中异常处理机制,事件机制?11、 JAVA中的多态与继承?希望大家补上,谢谢12、抽象类与接口?答:抽象类与接口都用于抽象,但是抽象类(JAVA 中 ) 可以有自己的部分实现,而接口则完全是一个标识 ( 同时有多重继承的功能) 。13、 Java 的通信编程,编程题 ( 或问答 ) ,用 JAVA SOCKET编程,读服务器几个字符,再写入本地显示?答:Server 端程序public class Serverprivate ServerSocket ss;private Socket socket;private BufferedReader in;private PrintWriter out;public Server()tryss=new ServerSocket(10000);while(true)socket = ss.accept();String RemoteIP = socket.getInetAddress().getHostAddress();String RemotePort = :+socket.getLocalPort();in = new BufferedReader(newInputStreamReader(socket.getInputStream();String line = in.readLine();out = new PrintWriter(socket.getOutputStream(),true);out.println(Your Message Received!);out.close();in.close();socket.close();catch (IOException e)out.println(wrong);public static void main(String args)new Server();Client端程序 :package test;public class ClientSocket socket;BufferedReader in;PrintWriter out;public Client()tryBufferedReader line = new BufferedReader(newInputStreamReader(System.in);out = new PrintWriter(socket.getOutputStream(),true);out.println(line.readLine();in = new BufferedReader(new InputStreamReader(socket.getInputStream();out.close();in.close();socket.close();catch(IOException e)out.println(Wrong);public static void main(String args)new Client();14、用 JAVA实现一种排序,JAVA类实现序列化的方法( 二种 ) ? 如在 COLLECTION框架中,实现比较要实现什么样的接口?答: 用插入法进行排序代码如下package test;class InsertSortArrayList al;public InsertSort(int num,int mod)al = new ArrayList(num);Random rand = new Random();for (int i=0;inum ;i+ )al.add(new Integer(Math.abs(rand.nextInt() % mod + 1);public void SortIt()Integer tempInt;int MaxSize=1;for(int i=1;i=(Integer)al.get(MaxSize-1).intValue()al.add(MaxSize,tempInt);MaxSize+; else for (int j=0;j=tempInt.intValue()al.add(j,tempInt);MaxSize+;break;for(int i=0;ial.size();i+)public static void main(String args)InsertSort is = new InsertSort(10,100);is.SortIt();JAVA类实现序例化的方法是实现接口Collection框架中实现比较要实现Comparable接口和Comparator接口15、编程: 编写一个截取字符串的函数, 输入为一个字符串和字节数,字符串。 但是要保证汉字不被截半个,如“我 ABC”4,应该截为“我汉 DEF”, 6,应该输出为“我 ABC”而不是“我 ABC+汉的半个”。输出为按字节截取的AB”,输入“我ABC(方正 编程题)答:代码如下:package test;class SplitStringString SplitStr;int SplitByte;public SplitString(String str,int bytes)SplitStr=str;SplitByte=bytes;+SplitStr+;SplitBytes=+SplitByte);public void SplitIt()int loopCount;loopCount=(SplitStr.length()%SplitByte=0)?(SplitStr.length()/SplitByte):(SplitStr.length()/SplitByte+1);for (int i=1;i=loopCount ;i+ )if (i=loopCount) else public static void main(String args)SplitString ss = new SplitString(test中 dd 文 dsaf 中男大 3443n 中国 43 中国人0ewldfls=103,4);ss.SplitIt();16、JAVA多线程编程。用 JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。注:因为这4 个线程共享J,所以线程类要写到内部类中。加线程:每次对j 加一。减线程:每次对j 减一。public class TestThreadsprivate int j=1;/ 加线程private class Inc implements Runnablepublic void run()for(int i = 0;i 10;i+)inc();/ 减线程private class Dec implements Runnablepublic void run()for(int i = 0;i 10;i+)dec();/ 加 1private synchronized void inc()j+;/ 减 1private synchronized void dec()j-;/ 测试程序public static void main(String args)TestThreads test = new TestThreads();/ 创建两个线程类Thread thread = null;Inc inc = test.new Inc();Dec dec = test.new Dec();/ 启动 4 个线程for(int i = 0;i 2;i+)thread = new Thread(inc);thread.start();thread = new Thread(dec);thread.start();17、 STRING与 STRINGBUFFER的区别。答: STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String ,那么使用 StringBuffer的 toString()方法Jsp 方面1、 jsp 有哪些内置对象?作用分别是什么?答:JSP共有以下9 种基本内置组件(可与ASP的 6 种内部组件相对应):request用户端请求,此请求会包含来自GET/POST请求的参数response网页传回用户端的回应pageContext网页的属性是在这里管理session与请求有关的会话期application servlet正在执行的内容out用来传送回应的输出config servlet的构架部件page JSP 网页本身exception针对错误网页,未捕捉的例外2、 jsp 有哪些动作 ?作用分别是什么?答:JSP 共有以下6 种基本动作jsp:include:在页面被请求的时候引入一个文件。jsp:useBean :寻找或者实例化一个JavaBean。jsp:setProperty:设置 JavaBean 的属性。jsp:getProperty:输出某个JavaBean 的属性。jsp:forward:把请求转到一个新的页面。jsp:plugin:根据浏览器类型为Java 插件生成OBJECT或 EMBED标记3、 JSP 中动态 INCLUDE与静态 INCLUDE的区别?答:动态INCLUDE用jsp:include动作实现它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数静态 INCLUDE用 include伪码实现 , 定不会检查所含文件的变化,适用于包含静态页面4、两种跳转方式分别是什么?有什么区别 ?答:有两种,分别为:前者页面不会转向include所指的页面, 只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数. 后者完全转向新页面,不会再回来。相当于 go to语句。Servlet方面1、说一说Servlet 的生命周期 ?答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由 javax.servlet.Servlet接口的 init,service和 destroy 方法表达。2、 Servlet版本间 ( 忘了问的是哪两个版本了 ) 的不同 ?希望大家补上,谢谢3、 JAVA SERVLET API中 forward()与 redirect()的区别?答: 前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转, 浏览器将会得到跳转的地址, 并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以, 前者更加高效, 在前者可以满足需要时, 尽量使用 forward() 方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect() 方法。4、 Servlet的基本架构public class ServletName extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response) th rowsServletException, IOException public void doGet(HttpServletRequest request, HttpServletResponse response) thr owsServletException, IOException Jdbc、Jdo 方面1、可能会让你写一段Jdbc 连 Oracle 的程序 , 并实现数据查询.(方正编程题 )答: 程序如下:package hello.ant;public class jdbcString theUser=admin;String thePw=manager;Connection c=null;Statement conn;ResultSet rs=null;public jdbc()tryc = DriverManager.getConnection(dbUrl,theUser,thePw);conn=c.createStatement();catch(Exception e)e.printStackTrace();public boolean executeUpdate(String sql)tryconn.executeUpdate(sql);return true;catch (SQLException e)e.printStackTrace();return false;public ResultSet executeQuery(String sql)rs=null;tryrs=conn.executeQuery(sql);catch (SQLException e)e.printStackTrace();return rs;public void close()tryconn.close();c.close();catch (Exception e)e.printStackTrace();public static void main(String args)ResultSet rs;jdbc conn = new jdbc();rs=conn.executeQuery(select * from test);trywhile (rs.next()catch(Exception e)e.printStackTrace();2、 Class.forName的作用 ?为什么要用 ?答:调用该访问返回一个以字符串指定类名的类的对象。3、 Jdo 是什么 ?答:JDO 是 Java 对象持久化的新的规范,为 java data object的简称 , 也是一个用于存取某种数据仓库中的对象的标准化API。 JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API 的使用)。这些繁琐的例行工作已经转移到 JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。4、在 ORACLE大数据量下的分页解决方法。一般用截取ID 方法,还有是三层嵌套方法。答: 一种分页方法=intPageCount) nextPage=intPageCount;upPage = currentPage-1;if (upPage=1) upPage=1;rs.close();sql=select * from tables;rs=DBLink.executeQuery(sql);i=0;while(i/ 输出内容/ 输出翻页连接合计 :/第一页 ahref=List.jsp?page=上一页 %for(int j=1;ja href=list.jsp?page=%
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 幼儿教育


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!