当前位置: 首页 > news >正文

3.29面试题

文章目录

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

内存

内存管理

由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.lryc.cn/news/43922.html

相关文章:

  • 操作系统漏洞发现
  • Linux gdb调试底层原理
  • LC-1647. 字符频次唯一的最小删除次数(哈希+计数)
  • HTTP状态码
  • 【Linux】初见“which命令”,“find命令”以及linux执行命令优先级
  • update case when 多字段,多条件, mysql中case when用法
  • mysql隐式转换 “undefined“字符串匹配到mysql int类型0值字段
  • Redis八股文
  • InnoDB——详细解释锁的应用,一致性读,自增长与外键
  • C++模板基础(四)
  • pycharm使用记录
  • Linux命令·kill·killall
  • Linux /proc/version 文件解析
  • 【Django 网页Web开发】15. 实战项目:管理员增删改查,md5密码和密码重置(08)(保姆级图文)
  • STL容器之<array>
  • flask教程6:cookie和session
  • 【JavaEE初阶】第六节.网络原理TCP/IP协议
  • 模式识别 —— 第六章 支持向量机(SVM)与核(Kernel)
  • 总结 synchronized
  • 360周鸿祎又“开炮”:GPT 6-8就将产生自主意识!我们来测算一下对错
  • python——飞机大战小游戏
  • 数组(完全二叉树)向下建堆法与堆排序O(N*logN)
  • Lua require 函数使用
  • 【面试】如何定位线上问题?
  • 字节二面,原来我对自动化测试的理解太浅了
  • Android11.0 应用升级成功后立即断电重启,版本恢复
  • 关于python常用软件用法:Pycharm 常用功能
  • SOLIDWORKS你不知道的小技巧
  • 有了HTTP,为啥还要用RPC
  • [leetcode] 动态规划