Dec 08 2025
sevencoding -
十大經典排序算法
引言
所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。排序算法,就是如何使得記錄按照要求排列的方法。排序算法在很多領域得到相當地重視,尤其是在大量數據的處理方面。一個優秀的算法可以節省大量的資源。在各個領域中考慮到數據的各種限制和規範,要得到一個符合實際的優秀算法,得經過大量的推理和分析。
簡介
排序算法可以分為:
內部排序:數據記錄在內存中進行排序。
JAVA
,
後端
Dec 05 2025
sevencoding -
數據結構——樹
概述
樹就是一種類似現實生活中的樹的數據結構(倒置的樹)。任何一顆非空樹只有一個根節點。
樹的定義:樹是⼀種數據結構,它是由n(n≥1)個有限節點組成⼀個具有層次關係的集合。把它叫做“樹”是因為它看起來像⼀棵倒掛的樹,也就是説它是根朝上,⽽葉朝下的。
一棵樹具有以下特點:
每個節點有零個或多個⼦節點
沒有⽗節點的節點稱為根節點
每⼀個⾮根節點有且只有⼀個⽗節點
除了根節點外,每個⼦節點可
後端
Dec 05 2025
sevencoding -
數據結構——樹
概述
樹就是一種類似現實生活中的樹的數據結構(倒置的樹)。任何一顆非空樹只有一個根節點。
樹的定義:樹是⼀種數據結構,它是由n(n≥1)個有限節點組成⼀個具有層次關係的集合。把它叫做“樹”是因為它看起來像⼀棵倒掛的樹,也就是説它是根朝上,⽽葉朝下的。
一棵樹具有以下特點:
每個節點有零個或多個⼦節點
沒有⽗節點的節點稱為根節點
每⼀個⾮根節點有且只有⼀個⽗節點
除了根節點外,每個⼦節點可
JAVA
Dec 04 2025
sevencoding -
劍指offer-46、孩⼦們的遊戲(圓圈中最後剩下的數)
題目描述
有個遊戲是這樣的:⾸先,讓 n 個⼩朋友們圍成⼀個⼤圈,⼩朋友們的編號是0~n-1。然後,隨機指定⼀個數 m ,讓編號為0的⼩朋友開始報數。每次喊到 m-1 的那個⼩朋友要出列唱⾸歌,然後可以在禮品箱中任意的挑選禮物,並且不再回到圈中,從他的下⼀個⼩朋友開始,繼續 0... m-1報數....這樣下去....直到剩下最後⼀個⼩朋友,可以不⽤表演,並且拿到⽜客禮品,請你試着想下,哪個⼩朋友
後端
Dec 03 2025
sevencoding -
劍指offer-45、撲克牌順⼦
題⽬描述
撲克牌可以組成順⼦,⼤\⼩ 王可以看成任何數字,並且 A 看作 1 , J 為 11 , Q 為 12 , K 為 13 。 5張牌 【A,0,3,0,5】 就可以變成“ 1,2,3,4,5 ”(⼤⼩王分別看作 2 和 4 ),這樣就組成了順⼦。(可以認為⼤⼩王是 0 。)
輸⼊五張牌,如果牌能組成順⼦就輸出true,否則就輸出 false 。
示例1
輸⼊:[0,3,2,6,4]
後端
Dec 02 2025
sevencoding -
劍指offer-44、翻轉單詞序列
題⽬描述
給定⼀個句⼦,將句⼦中的單詞進⾏翻轉,注意,單詞內部的字符順序不改變,改變的是單詞與單詞之間的順序,⽐如“ I am a coder. ”,翻轉之後變成“ coder. a am I ”。
示例
注意:引號內部才是輸⼊的內容
輸⼊:"You are a cool boy."
輸出:"boy. cool a are You"
思路及解答
Java內置函數分割反轉
Java
後端
Nov 28 2025
sevencoding -
線性數據結構
線性表示最常⽤⽽且最為簡單的⼀種數據結構,⼀個線性表示 n 個數據元素的有限序列,有以下特點:
存在唯⼀的第⼀個的數據元素
存在唯⼀被稱為最後⼀個的數據元素
除了第⼀個以外,集合中每⼀個元素均有⼀個前驅
除了最後⼀個元素之外,集合中的每⼀個數據元素都有⼀個後繼元素
線性表包括下⾯⼏種:
數組:查詢 / 更新快,查找/刪除慢
鏈表
隊列
棧
數組
數組簡介
數組(Array)
後端
Nov 27 2025
sevencoding -
劍指offer-43、左旋轉字符串
題⽬描述
彙編語⾔中有⼀種移位指令叫做循環左移( ROL ),現在有個簡單的任務,就是⽤字符串模擬這個指令的運算結果。對於⼀個給定的字符序列 S ,請你把其循環左移 K 位後的序列輸出。例如,字符序列S=”abcXYZdef” ,要求輸出循環左移3位後的結果,即“ XYZdefabc ”。是不是很簡單?OK,搞定它!
思路及解答
這道題⽬的意思就是將前⾯ n 位,移動到後⾯,那麼我們可以直接從第
後端
Nov 26 2025
sevencoding -
劍指offer-42、和為S的兩個數字
題⽬描述
輸⼊⼀個遞增排序的數組和⼀個數字 S ,在數組中查找兩個數,使得他們的和正好是 S ,如果有多對數字的和等於 S ,輸出兩個數的乘積最⼩的。
返回值描述:對應每個測試案例,輸出兩個數,⼩的先輸出。
輸⼊:[1,2,4,7,11,15],15
返回值:[4,11]
思路及解答
暴⼒遍歷
直接遍歷每兩個數,查看其和是否符合等於 sum ,再計算其乘積,是否⼩於之前的乘積,如果⼩於,則更
後端
Nov 25 2025
sevencoding -
劍指offer-41、和為S的連續正數序列
題⽬描述
⼩明很喜歡數學,有⼀天他在做數學作業時,要求計算出 9~16 的和,他⻢上就寫出了正確答案是 100 。但是他並不滿⾜於此,他在想究竟有多少種連續的正數序列的和為 100 (⾄少包括兩個數)。沒多久,他就得到另⼀組連續正數和為 100 的序列: 18,19,20,21,22 。現在把問題交給你,你能不能也很快的找出所有和為S的連續正數序列? Good Luck!
返回值描述:輸出所有和為
後端
Nov 24 2025
sevencoding -
SpringCloud 常見面試題(三)
服務網關
在微服務架構中,網關的作用是什麼
在微服務架構中,網關(Gateway)具有以下作用:
統一入口:網關為所有的微服務提供一個唯一的入口點,從而簡化了客户端與服務的交互,同時保障了後台服務的安全性。
鑑權校驗:網關能夠識別每個進來的請求,並根據其權限進行校驗,阻止不符合要求的請求通過。
動態路由:根據需要,網關可以動態地將請求路由到不同的後端集羣中,實現服務的靈活調度。
降低耦合
後端
Nov 21 2025
sevencoding -
SpringCloud 常見面試題(二)
配置中心
什麼是配置中心?有哪些常見的配置中心?
配置中心是一個用於配置集中化管理目支持動態更新、分發配置文件的工具(服務)。
它實現了配置的統一管理和動態同新,當配置信息發生變化時,配置中心可以自動通知服務實例進行配置更新,這樣就可以實例無需重啓即可應用最新的配置,從一定程度上減少了系統訪問的空窗期,非常靈活方便
常見的配置中心:
Spring Cloud Config:Spring 提供的
後端
Nov 20 2025
sevencoding -
劍指offer-40、數組中只出現⼀次的數字
題⽬描述
⼀個整型數組⾥除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現⼀次的數字。
示例
輸入:[92,3,43,54,92,43,2,2,54,1]
輸出:3,1
思路解答
哈希表統計
使⽤ hashmap 存儲數字出現的次數, key 為出現的數字, value 為該數字出現的次數。遍歷⾥⾯所有的數字,如果 hashmap 中存在,那麼 value (次數)+1
後端
Nov 19 2025
sevencoding -
劍指offer-39、平衡⼆叉樹
題⽬描述
輸⼊⼀棵節點數為 n ⼆叉樹,判斷該⼆叉樹是否是平衡⼆叉樹。
在這⾥,我們只需要考慮其平衡性,不需要考慮其是不是排序⼆叉樹
平衡⼆叉樹( Balanced Binary Tree ),具有以下性質:它是⼀棵空樹或它的左右兩個⼦樹的⾼度差的絕對值不超過 1 ,並且左右兩個⼦樹都是⼀棵平衡⼆叉樹。
樣例解釋:
思路及解答
自頂向下遞歸(基礎解法)
平衡樹意味着我們需要對⽐任何在同⼀個根下的
後端
Nov 18 2025
sevencoding -
劍指offer-38、⼆叉樹的深度
題⽬描述
輸⼊⼀棵⼆叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的⼀條路徑,最⻓路徑的⻓度為樹的深度。
示例1
輸⼊:{1,2,3,4,5,#,6,#,#,7}
返回值:4
思路及解答
聲明:這⾥的輸⼊是⼀個數的根節點,也就是從根節點,我們就可以獲取到樹的所有節點,⽽類似數組的表達⽅式 {1,2,3,4,5,#,6,#,#,7} ,則是按照層次來放的。(⽐如
JAVA
,
後端
Nov 17 2025
sevencoding -
SpringCloud 常見面試題(一)
概念
什麼是微服務?你是怎麼理解微服務的?
微服務架構是一種架構模式或者説是一種架構風格,它提倡將單一應用程序劃分為一組小的服務,每個服務運行在其獨立的自己的進程中,服務之間相互協調、互相配合,為用户提供最終價值。服務之間採用輕量級的通信機制互相溝通(通常是基於HTTP的RESTful API),每個服務都圍繞着具體的業務進行構建,並且能夠被獨立的構建在生產環境、類生產環境等。另外,應避免統一的、
後端
Nov 14 2025
sevencoding -
微服務/分佈式 基礎面試題
算法/協議
説下paxos算法
Paxos 有點類似 2PC,3PC,但比這兩種算法更加完善。在很多多大廠都得到了工程實踐,比如阿里的 OceanBase 的 分佈式數據庫, Google 的 chubby 分佈式鎖 。
Paxos算法是什麼? Paxos 算法是 基於消息傳遞 且具有 高效容錯特性 的一致性算法,目前公認的解決 分佈式一致性問題 最有效的算法之一。
Paxos算法的工作流程?
在
後端
Nov 13 2025
sevencoding -
劍指offer-37、數字在升序數組中出現的次數
題目描述
統計⼀個數字在升序數組中出現的次數。
示例1
輸⼊:[1,2,3,3,3,3,4,5],3
返回值:4
思路及解答
線性遍歷
順序遍歷數組,遇到目標值就計數
public class Solution {
public int GetNumberOfK(int[] array, int k) {
if (array == null || array.
後端
Nov 10 2025
sevencoding -
MyBatis 常見面試題
Mybatis基礎
Mybatis是什麼?
MyBatis框架是一個開源的數據持久層框架。
它的內部封裝了通過JDBC訪問數據庫的操作,支持普通的SQL查詢、存儲過程和高級映射,幾乎消除了所有的JDBC代碼和參數的手工設置以及結果集的檢索。
MyBatis作為持久層框架,其主要思想是將程序中的大量SQL語句剝離出來,配置在配置文件當中,實現SQL的靈活配置。
這樣做的好處是將SQL與程序
後端
Nov 07 2025
sevencoding -
Redis支持事務嗎?瞭解Redis的持久化機制嗎?
Redis 支持事務嗎?與關係型數據庫事務的區別?
Redis 支持事務,但它的事務與 MSQL中的事務有所不同,MSOL中的事務主要支持 ACID 的特性,而 Redis中的事務主要保證的是多個命令執行的原子性,即所有的命令在一個原子操作中執行,不會被打斷。還有一個很重要的點,就是 MySQL 中的事務是支持回滾的,而 Redis 中的事務是不支持回滾的。
Redis事務是指將多條命令加入隊列,
nosql
Sep 12 2025
sevencoding -
Redis容量評估模型
計算Redis容量,並不只是僅僅計算key佔多少字節,value佔多少字節,因為Redis為了維護自身的數據結構,也會佔用部分內存,本文章簡單介紹每種數據類型(String、Hash、Set、ZSet、List)佔用內存量,供做Redis容量評估時使用。當然,大多數情況下,key和value就是主要佔用,能解大部分問題
在看這裏之前,可以先看一下底層 - 數據結構 這篇文章
jemalloc內存分
nosql
Sep 09 2025
sevencoding -
Redis是如何高效管理有限內存的?
過期刪除策略的深度剖析
Redis 可以對 key 設置過期時間的,為了防止過期的key長期佔用內存,需要相應的過期刪除策略將過期的key刪除
基礎操作
Redis設置過期時間
setex key1 5 value1:創建記錄的時候指定過期時間,設置key1在5秒後過期
其實Redis這是一種基於創建時間來判定是否過期的機制,也即常規上説的TTL策略,當設定了過期時間之後不管有沒有被使用都會
nosql
Sep 01 2025
sevencoding -
Redis有哪些部署方案?瞭解哨兵機制嗎?
Redis有哪些部署方案?
*單機版**:單機部署,單機redis能夠承載的 QPS 大概就在上萬到幾萬不等。這種部署方式很少使用。存在的問題:1、內存容量有限 2、處理能力有限 3、無法高可用。
主從模式:一主多從,主負責寫,並且將數據複製到其它的 slave 節點,從節點負責讀。所有的讀請求全部走從節點。這樣也可以很輕鬆實現水平擴容,支撐讀高併發。master 節點掛掉後,需要手動指定新
nosql