泡泡中文

最新网址:www.paowxw.com
字:
关灯护眼
泡泡中文 > 蓝星文娱:从微末崛起的娱乐大亨 > 第十七章(算法与数据结构篇)2024Java求职面试工作编程实录

第十七章(算法与数据结构篇)2024Java求职面试工作编程实录

public static void quickSort(int[] arr, int low, int high){

if (low < high){

// pi是分区索引,arr[p]现在已经到位

int pi = partition(arr, low, high);

//分别对基准值两边进行递归排序

quickSort(arr, low, pi - 1);

quickSort(arr, pi + 1, high);

}

}

//该函数将数组分区,并返回基准值的索引

public statit partition(int[] arr, int low, int high){

int pivot = arr[high];//选择最右边的元素作为基准值

int i =(low - 1);//指向最小元素的指针

for (int j = low; j <= high - 1; j++){

//如果当前元素小于或等于基准值

if (arr[j]<= pivot){

i++;

//交换 arr[i]和 arr[j]

int temp = arr[i];

arr[i]= arr[j];

arr[j]= temp;

}

}

//交换 arr[i+1]和 arr[high](或基准值)

int temp = arr[i + 1];

arr[i + 1]= arr[high];

arr[high]= temp;

return i + 1;

}

public statiain(String[] args){

int[] arr ={10, 7, 8, 9, 1, 5};

int n = arr.length;

quickSort(arr, 0, n - 1);

System.out.println(“Sorted array:“);

for (int i = 0; i < n;++i){

System.out.print(arr[i]+““);

}

}

}

总结:

上面这两个示例,分别展示了如何在Java中,去实现冒泡排序和快速排序。

冒泡排序,是一种简单的排序算法,但是效率相对较低,特别是对于大规模的数据集。

而快速排序,则是一种效率较高的排序算法,通过分而治之的思想,在平均情况下可以实现O(n log n)的时间复杂度。

4、描述一下数组、链表、栈、队列、哈希表、树,这六者的数据结构及其操作?

一、数组

数组是最简单、最常用的数据结构之一。

它使用连续的存储单元,来存储相同类型的数据元素。

通过索引(通常是整数)来访问数组中的特定元素。

数组的主要操作有3个,即访问、插入、删除。

1)访问

通过索引直接访问数组中的元素。

2)插入

在数组的特定位置插入新元素,可能需要移动其他元素。

3)删除:

从数组的特定位置删除元素,同样可能需要移动其他元素。

二、链表

链表是一种物理存储单元上,非连续的线性数据结构。

它由一系列节点组成,每个节点,都包含数据和指向下一个节点的指针。

链表的主要操作有3个,即插入、删除、遍历。

1)插入

在链表的指定位置,插入新节点。

2)删除

删除链表中的指定节点。

3)遍历

从头节点开始,按顺序访问链表中的每个节点。

链表分为单向链表、双向链表和循环链表等多种类型。

三、栈

栈是一种后进先出(LIFO)的数据结构。

它只允许在一端(称为栈顶)进行插入和删除操作。

栈的主要操作有4个,即入栈(push)、出栈(pop)、查看栈顶(peek)、判空(isEmpty)。

1)入栈(push)

将新元素压入栈顶。

2)出栈(pop)

从栈顶弹出元素。

3)查看栈顶(peek)

返回栈顶元素但不删除它。

4)判空(isEmpty)

判断栈是否为空。

四、队列

队列(Queue)是一种特殊的线性数据结构…

它遵循FIFO(First In First Out,先进先出)的原则。

队列只允许,在一端进行插入操作(队尾),在另一端进行删除操作(队头)。

队列的基本操作有4个,即enqueue(入队)、dequeue(出队)、front(查看队头)、isEmpty(判空)。

1)enqueue(入队)

在队尾插入新元素。

2)dequeue(出队)

从队头删除元素。

3)front(查看队头)

返回队头元素但不删除它。

4)isEmpty(判空)

检查队列是否为空。

队列,在操作系统的任务调度,网络的数据包传输,广度优先搜索等场景中,有着广泛的应用。

五、哈希表

哈希表,是一种通过哈希函数,将键映射到值的数据结构。

它允许,以常数平均时间复杂度,去进行插入、删除和查找操作。

哈希表的主要操作有3个,即插入、删除、查找。

1)插入

根据键计算哈希值,将键值对存储在哈希表中。

2)删除

根据键找到对应的哈希值,从哈希表中删除键值对。

3)查找

根据键计算哈希值,在哈希表中查找对应的值。

哈希表,通过合理的哈希函数设计,以及冲突解决策略(如链地址法、开放地址法等)…

来确保高效的操作性能。

六、树

树,是一种非线性数据结构…

它是由节点和边组成,每个节点可以有多个子节点。

树的主要操作有4个,即遍历、插入、删除、查找。

1)遍历

按照某种规则(如前序遍历、中序遍历、后序遍历等)访问树的所有节点。

2)插入

在树的指定位置插入新节点。

3)删除

删除树中的指定节点及其子树。

4)查找

在树中查找具有特定值的节点。

树,有多种特殊形式,如二叉树、平衡树等等。

二叉树,每个节点最多有两个子节点。

平衡树,如AVL树、红黑树等,用于保持树的平衡性,以提高查找效率。

总结:

以上六种数据结构,它们各有特点,适用于不同的场景和需求。

在实际应用中,我们需要根据具体问题的性质和要求,来选择最合适的数据结构。

……

以上只是简单列举了一些高频大厂面试题。

此外,大厂面试还可能包括系统设计与架构方面的问题。

以及针对候选人所申请的具体岗位(如后端开发、大数据开发、分布式系统开发等)的专业问题。

……

以上,就是今天的分享啦!

希望,对你的求职面试,编程工作有那么一点点、一丢丢、一戳戳地帮助哈~

喜欢本文的…

评论、收藏、关注一键三连可好?

推荐票、月票、打赏,好伐?!

『加入书签,方便阅读』
热门推荐
模拟:身为无上巨头,托起人族半岛:我真是偶像星辰求生风暴之身1999华娱教父快去找你白月光吧半岛:唯一星热芭:你们都是来抢我老公的都市之罗小黑传奇涤凡尘
网站地图