Java笔试分享

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.mzph.cn/pingmian/49952.shtml

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

相关文章

从0到1,AI我来了- (1)从AI手写数字识别开始

前两篇我们我们把控制台、Python环境Anaconda 搞定了,接下来,我们快速进入主题,把AI 界的“Hello World” 实现一下,有个感觉,再逐步了解一些AI的概念。 1、Pytorch 安装 1) 什么是Pytorch? 一个深度学习框架&#…

通信原理-实验六:实验测验

实验六 实验测验 一:测验内容和要求 测试需要完成以下几个步骤: 配置好以下网络图;占总分10%(缺少一个扣一分)根据下面图配置好对应的IP和网关以及路由等相关配置,保证设备之间连通正常;占总…

深入探讨 Java 语言的基本数据类型、字符串与数组

Java 语言自1995年推出以来,凭借其坚实的面向对象编程基础和跨平台特性,迅速成为全球最流行的编程语言之一。Java 的设计哲学之一是提供一套简单且高效的基本数据类型,同时具备强大的字符串处理和数组操作能力。本文将深入探讨 Java 的基本数…

加速决策过程:企业级爬虫平台的实时数据分析

摘要 在当今数据驱动的商业环境中,企业如何才能在海量信息中迅速做出精准决策?本文将探讨企业级爬虫平台如何通过实时数据分析加速决策过程,实现数据到决策的无缝衔接。我们聚焦于技术如何赋能企业,提升数据处理效率,…

NSS [NSSRound#13 Basic]flask?jwt?

NSS [NSSRound#13 Basic]flask?jwt? 开题 注册一下 要admin才能拿flag 看看是如何进行身份验证的 是flask session flask-unsign --decode --cookie .eJwtzjESwyAMBMC_UKfghJCEP-MRICZp7bjK5O9xkX6L_aR9HXE-0_Y-rnik_TXTlsiXEhUXleKGGGuG1jbmogrCEmNirZ7BEB-VJbTfIi-26hQD…

leetCode15三数之和(双指针)

目录 1、题目 2、思路 3、代码 4、总结 1、题目 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为…

MongoDB - 数组更新操作符:$、$[]、$pop、$pull、$push、$each、$sort、$slice、$position

文章目录 1. $1. 更新数组中的值2. 更新数组中的嵌入文档 2. $[]1. 更新数组中的所有元素2. 更新数组中的所有嵌入文档 3. $pop1. 删除数组的第一个元素2. 删除数组的最后一个元素 4. $pull1. 删除所有等于指定值的项2. 删除与指定条件匹配的所有项3. 从文档数组中删除项4. 从嵌…

跨棒距、公法线和齿厚对应关系分析

前面有一期讨论了下滚齿径向进刀量和齿厚的对应关系:《》,有小伙伴又问了,加工时是用跨棒距或者公法线去控制齿厚的,直接给齿厚是无法测量的,如果测一个值再去计算,有点麻烦,有没有他们之间的对…

多多OJ评测系统 在前端脚手架Vue-Cli中设置页面路由

目录 设置页面路由 我们把菜单上的路由改成读取路由文件 设置成export 导出路由 在刚刚的原始路由 index.ts中导入就行了 在这边引入我们的路由文件 我们之后点击菜单 我们的路由文件是这样的 但是没有跳转 写一下事件 接下来要同步路由到菜单项 自己定义监听函数 …

【Springboot starter 组件开发】限流组件 RateLimiter

【Springboot starter 组件开发】限流组件 RateLimiter 一、摘要二、基于guava实现2.1 核心依赖2.2 核心逻辑 三、基于Redis lua脚本实现3.1 核心依赖3.2 核心逻辑 一、摘要 基于guava的RateLimiter,实现限流基于redis lua脚本(推荐,准确性高)&#x…

推荐3款不可错过的实用工具

TouchPro TouchPro是一款运行于Windows系统下的时间属性修改工具,其主要功能是允许用户批量修改文件和文件夹的创建时间、修改时间和访问时间。该软件安装后会集成到资源管理器中,不占用任何系统资源,并支持多级目录与隐藏文件的日期属性批量…

mysql数据迁移,全量和增量

mysql是常用的数据库。数据迁移一般有2种,增量数据和历史数据。 假设我有2个数据库mysqlA和mysqlB。 mysqlB是新的数据库,mysqlA是旧的数据库。 A->B。首先我们选定一个时间为历史数据。将这部分的数据全部输入到B里。 接下来将服务切换的B库。然后…

推荐几款支持AI剪辑并可使用个人视频素材的软件!

最强AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量 其实现在大部分的AI视频剪辑工具都可以实现一键成片,这里给你分享6款可以使用自己的素材实现AI剪辑的工具及其操作方法! 一、剪映 剪映…

服务器重启了之后就卡在某个页面了,花屏,如何解决??

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

C++:完美转发和可变参数模板

完美转发和可变参数模板 (1)完美转发 A.What(什么是完美转发) 某些函数将其一个或多个实参连同其类型不变地转发给其它函数,我们需要保证被转发实参的所有性质,这种保证转发实参所有性质的参数传递,我们称之为“完美…

前端开发知识(二)-css

<head> <style> div{ } </style> </head> div是布局标签&#xff0c; 一般放在head标签内&#xff0c;最下部。 若直接在在.css文件中写css,文件中&#xff0c;直接写就行&#xff0c;如下所示。 div{ }

MySQL数据库安装使用

我们都知道数据库又分为关系型数据库和非关系型数据库&#xff1b; 关系型数据库指采用了关系模型来组织数据的数据库&#xff0c;指的就是二维表格模型。可以先初步理解为Excel表格。非关系型数据库又被称为NoSQL&#xff0c;对NoSQL 最普遍的定义是“非关联型的”&#xff0…

C语言 | Leetcode C语言题解之第279题完全平方数

题目&#xff1a; 题解&#xff1a; // 判断是否为完全平方数 bool isPerfectSquare(int x) {int y sqrt(x);return y * y x; }// 判断是否能表示为 4^k*(8m7) bool checkAnswer4(int x) {while (x % 4 0) {x / 4;}return x % 8 7; }int numSquares(int n) {if (isPerfect…

JAVA零基础小白自学日志——第二十三天

文章目录 1.访问范围权限关键字2.private&#xff08;私有&#xff09;3.default&#xff08;默认&#xff09;4.protected&#xff08;受保护的&#xff09;5.public&#xff08;公共&#xff09; 今日摘要&#xff1a;再谈访问范围 1.访问范围权限关键字 项目同一个类同一个…

Linux环境安装KubeSphere容器云平台并实现远程访问Web UI 界面

文章目录 前言1. 部署KubeSphere2. 本地测试访问3. Linux 安装Cpolar4. 配置KubeSphere公网访问地址5. 公网远程访问KubeSphere6. 固定KubeSphere公网地址 前言 本文主要介绍如何在Linux CentOS搭建KubeSphere并结合Cpolar内网穿透工具&#xff0c;实现远程访问&#xff0c;根…