百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

JavaSE面试题(1) javaee面试题

ztj100 2024-12-20 19:51 31 浏览 0 评论

1.什么是Singleton?

Singleton:在Java中即指单例设计模式,它是软件开发中最常用的设计模式之一。

单:唯一 例:实例 单例设计模式,即某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式。

要点

例如:代表JVM运行环境的Runtime类

一是某个类只能有一个实例; 构造器私有化

二是它必须自行创建这个实例; 含有一个该类的静态变量来保存这个唯一的实例

三是它必须自行向整个系统提供这个实例; 对外提供获取该实例对象的方式:

(1)直接暴露

(2)用静态变量的get方法获取

几种常见形式

饿汉式:直接创建对象,不存在线程安全问题 直接实例化饿汉式(简洁直观) 枚举式(最简洁) 静态代码块饿汉式(适合复杂实例化)

懒汉式:延迟创建对象 线程不安全(适用于单线程) 线程安全(适用于多线程) 静态内部类形式(适用于多线程)

总结

如果是饿汉式,枚举形式最简单 如果是懒汉式,静态内部类形式最简单

2,如下代码的运行结果:

public static void main(String[] args) {

int i = 1;

i = i++;

int j = i++;

int k = i + ++i * i++;

System.out.println("i=" + i);

System.out.println("j=" + j);

System.out.println("k=" + k)

2.1

      i = i++;

2.22

   int j = i++;

实际先算哪个,看运算符优先级

赋值=,最后计算 =

右边的从左到右加载值依次压入操作数栈

实际先算哪个,看运算符优先级

自增、自减操作都是直接修改变量的值,不经过操作数栈

最后的赋值之前,临时结果也是存储在操作数栈中

建议:《JVM虚拟机规范》关于指令的部分

3,

?

?

考点

类初始化过程

实例初始化过程

方法的重写

类初始化过程

一个类要创建实例需要先加载并初始化该类

“main方法所在的类需要先加载和初始化”

一个子类要初始化需要先初始化父类

一个类初始化就是执行<clinit>()方法

“<clinit>()方法由静态类变量显示赋值代码和静态代码块组成 类变量显示赋值代码和静态代码块代码从上到下顺序执行 <clinit>()方法只执行一次”

实例初始化过程

实例初始化就是执行<init>()方法

<init>()方法可能重载有多个,有几个构造器就有几个<init>方法

<init>()方法由非静态实例变量显示赋值代码和非静态代码块、对应构造器代码组成

非静态实例变量显示赋值代码和非静态代码块代码从上到下顺序执行,而对应构造器的代码最后执行

每次创建实例对象,调用对应构造器,执行的就是对应的<init>方法

<init>方法的首行是super()或super(实参列表),即对应父类的<init>方法

方法的重写Override

哪些方法不可以被重写

-final方法

-静态方法

-private等子类中不可见方法

对象的多态性对象的多态性

-子类如果重写了父类的方法,通过子类对象调用的一定是子类重写过的代码

-非静态方法默认的调用对象是this this

-对象在构造器或者说<init>方法中就是正在创建的对象

Override和Overload的区别?

Override重写的要求?

(方法名 、形参列表 、返回值类型 、抛出的异常列表、 修饰符 )

了解《JVM虚拟机规范》中关于<clinit>和<init>方法的说明、invokespecial指令


cial指令

相关推荐

Linux集群自动化监控系统Zabbix集群搭建到实战

自动化监控系统...

systemd是什么如何使用_systemd/system

systemd是什么如何使用简介Systemd是一个在现代Linux发行版中广泛使用的系统和服务管理器。它负责启动系统并管理系统中运行的服务和进程。使用管理服务systemd可以用来启动、停止、...

Linux服务器日常巡检脚本分享_linux服务器监控脚本

Linux系统日常巡检脚本,巡检内容包含了,磁盘,...

7,MySQL管理员用户管理_mysql 管理员用户

一、首次设置密码1.初始化时设置(推荐)mysqld--initialize--user=mysql--datadir=/data/3306/data--basedir=/usr/local...

Python数据库编程教程:第 1 章 数据库基础与 Python 连接入门

1.1数据库的核心概念在开始Python数据库编程之前,我们需要先理解几个核心概念。数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它就像一个电子化的文件柜,能让我们高效...

Linux自定义开机自启动服务脚本_linux添加开机自启动脚本

设置WGCloud开机自动启动服务init.d目录下新建脚本在/etc/rc.d/init.d新建启动脚本wgcloudstart.sh,内容如下...

linux系统启动流程和服务管理,带你进去系统的世界

Linux启动流程Rhel6启动过程:开机自检bios-->MBR引导-->GRUB菜单-->加载内核-->init进程初始化Rhel7启动过程:开机自检BIOS-->M...

CentOS7系统如何修改主机名_centos更改主机名称

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1.前言本文将讲解CentOS7系统如何修改主机名。...

前端工程师需要熟悉的Linux服务器(SSH 终端操作)指令

在Linux服务器管理中,SSH(SecureShell)是远程操作的核心工具。以下是SSH终端操作的常用命令和技巧,涵盖连接、文件操作、系统管理等场景:一、SSH连接服务器1.基本连接...

Linux开机自启服务完全指南:3步搞定系统服务管理器配置

为什么需要配置开机自启?想象一下:电商服务器重启后,MySQL和Nginx没自动启动,整个网站瘫痪!这就是为什么开机自启是Linux运维的必备技能。自启服务能确保核心程序在系统启动时自动运行,避免人工...

Kubernetes 高可用(HA)集群部署指南

Kubernetes高可用(HA)集群部署指南本指南涵盖从概念理解、架构选择,到kubeadm高可用部署、生产优化、监控备份和运维的全流程,适用于希望搭建稳定、生产级Kubernetes集群...

Linux项目开发,你必须了解Systemd服务!

1.Systemd简介...

Linux系统systemd服务管理工具使用技巧

简介:在Linux系统里,systemd就像是所有进程的“源头”,它可是系统中PID值为1的进程哟。systemd其实是一堆工具的组合,它的作用可不止是启动操作系统这么简单,像后台服务...

Red Hat Enterprise Linux 10 安装 Kubernetes (K8s) 集群及高级管理

一、前言...

Linux下NetworkManager和network的和平共处

简介我们在使用CentoOS系统时偶尔会遇到配置都正确但network启动不了的问题,这问题经常是由NetworkManager引起的,关闭NetworkManage并取消开机启动network就能正...

取消回复欢迎 发表评论: