Java常見八股-(6.算法+實施篇)

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等平臺…