首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

100道最新Java面试题,常见面试题及答案汇总

Q28:我们可以覆盖类的静态方法吗? 答案:我们不能覆盖静态方法,静态方法属于一个类而不是单个对象,并且在编译时解析(而不是在运行时)。 Q29:在下面的例子中,输出是什么?...答案:如果我们要在类加载时,对象创建之前执行语句,可以在类中使用静态代码块,这样即使在main方法中创建对象之前,此静态代码块中的语句都将在加载类时执行一次。...Clone()是Cloneable interface的方法,因此需要实现Cloneable interface来进行对象拷贝。 Q48:使用继承有什么好处?...答案:使用继承的主要优点是代码的可重用性,因为继承使子类能够重用其父类的代码。多态性(可扩展性)是另一个好处,允许引入新的功能而不影响现有的派生类。 Q49:类的变量和方法的默认访问说明符是什么?...答案:可以,main()方法是Java应用程序的入口方法,代码总是从特定类的main方法开始。 Q93:如果我想要保留对象的数据以供以后使用,最好的做法是什么? 答案:使用序列化。

5.2K21

Day9面向对象编程22

继承有什么好处?最大的好处是子类获得了父类的全部功能。...由于Animial实现了run()方法,因此,Dog和Cat作为它的子类,什么事也没干,就自动拥有了run()方法: dog = Dog() dog.run() Cat().run() 运行结果如下:...当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),在代码运行的时候,总是会调用子类的run()。这样,我们就获得了继承的另一个好处:多态。...image.png 静态语言 vs 动态语言 对于静态语言(例如Java)来说,如果需要传入Animal类型,则传入的对象必须是Animal类型或者它的子类,否则,将无法调用run()方法。...我们只需要保证传入的对象有一个run()方法就可以了: class Timer(object): def run(self): print('Start...')

68540
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    快速掌握并发编程---synchronized篇(上)

    这也是工作中或者面试中很重要的一个知识点。 相信不少同学在工作中使用过这个synchronized(同步锁)。 下面来个面试连环炮: 什么业务场景下使用了同步锁? 使用他有什么好处?...会存在问题吗? 有更好的方法替换吗? 什么叫做线程安全? 如果让你来设计一个同步锁,你会怎么设计? 何为线程安全? 我们经常会听说某个类是线程安全,某个类不是线程安全的。那么究竟什么叫做线程安全呢?...如何使用同步锁? 在Java中有个说法叫做“万事万物皆对象”。synchronized就是基于对象来做文章的,与其称之为同步锁还不如叫它对象锁。...多个线程同时访问静方法,线程会发生互斥(即一个线程访问,另一个线程只能等着),因为静态方法是依附于类对象而不是实例对象的,当synchronized修饰静态方法时,锁是class对象。...小总结 上面已经给出了synchronized的使用场景,以及什么时候有锁的作用,什么时候没有锁的作用。 我们在使用 Synchronized 的时候需要明确,在指定的用法下,当前的锁对象是谁?

    39120

    Python学习笔记(六)·面向对象编程

    继承有什么好处?最大的好处是子类获得了父类的全部功能。...当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),在代码运行的时候,总是会调用子类的run()。这样,我们就获得了继承的另一个好处:多态。...,就可以放心地调用run()方法,而具体调用的run()方法是作用在Animal、Dog、Cat还是Tortoise对象上,由运行时该对象的确切类型决定,这就是多态真正的威力:调用方只管调用,不管细节,...比如如下的继承树: 6.3.1 静态语言 vs 动态语言 对于静态语言(例如 Java )来说,如果需要传入Animal类型,则传入的对象必须是Animal类型或者它的子类,否则,将无法调用run()...6.4 获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢?

    60320

    30道“热乎乎”的 JVM 典型题目剖析!

    问题 如果我有一个静态的成员变量int,那我多线程更改是否会有线程安全问题,为什么? 解答 静态成员变量,他在内存里,只有一份,就是属于类的。...问题 其实初始化时机就是对类的主动使用:调用静态方法时对类的主动使用的一种场景,main方法本质上是个static方法,没有调用的main方法和没有调用的static方法没区别!...问题 为什么类的初始化需要执行静态代码块,给静态成员变量赋值,是因为这些数据是在方法区吗?...问题 老师好请问类加载双亲委派机制 为什么要先找父加载 而不是自己找?这种设计的好处是? 解答 好处就在于,每个层级的类加载器各司其职,而且不会重复加载一个类。...问题 老师,类加载器是把jar包里的所有类一次性全部加载进去吗? 解答 不是的,首先加载包含main方法的主类,接着是运行你写的代码的时候,遇到你用了什么类,再加载什么类 ? 二十七 ?

    61010

    Java多线程面试问答

    6、我们可以调用线程类的run()方法吗? 可以,我们可以调用Thread类的run()方法,但是它的行为类似于普通方法。要在线程中实际执行它,我们需要使用Thread.start()方法启动它。...由于所有这些方法都要求Thread具有“对象”监视器,这只能通过同步来实现,因此需要从同步方法或块中调用它们。 14、为什么线程sleep()和yield()方法是静态的?...这就是为什么将这些方法设为静态的原因,以便当该方法被静态调用时,它可以在当前执行的线程上运行,并且避免使可能会认为可以在某些非运行线程上调用这些方法的程序员感到困惑。...我们知道对象的所有线程都共享它的变量,因此,如果变量不是线程安全的,则可以使用同步,但是如果要避免同步,则可以使用ThreadLocal变量。...我更喜欢使用jstack工具来生成程序的线程转储,因为它易于使用并且随JDK安装一起提供。由于它是基于终端的工具,因此我们可以创建脚本以定期生成线程转储,以供日后分析。 22、什么是死锁?

    1.2K40

    9 Python 基础: 手把手带你梳理对象、继承与多态知识点

    获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢?...继承有什么好处?最大的好处是子类获得了父类的全部功能。...当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),在代码运行的时候,总是会调用子类的run()。这样,我们就获得了继承的另一个好处:多态。...,就可以放心地调用run()方法,而具体调用的run()方法是作用在Animal、Dog、Cat还是Tortoise对象上,由运行时该对象的确切类型决定,这就是多态真正的威力:调用方只管调用,不管细节,...而当我们新增一种Animal的子类时,只要确保run()方法编写正确,不用管原来的代码是如何调用的。

    1.1K50

    2020年Java多线程与并发系列22道高频面试题(附思维导图和答案解析)

    使用 Volatile 一般用于 状态标记量 和 单例模式的双检锁 6、Thread 类中的start() 和 run() 方法有什么区别?...7、为什么wait, notify 和 notifyAll这些方法不在thread类里面? 明显的原因是JAVA提供的锁是对象级的而不是线程级的,每个对象都有锁,通过线程获得。...如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行的ArrayList不是线程安全的。 14、Thread类中的yield方法有什么作用?...所以如果一个线程A调用一个实例对象的非静态 synchronized 方法,而线程B需要调用这个实例对象所属类的静态 synchronized 方法,是允许的,不会发生互斥现象,因为访问静态 synchronized...方法占用的锁是当前类的锁,而访问非静态 synchronized 方法占用的锁是当前实例对象锁。

    63000

    2020年Java多线程与并发系列22道高频面试题(附思维导图和答案解析)

    使用 Volatile 一般用于 状态标记量 和 单例模式的双检锁 6、Thread 类中的start() 和 run() 方法有什么区别?...7、为什么wait, notify 和 notifyAll这些方法不在thread类里面? 明显的原因是JAVA提供的锁是对象级的而不是线程级的,每个对象都有锁,通过线程获得。...如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行的ArrayList不是线程安全的。 14、Thread类中的yield方法有什么作用?...所以如果一个线程A调用一个实例对象的非静态 synchronized 方法,而线程B需要调用这个实例对象所属类的静态 synchronized 方法,是允许的,不会发生互斥现象,因为访问静态 synchronized...方法占用的锁是当前类的锁,而访问非静态 synchronized 方法占用的锁是当前实例对象锁。

    25440

    SpringBoot面试题大汇总附答案,SpringBoot面试题-持续更新中「建议收藏」

    run 直接执行main方法运行 8、什么是JavaConfig?...Spring JavaConfig是Spring社区的产品,它提供了配置Spring IoC容器的纯Java方法。因此它有助于避免使用XML配置。使用JavaConfig的优点在于: 面向对象的配置。...基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在XML和Java之间来回切换。...由于Java 5.0对泛型的支持,现在可以按类型而不是按名称检索bean,不需要任何强制转换或基于字符串的查找 9、运行 SpringBoot 有哪几种方式?...21、SpringBoot 有哪些优点? 22、如何给静态变量赋值? 23、SpringBoot、Spring MVC 和 Spring 有什么区别?

    2.2K30

    Java面向对象之函数式编程

    1 函数式编程 在数学中,函数就是有输入量、输出量的一套计算方案,也就是“用什么东西做什么事情”。...相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式来做。...1.1 做什么,而不是怎么做 例如: new Thread(new Runnable(){ @Override public void run(){ //TODO things...我们真正希望做的事情是,将 run 方法体内的代码传递给 Thread 类并去执行。 思考: 我们真的希望创建一个匿名内部类对象吗?不! 我们只是为了做这件事情而不得不创建一个对象。...1.2 函数式编程的本质是什么? 传递一段代码——这才是我们真正目的。而创建对象只是受限于面向对象语法而不得不采取的一种手段方式。那么,有没有更加简单的方法呢?

    21120

    juc07 创建线程

    自定义线程有两种方式: 继承Thread 实现Runable接口 从打印结果是否是不同线程运行来验证多线程执行。 主线程代码在main方法中,自定义线程方法代码在run方法中。...(testSun); t.start(); } public void run() { //do } } 理解:例用实现Runnable还有一个好处就是,我不同的类,我可以有不同的...如果使用Thread方式,给变量i设为静态也可以做到执行50次,但是静态的生命周期太长了,不推荐。 这个例子为了说明 Thread 和 Runable 的区别。...而为什么 Thread 对执行多次,是因为继承的Thread 后,每new 一次,就是创建的一个新对象,每个对象都是一分独立的副本,并不是同一个对象。...实现Runnable接口方式:线程代码存在接口的子类的run方法中。注意是接口的子类的run方法中,不是实现类的run方法中。 第2种方式最常用。 优点: 避免单继承的局限性。

    14540

    Java基础60问

    Q6:main是关键字吗? 答:不是, main是主函数的名字, 可以被JVM识别, 也是程序的主入口, 所有代码的执行都是从这里开始的. Q7:Java程序的特点是什么?...生命周期不同. (1)局部变量是随着方法的调用而存在, 随着方法的调用完毕而消失. (2)成员变量是随着对象的创建而存在, 随着对象的消失而消失. Q33:变量的使用顺序是什么?...生命周期不同. (1)静态变量随着类的加载而加载, 随着类的消失而消失. (2)成员变量随着对象的创建而存在, 随着对象的使用完毕而消失. 4....Q52:为什么每个构造方法的第一行都有默认的super()? 答:用于子类对象访问父类数据前, 对父类数据进行初始化. Q53:为什么默认的super()都是空参构造, 而不是带参构造?...Q56:多态的好处和弊端分别是什么? 答: 好处: 提高了代码的可扩展性, 维护性. 弊端: 父类(父接口)引用不能直接使用子类的特有成员. Q57:多态中的成员访问特点是什么?

    56010

    Java面试题及答案整理( 2022最新版,持续更新)

    4、 死亡(dead)(结束): 线程run()、main()方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。 3、计算机网络有几层?...9、是否了解连接池,使用连接池有什么好处? 数据库连接是非常消耗资源的,影响到程序的性能指标。...使用句柄来访问的最大好处是 reference 中存储的是稳定的句柄地址,在对象被移动时只会改变句柄中的实例数据指针,而 reference 本身不需要修改。...(String[] args) { new Inner(); } } 注意:Java中非静态内部类对象的创建要依赖其外部类对象,上面的面试题中foo和main方法都是静态方法,静态方法中没有this...35、Java 中堆和栈有什么区别? 36、volatile 能使得一个非原子操作变成原子操作吗? 37、为什么选择使用框架而不是原生?

    89210

    Java基础-23(02)总结多线程,线程实现Runnable接口,线程名字获取和设置,线程控制,线程安全,同步线程

    : 前提: 多个线程 解决问题的时候要注意: 多个线程使用的是同一个锁对象 B:同步的好处 同步的出现解决了多线程的安全问题。...B:同步方法 把同步加在方法上。 这里的锁对象是this C:静态同步方法 把同步加在方法上。...* 静态方法的锁对象是谁呢? * 类的字节码文件对象。...也就是说现在的计算机都是支持多进程的,可以在一个时间段内执行多个任务。 并且呢,可以提高CPU的使用率。 问题: 一边玩游戏,一边听音乐是同时进行的吗? 不是。...线程:是程序的执行单元,执行路径。是程序使用CPU的最基本单位。 单线程:如果程序只有一条执行路径。 多线程:如果程序有多条执行路径。 5:多线程有什么意义呢?

    92840
    领券