Java常见八股-(1.Java基础篇)

Java常见八股-(2.Java高级篇)

Java常见八股-(3.MySQL篇)

Java常见八股-(4.前端篇)

Java常见八股-(5.框架篇)

目录

一、算法与数据结构

1. 算法

1.1你知道哪些算法,说下你了解的排序算法

1.2谈一下递归

1.3栈和队列的区别

1.4二叉排序树了解吗

1.5在堆中查找一个数字用什么方法可以快速查到

1.6递归和迭代的区别

2. 数据结构

2.1什么是堆和栈,说一下堆栈的区别?

2.2用过什么树结构

2.3 B树,B+树哪个用的比较多

二、实施

1. Linux

1.1谈一下对Linux的了解

1.2 Linux如何查看文件内容

1.3 Linux如何删除文件内容

1.4 Linux切换目录命令

1.5 Linux创建文件命令

1.6 linux中搜索文件命令

1.7 Linux的部署

1.8 linux 中 vim

1.9 Linux文件分页查看指令


一、算法与数据结构

1. 算法

1.1你知道哪些算法说下你了解的排序算法

1、冒泡排序(Bubble Sort)

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

2、选择排序(Selection Sort)

选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

3、插入排序(Insertion Sort)

插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

4、希尔排序(Shell Sort)

1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。

5、归并排序(Merge Sort)

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。

6、快速排序(Quick Sort)

快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

7、堆排序(Heap Sort)

堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

8、计数排序(Counting Sort)

计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。

9、桶排序(Bucket Sort)

桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排)。

10、基数排序(Radix Sort)

基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。

1.2谈一下递归

(1) 递归就是在过程或函数里调用自身。

(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

(3) 递归算法解题通常显得很简洁,但运行效率较低。所以一般不提倡用递归算法设计程序。

(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

1.3栈和队列的区别

栈(Stack)和队列(Queue)是两种常见的线性数据结构.

主要区别:

操作原则:栈遵循后进先出(LIFO),而队列遵循先进先出(FIFO)。

操作位置:栈的操作只在栈顶进行,而队列的插入操作在队尾进行,删除操作在队头进行。

应用场景:栈常用于处理需要反向处理的数据运算,如递归调用和表达式求值;队列则更多用于消息传递和任务调度等场景。

1.4二叉排序树了解吗

‌二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree)或二叉搜索树,是一种数据结构,主要用于存储数据并支持高效的查找、插入和删除操作‌‌。

二叉排序树是一种特殊的二叉树,满足以下性质:

  1. ‌空树‌:若左子树不空,则左子树上所有结点的值均小于根结点的值。
  2. ‌右子树‌:若右子树不空,则右子树上所有结点的值均大于根结点的值。
  3. ‌递归性质‌:左、右子树也分别为二叉排序树‌

1.5在堆中查找一个数字用什么方法可以快速查到

堆排序

1.6递归和迭代的区别

定义和结构

  • 递归‌:递归是一种通过函数自己调用自己的编程技巧。它通常将一个大问题分解为更小的子问题,通过不断调用自身来解决。递归算法包括递归定义和基本情况,递归函数会反复调用自身,每次处理一个子问题,直到达到基本情况为止。‌
  • 迭代‌:迭代是通过循环结构重复执行某段代码,每次迭代使用上一次的结果作为下一次的初始值。迭代不需要函数调用栈空间,因此通常比递归更高效。‌

时间复杂度

  • 递归‌:递归的时间复杂度通常较高,因为每次函数调用都会增加栈空间的开销。对于一些递归算法,随着问题规模的增加,递归调用的次数可能会呈指数增长,导致时间复杂度急剧上升。‌
  • 迭代‌:迭代的时间复杂度通常较低,因为它不需要额外的函数调用开销。迭代通过循环结构逐步逼近目标,适合处理大规模数据问题。‌

适用场景

  • 递归‌:递归适合解决那些可以分解成相似子问题的问题,如树形结构的遍历、计算斐波那契数列等。递归的优点在于代码简洁,但缺点是可能导致栈溢出,特别是在深度递归的情况下。‌
  • 迭代‌:迭代适合处理需要逐步逼近目标的问题,如计算数组中所有数字的和。迭代的优点是效率高、稳定,缺点是代码可能较冗长,不易理解。‌

优缺点总结

  • 递归‌:
    • 优点‌:代码简洁、易于理解
    • 缺点‌:效率较低,可能导致栈溢出,特别是在深度递归的情况下。‌3
  • 迭代‌:
    • 优点‌:效率高、稳定,适合处理大规模数据问题。
    • 缺点‌:代码较长,不易理解

2. 数据结构

2.1什么是堆和栈,说一下堆栈的区别?

功能方面:堆是用来存放对象的,栈是用来执行程序的。

共享性:堆是线程共享的,栈是线程私有的。

空间大小:堆大小远远大于栈

2.2用过什么树结构

在编程和计算机科学中,常用的树结构包括二叉树、二叉搜索树、AVL树、红黑树、B-tree等‌。这些树结构各有其特点和适用场景。

二叉树

二叉树是最基础的树结构之一,每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树有多种类型,包括完全二叉树、满二叉树和平衡二叉树等。二叉树在各种算法中都有广泛应用,例如在堆排序和优先队列中‌12。

二叉搜索树

二叉搜索树是一种特殊的二叉树,其每个节点的左子树上的所有节点值都小于该节点的值,而右子树上的所有节点值都大于该节点的值。这种结构使得在二叉搜索树中查找、插入和删除节点变得非常高效。AVL树和红黑树都是自平衡的二叉搜索树,它们通过保持树的平衡来优化查找、插入和删除操作的效率‌13。

AVL树

AVL树是一种自平衡的二叉搜索树,其每个节点的左子树和右子树的高度最多相差1。为了保持平衡,当插入或删除节点时,可能需要通过旋转节点来重新平衡树。AVL树的查找、插入和删除操作的平均时间复杂度为O(log n)‌13。

红黑树

红黑树也是一种自平衡的二叉搜索树,每个节点都有颜色属性,可以是红色或黑色。红黑树的平衡特性保证了其高效的查找、插入和删除操作。红黑树的性质包括根节点是黑色、每个叶节点(NIL或空节点)是黑色、红色节点的子节点必须是黑色等‌13。

B-tree

B-tree是一种多路平衡搜索树,适用于磁盘或其他直接访问辅助设备。B-tree能够保持数据有序,并且广泛应用于数据库和文件系统中。

2.3 B树,B+树哪个用的比较多

B+树

‌B+树是B树的变体,是一种自平衡的树数据结构,在数据库系统中使用得更为广泛B+树中所有实际数据都存储在叶子节点中,而非叶子节点仅用于索引。这种设计使得B+树在处理大量数据时能够显著提高查询效率,尤其是在范围查询方面表现优异。B+树的叶子节点之间通过链表连接,便于区间查找和遍历。因此,B+树广泛应用于关系型数据库的索引

二、实施

1. Linux

1.1谈一下对Linux的了解

一种支持多用户,多任务,多平台,内核免费的操作系统。

1.2 Linux如何查看文件内容

文件内容不足一页可以用cat

两页以上建议使用more或less

查看前几行用head,查看后几行用tail

从最后一行开始查看用tac

1.3 Linux如何删除文件内容

利用vi file.txt打开文件进行编辑

按下"i"键进入编辑模式,然后选择要删除的内容并按下"x"键删除

完成后按下"Esc"键退出编辑模式,再输入":wq"保存并退出

1.4 Linux切换目录命令

cd

1.5 Linux创建文件命令

touch

1.6 linux中搜索文件命令

which搜索可执行文件

whereis搜索可执行文件,源文件,帮助文档

locate和find可以搜索各种类型文件

1.7 Linux的部署

安装Linux系统,安装时需要指定超级管理员和普通用户的账户密码

配置Linux网络

根据业务需要配置防火墙

配置Linux图形化客户端如finalshell

配置Linux图形化文件传输工具winscp

1.8 linux 中 vim

vi作为Linux系统默认的编辑器,vim是vi的升级版,两者最大区别就是编辑一个文本时vi不会显示颜色,而vim会显示颜色。显示颜色更便于用户进行编辑,但其他功能没有太大的区别。

vim有三种工作模式

(一)命令模式:控制光标移动,可对文本进行复制、粘贴、删除等工作。

(二)编辑模式(输入模式):正常的文本录入。

(三)末行模式:保存或退出文档,以及设置编辑环境。

1.9 Linux文件分页查看指令

more或less

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

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

相关文章

阿里云部署的SMTP服务器安全攻防实录:深度解析攻击、防护与加固

阿里云部署的SMTP服务器安全攻防实录:深度解析攻击、防护与加固 一次针对云上SMTP服务的持续攻击事件,揭示了邮件中继服务面临的多重安全挑战。本文将深入剖析攻击手法、防护策略与系统性加固方案。 某企业在阿里云上部署的Postfix SMTP服务器近期遭遇…

HTTP与HTTPS深度解析:从明文传输到安全通信的演进之路

引言 在互联网的早期,HTTP(超文本传输协议)作为Web通信的基石,凭借简单高效的特性推动了万维网的爆发式增长。但随着互联网从“信息共享”向“价值交互”演进,HTTP的明文传输特性逐渐暴露致命缺陷——用户的每一次点击…

渗透实战:绕过沙箱机制的反射型XSS

Lab 24&#xff1a;利用 xss 绕过 csrf 防御 依然是留言板的问题可以执行<h1>标签 进入修改邮箱的界面&#xff0c;修改抓包 这里构造修改邮箱的代码 <script> var req new XMLHttpRequest(); req.onload handleResponse; req.open(get,/my-account,true); req…

K8S篇之利用deployment实现滚动平滑升级

一、更新策略 在 Kubernetes (K8s) 中,滚动平滑升级(Rolling Update)是一种无缝更新部署的方式,允许你在不中断服务的情况下逐步更新应用程序。这是 Kubernetes 默认的 Deployment 更新策略,它会按照指定的步幅逐步替换 Pods,确保在新版本的应用程序没有完全替换旧版本的…

【Dify 案例】【MCP实战】【一】【前置配置】

MCP(Model Context Protocol,模型上下文协议) ,2024年11月底,由Anthropic 推出的一种开放标准。旨在为大语言模型(LLM)提供统一的、标准化方式与外部数据源和工具之间进行通信。 MCP 作为一种标准化协议,极大地简化了大语言模型与外部世界的交互方式,使开发者能够以统…

2025高考志愿填报张雪峰资料合集

2025高考志愿填报课程&#xff0c;张雪峰专业指导&#xff01;包含61节课&#xff0c;93个专业详解&#xff0c;总计1500分钟视频。 独家各省资料包&#xff01;新旧高考政策全覆盖&#xff0c;适合高三家长和考生。内容整理自互联网&#xff0c;无偿分享&#xff0c;如有侵权&…

Nginx+Tomcat负载均衡群集

一.案例:部署Tomcat 1.案例分析 1.1案例概述 京北点指科技有限公司发布V3版移联建站管理系统&#xff0c;该项目为Java 语言开发的Web 站点。目前&#xff0c;IBM 的 WebSphere 及 0racle 的 WebLogic 占据了市面上 Java 语言 Web 站点的大部分份额。这两种软件以其无与伦比…

华为云Flexus+DeepSeek征文|基于华为云一键部署dify平台构建合同审核助手应用实践

目录 前言 1 华为云一键部署Dify平台 1.1 华为云Dify平台介绍 1.2 部署过程介绍 1.3 登录Dify平台 2 接入华为云 ModelArts Studio 的 DeepSeek 大模型 2.1 获取调用模型服务信息 2.2 在 Dify 中配置模型 3 构建合同审核助手应用 3.1 简要介绍合同审核助手 3.2 开始…

三种经典算法无人机三维路径规划对比(SMA、HHO、GWO三种算法),Matlab代码实现

代码功能 该MATLAB代码用于对比三种元启发式优化算法&#xff08;SMA、HHO、GWO三种算法&#xff0c; SMA黏菌算法、HHO哈里斯鹰优化算法、GWO灰狼优化算法&#xff09; 在特定优化问题上的性能&#xff0c;运行环境MATLABR2020b或更高 &#xff1a; 初始化问题模型&#xff…

设计模式精讲 Day 8:组合模式(Composite Pattern)

【设计模式精讲 Day 8】组合模式&#xff08;Composite Pattern&#xff09; 开篇 在“设计模式精讲”系列的第8天&#xff0c;我们将深入讲解组合模式&#xff08;Composite Pattern&#xff09;。组合模式是一种结构型设计模式&#xff0c;它允许将对象组合成树形结构以表示…

【Dify学习笔记】:RagFlow接入Dify基础教程

RagFlow接入Dify基础教程 如果RagFlow还没部署&#xff0c;可参考我另一篇本地部署文章&#xff1a;【Dify学习笔记】&#xff1a;本地部署RagFlow适配Dify 一、RagFlow 1. 配置模型 点击&#xff1a;头像 > Model providers 添加模型供应商、设置默认模型Set default …

Apache ECharts-02.入门案例

一.入门案例 官网下载&#xff1a;下载 - Apache ECharts&#xff0c;下载echarts.js文件&#xff0c;下载好后在其同一个文件夹下创建html文件即可。 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>ECharts</title…

社群经济视阈下开源AI智能名片链动2+1模式与S2B2C商城小程序在私域电商中的融合应用研究

摘要&#xff1a;在数字经济与社交网络深度融合的背景下&#xff0c;付费社群凭借精准用户筛选、高价值成员聚合及强信任关系链等优势&#xff0c;成为私域电商发展的核心载体。本文基于社群经济理论&#xff0c;结合“开源AI智能名片链动21模式S2B2C商城小程序”的技术与商业逻…

【Tools】Mac brew工具

Homebrew&#xff08;简称 brew&#xff09;是 macOS&#xff08;也支持 Linux&#xff09;上的一款 包管理工具&#xff0c;它的作用类似于&#xff1a; Ubuntu 下的 aptCentOS 下的 yumArch Linux 下的 pacman 一句话概括&#xff1a; brew 是用来在 macOS 上安装、管理软件…

IEEE RAL 双臂机器人三连抓估计物体状态 无需特制夹爪或视觉相机 - 大阪大学万伟伟老师团队

IEEE RA-L | 万伟伟老师团队提出双臂机器人规划控制方法有效降低被抓物姿态不确定性 日本大阪大学万伟伟老师团队针对双臂机器人开发了一种重复抓取规划和阻抗控制的方法&#xff0c;该方法通过两个机械臂依次寻找抓取位置和物体姿态&#xff0c;并通过三个正交抓取动作&#x…

AtomicInteger 和 volatile Integer对比

AtomicInteger 和 volatile Integer 虽然都与线程安全有关&#xff0c;但本质完全不同。它们的主要区别体现在原子性保证和功能上&#xff1a; &#x1f50d; 核心区别对比表 特性volatile IntegerAtomicInteger原子性❌ 不保证复合操作原子性✅ 保证所有操作的原子性自增操作…

一生一芯 PA2 RTFSC

从src/isa/riscv32/inst.c出发。 向上搜索&#xff0c;理解宏定义的含义。 R(i) #define R(i) gpr(i) R(i)&#xff1a;访问第i号通用寄存器 会被替换为&#xff1a; #define gpr(idx) (cpu.gpr[check_reg_idx(idx)]) 分为两个部分&#xff1a; cpu.gprcheck_reg_idx c…

深度学习——手写数字识别

深度学习——手写数字识别 学习深度学习的朋友应该对MNIST数据集不陌生吧&#xff0c;相信很多人在刚开始学习深度学习的时候都会用到MNIST数据集进行书写数字识别。本篇文章参考鱼书创建一个深度网络来进行书写数字识别的任务。 如上图所示&#xff0c;这里使用的卷积层全都是…

HashMap算法高级应用实战:频率类子数组问题的5种破解模式

本文将深入剖析5种基于HashMap的高级模式&#xff0c;通过原理详解、多语言实现、性能对比和工业级应用&#xff0c;助您彻底掌握频率类子数组问题。 1. 深入解析&#xff1a;频率类子数组问题 1.1 问题定义与分类 频率类子数组问题是指需要统计或查找满足特定元素频率条件的…

【精选】计算机毕业设计HTML5智能宠物寻找与领养系统 跨平台宠物匹配 地图定位找宠 领养申请审核系统源码+论文+PPT+讲解

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…