Java最新面试题及答案总结.doc
Java语言程序设计(试卷总分:100分,考试时间:120分钟,答案写在答卷纸上)一判断题(每题1分,共10分)1、Java的字符类型采用的是Unicode编码,但所占字节由具体软硬件环境决定。 ( F )2、所有的鼠标事件都由MouseListener监听接口的监听者来处理。 ( F ) 3、Java语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式。 ( T )4、如果p是父类Parent的对象,而c是子类Child的对象,则语句p=c是正确的。 ( T )5、Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free。 ( F )6、由继承性可知,程序中子类拥有的成员数目一定大于等于父类拥有的成员数目。 ( F )7、静态初始化器是在其所属的类加载内存时由系统自动调用执行。 ( T )8、Applet是一种特殊的Panel,它是Java Applet程序的最外层容器。 ( T )9、注释的作用是使程序在执行时在屏幕上显示/之后的内容。 ( F )10、一个线程对象的具体操作是由run()方法的内容确定的,但是Thread类的run()方法是空的,其中没有内容;所以用户程序要么派生一个Thread的子类并在子类里重新定义run()方法,要么使一个类实现Runnable接口并书写其中run()方法的方法体。 ( T )二单项选择题(每题2分,共30分)1在浏览器中执行applet 程序,以下选项中的哪个方法将被最先执行( A )。A、init() B、start() C、destroy() D、stop()2 Java application中的主类需包含main方法,main方法的返回类型是什么?( D )A、int B、float C、double D、void3有以下方法的定义,请选择该方法的返回类型( D )。 ReturnType method(byte x, double y) return (short)x/y*2; A、byte B、short C、int D、double4下列哪些语句关于Java内存回收的说明是正确的? ( B )A、程序员必须创建一个线程来释放内存B、内存回收程序负责释放无用内存C、内存回收程序允许程序员直接释放内存D、内存回收程序可以在指定的时间释放内存对象5以下哪个关键字可以用来对对象加互斥锁?( B ) A、transient B、synchronized C、 serialize D、static6在编写Java Applet程序时,若需要对发生的事件作出响应和处理,一般需要在程序的开头写上( B )语句。A、import java.awt.* B、import java.applet.* C、import java.io.* D、import java.awt.event.* 7容器Panel和Applet缺省使用的布局编辑策略是( B )A、BorderLayout B、FlowLayout C、GridLayout D、CardLayout8设有下面两个赋值语句: a = Integer.parseInt(“123”); b = Integer.valueOf(“123”).intValue();下述说法正确的是( D )。A、a是整数类型变量,b是整数类对象。B、a是整数类对象,b是整数类型变量。C、a和b都是整数类对象并且值相等。 D、a和b都是整数类型变量并且值相等。9以下程序段执行后将有( C )个字节被写入到文件afile中。 try FileOutputStream fos=new FileOutputStream(“afile.txt”); DataOutputStream dos=new DataOutputStream(fos); dos.writeInt(3); dos.writeDouble(0.01); dos.writeInt(6); dos.close(); fos.close( ); catch(IOException e) A、2 B、8 C、12 D、1610编译并运行以下程序,以下描述哪个选项是正确的( C )。(1). class A(2). protected String toString()(3). return super.toString();(4). A、编译通过运行无异常 B、编译通过但运行时出错C、行(2)出错,不能成功编译 D、不能成功编译,行(3)出错11有以下程序片段,下列哪个选项不能插入到行(1)。( D )(1).(2).public class Interesting(3)./do sth (4). A、import java.awt.*; B、package mypackage; C、class OtherClass D、public class MyClass 12要使类中的某个成员变量只能被同一个包中的类访问到,该变量可用什么修饰符修饰?( D )A、protected B、public C、private D、应不加修饰符13以下哪个不是Java的关键字?( A )A、TRUE B、const C、super D、void14关于以下application的说明,正确的是( C )。(1) class StaticStuff(2) (3) static int x;(4) static x+=5;(5) public static void main(String args )(6) (7) System.out.println(“x=” + x);(8) (9) static x/=5;(10)A、4行与9行不能通过编译,因为缺少方法名和返回类型 B、9行不能通过编译,因为只能有一个静态初始化器C、编译通过,执行结果为:x=1D、能通过编译,但程序运行结果不可预知,因为变量x没有初始化15有程序如下,关于程序的描述哪个是正确的?( C)public class Person static int a = new int10;public static void main(String a) System.out.println(arr1); A、编译将产生错误 B、编译时正确,但运行时将产生错误 C、正确,输出0 D、正确,输出 null16FilterOutputStream是BufferedOutputStream、DataOutputStream及PrintStream的父类,以下哪个类可能是FilterOutputStream构造函数的参数类型?( A)A、OutputStream B、File C、InputStream D、BufferedOutputStream17以下关于构造函数的描述错误的是( A )。A、构造函数的返回类型只能是void型。B、构造函数是类的一种特殊函数,它的方法名必须与类名相同。C、构造函数的主要作用是完成对类的对象的初始化工作。D、一般在创建新对象时,系统会自动调用构造函数。18关于以下程序段,正确的说法是( B )。1 String s1=”abc”+”def”;2String s2=new String(s1);3if(s1= =s2)4 System.out.println(“= = succeeded”);5if (s1.equals(s2)6 System.out.println(“.equals() succeeded”);A、程序将输出:= = succeededB、程序将输出: .equals() succeededC、程序将输出:= = succeededD、程序无输出19在使用interface声明一个接口时,只可以使用( D )修饰符修饰该接口。A、private B、protected C、private protected D、public20有程序片段如下,以下哪个表示式的结果为true?( B )Float s=new Float(0.1f);Float t=new Float(0.1f);Double u=new Double(0.1);A、s=t B、s.equals(t) C、u.equals(s) D、t.equals(u)三程序阅读题(每题4分,共24分)1以下程序段的输出结果为 。public class ABC public static void main(String args ) int i , j ;int a = 2,1,3,5,4; for ( i = 0 ; i < a.length-1; i + ) int k = i; for ( j = i ; j < a.length ; j+ ) if ( aj<ak ) k = j; int temp =ai; ai = ak; ak = temp; for ( i =0 ; i<a.length; i+ ) System.out.print(ai+" "); System.out.println( ); 结果: 1, 2,3,4,5 。2阅读以下程序:import java.io.*;public class AboutFile public static void main(String args) BufferedReader b=new BufferedReader (new InputStreamReader(System.in); String s; System.out.flush(); s=b.readLine(); System.out.println(“String is:”+s); 运行以上程序,若从键盘输入: java<回车>则输出结果为 String is: java 。3以下程序段的输出结果为 。public class C public static void main(String args ) int i , j int a = 5,1,3,9,7; for ( i = 0 i < a.length-1; i + ) int k = i; for ( j = i j < a.length j+ ) if ( aj<ak ) k = j; int temp =ai; ai = ak; ak = temp; for ( i =0 i<a.length; i+ ) System.out.print(ai+" "); System.out.println( ); 结果: 1,3,5,7,9 4阅读以下程序,写出输出结果。class Animal Animal() System.out.print ("Animal "); public class Cat extends Animal Cat() System.out.print ("Cat "); public static void main(String args) Cat kitty= new Cat(); 结果:Animal Cat 5阅读以下程序,输出结果为 。import java.io.*;public class ATest public static void main(String args) SubClass sb = new SubClass( ); System.out.println(sb.funOfMod( ); class SuperClass int a = 10 , b = -3 class SubClass extends SuperClass int funOfMod( ) return a%b; 结果:16以下程序段的输出结果为 。class Cruncher void crunch( int i ) System.out.print(“int”); void crunch(String s) System.out.print(“String”); public static void main(String args )Cruncher crun=new Cruncher ( );char ch=h;int i=12;crun.crunch(ch);System.out.print(“,”);crun.crunch(i); 结果: int, int四简答题(每题5分,共10分)101.说说面向对象中的“封装”的概念是什么? 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。2. 请简单说明什么是“依赖注入”?当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在 传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者 实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。五编程题(必答题,第1题14分,第2题12分,共26分)1题目:请用Java语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。答案一(结果虽然正确,但是不是出题者想要的答案,考评参考意见:设计经验比较少,设计思想比较简单,一年以下编程经验的人员)class Program static void Main(string args) Console.Write("请输入数字A:"); string A = Console.ReadLine(); Console.Write("请选择运算符号(+、-、*、/):"); string B = Console.ReadLine(); Console.Write("请输入数字B:"); string C = Console.ReadLine(); string D = "" if (B = "+") D = Convert.ToString(Convert.ToDouble(A) + Convert.ToDouble(C); if (B = "-") D = Convert.ToString(Convert.ToDouble(A) - Convert.ToDouble(C); if (B = "*") D = Convert.ToString(Convert.ToDouble(A) * Convert.ToDouble(C); if (O = "/") D = Convert.ToString(Convert.ToDouble(A) / Convert.ToDouble(C); Console.WriteLine("结果是:" + D); 答案二(比较好的答案,考评参考意见:具有一定的编程思想,设计经验比较丰富,2-3年开发人员)/* * 运算类 * * author Administrator */public abstract class Operation private double numberA = 0; private double numberB = 0; /* * 得到运算结果 * * return * throws Exception */double getResult() throws Exception double result = 0; return result; public double getNumberA() return numberA;public void setNumberA(double numberA) this.numberA = numberA;public double getNumberB() return numberB;public void setNumberB(double numberB) this.numberB = numberB; / <summary> / 加法类 / </summary> public class OperationAdd extends Operation public double getResult() double result = 0; result = getNumberA() + getNumberB(); return result; / <summary> / 除法类 / </summary> public class OperationDiv extends Operation public double getResult() throws Exception double result = 0; if (getNumberB() = 0) throw new Exception("除数不能为0。"); result = getNumberA() / getNumberB(); return result; /* * 乘法类 * * author Administrator */public class OperationMul extends Operation public double getResult() double result = 0; result = getNumberA() * getNumberB(); return result; /* * 减法类 * * author Administrator */public class OperationSub extends Operation public double getResult() double result = 0; result = getNumberA() - getNumberB(); return result; /* * 运算类工厂 * * author Administrator */public class OperationFactory /* * 创建运算符对象 * * param operate运算符 * return 运算符对象 */public static Operation createOperate(String operate) Operation oper = null; if ("+".equals(operate) oper = new OperationAdd(); else if ("-".equals(operate) oper = new OperationSub(); else if ("*".equals(operate) oper = new OperationMul(); else if ("/".equals(operate) oper = new OperationDiv(); return oper; public class TestOperation /* * param args */public static void main(String args) / 创建运算符对象Operation oper; / 运算符对象oper = OperationFactory.createOperate("/"); oper.setNumberA(2); oper.setNumberB(5); try double result = oper.getResult();System.out.println(result);catch(Exception e) e.printStackTrace();-济南迅腾国际软件工程师培养基地-在线咨询网址:咨询电话:0531-,在线咨询qq:地址:济南市历城区王舍人镇朝山街316号乘车路线:乘坐106路、k57路、8路到市立三院下车即到2表名:DDRId T1 T21 A 1002 B 903 D 604 C 1005 E 506 A 707 B 908 C 90写一SQL语句,要求查出T2出现1次以上的全部信息打印出来,结果如下:Id T1 T21 A 1004 C 1002 B 907 B 908 C 90答案如下:参考:select * from ddr where T2 in (select T2 from ddr group by T2 having count(T1)>1)