zoukankan      html  css  js  c++  java
  • 面向对象(一)

    ● 请解释hashCode()和equals()方法有什么联系?

    考点:基础

    参考回答:

    Java对象的eqauls方法和hashCode方法是这样规定的:

    ➀相等(相同)的对象必须具有相等的哈希码(或者散列码)。

    ➁如果两个对象的hashCode相同,它们并不一定相同。

    ● 请解释Java中的概念,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

    考察点:JAVA构造函数

    参考回答:

    当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。 
    Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。 
    Java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。

    ● 请说明Query接口的list方法和iterate方法有什么区别?

    考察点:接口

    参考回答:

    ①list()方法无法利用一级缓存和二级缓存(对缓存只写不读),它只能在开启查询缓存的前提下使用查询缓存;iterate()方法可以充分利用缓存,如果目标数据只读或者读取频繁,使用iterate()方法可以减少性能开销。
    ② list()方法不会引起N+1查询问题,而iterate()方法可能引起N+1查询问题

     

    ● 请说明如何通过反射获取和设置对象私有字段的值?

    考察点:类

    参考回答:

    可以通过类对象的getDeclaredField()方法字段(Field)对象,然后再通过字段对象的setAccessible(true)将其设置为可以访问,接下来就可以通过get/set方法来获取/设置字段的值了。下面的代码实现了一个反射的工具类,其中的两个静态方法分别用于获取和设置私有字段的值,字段可以是基本类型也可以是对象类型且支持多级对象操作,例如ReflectionUtil.get(dog, "owner.car.engine.id");可以获得dog对象的主人的汽车的引擎的ID号。

    1
    2
    3
    4
    5
    6
    7
    8
    import java.lang.reflect.Method;
    class MethodInvokeTest {
        public static void main(String[] args) throws Exception {
            String str = "hello";
        Method m = str.getClass().getMethod("toUpperCase");
            System.out.println(m.invoke(str));  // HELLO
        }
    }

    ● 请说明内部类可以引用他包含类的成员吗,如果可以,有没有什么限制吗?

    考察点:类

    参考回答:

    一个内部类对象可以访问创建它的外部类对象的内容,内部类如果不是static的,那么它可以访问创建它的外部类对象的所有属性内部类如果是sattic的,即为nested class,那么它只可以访问创建它的外部类对象的所有static属性一般普通类只有public或package的访问修饰,而内部类可以实现static,protected,private等访问修饰。当从外部类继承的时候,内部类是不会被覆盖的,它们是完全独立的实体,每个都在自己的命名空间内,如果从内部类中明确地继承,就可以覆盖原来内部类的方法。

    ● 请说明JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

    考察点:异常

    参考回答:

    Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。用try来指定一块预防所有”异常”的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的”异常”的类型。throw语句用来明确地抛出一个”异常”。throws用来标明一个成员函数可能抛出的各种”异常”。Finally为确保一段代码不管发生什么”异常”都被执行一段代码。可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,”异常“的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种”异常”进行处理,堆栈就会展开,直到遇到有处理这种”异常”的try语句。

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

    是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

  • 相关阅读:
    leetcode778
    2020年的一些总结
    go笔记 NSQ (6) ( nsqd如何创建消费者以及消费消息)
    go笔记 NSQ (5) ( nsqd如何监听生产者的消息,select关键字使用)
    go笔记 NSQ (4) ( nsqd启动监听来了解go如何编写tcp与http服务端,以及sync.WaitGroup线程同步工具使用 )
    go笔记 NSQ (3) ( 从启动nsqd了解flag包使用,解析配置文件以及json有关,反射使用 )
    Sitecore去除地址中带语言,例:localhost:8080/zh-cn/index
    js给URL追加参数
    SQL Server服务启动时错误:1069(由于登陆失败而无法启动服务)
    C# windows服务定时处理/例每天凌晨1点处理数据
  • 原文地址:https://www.cnblogs.com/sbclmy/p/10834838.html
Copyright © 2011-2022 走看看