【4】阿里面试题整理

ops/2025/2/8 5:03:51/

[1]. 介绍一下数据库死锁

数据库死锁是指两个或多个事务,由于互相请求对方持有的资源而造成的互相等待的状态,导致它们都无法继续执行。

死锁会导致事务阻塞,系统性能下降甚至应用崩溃。

比如:事务T1持有资源R1并等待R2,事务T2持有R2并等待R1,这就形成了一个循环等待,导致死锁。

[2]. 手撕:快排

java">public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {int pivotIndex = partition(arr, low, high);quickSort(arr, low, pivotIndex - 1);quickSort(arr, pivotIndex + 1, high);}}// 分区函数,以最左边的元素为基准元素private static int partition(int[] arr, int low, int high) {int pivot = arr[low];  // 选择最左边的元素作为基准int i = low;    // i 指向小于基准的区域的末尾,初始指向最左边for (int j = low + 1; j <= high; j++) { // j从low+1 开始遍历if (arr[j] < pivot) {i++;swap(arr, i, j); // 将小于基准的元素交换到左侧}}swap(arr, low, i); // 将基准元素交换到正确的位置return i;           // 返回基准元素的索引}// 交换数组中两个元素private static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}

[3]. 手撕:二叉树的中序遍历

java">public class InorderTraversal {// 定义二叉树节点static class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int val) {this.val = val;this.left = null;this.right = null;}}// 中序遍历public static void inorderTraversal(TreeNode root) {if (root != null) {inorderTraversal(root.left);   // 遍历左子树System.out.print(root.val + " ");  // 访问根节点inorderTraversal(root.right);  // 遍历右子树}}
}

[4]. 手撕:最大子数组和

java">public class MaxSubarraySum {public static int maxSubArray(int[] nums) {// 判断输入数组是否为空或长度为0if (nums == null || nums.length == 0) {return 0; // 空数组或 null 返回0}// 记录全局最大子数组和int maxGlobalSum = nums[0];// 记录以当前元素结尾的最大子数组和int maxCurrentSum = nums[0];// 遍历数组,从第二个元素开始for (int i = 1; i < nums.length; i++) {// 更新以当前元素结尾的最大子数组和// 取当前元素值与当前元素加上以前一个元素结尾的最大子数组和中的较大值maxCurrentSum = Math.max(nums[i], maxCurrentSum + nums[i]);// 更新全局最大子数组和// 取全局最大子数组和与以当前元素结尾的最大子数组和中的较大值maxGlobalSum = Math.max(maxGlobalSum, maxCurrentSum);}// 返回全局最大子数组和return maxGlobalSum;}}

http://www.ppmy.cn/ops/156645.html

相关文章

有关Android Studio的安装与配置并实现helloworld(有jdk的安装与配置)(保姆级教程)

目录 一.下载与配置JDK &#xff08;一&#xff09;到JDK官网下载 &#xff08;二&#xff09;有关JDK版本的选择 1.进入页面以后。往下拉&#xff0c;根据你的电脑系统来进行对应的版本进行选择&#xff1a; 2.选择完对应的版本后&#xff0c;要下载之前你需要首先接收协议…

MySQL和Redis的区别

MySQL和Redis都是流行的数据存储解决方案&#xff0c;但它们在设计、用途和特性上有显著区别。理解这些区别有助于选择合适的数据库来满足不同的应用需求。本文将详细介绍MySQL和Redis的区别&#xff0c;包括它们的架构、使用场景、性能和其他关键特性。 一、基本概述 MySQL&…

Python(Pandas)数据分析学习

1.Pandas基本构成 引入Pandas import pandas as pd 1.Series 行 对应Excel中的一行数据&#xff0c;一维数据 定义Series # 第一个参数是具体数据 # 第二个参数的对应的索引下标 # 第三个参数的行名称 data pd.Series([1,2,3,4,5], index[a,b,c,d,e], namedata) print(d…

硬件电路基础

目录 1. 电学基础 1.1 原子 1.2 电压 1.3 电流 1.电流方向&#xff1a; 正极->负极,正电荷定向移动方向为电流方向&#xff0c;与电子定向移动方向相反。 2.电荷&#xff08;这里表示负电荷&#xff09;运动方向&#xff1a; 与电流方向相反 1.4 测电压的时候 2. 地线…

docker 实战练习1

安装部署docker 和docker-compose #卸载旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine#安装依赖包 yum install -y yum-utils device-mapper-persistent-da…

R语言速通

1.R语言和python语言差不多&#xff0c;例如print&#xff08;&#xff09;和注释方式等&#xff0c;但是有一些细节需要注意 2.数据类型 1&#xff09;按对象类型来分是以下 6 种&#xff08;后面会详细介绍这几种类型&#xff09;&#xff1a; 向量列表矩阵数组因子数据框…

IM 即时通讯系统-45-merua0oo0 IM 分布式聊天系统

IM 开源系列 IM 即时通讯系统-41-开源 野火IM 专注于即时通讯实时音视频技术&#xff0c;提供优质可控的IMRTC能力 IM 即时通讯系统-42-基于netty实现的IM服务端,提供客户端jar包,可集成自己的登录系统 IM 即时通讯系统-43-简单的仿QQ聊天安卓APP IM 即时通讯系统-44-仿QQ即…

Linux 常用命令与实战教程

Linux 常用命令与实战教程 引言 Linux 是一个强大的开源操作系统&#xff0c;广泛应用于服务器、嵌入式系统、个人计算机等多个领域。其灵活性、稳定性和安全性使其成为开发人员和运维工程师的首选操作系统之一。对于开发者而言&#xff0c;熟练掌握 Linux 命令行不仅能提高工…