云徙科技----一面(全棧開發)

一、公司是做什么業務的?

二、介紹一下自己會用的,熟悉的技術棧?

三、“在 Spring 應用中,當你發起一個 RESTful API 請求時(例如?GET /api/users/1),計算機系統是如何知道這個請求的?請結合計算機網絡(從客戶端到服務器的傳輸過程)和 Spring 框架(服務器端的處理流程)詳細說明這個過程。”

四、動態規劃和貪心算法的異同點

五、假設利用貪心算法解決背包問題的話,怎么判斷當前結果最優?

六、上學期學了什么課?

七、路由器是網絡中用于路徑選擇的設備,那路由器之間通常會使用哪些協議來構建它的路由表?怎么構建這個路由的數據包?

八、TCP如何控制網絡的包讓傳輸的鏈路是可靠的?

九、學了哪些流量控制的算法?

十、理不理解SpringCloud用來干什么的?

十一、假設現在有1000條數據,對它進行排序但是有一個現實條件就是在內存里面最多只能放十條數據,在這個內存受限的情況下,那么你覺得如何去把這1000條數據進行排序?

一、公司是做什么業務的?

相當于一個網上商城

二、介紹一下自己會用的,熟悉的技術棧?(就這些就沒了?)

spring,spring boot ,spring mvc, mysql, mybatis,redis,docker?

三、“在 Spring 應用中,當你發起一個 RESTful API 請求時(例如?GET /api/users/1),計算機系統是如何知道這個請求的?請結合計算機網絡(從客戶端到服務器的傳輸過程)和 Spring 框架(服務器端的處理流程)詳細說明這個過程。”

回答思路(分階段說明)

1. 客戶端發起請求(計算機網絡層面)
  1. 應用層

    • 客戶端(瀏覽器、Postman 等)通過 HTTP 協議發送請求(如?GET /api/users/1)。
    • 請求包含:URL、HTTP 方法、請求頭(如?Content-Type)、請求體(如 JSON 數據)。
  2. 傳輸層

    • 客戶端通過 TCP 協議建立與服務器的連接(默認端口 80/443)。
    • TCP 協議將 HTTP 請求分割為多個數據包,并添加源 / 目標端口號。
  3. 網絡層與數據鏈路層

    • IP 協議為數據包添加源 / 目標 IP 地址,通過路由器轉發至服務器。
    • 數據鏈路層將數據包轉換為物理信號(如電信號、光信號)傳輸。
  4. 服務器接收請求

    • 服務器網卡接收物理信號,逐層解析(數據鏈路層 → 網絡層 → 傳輸層),最終還原為 HTTP 請求。
2. 服務器接收請求(Spring 框架層面)
  1. Tomcat 容器處理

    • 服務器上的 Web 容器(如 Tomcat)監聽指定端口(如 8080),接收 HTTP 請求。
    • Tomcat 將請求封裝為?ServletRequest?對象,傳遞給 Spring MVC 框架。
  2. Spring MVC 前端控制器(DispatcherServlet)

    • DispatcherServlet?作為入口,接收所有請求。
    • 根據?HandlerMapping?找到處理該請求的 Controller 方法(如?@GetMapping("/api/users/{id}"))。
  3. 攔截器(Interceptor)處理

    • 在請求到達 Controller 前,執行注冊的攔截器(如?LoginInterceptor)。
    • 攔截器可進行權限校驗、日志記錄等預處理,通過?preHandle?方法控制請求是否繼續。
  4. Controller 處理請求

    • 匹配到的 Controller 方法被調用(如?UserController.getUserById(Long id))。
    • 方法參數通過?@PathVariable@RequestBody?等注解綁定請求數據。
  5. Service 與 DAO 層處理

    • Controller 調用 Service 層處理業務邏輯(如查詢用戶)。
    • Service 調用 DAO 層(如?UserRepository)訪問數據庫。
  6. 數據持久化

    • DAO 通過 JPA、MyBatis 等 ORM 框架執行 SQL 查詢,獲取數據。
3. 響應返回客戶端
  1. Controller 返回數據

    • Controller 方法返回數據(如?User?對象),被?@ResponseBody?注解轉換為 JSON/XML。
  2. 視圖解析與消息轉換

    • HttpMessageConverter?將 Java 對象轉換為 HTTP 響應體(如 JSON)。
  3. 響應頭與狀態碼

    • 設置響應頭(如?Content-Type: application/json)和狀態碼(如 200 OK)。
  4. 通過網絡返回客戶端

    • 響應數據通過 Tomcat 封裝為 HTTP 響應,經網絡層、傳輸層返回客戶端。
    • 客戶端解析響應,渲染數據(如瀏覽器顯示 JSON 結果)。

總結(關鍵技術點)

  • 計算機網絡:HTTP 協議、TCP/IP 分層模型、數據包傳輸。
  • Spring 框架DispatcherServletHandlerMapping、攔截器、@RestControllerHttpMessageConverter

這個過程體現了?“請求 - 攔截 - 處理 - 響應”?的完整流程,也是 Spring MVC 框架的核心工作機制。

四、動態規劃和貪心算法的異同點

  • 相同點:均用于求解優化問題,通過分解子問題簡化計算。
  • 不同點
    • 動態規劃:考慮子問題的所有可能解,存儲中間結果(重疊子問題),通過全局最優解推導(最優子結構),適用于多階段決策問題(如背包問題、最長公共子序列)。
    • 貪心算法:每步選擇局部最優解(不回溯),不存儲中間結果,僅適用于局部最優能推出全局最優的場景(如哈夫曼編碼、活動選擇問題)。

五、假設利用貪心算法解決背包問題的話,怎么判斷當前結果最優?

僅當背包問題滿足 **“物品可分割(分數背包)” 且價值密度(價值 / 重量)單調遞減 ** 時,貪心算法(優先選價值密度最高的物品)的結果才是最優的。若為 0-1 背包(物品不可分割),貪心算法無法保證最優,需用動態規劃。

六、上學期學了什么課?

計算機網絡、編譯原理

七、路由器是網絡中用于路徑選擇的設備,那路由器之間通常會使用哪些協議來構建它的路由表?怎么構建這個路由的數據包?

  • 協議
    • 動態路由協議:內部網關協議(IGP,如 RIP、OSPF)、外部網關協議(EGP,如 BGP);
    • 靜態路由:手動配置,非協議。
  • 路由數據包構建:協議通過交換 “路由更新報文”(含目標網絡、距離 / 代價、下一跳等信息),路由器根據協議規則(如 OSPF 的鏈路狀態、RIP 的跳數)計算最優路徑,更新本地路由表。

?

八、TCP如何控制網絡的包讓傳輸的鏈路是可靠的?

  • 機制包括:三次握手建立連接、四次揮手斷開連接;
  • 數據傳輸中通過序號與確認應答(ACK)、超時重傳流量控制(滑動窗口)、擁塞控制(慢啟動、擁塞避免)、校驗和(檢錯)、重排序與去重(處理亂序 / 重復包)實現可靠傳輸。

九、學了哪些流量控制的算法?

TCP 滑動窗口協議(基于接收方緩沖區大小動態調整發送窗口);

十、理不理解SpringCloud用來干什么的?

SpringCloud 是基于 SpringBoot 的微服務架構工具集,用于解決分布式系統問題,提供服務注冊與發現(Eureka/Consul)、負載均衡(Ribbon)、熔斷降級(Hystrix)、API 網關(Gateway)、配置中心(Config)等組件,簡化微服務的開發與治理。

十一、假設現在有1000條數據,對它進行排序但是有一個現實條件就是在內存里面最多只能放十條數據,在這個內存受限的情況下,那么你覺得如何去把這1000條數據進行排序?

?

外部排序:分而治之

外部排序:的核心是 分而治之:先將大文件分割成內存可處理的小片段,分別排序后再合并成最終有序文件。

具體步驟

1. 拆分階段(生成 “有序子文件”)
  • 從原始數據中分批讀取數據,每次讀入 10 條(內存最大容量)。
  • 對這 10 條數據用內存排序算法(如快速排序、歸并排序)進行排序,生成一個 “有序子文件”(如temp1.txt),寫入磁盤。
  • 重復上述過程,直到 1000 條數據全部分批處理完畢。
    • 1000 條數據 → 每次 10 條 → 共生成?100 個有序子文件(每個子文件含 10 條有序數據)。
2. 合并階段(多路歸并排序)
  • 采用k 路歸并(這里 k=10,即每次從 10 個子文件中取數據),利用內存作為 “緩沖區” 合并子文件:
    1. 從 100 個有序子文件中,各讀取 1 條數據到內存緩沖區(共 10 條,不超過內存限制)。
    2. 從緩沖區的 10 條數據中,選出最小值,寫入最終結果文件(result.txt)。
    3. 從該最小值所在的子文件中,再讀取 1 條數據補充到緩沖區(保持緩沖區始終有 10 條數據)。
    4. 重復步驟 2-3,直到所有子文件的數據都被讀取完畢。
    5. 若子文件數量超過 10 個(如 100 個),則分多輪合并:
      • 第一輪:100 個子文件 → 10 輪合并(每輪合并 10 個)→ 生成 10 個 “二級有序子文件”。
      • 第二輪:10 個二級子文件 → 1 輪合并 → 生成最終的有序文件。

關鍵技術點

  • 緩沖區管理:內存始終只存 10 條數據(用于臨時存儲各子文件的當前待比較數據),避免內存溢出。
  • 多路歸并優化:通過敗者樹(Loser Tree)?或堆(Heap)?高效選出最小值,減少每次比較的次數(從 k-1 次降至 log?k 次),提升合并效率。

總結

整個過程分為 “拆分(局部排序)” 和 “合并(全局排序)” 兩步,核心是利用磁盤存儲中間結果,通過內存作為緩沖區實現多輪歸并。這是數據庫、大數據處理等場景中處理超大規模數據的基礎思想,體現了 “內存有限時,用磁盤換空間,用分治換效率” 的設計思路。

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

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

相關文章

我是怎么設計一個訂單號生成策略的(庫存系統)

我是怎么設計一個訂單號生成策略的(庫存系統)一、背景 最近我在做一套自研的庫存管理系統,其中有一個看似簡單、實則很關鍵的功能:訂單號生成策略。 訂單號不僅要全局唯一,還要有一定的可讀性和業務含義,比…

問津集 #1:Rethinking The Compaction Policies in LSM-trees

文章目錄引言正文結束語引言 陪女朋友出門,我大概有兩個小時左右的空閑時間,遂帶上電腦,翻了下論文列表,選擇了這篇文章做一個簡讀。 因為這一年負責時序系統的存儲引擎和計算引擎演進,而Compaction又是串聯讀寫的核心…

數據產品結構:從數據接入到可視化的完整架構指南

在數據驅動決策的時代,一套高效的數據產品結構是企業挖掘數據價值的基礎。無論是巨頭企業自建的完整體系,還是中小企業依賴的第三方工具,其核心邏輯都是實現 “數據從產生到呈現” 的全鏈路管理。本文將拆解數據產品的五層架構,對…

python學智能算法(二十三)|SVM-幾何距離

引言 前序學習文章中,已經探究了電荷超平面的距離計算方法,相關文章為點與超平面的距離。 在這片文章中,我們了解到計算距離的公式: Fmin?i1...myi(w?xib)F\min_{i1...m}y_{i}(w\cdot x_{i}b)Fi1...mmin?yi?(w?xi?b) 計算…

[每日隨題11] 貪心 - 數學 - 區間DP

整體概述 難度:1000 →\rightarrow→ 1400 →\rightarrow→ 1600 P3918 [國家集訓隊] 特技飛行 標簽:貪心 前置知識:無 難度:橙 1000 題目描述: 輸入格式: 輸出格式: 樣例輸入:…

Elasticsearch 9.x 搜索執行流程(源碼解讀)

1. 搜索執行流程概述 Elasticsearch的搜索執行是一個分布式過程,涉及協調節點和數據節點之間的多階段交互 #mermaid-svg-QGh2GjrUKcs5jzQp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QGh2GjrUKcs5jzQp .error…

暑期訓練8

E. G-C-D, Unlucky!題目要求判斷是否存在一個長度為 n 的數組 a,使得p[i] 是 a[0..i] 的前綴 GCDs[i] 是 a[i..n-1] 的后綴 GCD思路前綴 GCD 非遞增后綴 GCD 非遞減首尾 GCD 一致橋梁條件成立對于每個位置 i,gcd(p[i], s[i1]) 必須等于整個數組的 GCD&am…

深入解析Hadoop HDFS高可用性:原理、故障切換與元數據同步

Hadoop HDFS高可用性(HA)概述在分布式存儲領域,Hadoop分布式文件系統(HDFS)作為Hadoop生態系統的核心存儲組件,其高可用性(HA)設計一直是架構師們關注的焦點。傳統HDFS架構中,NameNode作為單一主節點管理整個文件系統的元數據,這種…

Freertos源碼分析:任務創建/刪除

任務創建/刪除流程1.簡介FreeRTOS 中任務創建通過 xTaskCreate() 或 xTaskCreateStatic() 實現。動態創建(xTaskCreate)會自動分配任務棧和TCB(任務控制塊),靜態創建(xTaskCreateStatic)需用戶預…

warning: _close is not implemented and will always fail

相關問題: 一、undefined reference to _exit undefined reference to ‘end‘ warning: _close is not implemented and will always fail 一、環境: ubuntu24.04實體機、 arm-none-eabi-gcc gcc version 13.2.1 20231009 (15:13.2.rel1-2) 二…

MyBatis之緩存機制詳解

MyBatis之緩存機制詳解一、MyBatis緩存的基本概念1.1 緩存的核心價值1.2 MyBatis的兩級緩存體系二、一級緩存(SqlSession級別緩存)2.1 工作原理2.2 實戰案例:一級緩存演示2.2.1 基礎用法(默認開啟)2.2.2 一級緩存失效場…

云服務器搭建自己的FRP服務。為什么客戶端的項目需要用Docker啟動,服務端才能夠訪問到?

簡單回答:在云服務器搭建FRP服務時,客戶端項目用Docker啟動并非必需,而是因為Docker的特性簡化了配置: Docker通過端口映射(如-p 本地端口:容器端口)能固定項目對外暴露的端口,減少本地端口沖突…

6 STM32單片機的智能家居安防系統設計(STM32代碼+手機APP設計+PCB設計+Proteus仿真)

系列文章目錄 文章目錄 系列文章目錄前言1 資料獲取與演示視頻1.1 資料介紹1.2 資料獲取1.3 演示視頻 2 系統框架3 硬件3.1 主控制器3.2 顯示屏3.3 WIFI模塊3.4 DHT11溫濕度傳感器3.5 煙霧/燃氣傳感器模塊:MQ-23.6 火焰傳感器3.7 門磁模塊MC-38 4 設計PCB4.1 安裝下…

DevOps落地的終極實踐:8大關鍵路徑揭秘!

本文來自騰訊藍鯨智云社區用戶: CanWay當前,DevOps因其能夠降低IT運營成本、提高軟件質量并加快上市時間的能力而在全球范圍內引起廣泛關注。它打破了傳統軟件開發與運營的界限,消除了新功能發布延遲和軟件質量下降的障礙。DevOps通過實施持續集成、持續…

react - 根據路由生成菜單

后端返回菜單的格式menuList:[{index: true,name: "",component: "../views/Home",meta: { title: "首頁", requiresAuth: true,roles:[user]},},{path: "/admin",name: "admin",meta: { title: "管理頁", roles:…

Window延遲更新10000天配置方案

1.點擊"開始"菜單,搜索"注冊表編輯器",點擊"打開"。2.找到"\HKEY LOCAL MACHINE\SOFTWARE\Microsoft\WindowsUpdate\Ux\Settings"路徑。3.右面空白處右鍵新建一個32位值,命名為FlightSettingsMaxPau…

【OD機試】人民幣轉換

題目描述 將阿拉伯數字金額轉換為中文大寫金額格式,需遵循以下規則: 1、 前綴要求:中文大寫金額前必須標明“人民幣”字樣。 2、 用字規范:使用壹、貳、叁、肆、伍、陸、柒、捌、玖、拾、佰、仟、萬、億、元、角、分、零、整等字樣。 3、 “整”字規則: 金額到“元”為止…

在ajax中什么時候需要將返回值類型做轉換

$.ajax({url: TMSPROC0050/deleteData?accidentIds accidentIds.join(,),type: DELETE,dataType: json,success: function(result) {$(#accidentGrid).datagrid(reload);$.messager.show({title: 成功,msg: result.message})},error: function(result) {$.messager.alert({ti…

Helm常用命令大全(2025最新版)

文章目錄Helm常用命令大全(2025最新版)一、基礎命令與環境配置版本與幫助信息安裝與升級HelmLinux系統安裝版本升級注意事項二、倉庫管理命令倉庫基礎操作OCI倉庫支持(v3.8新特性)三、Chart操作命令Chart創建與打包Chart搜索與下載…

gitlab+jenkins

文章目錄架構gitlab和jenkins安裝jenkins配置gitlab配置jenkins與gitlab聯動參考架構 gitlab和jenkins安裝 部署docker 部署jenkins 啟動jenkins 用戶:admin,對應的密碼如下 點擊安裝自定義推薦的插件 安裝gitlab插件 jenkins配置 配置pipline…