我的JAVA考试题!

 
1. 简要介绍 java 程序的健壮性。
答:JAVA 程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏。
2. 为什么说 java 语言是完全面向对象的?(其实我觉得它不是完全面向对象的)
答:因为它不支持任何面向过程的程序设计技术它的所有程序设计技术都是用类来实现的。
另答:因为它有 8 种简单数据类型不是面向对象的,可以直接使用它,用 static 申明的变量或方法不是面向对象的,因为它不属于任何一个对象,要调用它可以直接使用,不用对它进行实例化(这种说法还在争论中)。
3. 简要介绍 java 如何实现安全性。
 答:首先JAVA 删除了指针这就避免了非法的内存操作,所有对内存的操作都必须通过对象的实例来实现。而且当我们从网上下载代码执行是它的安全系统能确保恶意程序不会随便访问我们本地计算机的资源。
4. 为什么说 java 是解释性的?
答:因为我们在执行JAVA文件时,编译器会先把代码译成字节码文件,这是一种中间代码,然后JAVA解释器才进行执行。
5. 简要介绍 java 的平台无关性。
答:JAVA程序是在虚拟机上执行的,只要安装了JAVA虚拟机它就可以以字节码的形式在任何平台上执行。
6. 简要介绍 java 的多态性。
答:多态性是指同名的不同方法在程序中共存,系统根据不同的情况调用不同的方法实现不同的功能。实现多态性的方法有两种:覆盖实现,重载实现。
7. 简要介绍 java 是强类型检查语言。
答:JAVA对数据类型的检查非常严格,在定义和用变量时必须先指定其类型而且它只允许数据类型的向上提升,而且不允许出现会出现数据丢失的附值(如把小数附给整形)。
8.int Integer 有什么区别?
答:int是简单数据类型(整形)而Integer是整形的封装类。
9. 简要介绍 String StringBuffer 的区别?
答:String 类代表不可变字符串。在值创建之后就不能被改变。而StringBuffer是可变的字符序列,初始容量16字节,通过某些方法可改变其内容和长度。
10. 简要介绍 java 的垃圾回收机制。
答:JAVA的垃圾回收机制就是:当一个对象没有任何引用时,该对象便会启动垃圾回收器调用finalize()方法以配置系统资源或执行相关的清除操作。
11.final 关键字的作用是什么?
答:其作用是:用该关键字定义一个变量则该变量是一个最终变量,若用它定义一个方法则在继承过程中该方法无法被覆盖,若用它定义一个类则该类无法被继承。
12.static 关键字的作用是什么?
答:用static关键字所定义的方法或变量表示它是一个静态的,该方法或变量(可视为全局变量)不属于任何对象,而是属于类的,在类被加载的时候它就已经存在了。
13. 简要介绍 supper 的用法。
答:用supper关键字可以调用父类对象的方法或域,当子类需要调用父类带参数的构造方法的时候就可以通过在自己构造方法的第一个可执行语句中使用supper关键字来对其进行调用。
14.java 的访问限定符有哪些?区别是什么?
答JAVA的访问限定符分别是:public:公有的,在任何情况下都是可见的;
private:私有的,只有在同一个类中是可见的;protected:保护的,只有在同一个类中和该类的子类以及同一个包中是可见的。default:默认的,只在同一个类中和该类的子类中可见。
15. 接口能直接创建对象吗?为什么?
答:不能。因为接口中的所有方法都是抽象的方法。
16. 在继承关系中,要创建子类对象,构造函数是如何调用的,应该注意什么?
答:在继承关系中,要创建子类对象,构造方法会先调用其父类无参的构造方法,再调用子类的构造方法。需要注意的是:子类只能自动调用父类无参的构造方法,若要调用父类带参数的构造方法,需要用super关键字进行调用。
17. 简要介绍方法覆盖和方法重载的区别。
答:方法的覆盖是发生在两个类中的而且这两个类是继承的关系,子类的方法和父类的方法是同名且同参的。而方法的重载是出现在同一个类中的,同名不同参的若干个方法。
18. 简要说明当对象上传后(父类引用指向子类对象),对象的成员访问是受限制的。
答:当父类引用指向子类对象时,若是由父类继承而来的成员则可以访问,若是子类自己扩展的成员则访问受限制
19. 谈谈你对内部类及其使用的理解。
答:在一个类中定义另外一个类,这个另外的类就叫做内部类。一个内部类可访问宿主类的任何成员和方法,但当内部类被定义成一个静态类时(嵌套类)它不能访问宿主类的非静态方法(若不想让内部类访问宿主类的成员时因定义成静态的);要创建内部类对象必须先创建其宿主类对象一个内部类可放在宿主类中也可以放在外部类的一个方法中(局部内部类),此时如果内部类要访问该方法的参数或者变量,那么这个参数或变量必须是final的;有时为了省去反复写一些代码还可将一个内部类不起名字把其做成一个匿名内部类。内部类可派生子类,也可用其实现接口。要实例一个内部类必须先实例外部类。
20. 简要介绍抽象类和接口的异同点。
答:相同点:都不能直接实例对象,可以创建对象引用,它可以指向子类对象,在多态性上是一样的
    不同点:抽象类用abstract class定义,除了可以有抽象方法还可以有非抽象方法(也可以全部是非抽象方法例如适配器),接口用interface定义其所有方法必须是公有抽象的。接口可用以多实现,而抽象类则只能单继承。
21. 列举 3 个以上最常见到的 runtime exception
答:分母为零,下标越界,传递空引用,
22. 为了正常运行程序,所有的异常都需要程序员自己捕获并处理吗?(作简要说明)
答:不一定。对于RuntimeException,有时不需要程序员自己去捕获,一般IO异常才需要程序员自己捕获。
23. try 块后跟多个 catch 块时应注意什么?
答:此时需要注意,所有的具体异常都是由Exception派生而来所以要把具体的异常写在前面,而把Exception异常写在最后
24. 举例说明 finally 块的在何时使用。
答:当一段代码无论在程序是否出现异常都必须执行时需要用finally来定义这块代码。
但当程序用System . exit(0);退出时不执行finally定义的这块代码
25. 请定义一个自己的异常,该异常在除数大于 50 时被抛出。(需要编程)
答:程序如下:
class A
{
       int chufa(int a,int b)throws myexception
       {
              if(b>50)
                     throw new myexception("除数不能大于50");
              return a/b;
       }
}
 
class myexception extends Exception
{
       myexception(String str)
       {
           super(str);
       }
}
 
class Text
{
       public static void main (String[] args)
       {
              A a=new A();
              try
              {                                
                  a.chufa(1,51);
              }
              catch(myexception ex)
              {
                     ex.printStackTrace()
              }
    }
}
26. 简要介绍 throw throws 的区别。
答:throws是异常的抛出申明,就是用来通知调用者要抛出异常,而throw是抛出异常。
27. 简要说明当超类中的方法有异常声明,它的子类如果覆盖了该方法,子类方法异常声明该注意什么?
答:当超类中的方法有异常声明时如果子类覆盖该方法,子类方法异常声明要注意只能抛出相同的异常或者抛出该异常的子类,不能抛出新的异常。
28.final, finally, finalize 的区别?
答:final表示不能被改变(申明一个变量表示这是一个常量,申明一个方法表示这个方法不能被重写,申明一个类表示这个类不能派生子类);finally表示若程序没有用System.exit(0)退出,无论是否出现异常它的花括号内的语句块都执行;finalize是在垃圾回收器启用之前自动调用进行垃圾回收的方法。
29. 简要说明过滤流类特点。
答:使用节点流作为输入或输出,它必须使用一个已经存在的流连接创建。若已经存在的这个流也是一个过滤流则可扩充其功能。
30. 简要介绍 Applet 是如何保证安全性的。
答:Applet被限制在自己的运行环境(沙箱)中运行,不能运行任何本地可执行程序,不能对本地文件系统进行读写,也不能和其他机器进行通信 ,因此对本地系统而言Applet是安全的。
31. 简要介绍 Application Applet 的区别。
答:Applet是小应用程序:在Internet服务中被访问,传输,自动被安装,并且作为Web文档的一部分运行,Applet不需要main方法,也不用编写构造方法
Application是应用程序:在本地计算机上运行,要用main方法提供入口执行,
32. 简要介绍 Applet 的执行过程。
答:Applet类的getGraphics()方法或paint()方法得到图形上下文,然后利用Graphics类对象实现窗体内部的输出。
33. 简要介绍 java 的委托事件模型。
答:当一个事件源产生一个事件的时候,事件监听器会先进行查询该事件属于哪一种事件,然后交给相应的事件处理器进行处理。
34. 简要介绍如何创建自己监听器类。
答:监听器是一个接口,所以要创建监听器就必须实现接口内的所有抽象方法,当有些方法不用关心时,可用空实现将其实现,或者用适配器类直接对所关心的方法进行重写(只有一抽象方法的监听器没有相对应的适配器类)。
35. 什么是布局管理器?请至少列出 3 种。
答:布局管理器是用来设置容器内组件的位置形式的类,有以下几种
BorderLayout:可把组件放在东,南,西,北,中几个位置
    FlowLayout:层式布局管理器,它将组件一行一行的进行分配
    GridLayout:可把组件设置在大小都相等的网格中
    CardLayout:对象是容器的布局管理器,它将容器中的所有组件看作重叠的卡片。
    GridBagLayout:网格包布局管理器,它可以让一个组件不止占一行一列。
36. 简要说明如何在窗体上添加菜单。
答:需要先建立菜单条(MenuBar)并添加在窗体中,然后再建立菜单(Menu)添加进菜单条,最后建立菜单项(MenuItem)添加进菜单中,建立用new,添加用add。
37. 简单介绍进程和线程的区别。
答:进程是一个程序在其自身地址空间中的执行活动,而线程是进程中的一个单一的控制流程。一个进程中可以有多个线程。
38. 创建线程类有几种方法?并简单介绍。
答:有两种方法,一种方法是将类声明为 Thread 的子类,还有一种方法是创建一个类用其实现Runnable接口。
39. 简单介绍线程状态。
答:线程有四种状态:
新生状态:线程已经被建立但是还没有被执行的状态。
可执行状态:线程处于就绪状态,随时可以被执行,或已经开始执行。
阻塞状态:由于使用了 sleep等方法使线程进入睡眠或等待的阻塞状态。
死亡状态:该状态表示线程已经退出。
40.sleep() jion() wait() 有什么区别?
答:sleep()是休眠的意思,当一个线程执行到sleep()语句时便进入休眠状态,待休眠时间结束,线程继续执行;jion()是用来告诉系统,当一个线程已经执行完毕;wait()是始线程等待,用以线程间的通信,该方法要用notify() 或notifyAll()方法唤醒。
41. 简要介绍 java 如何使用 synchronized 实现线程同步。
答:有两种方法,第一种是在你要执行同步的的方法前加上synchronized关键字,将其申明为同步方法;另一种是同步块:将synchronized关键字放在需要同步的代码前面
42. 简要介绍 java 如何使用 wait() notify() notifyAll() 方法实现线程间通信。
答:当一个线程调用了wait()方法后该线程就会施放使用权进入等待状态,而其他线程将有机会运行,当该线程调用了notify()方法后该方法将通知刚才处于等待状态的线程使其被唤醒,该线程将有机会重新获得运行的权力。而notifyAll()是一次性将所有处于等待状态的线程都唤醒。
43. 简单介绍 TCP UDP 的区别。
答:TCP进行的是可靠面向连接的传输——计算机之间进行无差错传输,并进行流量控制;安全但效率低
UDP进行的是不可靠无连接传输——发送端不关心数据是否到达,是否出错;不可靠但很有效率。 
44. 简要介绍 JDBC 访问数据库的基本步骤。
答:基本步骤有5步:(1)建立驱动管理,一般常用forName();方法
(2)建立与数据库的连接,用getConnerction()方法返回一个Connerction对象
(3)传送SQL查询,调用Connerction的createStatement()方法
(4)调用Connerction的getResultSet()方法或同类方法反回查询结果
(5)关闭数据库
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值