{"id":22283749,"url":"https://github.com/veaba/soft-exam","last_synced_at":"2026-01-06T05:08:23.124Z","repository":{"id":104582213,"uuid":"231325762","full_name":"veaba/soft-exam","owner":"veaba","description":"准备参加2020中级软件工程师考试的参加，加油~~","archived":false,"fork":false,"pushed_at":"2020-01-07T07:40:50.000Z","size":147439,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-30T17:39:38.360Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/veaba.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-02T06:59:18.000Z","updated_at":"2025-01-03T04:00:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"97674b6b-309a-4cd4-a07e-c39daccffbc8","html_url":"https://github.com/veaba/soft-exam","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Fsoft-exam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Fsoft-exam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Fsoft-exam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Fsoft-exam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/veaba","download_url":"https://codeload.github.com/veaba/soft-exam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245535423,"owners_count":20631293,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-03T16:41:59.964Z","updated_at":"2026-01-06T05:08:23.056Z","avatar_url":"https://github.com/veaba.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# soft-exam\n准备参加2020中级软件工程师考试的参加，加油~~\n\n## 相关学习链接\n- 一个网站的题库 https://www.educity.cn/tiku/zt100110011003-1.html\n- pdf文件改天再传吧\n\n## 专业词汇\n\n- CPU\n    - 访问存储器时，被访问一般具体在一小块连续存储，若被访问，临近可能被访问，特性叫空间局部性\n- CPU的控制器\n    - 一条指令功能实现需要若干操作信号配合完成\n- CPU的运算器\n    - 只能完成运算\n- DMA：Direct Memory Access 直接内存存取，绕开CPU\n    - 数据在主存和I/O（外设）之间直接成块传送\n- DMA控制器\n- Cache控制器\n- 数据局部性\n- 指令局部性\n- 空间局部性\n    - 访问存储单元，不久其附近存储单元也最可能被访问\n- 时间局部性\n    - 被执行过，将来可能会被执行\n- 程序的局限性\n    - 时间局部性\n    - 空间局部性\n\n- 千小时可靠度，单个可靠度R\n    - 三个部件串联：R*R*R\n    - 三个并联：1-(1-R)(1-R)(1-R)\n    - 前两个并联后第三个串联（1-(1-R)^2）\n\n- 模2运算\n    - 只有循环冗余检验CRC\n- 水平奇偶\n- 垂直奇偶\n- 海明码\n- 循环冗余\n    - 模2运算\n- RISC 精简指令系统计算机\n    - 指令长度固定、指令种类尽量少\n  - 指令功能强大、寻址方式单一，多寄存器寻址\n  - 增加寄存器数目以减少访问次数\n  - 硬布线电路实现指令解码，快速指令译码\n- 应用级网关\n    - 它的防火墙内网外网的隔离点，可过滤和监控\n \n- SSL \n    - 安全有关\n- HTTPS\n    - 安全有关\n- MIME\n    - 互联网标准，拓展电子邮件标准\n- PGP：Pretty Good Privacy\n- CA证书\n- 私钥\n- 公钥\n- 数字证书\n    - 对用户身份进行认证\n    - 也就是发送方的数字签名\n- 数字签名\n    - 确保消息不可否认\n    - 也就是公钥\n- 消息加密\n- 用户私钥\n- 震网（Stuxnet）病毒\n    - 破坏工业基础设置的恶意代码\n    - 蠕虫病毒\n    - 2010年6月被发现，攻击电网、核电站、水坝\n- 引导区病毒\n    - 破坏引导盘、文件目录等\n- 宏病毒\n    - 破坏Office文件先关\n- 木马病毒\n    - 强调控制操作\n- 蠕虫病毒\n- 著作权\n    - 软件开发完成之时就有了著作权\n- 数据流图建模\n   - 遵从 自顶向下，抽象到具体的原则\n    - 结构化分析工具\n- 结构化基本成分模块\n    - 模块\n    - 调用\n    - 控制\n    - 转接符号\n    - 数据（次要）\n- 沟通路径\n    - 10个开发，任意两个存在沟通路径(1+....+9 )=45\n    - 无主程序公式(m-1)/2=45\n- 完成存在并行+依赖关系的工作时间计算，最大值作为开始+需要完成的天数=最终天数\n![1.png](images/1.png)\n\n![2.png](images/2.png)\n\n- 软件项目风险\n    - 成员离职\n    - 缺乏专业培训\n    - 找不到符合项目技术要求\n- 通用程序设计的语言成分\n    - 数据\n    - 运算\n    - 控制\n        - 顺序\n        - 选择\n        - 循环\n    - 传输\n\n- 词法分析阶段\n    - 词法规则\n    - 逐个字符扫描\n    - 词汇检查\n- 语法分析\n    - 词法基础上分解为语法单位\n    - 如何表达式、语句、程序\n- 语法规则\n    - 语法单位构成规则\n    - 针对结构检查\n- 语义分析阶段\n    - 检查是否包含语义错误\n    - 句子检查\n- 高级源码需要收集符合、特征\n    - 并存入符号表\n- 哈希表\n- 堆栈\n- 队列\n- 先来先服务调度算法\n- bitmap记录磁盘、资产64位、磁盘1024GB、物理大小4MB\n    - 字长64位，需要64个物理块\n    - 存在多少个物理块？1024G/4MB=256*1024个物理块，这跟下面有什么关系？\n    - 每64个物理块占用一个字，所需256*1014/64=4096个字\n- pv 操作\n    - 实现资源互斥作用\n    - 利用信号量机制\n    - 有效进程同步与互斥工具\n- 嵌入性操作系统特点\n    - 微型，减少资源和代码量少\n    - 可定制，减少成本\n    - 实时性\n    - 可靠性\n    - 易移植性\n- 系统原型\n    - 帮助导出系统需求并验证需求有效性\n    - 探索特殊软件解决方案\n    - 支持用户界面设计\n- 极限编程（XP）\n    - 处理当前，设计简单\n    - 写完之后写测试代码\n    - 用户配合XP团队\n    - 提测小型版本发布，迭代周期2周\n- ISO/IEC126软件质量模型\n    - 功能性包含质量子特性安全性\n    - 适合性\n    - 准确性\n    - 互用性\n    - 依从性\n    - 安全性\n\n- 模块A给模块B传递数据结果x，这两个模块耦合类型\n    - 标记耦合\n\n- 数据耦合\n    - 通过简单数据参数交换输入输出信息\n- 公共耦合\n    - 都访问一共公共数据环境\n    - 公共数据环境可以是\n        - 全局数据结构\n        - 共享通信区\n        - 内存\n- 外部耦合\n    - 都访问全局简单变量而不是全局数据结构\n    - 不能通过参数表传递该全局变量的信息\n- 标记耦合\n    - 参数表传递记录信息\n    - 记录是某数据结构的子结构\n- Theo Mandel 黄金原则\n    - 用户控制\n    - 减少记忆负担\n    - 界面一致性\n- CPU：运算器、控制器等\n    - 可完成：算术、逻辑运算、控制\n\n## 计算机系统\n\n### 计算机系统\n- 计算机组成\n    - 硬件（5大部分）\n        - 组成：\n            - 运算器\n            - 控制器\n            - 存储器\n                - 外部存储器:速度快、容量小\n                    - 临时存储、数据、中间结果\n                - 内部存储器：速度慢，容量大\n                    - 长期存储\n            - 输入设备：键盘、鼠标等\n            - 输出设备：显示器等\n        - 核心：CPU\n\n    - 软件\n\n- CUP 功能：\n    - 程序控制\n    - 操作控制\n    - 时间控制\n    - 数据处理\n\n- CPU 功能组成\n\n![CPU基本组成结构示意图](images/cpu_struct.png)\n\n- 运算器：\n    - 组成：\n        - 算术逻辑单元Atrithmetic and Logic Unit, ALU\n        - 累加寄存器\n        - 数据缓冲寄存器\n        - 状态条件寄存器\n    - 受控制器的命令而进行动作\n    - 本身是执行部件\n    - 执行所有算术运算：加减乘除等\n    - 至少有一个累加寄存器\n- 算术逻辑单元(ALU)\n- 累加寄存器(AC)\n- 数据缓冲寄存器(AR)\n- 状态条件寄存器(PSW)\n    - 组成\n        - 状态标志\n        - 控制标志\n        - 进位标志：C\n        - 溢出标志：V\n        - 为0标志：Z\n        - 未负标志：N\n        - 中断标记：I\n        - 方向标志：D\n        - 单步标志\n    - 标志位由1位触发器保存，保存当前指令执行完成之后的状态\n    - 一个算术操作产生一个运算结果\n    - 一个逻辑操作产生一个判决\n- 控制器\n    - 组成：\n        - 指令控制逻辑\n            - 操作：取指令、分析指令、执行指令\n            - 过程：取指令、指令译码、按指令操作码执行、形成下 一指令地址\n        - 时序控制逻辑\n            - 指令寄存器(IR)\n                - CPU执行指令：从内存储器取到缓冲寄存器再送指令寄存器(IR)，ID跟IR产品微操指令\n            - 程序计数器(PC)\n                - 功能：寄存、计数；也叫指令计数器\n                - 执行情况：顺序执行（多数情况）、转移执行\n            - 地址寄存器(AR)\n                - 保存CPU所访问的内存单元的地址\n                - 因操作速度差异而需要使用到AR保存地址信息\n            - 指令译码器(ID)\n                - 包含操作码、地址码\n        - 总线控制逻辑\n        - 中断控制逻辑\n- 寄存器组\n    - 分为：专用寄存器、通用寄存器\n    - 运算器和控制器的寄存器都是专用寄存器\n- 多核CPU\n    - 核心称为内核，单芯片上集成多个处理器内核\n    - 一级缓存：2k到几十k，先被访问\n    - 二级缓存：较高容量，缓存足够高的命中率\n    - 执行单元\n    - 指令级单元\n    - 总线接口\n    - 每核都有：逻辑单元、控制单元、中断处理器、运算单元、一级Cache、二级Cache共享或独有\n- 双核：AMD，刷新BIOS即可\n- 双芯：Intel\n    - 超线程技术，4核可以视为8核，但低于实际8核\n\n- 机器数：\n    - 无符号数：正数\n    - 带符号：最高位正、负符号位\n    - 为了方便运算带符号可采用原码、反码、补码等不同的编码方法\n    - 机器数的这些编码方法称为码制\n- 原码\n    - 题目：弱机器字长n等于8，分别给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的源码表示\n    ![](images/origin_code.png)\n    - 最高位是符号位，\n    - 0表示正位\n    - 1表示负位\n    - 其余n-1表示数值的绝对值\n    - 数值0的原码表示有两种：[+0]\u003csub\u003e原\u003c/sub\u003e=0 0000000，[-0]\u003csub\u003e原\u003c/sub\u003e=1 0000000\n    - 原码小数点应该什么表示：\n    - [+20]\u003csub\u003e原\u003c/sub\u003e= 0 00101000，需要说明的是，它是几个字节长等于多少,\n    - [+0.5]\u003csub\u003e原\u003c/sub\u003e= 0 1000000 小数点后.5 x2 = 1大于等于1，小于10，从组边开始排过去\n    - [-0.5]\u003csub\u003e原\u003c/sub\u003e= 1 1000000\n    - 并且从后面过去，右边到左边\n    - 一次演算原码\n        ```txt\n        数字=34.375\n        先算整数位:\n        34/2=17余0\n        17/2=8余1\n        8/2=4余0\n        4/2=2余0\n        2/2=1余0\n        整数部分100010\n        分数\n        .375X2=.75，\u003c1，此位为0\n        .75X2=1.5，\u003e1，此位为1，剩.5\n        .5X2=1，=1，此位为1\n        小数部分就是：.011\n        结果100010.011\n        ```\n- 反码表示法\n    - [X]\u003csub\u003e反\u003c/sub\u003e\n    - 负数的反码是整数的反码\n    - 正号 0\n    - 负号 1\n    - [+1]\u003csub\u003e反\u003c/sub\u003e=0 0000001\n    - [-1]\u003csub\u003e反\u003c/sub\u003e=1 1111110\n    - [+127]\u003csub\u003e反\u003c/sub\u003e=0 1111111\n    - [-127]\u003csub\u003e反\u003c/sub\u003e=1 0000000\n    - [+45]\u003csub\u003e反\u003c/sub\u003e= 1 0101101\n    - [-45]\u003csub\u003e反\u003c/sub\u003e= 0 1010010\n    - [+0.5]\u003csub\u003e反\u003c/sub\u003e= 0♢ 1000000\n    - [-0.5]\u003csub\u003e反\u003c/sub\u003e= 1♢ 0111111\n- 补码表示法\n    - [X]\u003csub\u003e补\u003c/sub\u003e\n    - 正号 0\n    - 负号 1\n    - 负数的补码则末尾+1\n    - 正数与原码反码相同\n    - 补码0有唯一编码\n    - [+0]\u003csub\u003e补\u003c/sub\u003e=   0 0000000\n    - [-0]\u003csub\u003e补\u003c/sub\u003e=   0 0000000\n    - [+1]\u003csub\u003e补\u003c/sub\u003e=   0 0000001\n    - [-1]\u003csub\u003e补\u003c/sub\u003e=   1 1111111\n    - [+127]\u003csub\u003e补\u003c/sub\u003e= 0 1111111\n    - [-127]\u003csub\u003e补\u003c/sub\u003e= 1 0000001\n    - [+45]\u003csub\u003e补\u003c/sub\u003e=  0 0101101\n    - [-45]\u003csub\u003e补\u003c/sub\u003e=  1 1010011\n    - todo 小数点这里的公式不对了??\n    - [+0.5]\u003csub\u003e补\u003c/sub\u003e= 0♢1000000\n    - [-0.5]\u003csub\u003e补\u003c/sub\u003e= 1♢1000000\n- 移码表示法\n    - 机器字长n，规定偏移量2\u003csup\u003en-1\u003c/sup\u003e\n    - 常用语浮点数中的阶码\n    - X 纯整数，则[X]\u003csub\u003e移\u003c/sub\u003e = 2\u003csup\u003en-1\u003c/sup\u003e+X(-2\u003csup\u003en-1\u003c/sup\u003e ≤ X ≤ 2\u003csup\u003en-1\u003c/sup\u003e)\n    - X 纯小数，则 [X]\u003csub\u003e移\u003c/sub\u003e = 1+X(-1≤X≤1)\n    - 移码是补码的符号位取反\n    - [+0]\u003csub\u003e移\u003c/sub\u003e=    0 0000000 =\u003e 1 0000000\n    - [-0]\u003csub\u003e移\u003c/sub\u003e=    0 0000000 =\u003e 1 0000000\n    - [+1]\u003csub\u003e移\u003c/sub\u003e=    0 0000001 =\u003e 1 0000001\n    - [-1]\u003csub\u003e移\u003c/sub\u003e=    1 1111111 =\u003e 0 1111111\n    - [+127]\u003csub\u003e移\u003c/sub\u003e=  0 1111111 =\u003e 1 1111111\n    - [-127]\u003csub\u003e移\u003c/sub\u003e=  1 0000001 =\u003e 0 0000001\n    - [+45]\u003csub\u003e移\u003c/sub\u003e=   0 0101101 =\u003e 1 0101101\n    - [-45]\u003csub\u003e移\u003c/sub\u003e=   1 1010011 =\u003e 0 1010011\n    - todo 后续这个表达方法\n    - [+0.5]\u003csub\u003e移\u003c/sub\u003e= \n    - [-0.5]\u003csub\u003e移\u003c/sub\u003e=  \n\n- 机器字长为0时各种码制表示的带符号数范围todo\n\n| 码制 | 定点整数 | 定点小数 |\n| 原码||| \n| 反码||| \n| 补码||| \n| 移码||| \n\n- 奇偶校验码 Parity Codes\n- 海明码 Hamming Code\n- 循环冗余校验码 Cyclic Redundancy Check\n\n### 存储系统\n\n          / CPU内部通用寄存器 \\\n         /        Cache       \\\n        /       主存储器        \\\n       /       联机磁盘存储器     \\\n      /      脱机光盘、磁盘存储器   \\\n\n- 内存：主存\n- 外存：辅存，磁盘，磁带，光盘\n- 可编程只读存储器，厂家一次性写入，写入后不可再更改\n- 替换算法\n    - 随机替换算法：随机发生器产生一个替换的块号，将该块替换出去\n    - 先进先出算法：最先进入Cache的信息块替换出去\n    - 近期最少使用算法：最近少用的Cache中的信息块替换出去\n    - 优化替换算法。必须先执行一次程序，统计Cache替换情况，并为第二次提供参考信息来替换\n### 中断\n    - 中断信号线法\n    - 中断软件查询法\n    - 菊花链法\n    - 总线仲裁法\n    - 中断向量表法\n### 总线\n    - 数据总线\n    - 地址总线Address Bus，AB\n        - 单向，决定CPU最大寻址能力\n    - 控制总线\n        - 传送控制信号\n        - 时序信号\n        - 状态信息\n    - ISA总线\n    - EISA 总线\n    - PCI总线\n    - PCI Express 总线：PCI-E\n    - 前端总线\n    - RS-232C\n    - SCSI总线\n    - SATA\n    - USB\n    - IEEE-1394\n    - IEEE-488总线\n\n### 计算机安全\n    - 美国国防部与国家标准局《可信计算机系统评估准则》 TCSEC\n    - 加拿大《可信计算机产品评估准则》 CTCPEC\n    - 美国《联邦(最低安全要求)评估准则》 FC\n    - 欧盟 《信息技术安全评估准则》 ITSEC\n    - 美国《信息技术安全通用评估准则》CC标准，ISO为国际标准\n\n 典型安全威胁\n|威胁|说明|\n|---|---|\n|授权侵犯||\n|拒绝服务||\n|窃听||\n|信息泄露||\n|截获/修改||\n|假冒||\n|否认||\n|非法使用||\n|人员疏忽||\n|完整性破坏||","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveaba%2Fsoft-exam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fveaba%2Fsoft-exam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveaba%2Fsoft-exam/lists"}