java面试题

2023-09-20 17:05:50

java基础面试题

1.hashcode和equals如何使用

hashcode是hashmap中确定数据存放在数组上的位置的
equal是hashcode相同时确定是否是相同的key

2.== 和equals的区别

==是用来比较基本类型的数据是否相等
equals是用来比较引用类型数据是否相等

3.重写和重载的区别

重写是子类对父类的方法的重写
重载是同一个类中,方法名相同方法参数不同

4.代理的几种实现方式

1.静态代理
2.动态代理
2.1 jdk自带的动态代理
特点:面向接口的,不需要导入三方依赖的动态代理,可以对多个不同的接口进行增强,通过反射读取注解时,只能读取到接口上的注解
原理:面向接口,只能对实现类在实现接口中定义的方法进行增强
创建代理类:入参有类构造器,接口类,反射处理类的实现类
2.2 cglib动态代理
特点:面向父类的动态代理,需要导入第三方依赖
原理:面向父类,底层通过子类继承父类并重写方法的形式实现增强
一个增强类:设置父类,设置拦截类
一个方法拦截类:需要用户实现
一个jdk方法的代理类:方便实现用源对象方法的调用

5.String、StringBuffer、StringBuilder区别及使用场景

String内容不能被修改
StringBuffer和StringBuilder的内容可以修改
buffer和builder底层都是数组,value是数组,count是统计数组的使用数量
buffer是线程安全的

6. 怎样声明一个类不会被继承,什么场景下会用

final修饰的类不能被继承,Math类就是final修饰的类

7.自定义异常在生产中如何应用

1.throws方法的声明处,后面跟异常的类型
2.throw方法内部,后面跟异常的对象
3.try catch捕获异常

8. java面向对象有哪些特征

封装:封装了类的内部的实现机制,对外部只展示了类的调用方法,便于使用
继承:避免对相同特征进行重复描述
多态:父类指向子类

9.ArrayList和LinkedList有什么区别

arrayList底层是数组,有索引,查询时间复杂度O(1),插入和删除的效率低
linkedList底层是链表,查询需要遍历时间复杂度O(N)插入和删除的效率高

10.高并发中的集合有哪些问题

1.第一代线程安全集合
Vector,hashTable:synchronized修饰
2.第二代线程非安全集合
hashMap,arrayList
不安全,性能好
可以使用Collection的synchronized方法,实现线程安全,
使用的是代码块锁,锁在方法里面,提升了性能
3.第三代线程安全集合类
concurrent包下的
concurrentHashMap
copyOnWriteArrayList
在保证线程安全的同时,性能也很高
底层采用Lock锁,cas自旋锁

mysql面试题

1.ACID是靠什么来保证的

原子性是由undolog,它记录了需要回滚的日志信息,事务回滚时,撤销已经执行成功sql
一致性,是由其它三大特性一起保证的
隔离性是由mvcc保证的
持久性是由redolog来保证,mysql修改数据时会在redolog中记录一份日志数据,只要日志记录成功了,数据就不会丢失

更多推荐

C++零基础教程(C++中的类1)

文章目录前言一、初始化列表二、类中的const成员三、析构函数四、临时对象总结前言本篇文章我们继续来讲解C++中的类。一、初始化列表初始化列表是在C++类的构造函数中使用的一种特殊语法。它允许在对象创建时对成员变量进行初始化。通常,在构造函数的函数体中,我们会使用赋值操作符(=)来对成员变量进行初始化。然而,初始化列表

计算机竞赛 机器视觉的试卷批改系统 - opencv python 视觉识别

文章目录0简介1项目背景2项目目的3系统设计3.1目标对象3.2系统架构3.3软件设计方案4图像预处理4.1灰度二值化4.2形态学处理4.3算式提取4.4倾斜校正4.5字符分割5字符识别5.1支持向量机原理5.2基于SVM的字符识别5.3SVM算法实现6算法测试7系统实现8最后0简介🔥优质竞赛项目系列,今天要分享的是

SpringBoot + Prometheus + Grafana 打造可视化监控

SpringBoot+Prometheus+Grafana打造可视化监控文章目录SpringBoot+Prometheus+Grafana打造可视化监控常见的监控组件搭配安装Prometheus安装Grafana搭建SpringBoot项目引入依赖示例:监控SpringBoot内置Tomcat线程池的情况grafana

从实时监控到智能洞察:Grafana 和 CnosDB 的无限潜力

在今天的数字化世界中,监控系统对于维护应用程序和基础设施的稳定性至关重要。本文将介绍如何使用Grafana和CnosDB构建强大的监控体系,以便实时监视性能、发现问题并采取及时的措施。CnosDB已正式上架Grafana插件市场Grafana:开源监控和仪表工具Grafana是一款流行的开源监控和仪表工具,它提供了丰富

传统制造型企业如何实现数字化转型?

传统制造企业可以通过采用技术和数据驱动的方法来实现数字化转型,以改善运营、提高效率并在快速发展的行业中保持竞争力。以下是他们可以遵循的步骤和策略:1.评估和战略制定:评估当前状态:首先评估制造流程、技术基础设施和数据管理系统的当前状态。确定需要改进的领域。定义目标:明确定义数字化转型的目的和目标。你想实现什么目标?它可

7年阿里测试经验之谈 —— 用UI自动化测试实现元素定位

随着IT行业的发展,产品愈渐复杂,web端业务及流程更加繁琐,目前UI测试仅是针对单一页面,操作量大。为了满足多页面功能及流程的需求及节省工时,设计了这款UI自动化测试程序。旨在提供接口,集成到蜗牛自动化测试框架,方便用例的设计。目前,在自动化测试的实际应用中,接口自动化测试被广泛使用,但UI自动化测试也并不会被替代。

五分钟k8s实战-使用Ingress

ingress.png背景前两章中我们将应用部署到了k8s中,同时不同的服务之间也可以通过service进行调用,现在还有一个步骤就是将我们的应用暴露到公网,并提供域名的访问。这一步类似于我们以前配置Nginx和绑定域名,提供这个能力的服务在k8s中成为Ingress。通过这个描述其实也能看出Ingress是偏运维的工

Foxit PDF SDK Windows 9.1 Crack

FoxitPDFSDK变更日志Windows/Linux/Mac2023年8月新功能/增强功能在开始签名之前设置外观。支持使用共享字典添加签名。允许在调用Signature::StartSign()之前增量保存文档。在签名前修改现有未签名分页印章签名的外观。支持使用共享字典添加分页签名。忽略全角字符搜索。删除无效的PD

HTTP反爬困境

尊敬的程序员朋友们,大家好!今天我要和您分享一篇关于解决反爬困境的文章。在网络爬虫的时代,许多网站采取了反爬措施来保护自己的数据资源。然而,作为程序员,我们有着聪明才智和技术能力,可以应对这些困境并确保数据的安全性。本文将重点介绍如何通过HTTP协议和IP地址来应对反爬挑战,让我们一起深入探讨吧!1.了解HTTP协议H

Jenkins自动化测试

学习Jenkins自动化测试的系列文章RobotFramework概念RobotFramework安装Pycharm+RobotFramework环境搭建RobotFramework介绍Jenkins自动化测试1.RobotFramework概念RobotFramework是一个基于Python的,可扩展的关键字驱动的

nginx配置指南

nginx.conf配置找到Nginx的安装目录下的nginx.conf文件,该文件负责Nginx的基础功能配置。配置文件概述Nginx的主配置文件(conf/nginx.conf)按以下结构组织:配置块功能描述全局块与Nginx运行相关的全局设置events块与网络连接有关的设置http块代理、缓存、日志、虚拟主机等

热文推荐