美文网首页Java交流程序员
Java面试题,陆续更新

Java面试题,陆续更新

作者: 周小鑫001 | 来源:发表于2018-05-12 19:56 被阅读106次


    一、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

                    

                             

     

    相关文章

      网友评论

        本文标题:Java面试题,陆续更新

        本文链接:https://www.haomeiwen.com/subject/kfphdftx.html