3.29面试题

article/2023/6/4 15:51:50

文章目录

  • 内存
    • 内存管理
    • 执行过程
    • 要点
  • 面试题

内存

内存管理

由JVM管理

  • 堆:new出来的对象(包括成员变量、数组元素、方法的地址)
  • 栈:局部变量(包括方法的参数)
  • 方法区:.class字节码文件(包括方法、静态变量)

执行过程

  • 先加载,study方法入方法区

请添加图片描述

  • 用到方法就入栈,main方法入栈

请添加图片描述

  • Student对象入堆

请添加图片描述

  • 找到栈中地址,基于地址找到指向的堆中的Student对象,修改name为张三

请添加图片描述

  • 同理,修改age为25

请添加图片描述

  • 调用study方法,study入栈

请添加图片描述

  • 方法走完,可以出栈,后进先出

请添加图片描述

  • 失去调用,对象没有引用,被垃圾回收
    在这里插入图片描述

要点

  • 用到哪个类就将哪个类的.class加载到方法区中
  • 调用方法会入栈,方法执行完就出栈
  • new出来的对象存储在堆中,引用里面装的是堆中对象的地址

面试题

抽象类和接口的区别:

抽象类:

  • abstract修饰
  • 可以包含变量、常量、构造方法、普通方法、静态方法、抽象方法
  • 派生类通过 extends 继承
  • 只能继承一个(单一继承)
  • 抽象类中的成员,任何访问权限都行(publicprivateprotected、默认)

接口:

  • interface定义
  • 可以包含抽象方法、常量、(jdk1.8之后 支持 静态方法、抽象方法)
  • 实现类通过implements 实现
  • 可以实现多个(多实现)
  • 接口中的成员,访问权限只能是public

共同点

  • 都不能被实例化。
  • 都可以包含抽象方法。
  • 都可以有默认实现的方法(Java 8 可以用 default 关键字在接口中定义默认方法)。

区别

  • 接口主要用于对类的行为进行约束,实现了某接口就具有对应的行为。抽象类主要用于代码复用,强调的是所属关系。
  • 一个类只能继承一个类,但是可以实现多个接口。
  • 接口中的成员变量只能是 public static final 类型的,不能被修改且必须有初始值,而抽象类的成员变量默认 default,可在子类中被重新定义,也可被重新赋值。
http://www.ngui.cc/article/show-1020433.html

相关文章

c# 第一次作业

一. 单选题(共49题,93.1分) 1. (单选题)下面属于合法变量名的是_____________。 A. P_qrB. 123mnpC. BooleanD. X-Y 我的答案: A正确答案: A 1.9分 2. (单选题)用所有.NET支持的编程语言编写的源代码经过一次编译后被编译成_____________…

ESP8266WiFi模块与Android APP实现数据传输(三)---AT/MQTT固件下载

目录 (1)打开后选择ESP8266 DowmloadTool (2)在弹出的界面进行下面操作: (3)进入等待上电同步: (4)状态显示完成,表示下载结束 (5&…

ChatGPT 使用 拓展资料:大模型训练为什么这么难

ChatGPT 使用 拓展资料:大模型训练为什么这么难 一些LLMs的省内存方法 https://zhuanlan.zhihu.com/p/616858352

用于模拟原子相互作用的continuous-filter卷积NeurIPS2017

深度学习有可能彻底改变量子化学,因为它非常适合学习结构化数据的表示。虽然卷积神经网络已被证明是图像、音频和视频数据的首选,但分子中的原子并不局限于网格结构(grid)。相反,它们的精确位置包含了基本的物理信息&a…

vue 遮罩和ref的使用,setup版和非setup版

1、创建conform.vue&#xff0c;其内容如下&#xff1a; <template><div v-if"fade"><div class"xtx-confirm" :class"{fade}"><div class"wrapper" :class"{fade}"><div class"header&qu…

C++ 实现Python String 中的strip,lstrip,rstrip函数

/// <summary>/// 参数为null时删除左边的空白字符&#xff08;包括’\n’, ‘\r’, ‘\t’, ’ )/// </summary>/// <returns></returns>/// 创建时间&#xff1a; 2023-03-28 最后一次修改时间&#xff1a;2023-03-28 (已测试&#xff09;_StrW…

Krew—Kubectl 插件的包管理器

文章目录1. Krew 是什么&#xff1f;2. 如何开发一个 kubectl 插件3. 安装 Krew 工具4. krew 常用命令5. kubectl 插件实践场景5.1 kubectl-who-can5.2 ingress-nginx5.2.1 conf5.2.2 exec5.2.3 logs1. Krew 是什么&#xff1f; Krew 是一个 Kubernetes 的插件管理器&#xff…

基于Java+Springboot+vue的小区物业管理系统设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

博主介绍&#xff1a;专注于Java技术领域和毕业项目实战 &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实战案例&#xff08;200套&#xff09; 目录 一、效果演示 二、前…

医学领域图像相关自述

一.研究方向、规划&#xff1a;医学图像算法 医学图像主要分为以下几类&#xff1a; X射线成像&#xff08;用X射线穿透密度、厚度不同的人体组织形成黑白影像&#xff09;X射线断层扫描CT&#xff08;X射线旋转扫描人体&#xff0c;再用电脑的三维重建技术构造断层影像&…

Quartz、xxl-job、Elastic-Job和Saturn简单对比

Quartz、xxl-job、Elastic-Job和Saturn都是Java生态系统中流行的作业调度框架。下面是对它们的优缺点的简要比较&#xff1a; Quartz&#xff1a; 优点&#xff1a; Quartz是Java生态系统中最流行和最广泛使用的作业调度框架之一。它成熟、稳定&#xff0c;并有一个庞大的用户…