Java笔试分享

news2024/11/26 20:19:57

1、设计模式(写>=3种常用的设计模式)

设计模式是在软件工程中解决常见问题的经验性解决方案。以下是一些常用的设计模式:

  • 单例模式(Singleton):

    意图:确保一个类只有一个实例,并提供一个全局访问点。
    应用场:当需要控制一个类的实例数量,例如管理共享资源时。

  • 工厂模式(Factory Method):

    意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。
    应用场景:当创建对象的过程需要根据不同的情况而变化时,例如在不同操作系统上创建不同类型的图形界面。

  • 观察者模式(Observer):

    意图:当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
    应用场景:当对象间存在一对多的关系,当一个对象改变状态,其他对象需要作出响应时,例如实现消息通知机制。

  • 策略模式(Strategy):

    意图:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。
    应用场景:当有多种算法可以实现同一功能,客户端需要能够动态选择使用哪种算法时,例如实现不同排序算法的切换。

  • 装饰器模式(Decorator):

    意图:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活。
    应用场景:当需要在不修改对象的结构的情况下,动态地给对象增加一些功能时,例如给文本添加不同类型的装饰(加粗、斜体等)。
    这些设计模式是软件设计中经常使用的基础模式,它们有助于解决特定问题,提高代码的可维护性和扩展性。

2、A有个子类terA,类B继承了A,B的子类terB继承了A的子类terA,写出各类代码含有泛型

在这里插入图片描述

3、Java反射(写一个类,利用反射获取全部public属性和方法)

在这里插入图片描述

4、三个线程,t1 、t2 、t3,要求线程1,2同时执行,3在它们执行完成后才能执行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方式2:CountDownLatch
在这里插入图片描述
在这里插入图片描述

5、不使用同步锁(synchronized )的情况下防止阻塞(同步锁可以实现资源共享有没有更好的实现办法。同步锁的替代?)?

(1)使用 java.util.concurrent 包中的并发集合: 这些集合类(如 ConcurrentHashMap, ConcurrentLinkedQueue 等)使用了并发控制机制,允许多个线程在没有锁的情况下访问和修改数据。

(2)使用原子变量: java.util.concurrent.atomic 包提供了一组原子类(如 AtomicInteger, AtomicLong, AtomicReference 等),它们使用底层的硬件指令来保证操作的原子性,从而避免了锁的使用。
AtomicInteger counter = new AtomicInteger(0);
// 线程1 counter.incrementAndGet();
// 线程2 int value = counter.get();
(3)使用乐观锁
总的来说,乐观锁通过允许多个线程在没有锁的情况下尝试执行操作,并在冲突发生时通过重试机制来解决问题,从而减少了线程阻塞的可能性。然而,如果系统中写操作非常频繁,乐观锁可能会导致频繁的重试和性能下降
在这里插入图片描述
(4)使用Java 8引入的StampedLock是一个更灵活的锁,支持乐观读、悲观读写和读写锁的转换,可以在性能和灵活性之间做出权衡。、
(5)ReadWriteLock:允许多个读取者同时访问共享资源,但只允许一个写入者,适用于读多写少的场景。

6、Java创建阻塞队列,要有添加和删除的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7、线程池添加和删除(关闭)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8、Java中任意一种集合的插入与查询代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9、Linux常用命令

9.1 查找和删除命令:查找一个文件并删除它

在这里插入图片描述

9.2 使用java命令合理分配年轻代和老年代,防止OOM

java -Xms1g -Xmx1g -XX:NewSize=256m -XX:MaxNewSize=256m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15 -XX:+UseParallelGC -jar your-application.jar
在这里插入图片描述

9.3 deamon(守护进程)方式启动应用,启动java程序配置区分

在这里插入图片描述
在这里插入图片描述

10、开发中令人深刻的技术问题

要提前准备这个,根据自己情况来,可以适当吹吹

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

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

相关文章

SVN 服务 安装部署 Docker(compose) 方式

通过 dockerhub 或者 命令行运行 : docker search svn 查看 svn 的镜像 如命令行: [rootSGP ~]# docker search svn NAME DESCRIPTION STARS OFFICIAL AUTOMATED garethflower…

Unity3d打包到Android

本文参考: Unity3D新手教程:如何打包发布到Android_哔哩哔哩_bilibili 一、Unity 打包Android的环境搭建 1、工具安装 Unity Hub已经集成了Android的环境搭建。 选择Add modules 然后安装Android Build Support下的所有工具。 如果各个工具都安装成功…

FastGPT 知识库搜索测试功能解析

目录 一、代码解析 1.1 searchTest.ts 1.2 controller.ts 本文接上一篇文章FastGPT 知识库搜索测试功能解析 对具体代码进行解析。 一、代码解析 FastGPT 知识库的搜索测试功能主要涉及两个文件,分别是 searchTest.ts 和 controller.ts 文件,下面分…

【HarmonyOS】HarmonyOS NEXT学习日记:五、交互与状态管理

【HarmonyOS】HarmonyOS NEXT学习日记:五、交互与状态管理 在之前我们已经学习了页面布局相关的知识,绘制静态页面已经问题不大。那么今天来学习一下如何让页面动起来、并且结合所学完成一个代码实例。 交互 如果是为移动端开发应用,那么交…

暑假第一周学习内容-ZARA仿写

仿写ZARA总结 文章目录 仿写ZARA总结前言无限轮播图分栏控制器与UIScrollViewUIScorllView的协议部分UISegmentedControl的协议部分 自定义cell 前言 本文主要是用来总结仿写ZARA中遇到的一些问题,以及ZARA中学习到的一些新知识。 无限轮播图 这里我们先给出无限…

Spring Boot 学习(10)——固基(Idea 配置 git 访问 gitee)

几转眼就过了两个月,其实也没有闲着,学也学了,只是繁杂事多,学的不如以前多,也没有做过笔记了。 以前做开发因条件受限,没有什么 git ,也没有 gitee。现在出来混要跟上形势才行,学习…

C语言程序设计8

程序设计8 问题8_1代码8_1结果8_1 问题8_2代码8_2结果8_2 问题8_3代码8_3结果8_3 问题8_1 函数 f u n fun fun 的功能是:求 s s ss ss 所指字符串数组中长度最短的字符串所在行下标,作为函数值返回,并把其串长放在形参 n n n 所指的变量中…

2024论文精读:利用大语言模型(GPT)增强上下文学习去做关系抽取任务

文章目录 1. 前置知识2. 文章通过什么来引出他要解决的问题3. 作者通过什么提出RE任务存在上面所提出的那几个问题3.1 问题一:ICL检索到的**示范**中实体个关系的相关性很低。3.2 问题二:示范中缺乏解释输入-标签映射导致ICL效果不佳。 4. 作者为了解决上…

【Android】常用基础布局

布局是一种可用于放置很多控件的容器,它可以按照一定的规律调整内部控件的位置,从而编写出精美的界面,布局内不单单可以放控件,也可以嵌套布局,这样可以完成一些复杂的界面,下面就来认识一些常用的布局吧。…

基于Semaphore与CountDownLatch分析AQS共享模式实现

共享模式与独占模式区别在于:共享模式下允许多条线程同时获取锁资源,而在之前分析的独占模式中,在同一时刻只允许一条线程持有锁资源。 一、快速认识Semaphore信号量及实战 Semaphore信号量是java.util.concurrent(JUC)包下的一个并发工具类…

2-40 基于Matlab编写的3维FDTD(时域有限差分算法)计算了球的RCS经典散射问题

基于Matlab编写的3维FDTD(时域有限差分算法)计算了球的RCS经典散射问题,采用PEC作边界,高斯波束激励。程序已调通,可直接运行。 2-40 3维FDTD 时域有限差分算法 - 小红书 (xiaohongshu.com)

机器学习——降维算法PCA和SVD(sklearn)

目录 一、基础认识 1. 介绍 2. 认识 “ 维度 ” (1)数组和Series (2)DataFrame 表 (3)图像 3. 降维思想 4. 降维步骤 二、降维算法(PCA) 1. PCA实现 (1&#…

免费视频批量横版转竖版

简介 视频处理器 v1.3 是一款由是貔貅呀开发的视频编辑和处理工具,提供高效便捷的视频批量横转竖,主要功能: 导入与删除文件:轻松导入多个视频文件,删除不必要的文件。暂停与继续处理:随时暂停和继续处理。…

7-20FPGA调试日志

1. 在代码里面定义的ILA的变量名称与波形抓取界面的不一致 问题描述 ::: 2. 直接从其他的播放声音的平台放音乐没问题,但是从AU里面生成的2kHz的正弦波放不出声音 演示视频链接 好像和ILA的例化信号有关,例化ILA信号的驱动时钟信号频率没有内部的其他…

Redis-应用

目录 应用 缓存雪崩、击穿、穿透和解决办法? 布隆过滤器是怎么工作的? 缓存的数据一致性怎么保证 Redis和Mysql消息一致性 业务一致性要求高怎么办? 数据库与缓存的一致性问题 数据库和缓存的一致性如何保证 如何保证本地缓存和分布式缓存的一致? 如果在…

电脑永久性不小心删除了东西还可以恢复吗 电脑提示永久性删除文件怎么找回 怎么恢复电脑永久删除的数据

永久删除电脑数据的操作,对于很多常用电脑设备的用户来说,可以说时有发生!但是,因为这些情况大都发生在不经意间,所以每每让广大用户感觉到十分苦恼。永久删除也有后悔药,轻松找回电脑中误删的文件。恢复文…

Github 2024-07-20 Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-20统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10TypeScript项目1Rust: 构建可靠高效软件的开源项目 创建周期:5064 天开发语言:Rust协议类型:OtherStar数量:92978 个Fork数量:1…

Win10环境将Docker部署到非系统盘

Win10环境将Docker部署到非系统盘 目录 Win10环境将Docker部署到非系统盘 一、Docker官网客户端Docker Hub下载 二、windows环境的安装 三、正确的迁移步骤 3.1、确保你的系统分区至少3G的剩余空间; 3.2、默认方式安装Docker hub; 3.3、打开Dock…

linux操作系统之线程

1.线程概念 线程是一个轻量级进程,每一个线程都属于一个进程 进程是操作系统资源分配的最小单位,而线程是CPU任务调度的最小单位 线程是一个任务执行的过程,包括创建,调度,消亡 创建:线程空间位于进程空间,进程中的线程,栈区独立,并共享进程中的数据区,文本区,堆区 调度:宏观…

微积分-微分应用2(平均值定理)

要得出平均值定理,我们首先需要以下结果。 罗尔定理 设函数 f f f 满足以下三个假设: f f f 在闭区间 [ a , b ] [a, b] [a,b] 上连续。 f f f 在开区间 ( a , b ) (a, b) (a,b) 上可导。 f ( a ) f ( b ) f(a) f(b) f(a)f(b) 则在开区间 ( a , b …