南京小米java面经(一面)

news/2024/11/24 21:55:53/

目录

    • 1.java支持多继承吗
    • 2.线程的生命周期
    • 3.线程和进程的区别
    • 4.单例模式有几种
    • 5.写一下双重锁的单例
    • 6.jvm有哪些区域
    • 7.jvm哪些区域是线程共享的,哪些是线程私有的
    • 8.gc中判断对象可回收的方式有哪些
    • 9.gc垃圾回收算法有哪些
    • 10.哪些对象可以作为gc root
    • 11.gc中的引用计数法有哪些缺陷
    • 12.抽象类和接口的区别
    • 13.sleep和wait的区别

1.java支持多继承吗

Java中类不支持多继承,只支持单继承(即一个类只有一个父类)。 但是java中的接口支持多继承,,即一个子接口可以有多个父接口。
接口支持多继承

public interface Bird extends Flyable,Singable {}

2.线程的生命周期

初始化状态(NEW)、可运行/运行状态(RUNNABLE)、阻塞状态(BLOCKED)、无时限等待状态(WAITING)、有时限等待状态(TIMED_WAITING)、终止状态(TERMINATED)

3.线程和进程的区别

进程
是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行『资源分配和调度』的一个独立单位。
线程
进行运算调度的最小单位,其实是进程中的一个执行任务(控制单元),负责当前进程中程序的执行
两者之间的区别
「本质区别」:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位
「在开销方面」:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小
「所处环境」:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
「内存分配方面」:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源
「包含关系」:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程

4.单例模式有几种

5种
饿汉式
懒汉式
双重检查锁
静态内部类
内部枚举类
https://donglin.blog.csdn.net/article/details/128773676

5.写一下双重锁的单例

public class Singleton {/*** 私有构造*/private Singleton(){System.out.println("构造函数Singleton");}//加volatile关键字是为了防止 创建对象时的指令重排问题,导致其他线程使用对象时造成空指针private volatile static Singleton singleton = null;public static Singleton getInstance(){if (singleton == null){  //这个检查是提高效率的synchronized (Singleton.class){if (singleton == null){singleton = new Singleton();   //这个检查是防止线程安全的}}}return singleton;}}

6.jvm有哪些区域

在这里插入图片描述

7.jvm哪些区域是线程共享的,哪些是线程私有的

方法区,堆共享
程序计数器,本地方法栈,虚拟机栈私有

8.gc中判断对象可回收的方式有哪些

引用计数算法和可达性分析算法
https://donglin.blog.csdn.net/article/details/127831153

9.gc垃圾回收算法有哪些

标记-清除算法
复制算法
标记-压缩算法
分代收集算法
增量收集算法
分区算法
https://donglin.blog.csdn.net/article/details/127831153

10.哪些对象可以作为gc root

  • 虚拟机栈(栈帧中的本地变量表)中引用的对象
  • 本地方法栈中 JNI(即一般说的 Native 方法)引用的对象
  • 方法区中类静态属性引用的对象
  • 方法区中常量引用的对象

https://donglin.blog.csdn.net/article/details/128782888

11.gc中的引用计数法有哪些缺陷

缺点1:它需要单独的字段存储计数器,这样的做法增加了存储空间的开销。
缺点2:每次赋值都需要更新计数器,伴随着加法和减法操作,这增加了时间开销。
缺点3:引用计数器有一个严重的问题,即无法处理循环引用的情况。这是一条致命缺陷,导致在Java 的垃圾回收器中没有使用这类算法。
https://donglin.blog.csdn.net/article/details/127831153

12.抽象类和接口的区别

从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。
1.接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
2.类可以实现很多个接口,但是只能继承一个抽象类
3.类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
4.抽象类可以在不提供接口方法实现的情况下实现接口。
5.Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
6.接口是绝对抽象的,不可以被实例化,抽象类也不可以被实例化。
第三点证明
在这里插入图片描述

13.sleep和wait的区别

1、sleep是线程中的方法,但是wait是Object中的方法。
2、sleep方法不会释放资源锁,但是wait会释放资源锁,而且会加入到等待队列中。
3、sleep方法不依赖于同步器synchronized,但是wait需要依赖synchronized关键字。
4、sleep不需要被唤醒(休眠之后推出阻塞),但是wait需要(不指定时间需要被别人中断)。
https://donglin.blog.csdn.net/article/details/125922659


http://www.ppmy.cn/news/21583.html

相关文章

POE交换机全方位解读(中)

POE供电距离到底怎么算 只针对符合IEEE802.3af/at 标准PoE设备 ① 网线对供电距离的影响 首先我们先来看下表IEEE802.af和IEEE802.3at标准中对Cat5e网线要求: 说明:Type 1 value和Type 2 value 分别指IEEE802.3af和IEEE802.3at的要求。 从表中可以看出&a…

tf.keras.layers.Embedding() 详解

Embedding layery 参数如下: tf.keras.layers.Embedding(input_dim,output_dim,embeddings_initializer"uniform",embeddings_regularizerNone,activity_regularizerNone,embeddings_constraintNone,mask_zeroFalse,input_lengthNone,**kwargs ) 输入…

PowerCLi 批量多esxi主机创建登陆用户

官网PowerCLI参数配置参考 New-VMHostAccount 创建用户参考New-VIRole 创建权限组参考Get-VIPrivilege 查询所有角色层配置信息参考创建批量多主机esxi登陆用户一键脚本 <

【string类的简单模拟实现】

目录 1 类中成员变量的声明 2 迭代器 3 一些常用接口 4 六大默认函数 4.1 构造 4.2 拷贝构造 4.3 赋值运算符重载 4.4 析构 5 开空间&&增删查改 6 其他运算符重载 1 类中成员变量的声明 通过上一篇文章对string类的简单使用相信大家对于string类中成员变量已…

【快速开始】vuejs环境搭建第一个项目

本篇包含vuejs环境安装以及通过vue客户端快速创建运行第一个项目。(注&#xff1a;以下内容均已windows平台为基准) 目录&#xff1a; 一、安装nodejs 二、配置国内源加速 三、安装vue客户端 四、创建第一个应用 1、安装nodejs&#xff1a; 1.1、下载 官网下载地址&…

AXI 总线协议学习笔记(3)

引言 上篇文章主要介绍了 AMBA以及AXI协议的基本内容&#xff0c;本文接续前文&#xff0c;继续介绍AXI协议的 原子访问、传输行为和事务顺序等。 AXI 总线协议学习笔记&#xff08;2&#xff09;https://blog.csdn.net/qq_43045275/article/details/128824643 原子访问 原子…

【C语言练习】杨氏矩阵、杨辉三角

目录一&#xff1a;杨氏矩阵&#x1f43b;何为杨氏矩阵&#xff1f;&#x1f43b;题目描述&#xff1a;&#x1f43b;思路一&#xff1a;&#x1f43b;思路二&#xff1a;二&#xff1a;杨辉三角&#x1f43b;何为杨辉三角&#xff1f;&#x1f43b;题目描述&#xff1a;&#…

[Spring Boot]11 使用@Cacheable注解实现Redis缓存

前言 为了方便讲解&#xff0c;模拟一个需要使用Redis缓存的场景&#xff0c;比如&#xff1a;一款APP的首页&#xff0c;由于其需要加载的数据量较大&#xff0c;于是决定把首页的部分数据使用Redis进行缓存&#xff0c;举例&#xff1a;比如要缓存首页的文章列表(ArticleLis…