Java交流程序员

Java面试题,陆续更新

2018-05-12  本文已影响106人  周小鑫001


一、Java 面向对象

1. 面向对象都有哪些特性以及你对这些特性的理解

            封装:其实本质就是隐藏一切可以隐藏的属性,主对外提供简单的接口

            继承:继承是从已有类得到继承信息创建新类的过程。

            多态:多态性是指允许不同子类型的对象对同一消息作出不同的响应

2.访问权限修饰符public、private、protected, 以及不写(默认)时的区别

3. 如何理解clone对象

            3.1 为什么要使用clone对象

            当我们在编程的过程中,有的时候我们在使用A对象的时候。有的时候需要用到 A对象中的属性和值和对这些属性值,进行更改

            所以这个时候我们就需要一个和A一模一样的B对象,实现这个功能的方法有很多,但是clone是最高效的手段

           3.2 new 一个对象的过程和 clone 一个对象的过程区别

                new操作符的本质是分配新的内存,在new操作符执行的过程中,我们首先要考虑new后边的类型,因为我们只有知道了,

                我们才知道分配多少空间,分配完之后我们在调用构造函数。在填充各个对象,这个过程叫做对象初始化。构造方法返回后,

                一个对象创建完毕,可以把他的引用(地址)发布到外部,在外部就可以使用这个引用操纵这个对象。

                clone在第一步是和new相似的,都是分配内存,调用clone方法时,分配的内存和原对象(即调用clone方法

                    的对象)相同,然后再使用原对象中对应的各个域,填充新对象的域,填充完成之后,clone方法返回,一个新的相同

                     的对象被创建,同样可以把这个新对象的引用发布到外部。

                3.3 深度拷贝和浅度拷贝

                   深度拷贝:这个对象必须要实现Cloneable接口,实现clone方法,并且在 clone 方法内部,把该对象引用的其他对象也要 clone 份,

                     这就要求这个被引用的对象必须也要实现Cloneable接口并且实现clone方法

二、JavaSE 语法

        1. Java有没有goto语句

                goto是Java 中的保留字,在目前版本的Java中没有使用。,其中有 goto 和 const,但是这两个是目前

                无法使用的关键字,

          2. & 和 && 的区别

             &&是短路与 ,当前一个条件不里的时候,后边的    

          3. 在Java中,如何跳出当前的多重嵌套循环    

                主要有两种,一种是break跳出循环,可以在循环外定义标记break到标记.但是这种会让程序不太优雅,所以不这么使用

                第二种就是continue,意义就是跳出本次循环

            4. 两个对象值相同 (x.equals(y) == true) ,但却可有不同的hashCode,这句话对不对?              

                不对,如果两个对象,满足x.equals(y) == true,那么它们的hashCode一定相同向同,如果hashCode相同,x.equals(y) == true

                不一定成立。想详细理解可可以观看一下《Effective Java》这本书

            5. 是否可以继承String

                   不可以 因为String是final类,不可以被继承

            6. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那                      么这里到底是值传递还是引用传递?

                        值传递,java语言的方法调用只支持值传递,

              7. 重载(overload)和重写(override)的区别?重载的方法能否根据返回类型进行区分?

                                  1. 重载是发生在一个类或者子父类中的,方法的重写只能发生在子父类中

                                  2. 重载和重写方法名都必须一致,重载,参数列表中的顺序,类型,个数不同,重写,参数必须一致 

                                  3.重写,方法的返回值相同,不能比父类声明更多的异常,重载对返回类型没有特殊要求

             8. 为什么函数不能根据返回类型来区分重载

                       因为在调用的时候不能给返回值类型,如果根据编译器上下文判断,在有些时候调用并不使用值进行接收,

             9. char 型变量中能不能存储一个中文汉字,为什么?

                            可以,因为java中使用的编码是Unicode,一个char类型占两个字节,所以存放一个汉字没有问题

                        Unicode:不选择任何特定的编码,直接使用字符在字符集中编码,知识统一的方法

             10. 抽象类(abstract class)和接口(interface)有什么异同?

                            1.抽象类可以定义构造器。接口不可以定义构造器

                             2.抽象类可以有普通成员变量,接口分钟没有普通成员变量

                             3.抽象类中可以有非抽象方法,接口中不可以

                             4.接口中的抽象方法都是public,抽象不受约束

                             5.抽象类可以包含静态方法,接口不能包含静态方法(jdk1.7以前)

                             6.抽象类中静态成员变量的访问类型可以任意,接口中只能是public static final 类型,并且默认即为public static final

                             7.一个抽象类只能继承一个类,但是接口可以多实现

                 11. 抽象的(abstract)方法是否可同时是静态的(static), 是否可同时是本地方法 (native),是否可同时被synchronized

                        都不能,抽象方法需要子类重写,而静态方法是无法重写的,因此二者是矛盾的,本地方法是由本地代码(C 实现的)实现的方法

                        而抽象方法是没有实现的,也是矛盾的,synchronized 和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的

                12. 阐述静态变量和实例变量的区别?

                    静态变量:是被static修饰符修饰的变量,也称类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态

                    变量在内存中有且仅有一个拷贝,静态变量可以实现让多个对象共享内存

                   实例变量:必须依赖于某一实例,需要先创建对象然后通过对象才能访问到它,

                13. ==和equals的区别

                        ==:比较的是内存地址

                        equals:比较的是值

                  14.String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象 中的内容到底变没?

                            没变。因为String是被设计成不可变的类,所以它的所有对象都是不可变的。如果想有可变的可以用,StringBulider

              三、Java 中的多态

                     1. Java中实现多态的机制是什么?    

                            通过具体的实现类对对象,指向父类或接口,

               四、Java 的异常处理

                   1. Java中异常分为哪些种类 

                                      (1) 编译时异常,也叫强制性异常,和CheckedException

                                      (2)运行时异常,也叫没强制性异常和RuntimeException

                

                         

 

上一篇下一篇

猜你喜欢

热点阅读