面試 總結(1)

面試總結

一、spring相關

1. Spring Security角色管理實現

在智慧種植蟲害識別系統中,我實現了農戶端和企業端的雙角色權限控制,這一部分是這樣實現的:
MySQL 表時設計區分農戶和企業的角色表與權限表。登錄時,JWT 令牌包含用戶 ID、角色表和權限表字段。通過配置 Spring Security 的 Security Config 攔截請求,獲取角色權限字段,判斷能否訪問當前接口

2. Spring MVC工作流程

  1. 用戶發送HTTP請求至前端控制器DispatcherServlet
  2. DispatcherServlet通過HandlerMapping(處理器映射器)查找對應的Controller(處理器)。
  3. Controller執行業務邏輯后,返回ModelAndView(包含數據模型和視圖信息)。
  4. DispatcherServlet通過視圖解析器對ModelAndView進行渲染,生成最終視圖并響應給客戶端。
    在這里插入圖片描述

3. AOP原理及代理類型

AOP(面向切面編程)是Spring的核心特性之一,用于解決代碼冗余問題,實現日志、事務等功能的復用:

  • 原理:通過代理模式,在不修改目標代碼的情況下,為目標方法添加額外功能(如前置通知、后置通知、異常通知等)。
  • 代理類型
    • JDK動態代理:基于接口生成代理類,要求目標類必須實現接口。
    • CGLIB動態代理:基于目標類生成代理子類,無需目標類實現接口,通過繼承實現代理。
  • 應用場景:日志記錄、事務管理、權限校驗等。

二、消息隊列(RabbitMQ)

1. 點餐系統中的異步處理

在點餐系統中,我用RabbitMQ實現了下單流程的異步化,提升系統吞吐量:

  • 下單流程
    1. 后端接收下單請求,先校驗菜品在售狀態和用戶余額。
    2. 校驗通過后,生成訂單號,將訂單狀態設為“待支付”并存入MySQL,同時向用戶發送“下單成功”消息。
    3. 生產者向RabbitMQ發送訂單信息,消費者監聽隊列,負責執行扣減菜品庫存、記錄下單日志等非核心流程。
    4. 用戶支付后,系統更新訂單狀態,觸發后續配送等流程。

2. 訂單超時未支付處理方案

(下單超過一定時間之后提醒用戶)
針對訂單超時未支付場景,使用RabbitMQ延遲隊列實現自動處理:

  • 實現邏輯
    1. 下單成功后,系統向RabbitMQ發送延遲消息(設置消息過期時間,如30分鐘)。
    2. 消息過期后,消費者監聽并接收消息,根據訂單號查詢數據庫中訂單狀態。
    3. 若訂單仍為“未支付”狀態,執行以下操作:向用戶發送“訂單超時”短信、回滾菜品庫存、更新訂單狀態為“已取消”。

3. 延遲隊列實現方式

延遲隊列可通過RabbitMQ的“死信隊列+消息存活時間(TTL)”實現:

  • 消息設置過期時間(TTL),并指定死信交換機和死信隊列。
  • 消息過期后,自動從原隊列轉發到死信隊列。
  • 消費者監聽死信隊列,處理超時任務(如訂單超時、優惠券過期等)。

三、數據結構與集合

HashMap核心機制

HashMap是Java中常用的鍵值對集合,其底層實現與擴容機制如下:

  • 默認初始化容量:16(必須是2的冪次方,便于哈希計算)。
  • 負載因子:0.75,當元素數量達到“容量×負載因子”時觸發擴容。
  • 擴容機制:擴容至原容量的2倍,重新計算所有元素的哈希值并遷移至新數組。
  • 結構轉換
    • 當鏈表長度>8且數組長度>64時,鏈表轉為紅黑樹(提升查詢效率)。
    • 當紅黑樹節點數<6時,轉回鏈表(減少紅黑樹維護成本)。

四、數據庫操作

SQL分組統計查詢思路

在這里插入圖片描述

以“按產品和月份統計銷售額并取前三”為例,查詢思路如下:

  1. 使用MONTH()DATE_FORMAT()函數從訂單時間中提取月份。
  2. 按“產品ID+月份”分組(GROUP BY)。
  3. SUM()函數計算每組的銷售額(SUM(金額字段))。
  4. 按銷售額降序排序(ORDER BY 銷售額 DESC)。
  5. 取前三條結果(LIMIT 3)。

示例SQL:

SELECT product_id, DATE_FORMAT(order_time, '%Y-%m') AS month, SUM(amount) AS sales 
FROM orders 
GROUP BY product_id, month 
ORDER BY sales DESC 
LIMIT 3;

補充:也可以用窗口函數實現

WITH MonthlySales AS (SELECT product_id,DATE_TRUNC('month', order_time) AS month,SUM(order_amount) AS total_salesFROM ordersGROUP BY product_id, DATE_TRUNC('month', order_time)
),
RankedSales AS (SELECT product_id,month,total_sales,ROW_NUMBER() OVER (PARTITION BY product_id ORDER BY total_sales DESC) AS sales_rankFROM MonthlySales
)
SELECT product_id,month,total_sales
FROM RankedSales
WHERE sales_rank <= 3
ORDER BY product_id, sales_rank; -- 可選:按產品、排名排序,結果更清晰

分組聚合 :先按產品 + 月份匯總銷售額,得到基礎統計;
窗口函數 :通過 ROW_NUMBER() 給每個產品的月份銷售額 “內部排序”,生成排名;
篩選結果 :保留排名前 3 的記錄,實現 “每個產品最高三個月份” 的需求。

SQL窗口函數:數據分析的"透視窗"

在SQL數據分析中,窗口函數是繞不開的關鍵工具。它像給數據開了"透視窗",能在保留明細的同時做分組計算,高效解決排名、累計、對比類需求。整理了核心知識點,速記備用👇

窗口函數:對數據集的"特定子集(窗口)"計算,保留原始行結構,不合并數據。

語法模板:

函數名(參數) OVER ([PARTITION BY 列名]  -- 分組窗口(可選)[ORDER BY 列名]      -- 窗口內排序(可選)[ROWS/RANGE 范圍]    -- 行范圍(進階,可選)
)

常用:

1. 排名函數

  • ROW_NUMBER():同分組內生成唯一序號(值相同也跳號)
  • RANK():值相同則排名相同,后續排名跳號(如 1,1,3…)
  • DENSE_RANK():值相同則排名相同,后續排名不跳號(如 1,1,2…)

2. 聚合函數

SUM()/AVG()/MAX()/MIN() 結合窗口,實現累計計算移動統計(如累計銷售額、近3月平均值)。

3. 偏移函數

  • LAG(列名, n):取當前行前n行數據(用于環比對比,如本月 vs 上月)
  • LEAD(列名, n):取當前行后n行數據(反向環比)

典型場景

  1. TopN 需求:按產品分組,取銷售額最高的3個月份
  2. 趨勢分析:計算用戶消費的累計金額、月均消費
  3. 波動對比:用 LAG/LEAD 分析銷售額環比變化

與 GROUP BY 區別

特性GROUP BY 聚合窗口函數
結果行數每組1行(合并數據)保留原始行數(明細+計算)
數據視角僅看分組匯總能透視分組內所有行數據

五、開發工具與流程

1. Git常用命令(提交與推送代碼)

  1. git pull:拉取遠程倉庫最新代碼,避免沖突。
  2. git add <文件名>git add .:將文件添加到暫存區。
  3. git commit -m "提交說明":將暫存區文件提交到本地倉庫。
  4. git push:將本地倉庫代碼推送到遠程倉庫。

2. Maven模塊依賴處理

當多模塊項目中模塊A被模塊B依賴,修改A后需處理依賴更新:

  1. 模塊A修改后,執行mvn install:將A打包并安裝到本地倉庫。
  2. 模塊B執行mvn clean(清理舊文件)→ mvn compile(編譯)→ mvn package(打包),確保依賴更新。
  3. 分布式環境中,可通過mvn deploy將A推送到私服,供其他模塊拉取。

六、Redis數據結構

Redis是高性能的鍵值對數據庫,支持多種數據結構,適用于不同場景:

  • String(字符串):存儲文本、數字等,如用戶token、計數器。
  • List(列表):有序可重復,支持頭插(lpush)、尾插(rpush),可用于消息隊列、任務隊列。
  • Hash(哈希):鍵值對集合,適用于存儲對象(如用戶信息:user:{id} -> {name: "xxx", age: 20})。
  • Set(集合):無序不可重復,支持交集、并集運算,適用于標簽、好友關系。
  • Sorted Set(有序集合):帶分數的Set,按分數排序,適用于排行榜、延時任務。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94647.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94647.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94647.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

串與數組:從字符處理到多維存儲的數據結構詳解

串&#xff08;字符串&#xff09;和數組是數據結構中的兩個重要分支&#xff0c;它們在程序設計中承擔著不同但互補的角色。串專門處理字符數據&#xff0c;而數組則提供了多維數據的存儲和訪問機制。本文將深入探討這兩種數據結構的理論基礎、實現方法和核心算法。 文章目錄1…

面試之JVM

類的生命周期 加載、鏈接、初始化&#xff08;是類的初始化&#xff09;、使用&#xff08;對象的初始化&#xff09;、卸載&#xff08;GC&#xff09; 鏈接&#xff1a;驗證、準備、解析 類加載 JDK9的升級點&#xff1a;擴展類加載器改成了平臺類加載器。 java中很多的包分…

webpack開發模式與生產模式(webpack --mode=development/production“, )

webpack開發模式與生產模式的區別webpack的development&#xff08;開發模式&#xff09;和production&#xff08;生產模式&#xff09;是兩種常見的構建環境配置&#xff0c;主要區別體現在構建速度、代碼優化和調試支持等方面。開發模式 (development)目標&#xff1a;注重開…

當自然語言遇上數據庫:Text2Sql.Net的MCP革命如何重新定義開發者與數據的交互方式

想象一下&#xff0c;在IDE中對AI助手說"幫我找出本月銷售額最高的前10個產品"&#xff0c;然后它不僅能理解你的意圖&#xff0c;還能直接生成并執行SQL查詢&#xff0c;返回準確結果——這不是科幻&#xff0c;而是Text2Sql.Net的MCP集成帶來的現實。 &#x1f3af…

2025流程圖模板和工具深度評測:AI如何提升繪圖效率80%?

引言&#xff1a;流程圖模板的價值革命 在數字化辦公的浪潮中&#xff0c;流程圖已從單純的"業務說明工具"進化為跨部門協作的"視覺語言"。據智研咨詢2025年報告顯示&#xff0c;規范使用流程圖模板可使團隊溝通效率提升40%&#xff0c;錯誤率降低58%。無…

WebSocket實時通信系統——js技能提升

2. WebSocket實時通信系統 功能概述 實現完整的WebSocket通信系統&#xff0c;支持實時消息推送、連接管理、心跳檢測和自動重連。 技術難點 WebSocket連接生命周期管理消息序列化和反序列化心跳機制和連接保活錯誤處理和重連策略多組件狀態同步 實現思路 2.1 WebSocket管理器 …

Spring AI 入門指南:三步將AI集成到Spring Boot應用

無需深入AI底層實現&#xff0c;Java開發者也能快速構建智能應用本文將介紹如何使用 Spring AI 在 Spring Boot 項目中快速集成 AI 能力。通過三步操作——添加依賴、配置 API 憑證和編寫調用代碼&#xff0c;Java 開發者可以輕松構建 AI 應用。一、Spring AI 簡介Spring AI 是…

OOM問題排查思路及解決方案

OOM問題原因&#xff1a; 根本原因是創建的對象數量超過JVM堆內存容量&#xff0c;且這些對象無法被GC回收場景&#xff1a; 1.本地緩存了用戶態&#xff0c;用戶量急劇上升導致內存溢出&#xff0c;如使用HashMap本地緩存10萬用戶數據&#xff0c;每 個用戶對象約2KB&#xf…

梨花教育暖心鵬城:深圳市養老護理院里“時光綻放”,用聲音點亮銀發精神之光

2025年8月24日&#xff0c;在深圳這座充滿活力與夢想的城市&#xff0c;一場溫暖人心的公益活動在深圳市養老護理院溫情上演。梨花教育策劃并組織了“梨花?時光綻放”公益活動&#xff0c;旨在通過聲音的魅力&#xff0c;為市養老護理院的老人們送去關懷與歡樂&#xff0c;豐富…

力扣100+補充大完結

力扣100分類一、Java基礎代碼模板1. 基礎輸入輸出模板import java.util.Scanner;class Solution {public static int linkedListOperation() {// 鏈表操作實現return 0;}public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.next…

SSM從入門到實戰:3.3 SpringMVC數據綁定與驗證

&#x1f44b; 大家好&#xff0c;我是 阿問學長&#xff01;專注于分享優質開源項目解析、畢業設計項目指導支持、幼小初高的教輔資料推薦等&#xff0c;歡迎關注交流&#xff01;&#x1f680; &#x1f4d6; 本文概述 本文是SSM框架系列SpringMVC基礎篇的第三篇&#xff0…

ctfshow_萌新web16-web20-----文件包含日志注入

_萌新web16解開md5?c36d_萌新web17-----文件包含禁用了php關鍵字&#xff0c;這個題禁了遠程文件包含,進行日志注入發現日志中有user-agent信息&#xff0c;因此我們可以在user-agent中寫入木馬抓包burpsuitUser-agent:<?php eval($_POST[cmd])?>抓包然后連接蟻劍_萌新…

Flink的CheckPoint與SavePoint

Flink的Checkpoint&#xff08;檢查點&#xff09;和Savepoint&#xff08;保存點&#xff09;是兩種不同的狀態快照機制&#xff0c;主要區別如下&#xff1a;1. ?Checkpoint??核心功能?&#xff1a;周期性觸發的容錯機制&#xff0c;用于故障恢復時保證狀態一致性57。?觸…

Ansible 自動化運維工具:介紹與完整部署(RHEL 9)

Ansible 自動化運維工具&#xff1a;介紹與完整部署&#xff08;RHEL 9&#xff09;Ansible 的介紹與安裝 一、自動化運維的必要性 傳統手動運維依賴圖形/命令行界面、檢查清單或記憶執行任務&#xff0c;存在以下核心問題&#xff1a; 易出錯&#xff1a;易跳過步驟或執行錯誤…

構建生產級 RAG 系統:從數據處理到智能體(Agent)的全流程深度解析

文章目錄一、 整體架構設計&#xff1a;邁向智能體&#xff08;Agent&#xff09;驅動的 RAG二、 數據準備與預處理&#xff1a;構建高質量知識庫2.1 數據加載與初步提取2.2 多策略分塊 (Multi-Strategy Chunking)邏輯分塊&#xff1a;按故障章節和關鍵說明傳統分塊&#xff1a…

Duplicate Same Files Searcher v10.7.0,秒掃全盤重復檔,符號鏈接一鍵瘦身

[軟件名稱]: Duplicate Same Files Searcher v10.7.0 [軟件大小]: 3.3 MB [軟件大小]: 夸克網盤 | 百度網盤 軟件介紹 Duplicate Same Files Searcher&#xff08;重復文件搜索&#xff09;是一款強大且專業的重復文件查找與清理工具。通過使用該軟件&#xff0c;用戶可以方…

C/C++ 數據結構 —— 樹(2)

? &#x1f381;個人主頁&#xff1a;工藤新一 ? &#x1f50d;系列專欄&#xff1a;C面向對象&#xff08;類和對象篇&#xff09; ? &#x1f31f;心中的天空之城&#xff0c;終會照亮我前方的路 ? &#x1f389;歡迎大家點贊&#x1f44d;評論&#x1f4dd;收藏?文章…

EEA架構介紹

前言 本文主要對EEA架構的理解進行了記錄&#xff0c;以加深理解及方便后續查漏補缺。 EEA架構 硬件架構 EEA架構作用 提升算力利用率、數據統一交互&#xff0c;實現整車功能協同、縮短線束、降低重量、降低故障率、提升裝配自動化 EEA架構發展趨勢 分布式–>域集中式–>…

【目標跟蹤】《FastTracker: Real-Time and Accurate Visual Tracking》論文閱讀筆記

0.參考 論文:https://arxiv.org/pdf/2508.14370v1 代碼:github.com/HamidrezaHashempoor/FastTracker, huggingface.co/datasets/HamidrezaHashemp/FastTracker-Benchmark. 1.摘要 提高多目標跟蹤在多物體跟蹤上的性能(從前主要是針對行人場景做的優化)。 該方法包含兩…

C++ 內存安全與智能指針深度解析

C 內存安全與智能指針深度解析面試官考察“野指針”&#xff0c;實際上是在考察你對 C “資源所有權” (Ownership) 和 “生命周期管理” (Lifetime Management) 的理解。現代 C 的答案不是“如何手動避免”&#xff0c;而是“如何自動化管理”。第一部分&#xff1a;核心知識點…