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

Java 面试题集锦记录

Java 面试题集锦记录

    • 1. SpringBoot、SpringCloud区别
    • 2. SpringCloud怎么保证服务间通信?
    • 3. Spring怎么保持高可用性、稳定性?
    • 4. 负载均衡
    • 5. [Rabbitmq](https://blog.csdn.net/qq_40985985/article/details/128013229) 怎么避免重复消费,[消费模式](https://blog.csdn.net/qq_54796785/article/details/133580623)
    • 6. [Spring用到了哪几种设计模式,Java设计模式](https://zhuanlan.zhihu.com/p/545864894)
    • JVM
    • Java垃圾回收机制
    • ES篇
    • Redis篇
    • redis缓存穿透、雪崩、击穿
    • 事务、隔离级别、锁
    • 隔离级别
    • 分布式事务
    • ArrayList,线程安全扩容
    • list、set、concurrentHashMap
    • 交易幂等怎么避免重复
    • 跨行业,怎么去更新学习业务方面的知识?
    • 文件流
    • lambda表达式是什么?
    • Stream是什么?
    • 1. 对象3特性
    • 2. 抽象类和接口的差别
    • 3. 内部类和静态内部类的差别
    • 4. [TCP/IP七层网络模型](https://blog.csdn.net/m0_74722801/article/details/132058553)
    • 5. 进程/线程
    • 6. 数据表操作增删查改的关键字
    • 7. 正则表达式匹配数字
    • 8. 重载、重写
    • 9. 浅拷贝、深拷贝
    • 10. 流安全使用
    • 11. [lambda表达式、Stream流式编程](https://blog.csdn.net/justloveyou_/article/details/79562574)
    • 12. 浏览器一个url访问的过程?
    • 13. http常见状态码
    • 14. 主键、外键
    • 15. contentType是什么意思,有哪几种?
    • 16. 容器 docker常用命令
    • 17. linux常用命令,举例说明,vim怎么编辑

1. SpringBoot、SpringCloud区别

  1. 作用不同;前者的作用是为了提供一个默认配置,从而简化配置过程;后者的作用是为了给微服务提供一个综合管理框架。2. 使用方式不同;前者可以单独使用;springcloud必须在springboot使用的前提下才能使用。

springboot和springcloud都是从spring生态圈中衍生出来的软件开发框架,但是二者的创作初衷是完全不同的,springboot的设计目的是为了在微服务开发过程中可以简化配置文件,提高工作效率,而springcloud的设计目的是为了管理同一项目中的各项微服务,因此二者是完全不同的两个软件开发框架。

@SpringBootApplication是一个组合注解,它整合了@Configuration、@EnableAutoConfiguration和@ComponentScan注解,并开启了Spring Boot程序的组件扫描和自动配置功能。

2. SpringCloud怎么保证服务间通信?

Eureka 每隔一段时间向注册中心同步一次心跳,更新上下线及其他服务状态信息

3. Spring怎么保持高可用性、稳定性?

可以采用多个实例来保证服务的高可用性和负载均衡。可以通过使用服务注册与发现机制,如Eureka、Consul等来进行服务的注册与发现,同时结合负载均衡算法(如轮询、随机、加权轮询等)来分配请求。此外可以使用断路器(如Hystrix)来避免因服务实例挂掉或响应时间过长时对整个系统造成影响。在配置多个实例时,还需考虑实例间的通信问题和数据同步问题。

Retry+Hystrisx

4. 负载均衡

用的ribbon(轮询、随机、加权轮询)

5. Rabbitmq 怎么避免重复消费,消费模式

消费过的加pg/redis,消费时先判断是否消费过;成功消费后提交offset

  • 简单队列模型(单消费者/生产者 消费完删除 优缺点:简单;不支持多个消费者并发消费;)
  • 工作队列模型(单生产者多消费者平均干活 优缺点:消费负载均衡可实现更高吞吐量;无法根据消息优先重要等级去处理;)
  • 发布/订阅模型(都收到广播 优缺点:支持广播发布和订阅,无法动态路由;)
  • 路由模型(支持基于路由键的动态路由 优缺点:可根据高优先级动态去发送队列;需要提前配置好交换机和队列的绑定关系)
  • 主题模型(支持更灵活、更具体的消息路由和过滤。优缺点:灵活;配置化更复杂)

6. Spring用到了哪几种设计模式,Java设计模式

  • 工厂模式(一堆创建类工厂的方法,不暴露类的细节 BeanFactory)
  • 单例模式(对象 实例,保证一个对象只创建一个实例)
  • 代理模式(SpringAOP 动态代理)
  • 原型模式(复制一个类)
  • 策略模式
  • 适配器模式
  • 观察者模式
  • 模板模式

JVM

Java Virtual Machine,核心组件,解释和执行Java字节码。编译一次,实现了Java的跨平台;

Java垃圾回收机制

jvm垃圾回收机制采用的时分代回收思想,将内存区域划分为新生代和老年代。新生代又分为伊甸区和幸存区,幸存区又由大小相等的两个区组成。刚建立的对象会处于伊甸区,然后会经过GC进入幸存区1,再一次GC如果还没被清理,就会进入幸存区2.如果幸存区2.中再经历过GC还没被清理,又会进入幸存区1.在幸存区之间没转变一次。对象的年龄就会加一。当年龄达到15后会进入老年代。

ES篇

ElasticSearch:分布式实时的存储文件系统、搜索引擎、分布式、可拓展、TB级别的结构化/非结构化数据;倒排索引(分词);Cluster、Node、Shards、Replica;

Redis篇

内存中的数据结果存储系统;

redis缓存穿透、雪崩、击穿

是一个比较好的开头;自我介绍 or 项目介绍 or 问答
面试官逻辑思维能力很好,很谦逊。面试过程比较愉快,或者技术,或者提问的问题,都比较亲和。当然也问了我技术问题等,不是很深入的,一些我也没能回答上来。

事务、隔离级别、锁

  • 事务
    ACID

隔离级别

脏读(A读到了B未提交的)、幻读(读取已提交内容,范围读取,在同一个事务内相同的条件(age > 10)多次读取到的数据量不一致。)、不可重复读(同一个事务内,相同的条件(age = 10)多次读取的数据结果不一致。)

  1. Read Uncommitted(读取未提交内容):出现脏读,也就是可能读取到其他会话中未提交事务修改的数据。
  2. Read Committed(读取已提交内容):不可重复读,只能读取到已经提交的数据。Oracle 等数据库默认的隔离级别。
  3. Repeatable Read(可重复读):出现幻读。在同一个事务内的查询都和事务开始时刻一致。InnoDB默认级别。
  4. Serializable(串行读):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞。

分布式事务

CAP(Consistency、Avaliability、Partition Tolerance) 关系型数据库CA;跨行转账CP;NoSql数据库AP;
在分布式系统中,AP的应用是比较多的,即保证系统的可用性和分区容忍性,牺牲数据的强一致性(写操作后立即读取新数据),保证数据的最终一致性。比如:订单退款、今日退款成功、明日到账等等。


  • 乐观锁适用于读操作多的场景,而悲观锁适用于写操作多的场景。
    synchronized、ReentrantLock 都属于悲观锁,而AtomicInteger.incrementAndGet 则属于乐观锁。

ArrayList,线程安全扩容

  • ArrayList 结构,扩容后怎么实现的,有没有list是线程安全的
    Collections.synchoronizedList()
    Collections.copyOnWriteArrayList
    CopyOnWrite VS Vector
    在 get() 操作上,Vector 使用了同步关键字,所有的 get() 操作都必须先取得对象锁才能进行。在高并发的情况下,大量的锁竞争会拖累系统性能。反观CopyOnWriteArrayList 的get() 实现,并没有任何的锁操作。

    在 add() 操作上,CopyOnWriteArrayList 的写操作性能不如 Vector,原因也在于Copy-On-Write,写入时不止加锁,还使用了Arrays.copyOf()进行了数组复制,性能开销较大,遇到大对象也会导致内存占用较大。

    在读多写少的高并发环境中,使用 CopyOnWriteArrayList 可以提高系统的性能,但是,在写多读少的场合,CopyOnWriteArrayList 的性能可能不如 Vector。

list、set、concurrentHashMap

交易幂等怎么避免重复

  • 交易怎么避免重复交易(幂等交易这种怎么控制)
    前后端结合着来
    幂等性:任意多次执行对资源本身所产生的影响均与一次执行的影响相同。
    生成token加到redis查询,以避免多次重复错误的处理;
    source+序列号~~~ 加入redis/或者存入数据库
    唯一全局id加入redis/或者存入数据库

跨行业,怎么去更新学习业务方面的知识?

经验、交流、积累
分块–大框架—每一个点
吃透每一个点—自己编织一张网

偏技术太久——像业务靠近的重要性;
从客户出发,市场需求价值,多思考 & 本质是否赚钱——来自东哥的,感觉也挺不错的,是个切入点。

文件流

zip包免生成文件直接封装二进制流(文件跨路径校验,文件个数超多校验,文件大小超大校验等)

Java 8新特性:try-with-resources 文件流自动关闭;

lambda表达式是什么?

匿名函数,把函数作为参数传递给方法;代码简洁度;

Stream是什么?

1. 对象3特性

封装继承多态(encapsulation,inherits、polymorphism)

2. 抽象类和接口的差别

3. 内部类和静态内部类的差别

4. TCP/IP七层网络模型

也可以说是4层,(从上到下)包括了应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

5. 进程/线程

进程是操作系统分配资源的基本单位;线程是操作系统调度的基本单位;
一个进程内有多个线程,进程内多个线程共享资源;进程调度更耗资源时间等;线程调度更方便;

6. 数据表操作增删查改的关键字

select、update、delete/drop、insert

7. 正则表达式匹配数字

\d+ \w+

8. 重载、重写

都是子类与父类间,重载(参数个数、类型、排列顺序)

9. 浅拷贝、深拷贝

对象内引用对象的复制与否,深拷贝:改变新对象原对象不受影响;浅拷贝原对象值也改变;

10. 流安全使用

java8 try-with-resources自动关闭;

11. lambda表达式、Stream流式编程

Function 匿名函数,flatMap reduce groupingBy

12. 浏览器一个url访问的过程?

13. http常见状态码

404 200 502

14. 主键、外键

15. contentType是什么意思,有哪几种?

文件返回格式,application/json、protobuf、ostream

16. 容器 docker常用命令

17. linux常用命令,举例说明,vim怎么编辑

mv cp tree grep awk ls tail head
vim操作文件命令:vi Insert : wq等

相关文章:

Java 面试题集锦记录

Java 面试题集锦记录 一1. SpringBoot、SpringCloud区别2. SpringCloud怎么保证服务间通信?3. Spring怎么保持高可用性、稳定性?4. 负载均衡5. [Rabbitmq](https://blog.csdn.net/qq_40985985/article/details/128013229) 怎么避免重复消费,[…...

【自然语言处理】第2部分:识别文本中的个人身份信息

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…...

C#中的.NET与.NET Framework区别

C#是一种编程语言,而.NET是一个开发平台。在.NET生态系统中,有两个相关但不同的概念:.NET和.NET Framework。 .NET Framework 发布时间: .NET Framework是最早引入的,它于2002年首次发布。它是一个用于构建Windows应…...

详解Keras3.0 Layer API: LSTM layer

LSTM layer 用于实现长短时记忆网络,它的主要作用是对序列数据进行建模和预测。 遗忘门(Forget Gate):根据当前输入和上一个时间步的隐藏状态,计算遗忘门的值。遗忘门的作用是控制哪些信息应该被遗忘,哪些…...

Vue和React的运行时,校验引入包的上下文差异

背景 系统使用 webpack 5 模块联邦实现微前端,有关如何实现跨应用的代码共享,可参考 如何优雅的实现跨应用的代码共享 里的第三大点。 总之,这里是其他应用使用了某个应用共享出来的reg文件,引入方式为: import REG …...

C语言中函数调用和嵌套

函数是C语言的基本组成元素 函数调用 根据函数在程序中出现的位置有下列三种函数调用方式: 将函数作为表达式调用 将函数作为表达式调用时,函数的返回值参与表达式的运算,此时要求函数必须有返回值 int retmax(100,150); 将函数作为语句…...

JVM基础篇---02

为什么需要用户自定义类加载器: 扩展类加载器的功能: Java的默认类加载器主要有三个,分别是引导类加载器、扩展类加载器和应用程序类加载器。其中,引导类加载器和扩展类加载器是由JVM实现的,用户无法修改其行为。而应用…...

HTML网站基础

一、前端开发基础 前端一共三门语言——HTML、CSS、JS&#xff08;Java Script&#xff09; HTML用于静态网页框架&#xff0c;CSS用于修饰&#xff0c;JS构成动态网页 1、HTML 对于中文网页需要使用 <meta charset"utf-8"> 声明编码&#xff0c;否则会出现…...

最优化考试之惩罚函数外点法

最优化考试之惩罚函数外点法 一、外点法1.问题条件2.解题过程 一、外点法 1.问题条件 目标函数 f ( x ) f(x) f(x)约束函数 g ( x ) g(x) g(x) 2.解题过程 定义罚函数 F ( x ) f ( x ) t ∗ m i n ( 0 , g ( x ) 2 ) F(x)f(x)t*min(0,g(x)^2) F(x)f(x)t∗min(0,g(x)2)对罚…...

JavaScript 数组【详解】

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍JavaScript中数组详解 数组声明/基础操作以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题可…...

Node.js版本对比

目录 1. node版本与Npm版本对照表 2. node版本与node-sass版本对照表 3. node-sass与sass-loader版本对照表 1. node版本与Npm版本对照表 以往的版本 | Node.js 下面显示最新的对应内容&#xff0c;如果需要查找历史版本&#xff0c;可以进入上面的页面查询 VersionLTSDateV8np…...

人工智能:网络犯罪分子的驱动力

随着 2024 年的临近&#xff0c;是时候展望今年的网络安全状况了。由于网络犯罪日益复杂&#xff0c;预计到 2025 年&#xff0c;全球网络安全成本将增至 10.5 万亿美元。 人工智能的使用不断发展&#xff0c;网络犯罪分子变得越来越有创造力 我们注意到&#xff0c;联邦调查…...

ASP.NET Core认证原理和实现

ASP.NET Core认证原理和实现 AuthenticationHttpContextExtensions AuthenticationHttpContextExtensions 类是对 HttpContext 认证相关的扩展&#xff0c;它提供了如下扩展方法&#xff1a; public static class AuthenticationHttpContextExtensions {public static Task&l…...

基于OpenCV的图像颜色与形状识别的原理2

基于OpenCV的图像颜色与形状识别通常涉及以下几个步骤&#xff1a; 图像读取&#xff1a;使用OpenCV的cv2.imread()函数读取图像。预处理&#xff1a;可能包括图像的灰度转换、二值化、滤波等&#xff0c;以减少噪声和无关信息。颜色识别&#xff1a;颜色空间转换&#xff1a;…...

无法获取前置摄像头的预览图像?【Bug已解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案:此Bug解决方案总结HarmonyOS和OpenHarmony区别和联系项目场景: 最近也是遇到了这个问题,看到网上也有人在询问这个问题,本文总结了自己和其他人的解决经验,解决了无法获取前置摄像头的预览图像的问题。 问题:前置摄像头…...

微信小程序的bindtap和catchtap的区别

一. 事件 1.事件是视图层到逻辑层的通讯方式。 2. 事件可以将用户的行为反馈到逻辑层进行处理。 3. 事件可以绑定在组件上&#xff0c;当达到触发事件&#xff0c;就会执行逻辑层中对应的事件处理函数。 二. 如何使用事件 1. 简单来说就是将事件绑定到组件上面&#xff0c;bi…...

python哈希算法实现

以下是用Python实现SHA-256算法的示例代码&#xff1a; import hashlibdef sha256(message):# 创建SHA-256哈希对象sha256_hash hashlib.sha256()# 更新哈希对象的输入消息sha256_hash.update(message.encode(utf-8))# 计算哈希值并返回十六进制表示return sha256_hash.hexdi…...

SpringBoot实用开发(三)-- Redis提供API接口 -- StringRedisTemplate

引言: 由于redis内部不提供java对象的存储格式,因此当操作的数据以对象的形式存在时,会进行转码,转换成字符串格式后进行操作。为了方便开发者使用基于字符串为数据的操作,springboot整合redis时提供了专用的API接口StringRedisTemplate,你可以理解为这是RedisTe…...

【Qt-编码】

Qt编程指南 ■ 编码■ ASCII■ ANSI■ GB2312■ GBK■ GB18030 编码■ Unicode■ UTF-8&#xff1a; ■ Qt接收注射泵GBK编码后显示乱码■■ ■ 编码 ■ ASCII &#xff08;American Standard Code for Information Interchange&#xff0c;美国信息交换标准代码&#xff09;…...

使用Python实现Linux惠尔顿上网认证客户端

在本文中&#xff0c;我们将展示如何使用Python编写一个简单的脚本来实现Linux下的惠尔顿上网认证。以下是我们需要的参数和值&#xff1a; wholeton_host: 惠尔顿服务器地址&#xff0c;例如 192.168.10.10wholeton_user: 用户名&#xff0c;例如 AABBCCwholeton_pass: 密码&…...

【漏洞复现】某检测系统(admintool)接口任意文件上传漏洞

文章目录 前言声明一、漏洞详情二、影响版本三、漏洞复现四、修复建议 前言 湖南建研检测系统 admintool接口任意文件上传漏洞&#xff0c;攻击者可通过该漏洞获取服务器敏感信息。 声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者…...

检测如下MHA运行条件【踩坑记录】

【masterha_check_ssh --conf/etc/mha/app1.cnf&#xff1a;SSH免密登录】 【错误信息1】 [error][/usr/share/perl5/vendor_perl/MHA/SSHCheck.pm, ln111] SSH connection from root10.0.0.53(10.0.0.53:22) to root10.0.0.51(10.0.0.51:22) failed! 【错误反馈】就是服务器…...

使用js编写一个函数判断所有数据类型的通用方法

一、typeof 在 JavaScript 里使用 typeof 来判断数据类型&#xff0c;只能区分基本类型&#xff0c;即 “number”&#xff0c;”string”&#xff0c;”undefined”&#xff0c;”boolean”&#xff0c;”object” 五种。 对于数组、对象来说&#xff0c;其关系错综复杂&…...

AutoSAR(基础入门篇)2.1Autosar架构中的AppL

目录 一、Autosar中APPL概述 1、AppL的内容 2、汽车顶灯示例 3、SWC的通信...

怎么使用jupter notebook并配置环境变量

有的时候需要使用Jupyter Notebook运行代码&#xff0c;Jupyter Notebook的主要特点&#xff1a; ① 编程时具有语法高亮、缩进、tab补全的功能。 ② 可直接通过浏览器运行代码&#xff0c;同时在代码块下方展示运行结果。 ③ 以富媒体格式展示计算结果。富媒体格式包括&…...

深信服技术认证“SCSA-S”划重点:文件上传与解析漏洞

为帮助大家更加系统化地学习网络安全知识&#xff0c;以及更高效地通过深信服安全服务认证工程师考核&#xff0c;深信服特别推出“SCSA-S认证备考秘笈”共十期内容&#xff0c;“考试重点”内容框架&#xff0c;帮助大家快速get重点知识~ 划重点来啦 *点击图片放大展示 深信服…...

Sql 动态行转列

SELECT ID, Name, [Month],auth FROM dbo.Test3 数据列表&#xff1a; 1.静态行专列 Select auth, MAX( CASE WHEN [Month] 一月 then Name else null end) 一月, MAX( CASE WHEN [Month] 二月 then Name else null end) 二月, MAX( CASE WHEN…...

记录 App webview加载h5页面有上传图片,应用商店审核必须加授权提示问题的解决方案

场景&#xff1a; 1、项目内加载了h5页面的七鱼客服&#xff0c;(相当于webview 加载help.html) 2、应用上架要求必须有授权提示弹窗 解决思路 1、客服的h5 页面在跳转时候&#xff0c;给父层webview 发消息&#xff0c;注入一段拦截代码&#xff0c;监听到有上传操作时候&…...

Stable Diffusion模型原理

1 Stable Diffusion概述 1.1 图像生成的发展 在Stable Diffusion诞生之前&#xff0c;计算机视觉和机器学习方面最重要的突破是 GAN&#xff08;Generative Adversarial Networks 生成对抗网络&#xff09;。GAN让超越训练数据已有内容成为可能&#xff0c;从而打开了一个全新…...

【Android 13】使用Android Studio调试系统应用之Settings移植(二):构建settings app项目目录

文章目录 一、篇头二、系列文章2.1 Android 13 系列文章2.2 Android 9 系列文章2.3 Android 11 系列文章三、准备工作3.1 创建目录3.2 初始化 git 仓库四、提取settings原始代码4.1 提取目标4.2 源码路径4.2.1 settings app4.2.2 SettingsLib4.3 存放位置...