JAVASE面试题(三)

1.21. 面向对象的特性(oop特性

三大特性:封装(降低耦合),继承,多态

封装:把数据隐藏起来,对数据私有化,只对外提供get和set方法

权限修饰符

修饰符在本类中同一个包下的其他类里任意包下的子类里(不是创建的子类对象里)任意包下的任意类里
private
缺省
protrcted
public

继承:提高代码的复用,或者是对父类不满意的代码重写

  • 子类拥有父类非private的属性和方法(构造方法也除外)
  • 子类可以拥有自己的属性和方法,即拓展
  • 子类可以用自己的方式实现父类的方法

多态:多态主要是用来实现动态联编的,换句话说,就是程序的最终形态是由运行时决定的,而非编译时决定,即声明的引用变量最终会指向哪个实例对象

1.22. 重写和重载的区别

重写(Override):把父类中有的方法重新写一遍

  • 子类函数的访问修饰权限不能小于父类
  • 方法名,参数列表,返回类型子父类一致
  • 发生的前提是有继承关系

重载(Overload):相同名称的方法有不同的参数类型或者参数个数

  • 返回类型无要求
  • 是多态性的一种表现
1.23. try. catch、finally执行顺序
  • 不管有没有出现异常,finally代码块都会执行;
  • 不管try和catch的代码块中有return时,finally仍会执行,且如果finally代码块也有return,则此代码肯定会返回finally执行的return值。
  • 先执行try,有异常则执行catch,()不管有没有异常然后执行finally
1.24. 为什么使用接口,接口的好处
  • 定义时不需要考虑接口中方法如何实现
  • 接口可以做到多继承
  • 不暴露对象的类,只暴露对象的编程接口
1.25. 谈一谈对反射的了解
  • 程序运行时动态加载类并获取类里的属性和方法
  • 本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。
1.26. 有什么办法可以把方法区内存撑爆
  • 固定方法区大小小一些,就容易爆

  • 加载大量的第三方jar包

  • 大量动态生成反射类

1.27. 如何查看gc日志,主要关注哪些内容?
  1. 打开 Java 虚拟机(JVM)的启动参数:在启动应用程序的命令行或脚本中,找到包含 JVM 参数的部分。
  2. 添加 GC 日志参数:在 JVM 参数中添加以下参数之一来启用 GC 日志记录:
    • -verbose:gc:打印简要的 GC 日志信息。
    • -Xloggc:<filename>:将 GC 日志写入指定的文件中。文件名可以是绝对路径或相对路径。
  3. 设置 GC 日志文件的位置:如果您使用了 -Xloggc 参数,请确保指定的文件路径存在,并对应用程序具有写入权限。
  4. 启动应用程序:使用修改后的 JVM 参数启动您的应用程序。
  5. 分析 GC 日志:一旦应用程序运行并生成 GC 日志文件,可以使用以下工具之一来分析日志:
    • GCViewer:一个开源的 Java GC 日志分析器。
    • GCToolkit:适用于 OpenJDK 的 GC 日志分析和可视化工具。

在查看 GC 日志时,会关注以下内容:

  1. GC 类型:标记-清除、标记-整理、复制、分代等。
  2. GC 时间:GC 执行的时间长度,以及每个 GC 阶段的耗时。
  3. GC 停顿时间:应用程序停止响应的时间,因为 JVM 在执行 GC 操作时会暂停应用程序线程。
  4. 堆内存使用情况:包括堆的大小、已使用的空间、空闲的空间等。
  5. 对象回收统计:包括垃圾对象的数量、被回收的对象的类型等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值