文章目錄
- 數據結構與算法
- 排序算法
- 圖
- 關鍵路徑
- 軟件工程
- 決策表
- 耦合類型
- 編程思想
- 設計模式
- 計算機網絡
- 域名請求過程
數據結構與算法
排序算法
- 哪些排序算法是穩定的算法?哪些不是穩定的算法,請舉出例子。
穩定排序算法:冒泡排序、插入排序、歸并排序、基數排序、計數排序。
非穩定排序算法:快速排序、堆排序、選擇排序(例:快速排序)。
圖
- 圖相關的算法有哪些
?遍歷算法?:
?廣度優先搜索(BFS)?:從起始節點開始,逐層訪問所有鄰接節點,適用于查找最短路徑。
?深度優先搜索(DFS)?:從起始節點開始,盡可能深地搜索,適用于探索復雜圖結構。
?A*算法?:啟發式搜索算法,結合了BFS和DFS的特點,通過估值函數找到最短路徑?
?最短路徑算法?:
?Dijkstra算法?:用于找到單個源點到所有其他點的最短路徑。
?Bellman-Ford算法?:適用于包含負權邊的圖。
?Floyd-Warshall算法?:計算所有頂點對之間的最短路徑?
?最小生成樹算法?:
?Prim算法?:從單一節點開始構建最小生成樹。
?Kruskal算法?:通過邊的權重選擇最小生成樹?
?圖匹配算法?:
?匈牙利算法?:用于解決分配問題,特別是在二分圖中?
關鍵路徑
關鍵線路也稱關鍵路徑 [3]。網絡計劃中,自始至終全部由關鍵工作組成的線路或線路上總的工作持續時間(總工期)最長的路線叫作關鍵線路
軟件工程
決策表
決策表又稱判斷表,是一種呈表格狀的圖形工具,適用于描述處理判斷條件較多,各條件又相互組合、有多種決策方案的情況。精確而簡潔描述復雜邏輯的方式,將多個條件與這些條件滿足后要執行動作相對應。但不同于傳統程序語言中的控制語句,決策表能將多個獨立的條件和多個動作直接的聯系清晰的表示出來。
耦合類型
內容耦合
內容耦合是指一個模塊直接訪問或修改另一個模塊的內部數據或實現細節。這種耦合方式使得模塊之間的依賴性極強,任何對內部數據的修改都會影響到其他模塊,導致系統難以維護和擴展。
公共耦合
公共耦合是指多個模塊共享同一個全局數據或資源。這種耦合方式使得模塊之間的依賴性較強,因為任何對全局數據的修改都會影響到所有依賴該數據的模塊。公共耦合可能導致數據不一致性和難以調試的問題。
外部耦合
外部耦合是指模塊依賴于外部系統或環境,如數據庫、文件系統或網絡服務。這種耦合方式使得模塊的可移植性和可測試性降低,因為模塊的行為依賴于外部系統的狀態和配置。
控制耦合
控制耦合是指一個模塊通過傳遞控制信息(如標志或參數)來影響另一個模塊的行為。這種耦合方式使得模塊之間的依賴性較強,因為模塊的行為依賴于傳遞的控制信息。控制耦合可能導致模塊的邏輯復雜性和難以理解。
數據耦合
數據耦合是指模塊之間通過傳遞數據進行交互,每個模塊只依賴于傳遞的數據,而不依賴于其他模塊的內部實現。這種耦合方式使得模塊之間的依賴性較低,因為模塊的行為只依賴于傳遞的數據。數據耦合是較為理想的耦合方式,有助于提高系統的可維護性和可擴展性。
標記耦合
標記耦合是指模塊之間通過傳遞復雜的數據結構(如記錄或對象)進行交互。這種耦合方式使得模塊之間的依賴性較強,因為模塊的行為依賴于傳遞的數據結構。標記耦合可能導致模塊的邏輯復雜性和難以理解。
時間耦合
時間耦合是指模塊之間的交互依賴于特定的時間順序或同步機制。這種耦合方式使得模塊之間的依賴性較強,因為模塊的行為依賴于特定的時間順序或同步機制。時間耦合可能導致系統的復雜性和難以調試。
順序耦合
順序耦合是指模塊之間的交互依賴于特定的執行順序。這種耦合方式使得模塊之間的依賴性較強,因為模塊的行為依賴于特定的執行順序。順序耦合可能導致系統的復雜性和難以維護。
功能耦合
功能耦合是指模塊之間的交互依賴于特定的功能或服務。這種耦合方式使得模塊之間的依賴性較強,因為模塊的行為依賴于特定的功能或服務。功能耦合可能導致系統的復雜性和難以擴展。
邏輯耦合
邏輯耦合是指模塊之間的交互依賴于特定的邏輯或算法。這種耦合方式使得模塊之間的依賴性較強,因為模塊的行為依賴于特定的邏輯或算法。邏輯耦合可能導致系統的復雜性和難以理解。公共耦合(Common Coupling)指一組模塊共同訪問同一個公共數據環境(如全局變量、共享內存、文件或物理設備),導致模塊間存在直接依賴關系。這種耦合的特點是:
編程思想
設計模式
- 常用的設計模式有哪些,適合哪些場景?
?單例模式?:確保一個類只有一個實例,并提供一個全局訪問點。適用于需要嚴格控制實例數量的場景,如數據庫連接池、全局配置對象等?
?工廠模式?:提供一個創建對象的接口,讓子類決定實例化哪個類。適用于需要動態創建對象的場景,如物流系統中的不同運輸方式?
?策略模式?:定義一系列算法,并使它們可以相互替換。適用于有多種實現方式且需要靈活切換的場景,如日志記錄可以選擇寫入數據庫或文件?
?觀察者模式?:定義對象之間的一對多依賴關系,當一個對象狀態改變時,所有依賴對象都會收到通知并自動更新。適用于需要同步更新多個對象的狀態的場景?
?迭代器模式?:提供一種順序訪問聚合對象中各個元素的方法。適用于需要遍歷復雜數據結構的場景,如STL容器?
?模板方法模式?:定義一個算法的框架,允許子類重定義某些步驟而不改變算法的結構。適用于需要定義算法框架并提供鉤子方法讓子類實現的場景?
?責任鏈模式(Chain of Responsibility Pattern)?是一種行為設計模式,其核心思想是通過將多個處理對象連接成鏈狀結構,使請求在鏈上傳遞直到被處理,實現發送者與接收者的解耦。該模式支持動態擴展處理流程,廣泛應用于數據校驗、權限控制、工作流編排等領域。??
應用場景?總結:
??適配器模式?? 兼容舊接口(如USB轉Type-C)
??代理模式?? 控制訪問(如遠程代理、緩存代理)
??責任鏈模式?? 多級審批流程(如請假審批)
??狀態模式?? 對象狀態驅動行為(如訂單狀態流轉)
??建造者模式?? 復雜對象分步構建(如SQL查詢構造器)
計算機網絡
域名請求過程
域名解析過程:(假設域名為www.baidu.com)
先在HOSTS表或者本地主存中的DNS緩存中查詢
如果沒有,再通過遞歸查詢查找本地DNS服務器
如果還沒找到,本地DNS服務器通過迭代查詢查找根域名服務器,根域名服務器返回.com域的頂級域名服務器;
接著本地域名服務器向.com的頂級域名服務器發出請求,返回baidu.com權限域名服務器;
本地域名服務器向baidu.com權限域名服務器發送請求,得到了www.baidu.com的IP地址。