軟考軟體設計師下午題技巧總結

来源:https://www.cnblogs.com/odfive/archive/2023/05/08/17383266.html
-Advertisement-
Play Games

本文主要講解了京東百億級商品車型適配數據存儲結構設計以及怎樣實現適配介面的高性能查詢。通過京東百億級數據緩存架構設計實踐案例,簡單剖析了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代碼實現

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 查詢速度慢並不只是因為SQL語句本身,還可能是因為記憶體分配不佳、文件結構不合理等其他原因 1.1. 都是為了減少對硬碟的訪問 2. 不同代碼能夠得出相同結果 2.1. 從理論上來說,得到相同結果的不同代碼應該有相同的性能 2.2. 遺憾的是,查詢優化器生成的執行計劃很大程度上要受到代碼外部結構 ...
  • 本文首發於公眾號:Hunter後端 原文鏈接:Redis數據結構一之對象的介紹及各版本對應實現 本篇筆記開始介紹 Redis 數據結構的底層實現。 當我們被問到 Redis 中有什麼數據結構,或者說數據類型,我們可能會說有字元串、列表、哈希、集合、有序集合。 其實這幾種數據類型在 Redis 中都由 ...
  • mysql之數據操作 第一章 添加數據 通常向表中添加數據應該包含表中的所有欄位,即為表中所有欄位添加數據。但也可不包含所有欄位來添加數據 1.1、所有欄位 按照所有欄位來添加數據,有兩種方式: 語法1: insert into 表名(所有欄位) values(欄位對應的值); 語法2: inser ...
  • 2023-05-14 記錄一下今天學習的內容 (1)今天看了在vscode中將代碼提交到Gitee中。使用的方法如下: ①使用PowerShell打開終端(使用cmd也可以),之後打開你項目所在的文件,使用命令 git init 初始化一個倉庫 ②之後將代碼提交到暫存區中,使用的命令是 git ad ...
  • 開始 mock一個用於攔截ajax請求,並返回模擬數據的庫。主要讓前端獨立於後端進行開發,通過 pnpm add mockjs 來進行安裝 基礎 初窺門徑 var data = Mock.mock({ // 屬性 list 的值是一個數組,其中含有 1 到 10 個元素 'list|1-10': [ ...
  • 架構圖一詞應用比較廣泛,涉及到各個行業,從軟硬體領域來對架構圖分類就有如下幾種 物理架構 描述整個信息系統需要使用到的軟硬體設施,以及其部署位置及各個軟硬體之間的關聯關係。軟硬體設施包括主機、伺服器、交換機、路由器、防火牆、緩存伺服器、註冊中心、資料庫等等。 如下兩種架構圖屬於物理架構: 部署圖 基 ...
  • 0 文章概述 大家想一想工作中有沒有遇到以下情況:一位同事用了很長時間羅列了很多事實和數據向你說明一件事情,但是你聽完根本不知道他想要說什麼。一位同事用了大量筆墨編寫了技術方案,不僅有文字還有圖表,但是你看完也不知道這個方案到底要解決什麼問題以及如何落地。 上述情況的出現大概率是因為表述者沒有使用結 ...
  • DDD作為架構設計思想幫助微服務控制規模複雜度,那它是怎麼做到的呢? 一、架構設計是為瞭解決系統複雜度 談到架構,相信每個技術人員都是耳熟能詳,但如果深入探討一下,“為何要做架構設計?”或者“架構設計目的是什麼?”類似的問題,大部分人可能從來沒有思考過,或者即使有思考,也沒有太明確可信的答案。 1. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...