# SoftwareDesignerExam **Repository Path**: dinqb/SoftwareDesignerExam ## Basic Information - **Project Name**: SoftwareDesignerExam - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-09 - **Last Updated**: 2026-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 中级软件设计师考试(软考)代码题复习项目 ## 项目简介 本项目是针对中级软件设计师考试(软考)代码题部分的专项复习资料,涵盖 Java 程序设计核心知识点。每个模块包含完整可运行的示例代码、考点说明、关键概念和常见填空位置标注,帮助考生快速掌握考试重点。 ## 目录结构 ``` SoftwareDesignerExam/ ├── README.md # 项目说明文档 └── src/ └── javaprogramming/ # Java程序设计模块 ├── ThreadDemo.java # 多线程编程 ├── IOStream.java # 输入输出流 ├── CollectionDemo.java # 集合框架 ├── ExceptionDemo.java # 异常处理 ├── InheritanceDemo.java # 继承与多态 └── InterfaceDemo.java # 接口与抽象类 ``` ## 各模块考点总结 | 模块 | 文件名 | 核心考点 | 考试重要度 | |------|--------|----------|-----------| | **多线程编程** | ThreadDemo.java | Thread类继承、Runnable接口、synchronized同步、wait/notify通信、生产者-消费者模式 | ★★★★★ | | **输入输出流** | IOStream.java | 字节流/字符流、文件读写、缓冲流、序列化与反序列化 | ★★★★☆ | | **集合框架** | CollectionDemo.java | List/Set/Map使用、迭代器遍历、Comparable/Comparator排序 | ★★★★★ | | **异常处理** | ExceptionDemo.java | try-catch-finally、自定义异常、throws/throw、异常层次结构 | ★★★★☆ | | **继承与多态** | InheritanceDemo.java | 方法重写、动态绑定、向上转型、super关键字、构造顺序 | ★★★★★ | | **接口与抽象类** | InterfaceDemo.java | 接口定义、抽象类、区别对比、默认方法、多实现 | ★★★★★ | ## 使用说明 ### 编译 进入 `src` 目录编译所有 Java 文件: ```bash cd SoftwareDesignerExam/src javac javaprogramming/*.java ``` ### 运行 编译后运行各模块的 main 方法: ```bash # 多线程编程 java javaprogramming.ThreadDemo # 输入输出流 java javaprogramming.IOStream # 集合框架 java javaprogramming.CollectionDemo # 异常处理 java javaprogramming.ExceptionDemo # 继承与多态 java javaprogramming.InheritanceDemo # 接口与抽象类 java javaprogramming.InterfaceDemo ``` ### 一次性运行全部 ```bash cd SoftwareDesignerExam/src javac javaprogramming/*.java && \ java javaprogramming.ThreadDemo && \ java javaprogramming.IOStream && \ java javaprogramming.CollectionDemo && \ java javaprogramming.ExceptionDemo && \ java javaprogramming.InheritanceDemo && \ java javaprogramming.InterfaceDemo ``` ## 考试备考建议 ### 填空题应试技巧 1. **关注【填空考点】标注**:代码中所有 `【填空考点】` 标记的位置都是软考常考的填空位置 2. **记忆关键字**:synchronized、implements、extends、abstract、interface、transient 等是高频填空词 3. **理解方法名**:run()、start()、wait()、notify()、readLine()、compareTo()、compare() 等方法名常考 4. **注意返回值**:read()返回-1表示结束、readLine()返回null表示结束 ### 代码阅读题应试技巧 1. **看继承关系**:先确定类之间的继承和实现关系 2. **看构造顺序**:父类构造 -> 子类构造,静态代码块最先执行 3. **看多态调用**:编译看左(声明类型),运行看右(实际类型) 4. **看异常处理**:finally始终执行,子类异常在前 5. **看集合操作**:List有序可重复、Set不可重复、Map键值对 ### 重点知识速记 - **线程**:start()启动线程,synchronized同步,wait()释放锁 - **IO流**:字节流(InputStream/OutputStream),字符流(Reader/Writer),序列化(implements Serializable) - **集合**:ArrayList查询O(1)、LinkedList增删O(1)、HashSet去重靠hashCode+equals - **异常**:Checked异常必须处理,RuntimeException不强制,finally始终执行 - **继承**:单继承,super()必须在第一行,构造顺序父类先于子类 - **接口**:可多实现,方法默认public abstract,变量默认public static final ## 各排序算法复杂度对比表 | 排序算法 | 平均时间复杂度 | 最坏时间复杂度 | 最好时间复杂度 | 空间复杂度 | 稳定性 | |---------|--------------|--------------|--------------|-----------|--------| | 冒泡排序 | O(n²) | O(n²) | O(n) | O(1) | 稳定 | | 选择排序 | O(n²) | O(n²) | O(n²) | O(1) | 不稳定 | | 插入排序 | O(n²) | O(n²) | O(n) | O(1) | 稳定 | | 希尔排序 | O(n^1.3) | O(n²) | O(n) | O(1) | 不稳定 | | 快速排序 | O(nlogn) | O(n²) | O(nlogn) | O(nlogn) | 不稳定 | | 归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 | | 堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 | | 基数排序 | O(d(n+r)) | O(d(n+r)) | O(d(n+r)) | O(n+r) | 稳定 | > **注意**:快速排序是软考最常考的排序算法,掌握其分区思想和递归实现。