恒生电子面经准备 - 详解

news/2025/10/20 13:33:02/文章来源:https://www.cnblogs.com/wzzkaifa/p/19152440

文章目录

      • 1.jdk,jre,jvm的区别是什么?
      • 2.java中finally的重要性?启用的场景有哪些?有没有总结性的说法?什么类型的东西放到finally?
      • 3.final的作用
      • 4.==和equals的区别?
      • 5.为什么重写equals方法要同时重写hashcode途径?
      • 6.怎么把String类型转换成数字类型
      • 7.Java里面的显示转换和隐式转换,简述一下
      • 8.java中的顶级父类
      • 9.Java的所有基本数据类型,有几种?
      • 10.平时有做单元测试吗?用的什么工具类,测试类怎么写的?@Test注解是什么工具类提供的?
      • 什么数据类型就是11.String底层
      • 12.String类型为什么不可变
      • 13.String,StringBuilder,StringBuffer区别?为什么StringBuffer线程安全
      • 14.Java怎么打印对象,怎么打印属性值
      • 15.Java里面如何遍历list
      • 16.重载和重写的区别?
      • 17.线程池有哪些参数?有哪些拒绝策略?除了抛出异常还有什么策略?
      • 18.JVM有做过分析吗?有没有在线处理过异常?
      • 19.java集合的运用,简述一下
      • 20.SpringBoot了解多少
      • 21.JAVA锁了解吗?了解AQS吗?
      • 22.synchronized底层怎么实现的?分布式锁了解吗?
      • 23.那锁住的对象怎么和monitor锁监视器关联上的呢?
      • 24.知道synchronized锁升级的过程吗?
      • 25.java内存结构、类加载过程,编译原理了解吗?
      • 26.JAVA反射了解吗?举几个java反射的应用案例
      • 啥?就是27.java中字节流和字符流的区别

1.jdk,jre,jvm的区别是什么?

jdk包含jre,jre包含jvm。jdk包含了编译器调试器等开发工具
通过jre是java运行时环境,能够运行已经编译好的脚本
jvm是虚拟机负责把字节码编译成机器指令执行

2.java中finally的重要性?使用的场景有哪些?有没有总结性的说法?什么类型的东西放到finally?

finally保证关键的代码一定会被执行,无论try块是否抛出异常,或者执行了return
常见的启用场景是资源释放,比如关闭文件流,关闭数据库连接,锁释放等等。可能总结为:带有收尾性的都应该放在finally中

3.final的作用

是修饰符,用来保证不可变性,修饰的类不可继承,修饰的手段不可重写,修饰的变量只能赋值一次

4.==和equals的区别?

==比较的是内存地址指向是否相同。equals比较的是两个对象的具体值是否相同

5.为什么重写equals方法要同时重写hashcode方法?

hashcode方法用于定位元素存放的数组下标,可能冲突,所有要求equals判断元素值是否重复,重复就丢弃,只重写equals不重写hashcode可能出现元素重复

6.怎么把String类型转换成数字类型

Integer.parseInt()

7.Java里面的呈现转换和隐式转换,简述一下

隐式转换式小范围提升为大范围,如int转换为double。展示转换时大范围转化为小范围(type)构建,可能出现精度丢失

8.java中的顶级父类

Object方法‘

9.Java的所有基本数据类型,有几种?

八种,byte.short,int long float double char boolean

什么工具类提供的?就是10.平时有做单元测试吗?用的什么工具类,测试类怎么写的?@Test注解

junit做单元测试,@Test注解是junit注解提供的,用来标记测试方法

什么数据类型就是11.String底层

jdk8底层采用的是char类型数组,jdk9采用的是byte数组

12.String类型为什么不可变

final保证类不被继承,修饰char数组保证引用不发生改变,该类没有对外提供get和set方法,保证不被修改

13.String,StringBuilder,StringBuffer区别?为什么StringBuffer线程安全

String:不可变,安全,效率低
StringBuilder:可变,单线程高效,线程不安全
StringBuffer:可变,多线程安全,采用synchronized修饰

14.Java怎么打印对象,怎么打印属性值

类重写了toString方法,new构造对象,点出来属性值

15.Java里面如何遍历list

传统for循环,增强for循环,迭代器,lambda表达式

16.重载和重写的区别?

方法 重载(Overload) 是指同一个类中技巧名相同,但参数列表不同,可以是参数类型或数量不同,它属于 编译时期多态。而方法 重写(Override) 是指子类继承父类时,方法名和参数列表相同,经过修改技巧实现来改变行为,它属于 运行时期多态。容易记忆:重载同名不同参,重写子类改父类。

17.线程池有哪些参数?有哪些拒绝策略?除了抛出异常还有什么策略?

public ThreadPoolExecutor(
int corePoolSize, // 核心线程数
int maximumPoolSize, // 最大线程数
long keepAliveTime, // 救急线程存活时间
TimeUnit unit, // 存活时间单位
BlockingQueue workQueue, // 阻塞队列
ThreadFactory threadFactory, // 线程工厂
RejectedExecutionHandler handler // 拒绝策略
)
线程池的拒绝策略有四种:抛出异常,丢弃新来的任务,丢失最早的任务,交给主线程执行

18.JVM有做过分析吗?有没有在线处理过异常?

线上CPU飙高,top命令查看哪个进程,ps查看进程对应线程信息,使用jstack查看进程的哪些线程出现了问题,最终定位问题

19.java集合的运用,简述一下

在java中,常用的集合重要有三类,List,Set,Map.List重要是有序可重复,适合按照顺序存储数据。set存放不重复无序数据,适合用来去重。Map存放键值对数据

20.SpringBoot了解多少

快速搭建web应用和微服务项目,核心在于他的自动配置,开箱即用,减少了很多手动配置

21.JAVA锁了解吗?了解AQS吗?

关键有悲观锁和乐观锁。悲观锁有synchronized和reentrantlock,乐观锁运用版本号法,其中reentrantlock底层是基于AQS实现的,AQS用一个state记录锁状态(0表示无锁,1表示有锁),没有获取锁成功用FIFO队列管理等待线程

22.synchronized底层怎么实现的?分布式锁了解吗?

sychronized锁会让锁住的对象关联一个锁监视器,当一个线程获取到锁的时候,其他线程会进入到阻塞队列中,如果调用了wait方法会进入到等待队列中。
分布式锁可以采用redis实现,比如比较常用的redission分布式锁

23.那锁住的对象怎么和monitor锁监视器关联上的呢?

首先要分析这个对象的内存结构,分为对象头,实例内容,填充(hotspot虚拟机规定),对象头包括markword和klassword。这里主要经过markword达成关联,markwork重量级锁有一个monitor指针能够实现关联

24.知道synchronized锁升级的过程吗?

偏向锁:单线程反复加锁解锁
轻量级锁:多个线程竞争不激烈
重量级锁:多线程竞争激烈
原因:阻塞/唤醒涉及到操作系统用户态和内核态的切换,开销很大。这里的开销指的是上下文的切换,保存程序计数器,寄存器,堆栈指针等等

25.java内存结构、类加载过程,编译原理了解吗?

JVM内存结构分为线程私有和线程共享两部分
线程私有:虚拟机栈(存放方法调用的栈帧),本地方法栈(给native办法服务),脚本计数器(记录当前线程执行到的字节码行号)
线程共享:堆,存放对象的示例数据,是垃圾回收的主要区域
方法区(jdk8叫元空间):存放类的结构信息,办法,静态变量等
运行时常量池:存放字面量和符号引用
2.类加载过程:
类的加载由类加载器完成,遵循双亲委派模型。
2.1加载:读取.class文件,生成Class对象
2.2验证:确保字节码合法,安全
2.3准备:为静态变量分配内存并赋初值
2.4解析:把常量池的符号引用解析为直接引用
2.5初始化:执行类的clinit方法,真的赋值和静态代码块
3.编译原理:
源代码凭借javac编译成字节码。接着字节码交给解释器翻译为机器指令,还有JIT编译为本地机器码,提高运行效率就是开始

26.JAVA反射了解吗?举几个java反射的应用案例

反射指的是运行时动态获取类的信息并处理类成员。比如说Spring底层通过反射创建对象,JSON序列化和反序列化,jdbc依据反射加载驱动,AOP通过动态代理加反射实现

啥?就是27.java中字节流和字符流的区别

Reader/Writer。”就是字节流按字节处理,适合二进制文件,比如图片,字符流按字符处理,适合文本文件。字节流基类是 InputStream/OutputStream,字符流基类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

082_尚硅谷_单分支双分支课堂练习(2)

082_尚硅谷_单分支双分支课堂练习(2)1.声明2个float64变量并赋值, 判断第一个数大于10.0, 且第2个数小于20.0, 打印两数之和 2.声明2个int32变量并赋值, 判断两数之和, 如果大于等于50, 打印`hello world` 3.定义两个变…

把“扔硬币”搬到互联网:一文看懂 AB 测试的底层逻辑 - 指南

把“扔硬币”搬到互联网:一文看懂 AB 测试的底层逻辑 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

实用指南:IEC 60364-7-722-2018低压电气装置中电动车供电安全要求标准介绍

实用指南:IEC 60364-7-722-2018低压电气装置中电动车供电安全要求标准介绍pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-famil…

记录下,cadence17.4 PCB封装更新方法

在PCB板上 然后在元件选择栏内看到元件置于待放入元件nets列表中 在随后出现的设置对话框中,选择update 焊盘from lib,fixed 属性,然后update,再选元件进入PCB,封装已经更新了。

c#设计模式—访问者模式 - 教程

c#设计模式—访问者模式 - 教程2025-10-20 13:20 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importa…

springboot使用aop切面,记录日志

技术说明: springboot:2.1.4.RELEASE jQuery Ajax mysql:8.0.32 业务背景: 当我们在操作网页的时候,我们后台需要记录每个用户,什么时候操作了哪些记录。比如注册了,还是登录了,还是查询了,我们把这些记录全部…

【整活】OI的那些奇妙小操作(Part 1)

卡时 在C++里,有(double)clock()/CLOCKS_PER_SEC这一行代码可以获得当前已经运行的时间。 初见端倪,也就是说,当你使用一些暴力算法(暴搜)的时候,你可以通过计算当前已经运行的时间并判断是否将要超时,如果要超…

想学习的数学

空闲时间想多学习一些基础数学课,虽然以前也学过,但是没有写一些笔记 比如: 泛函分析 范畴论 测度论 暑期班的优化笔记也可以整理一下,还一些可逆遇见的矩阵的性质,以为比较散乱,所以遇到了再整理。本文来自博客园…

详细介绍:Streamlit:CSS——从基础到实战美化应用

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

SqlServer 事务复制的两个参数immediate_sync,allow_anonymous

SqlServer 事务复制的两个参数immediate_sync,allow_anonymousSqlServer的事务复制中,immediate_sync和allow_anonymous两个参数会影响到复制的后台行为和分发库(distribution)的数据保留方式,这两个参数单从名字…

OO之接口-DAO模式代码阅读及应用

1. StudenDaoListImpl.java 与 StudentDaoArrayImpl.java 有何不同?StudenDaoListImpl 使用 ArrayList 存储学生对象,可以动态扩容,无需指定初始大小。StudentDaoArrayImpl 使用固定长度的 Student[] 数组存储学生对…

个微协议,微信号二次开发/ipad协议

优势 我们是一家专业服务企业数字化微信管理服务的技术团队,服务于需求SCRM、机器人、营销系统、社群小助手等具有研发能力的企业,同时我们也接收因使用Xp方案、ipad方案、PC方案导致被批量封号的企业,我们合作伙伴目…

Win11设置默认打开全部右键菜单

前言Win11 的右键菜单默认是折叠起来,很多功能需要点击“显示更多选项”才能显示,非常不方便。 方法打开 CMD 运行下面命令,然后重启电脑即可。reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c…

屏幕显示发白难题的硬件工程深度排查:架构兼容性边界分析

屏幕显示发白难题的硬件工程深度排查:架构兼容性边界分析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

发现概率

5.1.3 发现概率模型的求解 发现概率的核心特征是累积性与不可逆性: 单雷达需连续3个扫描周期(窗口大小 $w = 3$)探测成功才判定"发现",且一旦某时刻满足"发现"条件,后续所有时刻的发现状态需…

MySQL索引查看语句show index详解

一、概述 SHOW INDEX语句是MySQL中用于查看表索引信息的语句。它提供了有关表中索引的详细信息,包括索引名称、索引类型、关联的列等。 二、语法与概要描述 SHOW INDEX语句的语法如下: SHOW INDEX FROM table_name […

qzmoot 生活合集

qzmoot 生活合集欣赏穿蛋侠; 摸彭云; 跳缩小版《我是奶龙》。

yocto工程升级要点

需求 原有的工程是多年前基于yocto sumo开发,对应的linux kernel版本是4.14。 需求是要求linux kernel升级到5.10。 背景 工程由以下几部分组成,yocto sumo构建部分的代码,包括poky,bitbake等 目标平台支持多款第三…

微信机器人开发API!3步搞定微信聊天机器人

微信机器人开发API!3步搞定微信聊天机器人 WTAPI框架是一个能将个人微信各项功能提取成可供开发人员调用的一套私有API接口,比如微信的收发消息,发朋友圈,群聊,建群等等都是可以用API接口来做的。你可以用 微信机…

详细介绍:【Linux】Linux管道与进程池深度解析:从原理到实战

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …