本文主要講解了京東百億級商品車型適配數據存儲結構設計以及怎樣實現適配介面的高性能查詢。通過京東百億級數據緩存架構設計實踐案例,簡單剖析了jimdb的點陣圖(bitmap)函數和lua腳本應用在高性能場景。希望通過本文,讀者可以對緩存的內部結構知識有一定瞭解,並且能夠以最小的記憶體使用代價將點陣圖(bitm... ...
軟體設計題分析
試題 | 考察內容 |
---|---|
數據流圖/DFD | 補充外部實體、數據存儲、加工、數據流等 |
資料庫設計/ER | E-R圖 關係模式 主鍵/外鍵 規範化理論 增加實體 |
UML建模 | 類圖 用例圖 活動圖等 |
C語言演算法 | C語法+數據結構 |
Java/C++ | 基礎語法+設計模式 |
備考策略
- 前三題固定題型要求拿到12分
- 對於演算法題 掌握演算法策略的判斷以及複雜度問題
- java題也有套路 掌握多態即可
- 很多填空都可以根據程式上下文猜出來
1.數據流圖
名詞 | 解釋 |
---|---|
外部實體 | 系統外部現實世界存在的物體 矩形表示 |
數據存儲 | 一般都是資料庫表名 矩形表示 |
數據流 | 數據如何在系統中流動和傳輸 |
加工/數據處理 | 系統的計算或者操作 圓角矩陣表示 |
數據流圖等級 | 數據流圖等級是指所涉及的數據項和處理的複雜程度 |
DFD等級詳細解釋
等級 | 解釋 |
---|---|
第一層級為上下文層級(Context Level) | 它顯示了被建模的整個系統,以及與外部實體之間的交互。在這個層級中,只有一個過程被畫出,代表整個系統。 |
第二層級是主要層級(Main Level) | 定義了系統中的各個主要過程和如何將他們相連,這也稱為“0”層級 |
第三層級是子功能層級(Functional Decomposition Level) | 它展示了主要層級的每個過程的詳細內容,並將其進一步分解為更小、更可管理的組件 |
第四層級是低層級(Lowest Level) | 它描述了子功能層級中的最小單元。在這個層級中,可以使用偽代碼等技術來描述具體的邏輯過程,以實現不同的功能。 |
1.補充實體
2.補充數據存儲
3.補充數據流
格式: 數據流名稱 起點 重點
- 數據流細節 起點或者終點必須有一個加工 換句話說不能從實體流向實體或者實體流向存儲
- 黑洞 只有輸入流到加工
- 白洞 只有輸出流
- 灰洞 輸入流不足以輸出
4.結構化語言
IF ELSE THREN ENDIF
5.系統增加一個外部實體修改圖中的輸入流
例如系統增加一個Email系統 要求發給學生的消息和老師的消息進行合併
我們就可以寫在上下文圖中增加Email系統 將消息合併 在0層圖中 發學生的信息中間增加加工 發送給Email系統 再由系統輸出發送給學生....
6.如何保持數據流平衡【模板背】
- 父圖中的加工的輸入輸出數據流要和子圖中的加工的輸入輸出流保持一致
- 父圖中的一個輸入或輸出流對應著子圖多個輸入輸出流
- 子圖中組合這些數據流的數據項恰好是父圖這一條數據流
2.資料庫設計
名詞 | 解釋 |
---|---|
實體(Entity) | 每個實體都可以視為系統中的一個對象或概念 |
屬性(Attribute) | 實體的特征 |
關係(Relationship) | 關係描述實體之間的互動 |
域(Domain): | 定義屬性可以使用的值集合。例如,如果“性別”是屬性,則可能的域為{男,女}。 |
主鍵(Primary Key) | 主鍵是一組屬性,該組屬性唯一標識實體,例如學生的學籍號、身份證號等。主鍵值必須在整個關係表中是唯一的 |
外鍵(Foreign Key) | 外鍵是關係中另一個實體的主鍵 |
範式(Normalization) | 範式是一種技術,用於優化關係資料庫模式,並減少數據冗餘。使用範式可以確保數據的一致性和完整性 |
3.UML建模
名詞 | 解釋 |
---|---|
Use Case Diagram | 描述系統的功能和用戶之間的關係,是一種比較高層次的視圖,側重於從用戶的角度去看待系統。 |
Class Diagram | 描述系統的靜態結構,包括類、介面、關聯(依賴 聚合 組合)、繼承(泛化)等。類圖是UML中最常用、最基礎的結構圖。 |
Sequence Diagram | 描述對象之間按時間順序發送消息的交互情況,強調時間軸或順序流程。 |
Activity Diagram | 描述某個業務或操作流程的全過程,涉及到流程、流轉、判斷等,它是一個很好的記錄和傳達業務流程的工具 |
Statechart Diagram | 描述狀態機模式下一個對象所經歷的所有狀態以及可能觸髮狀態轉換的事件。 |
Component Diagram | 描述組成系統的各種組件以及它們之間的關係,有助於複雜系統的分解和設計。 |
Deployment Diagram | 描述系統的部署結構,即系統中各個節點之間的物理連接關係,通常用於描述網路系統或分散式系統的部署方案。 |
1.類圖
類有時候需求分析中未給出 需要自己擬定一個 類名不能包含動詞
關係
- 泛化
- 實現
- 依賴 (A--->B A依賴於B)(單向依賴或者雙向依賴)
- 關聯(聚合(部分-整體 "has-a"弱關係)
- 組合(生命周期一致 "is s"強關係)
2.用例圖
用例之間的關係
- 包含 << include >> a功能包含b功能(用例)
- 擴展 << extend >> 一個用例擴展另一個用例
- 泛化 << generalization >> 是一種繼承關係
4.C語言演算法
1.演算法策略
- 動態規劃
子問題不獨立,依賴其他'位置'的數據
- 回溯法
遞歸
- 貪心法
每一步找最優
- 分治法
子問題是獨立的
歸併排序
2.時間複雜度
- 找到所給代碼的最大迴圈層數
3.代碼補全
5.Java
- OOP思想 封裝繼承和多態
- 瞭解設計模式並通過Java代碼實現