红黑联盟-java基础笔试题1

一、抽象类(abstract class)和接口(interface)有什么区别?
  答:声明方法的存在而不去实现它的类被叫作抽象类(abstract class),它用于要建立一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的状况。不能建立abstract 类的实例。然而能够建立一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的子类为它们父类中的全部抽象方法提供实现,不然它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类能够在类中实现这些方法。 
    接口(interface)是抽象类的变体。在接口中,全部方法都是抽象的。多继承性可经过实现这样的接口而得到。接口中的全部方法都是抽象的,没有一个有程序体。接口只能够定义static final成员变量。接口的实现与子类类似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义全部这种接口的方法。而后能够在实现了该接口的类的任何对象上调用接口的方法。因为有抽象类,它容许使用接口名做为引用变量的类型。引用能够转换到接口类型或从接口类型转换,instanceof 运算符能够用来决定某对象的类是否实现了接口

二、Java中的异常处理机制的简单原理和应用。程序员

   答:当Java程序违反了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种状况:一种是Java类库内置的语义检查。例如数组下标越界时会引起IndexOutOfBoundsException,访问null的对象时会引起NullPointerException。另外一种状况是Java容许程序员扩展这种语义检查,程序员能够建立本身的异常,并自由选择在什么时候用throw关键字引起异常。全部的异常都是Java.lang.Thowable的子类。 算法

三、sleep()和wait()有什么区别?
   答:sleep()是线程类Thread的方法,致使此线程暂停执行指定时间,给执行机会给其余线程,可是监控状态依然保持,到时后会自动恢复,调用sleep不会释放对象锁
   wait()是Object类的方法对此对象调用wait方法致使本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备得到对象锁进入运行状态。 
四、String是最基本的数据类型吗?
   答:String不是基本数据类型,基本数据类型包括byte、int、char、long、float、double、boolean和short。 Java.lang.String类是final类型的,所以不能够继承这个类、不能修改这个类。 
五、String和StringBuffer的区别。
   答:Java平台提供了两个类:String和StringBuffer,它们能够储存和操做字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当知道字符数据要改变的时候就可使用StringBuffer。典型地,可使用StringBuffers来动态构造字符数据。 
六、接口是否可继承接口? 抽象类是否可实现接口? 抽象类是否可继承实体类?
    答:接口能够继承接口。抽象类能够实现接口。抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。sql

七、Java有没有goto?
   答:goto是Java中的保留关键字,可是如今没有在Java中使用。 
八、启动一个线程是用run()仍是start()?
   答:启动一个线程是调用start()方法,使线程所表明的虚拟处理机处于可运行状态,这意味着它能够由JVM调度并执行。这并不意味着线程就会当即运行。run()方法能够产生必须退出的标志来中止一个线程。 
九、说明一下类变量和实例变量的区别。
   答:类变量是全部对象共有的,全部的实例对象都共用一个类变量,内存中只有一处空间存放类变量的值。若是其中一个对象改变了类变量的值,其余对象获得的就是改变后的结果。当类被加载到内存时,类变量就会分配相应的内存空间。
十、运行时异常与通常异常有何异同?
   答:异常表示程序运行过程当中可能出现的非正常状态,运行时异常表示虚拟机的一般操做中可能遇到的异常,是一种常见运行错误。Java编译器要求方法必须声明抛出可能发生的非运行时异常,可是并不要求必须声明抛出未被捕获的运行时异常。 
十一、说明实例方法和类方法的区别? 
   答:方法前面有static关键字修饰的为类方法不然为实例方法 实例方法能够调用该类中的其余方法类方法只能调用其余类方法不能调用实例方法;当类文件加载到内存时,实例方法不会被分配内存空间,只有在对象建立以后才会分配。而类方法在该类被加载到内存时就分配了相应的内存空间。
十二、什么是哈希表?
   答:哈希表又称散列表,是一种能将关键字映射成存储地址的记录存储技术。要存储数据,先设计一种算法(哈希函数),而后根据数据记录的关键字计算出各记录的哈希码,这个哈希码做为与关键字相关的记录数据的索引。要取出记录,只须要根据哈希函数从新计算,获得哈希码后,即可直接到相应位置去存取。 
1三、是否能够从一个static方法内部发出对非static方法的调用?
   答:不能够。若是其中包含对象的method(),不能保证对象初始化。
1四、在Java转义字符中,“\uxxxx”表明什么?
   答:\uxxxx是Java中的字符编码方式,其中前缀 \u就表示该字符是unicode字符xxxx表示1到4位16进制数,用这种转义字符形式能够表示unicode字符集中的任意字符。
1五、switch语句中的表达式能够是什么类型数据?
   答:表达式的值能够是byte、short、int和char类型的数据,但不能是float和double类型的数据。 
1六、插入数据时,ArrayList、LinkedList、Vector谁速度较快?
   答:ArrayList、Vector以数组方式存储数据,插入数据时要进行元素移动操做,于是插入数据慢。LinkedList是一种链表结构,在插入数据时只须要修改链表的先后项指向便可,所以插入速度较快。编程

1七、final, finally, finalize的区别。
   答:final—修饰符(关键字)若是一个类被声明为final,意味着它不能再派生出新的子类,不能做为父类被继承。所以一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,能够保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在之后的引用中只能读取,不可修改。被声明为final的方法也一样只能使用,不能重载。
    finally是异常处理时提供 finally 块来执行任何清除操做。若是抛出一个异常,那么相匹配的 catch 子句就会执行,而后控制就会进入 finally 块(若是有的话)。
    finalize是方法名。Java 技术容许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去以前作必要的清理工做。这个方法是由垃圾收集器在肯定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,所以全部的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其余清理工做。finalize() 方法是在垃圾收集器删除对象以前对这个对象调用的。
1八、说出一些经常使用的类,包,接口,请各举5个。 
   答:经常使用的类:BufferedReader,BufferedWriter,FileReader,FileWirter和String等。
   经常使用的包:Java.lang ,Java.awt,Java.io,Java.util和Java.sql等。
   经常使用的接口:Remote,List,Map,Document和NodeList等。
20、当用System.in.read(buffer)从键盘输入一行n个字符后,存储在缓冲区buffer中的字节数是多少? 
   答:当用System.in.read(buffer)从键盘输入一行n个字符后,存储在缓冲区buffer中的字节数有n+2个,即除输入的n个字符后,还存储了回车和换行字符
2一、如何实现字符串的分割?数组

第一种方法是采用split()方法,将分割后的内容保存在指定的字符串数组中;函数

第二种方法是采用StringTokenizer,利用StringTokenizer的nextToken()、hasMoreTokens()等方法进行分割。 
2二、描述一下JVM加载class文件的原理机制?
   答:JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。
2三、在什么状况下,finally语句不会执行?性能

   答:若是在try内部执行一条System.exit(0)语句终止应用程序的执行,则finally中的语句不会被执行。
2四、做用域public,private,protected,以及不写时的区别。
   答:具体区别以下:编码

做用域
同一类
同一包
子孙类
全部类
public
  √  
protected
×
private
×
×
×
默认
×
×


2五、说出重写和重载的区别,重写方法是否能够改变返回值的类型?
   答:方法的重写Overriding和重载Overloading是Java多态性的不一样表现。重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。
   若是在子类中定义某方法与其父类有相同的名称和参数,咱们说该方法被重写。子类的对象使用 这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。若是在一个类中定义了多个同名的方法,它们或有不一样的参数个数或有不一样的参数类型,则称为方法的重载。
   重载的方法是能够改变返回值的类型。 

2六、throw和throws有什么区别?
   答:throw关键字通常用于方法内部,用于抛出一个异常类对象,一旦异常被抛出后,throw语句后的程序代码将不会被执行
    throws关键字一般出如今方法声明中,用来指定该方法可能抛出的异常。若是可能有多个异常抛出,可使用逗号将它们分隔开。spa

2七、字符串的compareTo方法结果是什么?
   答:使用compareTo()方法能够比较字符串与字符串之间的大小关系。若是当前字符串小于指定字符串,则返回一个小于0的数值;不然返回一个大于0的数值;若是两个字符串相等,则返回0。
2八、字符串的链接操做有几种实现方法? 
   答:字符串与字符串的链接操做能够经过“+”运算符和concat()方法来实现。另外“+”运算符还能够实现字符串与其余类型数据之间的链接操做,能够与字符串链接的数据类型有:int、long、float、double、boolean、char等。 
2九、当一个对象被看成参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里究竟是值传递仍是引用传递? 
   答:是值传递,由于在Java编程语言中只有值传递参数。当一个对象实例做为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容能够在被调用的方法中改变,但对象的引用是永远不会改变的。
30、Class MyClass等价于 Class MyClass extends Object是否正确? 
   答:正确。由于Object类是Java中最高层次的类,是全部类的超类。全部的类,均可以说是由Object继承而来,只是咱们不须要显式地指明extends Object。线程

 

3一、数组有没有length()方法? String有没有length()方法?
   答:数组只有length的属性。String有length()方法
3三、Java中实现多态的机制是什么?
   答:方法的重写和重载是Java多态性的不一样表现重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现


3五、List、Map、Set三个接口,存取元素时,各有什么特色?
   答:List以特定次序来持有元素,可有重复元素。Set 没法拥有重复元素,内部排序。Map 保存key-value值,value可多值。 
3六、在比较对象时,“==”运算符和equals运算有何区别?
   答:“==”运算符表示两个对象引用的地址是否相等,equals运算符则表示两个对象引用的内容是否相等。 
3七、什么是循环嵌套?其特色是什么?
   答:循环的嵌套,是指在一个循环语句的循环体中又包含另外一个完整的循环语句。多重循环语句的特色是:外层循环变量相对稳定,内层循环变量逐一变化,即:“多层循环,内(层)外(层)有别,外(层)变一次,内(层)变一遍。”



40、如何实现Java序列化?
   答:将须要被序列化的类实现Serializable接口,该接口没有须要实现的方法,它只是为了标注该对象是可被序列化的,而后须要使用一个输出流来构造一个ObjectOutputStream对象,接着使用ObjectOutput
Stream对象的writeObject()方法就能够将参数为obj的对象写出,要恢复的话则须要使用输入流。
4一、Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
   答:字节流和字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。在Java.io包中还有许多其余的流,主要是为了提升性能和使用方便。
4二、String s=new String("a");共建立了几个String对象?   答:两个。其中包括一个字符对象和一个字符对象引用对象。

相关文章
相关标签/搜索