20230908java面经整理

1.cpp和java的区别

cpp可以多重继承,对表java中的实现多个接口
cpp支持运算符重载、goto、默认函数参数
cpp自动强转,导致不安全;java必须显式强转
java提供垃圾回收机制,自动管理内存分配,当gc要释放无用对象时调用finalize方法
java提供反射机制,允许程序运行时得到类或对象的相关属性和操作
java为解释性语言,编译成字节码后由jvm之星;cpp为编译性语言,得到二进制代码
cpp快,java跨平台
java没有指针,更加安全

2.什么是数据库事务?怎么使用?

事务时一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,执行结果使得数据库从一个一致性状态到另一个一致性状态,要么都执行,要么都不执行。

默认就是自动开启事物,一个sql就是一个事务;

或者手动开启:
start transaction 开启事物
commit 提交
rollback 回滚

或者设置自动提交参数autocommit=1,自动提交

3.线程进程协程

进程是程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位
线程是程序执行流的最小单位,PCB包括线程ID,当前指令指针PC,寄存器集合和堆栈组成
线程自己不拥有系统资源,但共享进程的全部资源
线程可共享堆不可共享栈
协程是更轻量级的一种函数,一个线程中的多个协程是串行的,所以go是多核编程
进程切换是从用户态到内核态再到用户态,效率低下
线程切换是os根据自己策略决定,切换内容保存在内核栈中
协程切换是程序决定,只有用户态,效率高

4.进程通信和线程通信

进程:管道(先进先出)、消息队列、共享内存(解决消息拷贝)、信号量、信号、socket(stream、dgram)
线程:互斥锁、读写锁、条件变量condition、信号量semaphore

5.堆栈的区别

1.栈是系统自动分配,堆要人工申请和释放
2.栈远小于堆
3.堆向上生长,内存地址由低到高;栈向下生长,内存地址由高到低
4.堆动态分配,栈可以动态或者静态
5.栈有专门的寄存器,更快;堆申请容易有内存碎片,效率低
6.栈存放函数返回地址、相关参数、局部变量和寄存器;堆内容由开发人员决定

6.多线程竞争

数据竞争:多个数据同时读写共享数据
死锁:互相等待对方释放资源
活锁:不断尝试,尝试失败尝试失败
优先级反转:低优先级的任务阻塞了一个高优先级的任务
解决方法:互斥锁、信号量、条件变量、读写锁、原子操作、线程安全的数据结构、资源分配和释放策略

7.乐观锁和悲观锁,哪里调用?

悲观锁:共享资源每次只给一个线程使用,其他线程阻塞,用完再转让(synchronized,reentrantlock)
乐观锁:认为共享资源每次访问都不会出现问题,无需加锁也无需等待,提交时候校验是否被修改即可(版本号机制、cas算法,aba问题用版本号或者时间戳解决)

8.线程间数据共享volatile

1.可见性:一个线程改了其他线程会立即看到
2.禁止指令重排:确保写操作不会重排到后面的读操作之前
3.不保证原子性:不适用于++这些复合操作,应该用锁

9.归并排序

def merge_sort(arr):if len(arr) > 1:mid = len(arr) // 2  # 找到中间位置left_half = arr[:mid]  # 分割成左右两个子序列right_half = arr[mid:]merge_sort(left_half)  # 递归对左子序列进行排序merge_sort(right_half)  # 递归对右子序列进行排序# 合并左右两个有序子序列i = j = k = 0while i < len(left_half) and j < len(right_half):if left_half[i] < right_half[j]:arr[k] = left_half[i]i += 1else:arr[k] = right_half[j]j += 1k += 1# 处理剩余元素while i < len(left_half):arr[k] = left_half[i]i += 1k += 1while j < len(right_half):arr[k] = right_half[j]j += 1k += 1# 示例用法
arr = [12, 11, 13, 5, 6, 7]
merge_sort(arr)
print("排序后的数组:", arr)

9.nio是什么

非阻塞的处理IO的方式(new io),不需要一直阻塞等待数据的到来,使得处理并发时高效
1.双向的通道为基本数据传输单元,流单线
2.缓冲区为nio用来读取和写入数据的容器,在通道和应用程序之间传输数据,字节or字符
3.选择器,监视多个通道的事件,例如就绪和可读,通过selector可以实现但线程管理多通道
4.非阻塞,当通道无数据不会阻塞线程,可以执行其他任务
5.同步异步:同步指线程请求完成前被阻塞;异步指完成前继续执行其他任务

10.integer128

byte8位,short16位,int32为,long64位,128位的话需要用BigInteger

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

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

相关文章

算法训练第五十八天

总结&#xff1a;今日事单调栈的开端&#xff0c;还是挺巧妙的。 496. 下一个更大元素 I - 力扣&#xff08;LeetCode&#xff09; 代码&#xff1a; class Solution { public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& …

现代C++中的从头开始深度学习:【6/8】成本函数

现代C中的从头开始深度学习&#xff1a;成本函数 一、说明 在机器学习中&#xff0c;我们通常将问题建模为函数。因此&#xff0c;我们的大部分工作都包括寻找使用已知模型近似函数的方法。在这种情况下&#xff0c;成本函数起着核心作用。 这个故事是我们之前关于卷积的讨论的…

OC和Swift混编,导入头文件‘xxx-Swift.h‘ file not found

在OC的项目里加入Swift代码&#xff0c;创建完桥接文件后&#xff0c;需要倒入Swift头文件&#xff0c;头文件的格式为“项目名-Swift.h”。 如下图&#xff0c;我在Xcode上看到我的项目名为YichangPark&#xff0c;导入 #import "YiChangPark-Swift.h" 之后提示 “Y…

喜报 | 再度中标南网项目!AR 开启电力远程运维新智慧

近日&#xff0c;中国南方电网官网发布《2023年南方电网数字平台科技 (广东)有限公司物资品控远程协助软件采购项目中标公告》&#xff0c;ALVA Systems 凭借 ALVA Rainbow 创新应用竞得此标。 随着相关技术的逐步成熟&#xff0c;基础问题远程化解决已经在工业领域广泛应用。 …

NLP(1)--NLP基础与自注意力机制

目录 一、词向量 1、概述 2、向量表示 二、词向量离散表示 1、one-hot 2、Bag of words 3、TF-IDF表示 4、Bi-gram和N-gram 三、词向量分布式表示 1、Skip-Gram表示 2、CBOW表示 四、RNN 五、Seq2Seq 六、自注意力机制 1、注意力机制和自注意力机制 2、单个输出…

9.4黄金行情是否反转?今日多空如何布局?

近期有哪些消息面影响黄金走势&#xff1f;今日黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周一(9月4日)亚市盘中&#xff0c;现货黄金震荡走高&#xff0c;延续上周涨势&#xff0c;一度刷新日内高点至1946.16美元/盎司。周三&#xff0c;ISM将发布服务业P…

同旺科技USB to I2C 适配器烧写 Arduino 模块

所需设备&#xff1a; 内附链接 1、同旺科技USB to I2C 适配器 2、Arduino 模块 硬件连接&#xff1a; 用同旺科技USB to I2C 适配器连接芯片的TX、RX、GND; 打开Arduino IDE编辑工具&#xff0c; 点击“上传”按钮&#xff0c;完成程序的编译和烧录&#xff1b;

基于微信小程序的自习室系统设计与实现,可作为毕业设计

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 需求分析3.1用户需求分析3.1.1 学生用户3.1.3 管理员用户 4 数据库设计4.4.1 E…

【数据结构】树的基础入门

文章目录 什么是树树的常见术语树的表示树的应用 什么是树 相信大家刚学数据结构的时候最先接触的就是顺序表,栈,队列等线性结构. 而树则是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合 非线性 体现在它是由n个有限结点(可以是零个结点)组成一个具有层次关…

HarmonyOS/OpenHarmony(Stage模型)应用开发组合手势(二)并行识别

并行识别组合手势对应的GestureMode为Parallel。并行识别组合手势中注册的手势将同时进行识别&#xff0c;直到所有手势识别结束。并行识别手势组合中的手势进行识别时互不影响。 以在一个Column组件上绑定点击手势和双击手势组成的并行识别手势为例&#xff0c;由于单击手势和…

JS 防抖和节流的函数应用

1. 防抖函数 <body><button id"myButton">点老子</button> </body></html><script>function ois(fun, time) {let timeoutId;return (...a) > {clearTimeout(timeoutId)timeoutId setTimeout(() > {fun(...a)}, time)}}…

关于实现 Vue 动态数据显示,比如数字 0 或 1 怎么显示为 男 或 女等等的动态显示实现方法

具体 Vue 代码演示&#xff1a; test.vue 文件演示&#xff1a; <template> <!-- 方法一 --> <div>{{ test.data 0 ? 男 : 女}}</div><!-- 方法二 --> <div>{{ test.data 0 ? 男 : }}{{ test.data 1 ? 女 : }}{{ test.d…

Apinto 网关 V0.14 版本发布,6 大插件更新!

大家好&#xff01; 距离上次更新已经过去一段时间了&#xff0c;这段日子里我们一直在酝酿新的功能&#xff0c;本次的迭代将给大家带来 6 大插件的更新~一起来看看有哪些变化吧&#xff01; 新特性 1. 新增 额外参数v2 插件&#xff0c;支持对转发参数进行加密、拼接等操作…

【软件测试】单元测试、集成测试、系统测试有什么区别?

单元测试、集成测试、系统测试有什么区别 1、粒度不同 集成测试bai粒度居中&#xff0c;单元测试粒度最小&#xff0c;系统du测试粒度最大。 2、测试方式不同 集成测试一般由开发zhi小组采用白盒加黑盒的方式来测试&#xff0c;单元测试一般由开发小组采用白盒方式来测试&a…

qt之模态窗口

概念介绍 模态窗口&#xff1a;当一个窗口设置为模态窗口时&#xff0c;该窗口会阻塞用户对该窗口所属应用程序下其它部分进行操作。 非模态窗口&#xff1a;当一个窗口为非模态时&#xff0c;简单的理解就是可以不操作该窗口而去操作该应用程序下其它窗口对象&#xff0c;而…

Spring中添加打印请求头的拦截器

问题 因为最近这个项目没有调用链监控系统的支持&#xff0c;但是&#xff0c;本地PostMan调试的时候又需要请求头才能正常调试。 思路 喊ChatGPT实现一下能够打印所有请求头的拦截器&#xff0c;然后&#xff0c;集成到已有代码即可。 解决 RequestHeaderInterceptor.jav…

基于Python开发的玛丽大冒险小游戏(源码+可执行程序exe文件+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的玛丽冒险小游戏程序&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xf…

关于ChatGPT的个人的一些观点

问题 1 Q: 你认为ChatGPT是一款非常有用的工具吗&#xff1f; A: 我认为ChatGPT是一款非常有用的工具。它可以帮助人们解决各种问题&#xff0c;包括技术问题、心理问题、生活问题等等。同时&#xff0c;ChatGPT也可以成为人们分享想法和交流的平台&#xff0c;增强人与人之间…

chrome_elf.dll丢失怎么办?修复chrome_elf.dll文件的方法

Chrome是目前最受欢迎的网络浏览器之一&#xff0c;然而有时用户可能会遇到Chrome_elf.dll丢失的问题。该DLL文件是Chrome浏览器的一个重要组成部分&#xff0c;负责启动和管理程序的各种功能。当Chrome_elf.dll丢失时&#xff0c;用户可能无法正常启动Chrome或执行某些功能。本…

MySQL 特殊字符

文章目录 1.注释符2.字符串符3.反引号4.模式匹配通配符转义符 参考文献 1.注释符 SQL 注释是用来在 SQL 语句中添加对代码的解释说明。SQL 支持两种类型的注释符号。 单行注释&#xff1a;使用两个连续的减号&#xff08;–&#xff09;表示。减号后面的内容将被视为注释&…