数据结构:算法的基石
数据结构是软件工程考研专业课的“必考项”,占比常达30%-40%。核心内容包括:线性结构(数组、链表、栈、队列)、树与二叉树(遍历、BST、AVL、红黑树)、图(DFS/BFS、最短路径、最小生成树)、查找(哈希表、二叉排序树)、排序(快排、归并、堆排)。
高频考点:
- 用递归与栈实现二叉树非递归遍历
- Dijkstra算法与Floyd算法的对比与实现
- B+树在数据库索引中的应用(如MySQL InnoDB)
- 红黑树在Java HashMap中的冲突处理机制
【典型真题】(2024·华中科技大学)
设一棵二叉树的中序遍历序列为[3,1,4,0,5,2,6],后序遍历序列为[3,4,1,5,6,2,0],请画出该二叉树,并给出其先序遍历序列。
解析:后序最后一个为根节点0;中序中0左侧[3,1,4]为左子树,右侧[5,2,6]为右子树;递归构建……最终先序:[0,1,3,4,2,5,6]
操作系统:系统思维的训练
操作系统是理解“软件如何与硬件协同”的核心课程,常考内容包括:进程管理(PCB、调度算法、PV操作)、内存管理(分页/分段、页表、缺页中断)、文件系统(FCB、索引节点、磁盘调度)、死锁(银行家算法、死锁检测)。
重点模型:
- 生产者-消费者问题:用信号量实现缓冲区同步
- 读者-写者问题:读写互斥、写写互斥
- 哲学家进餐问题:避免死锁的五种策略(奇偶编号、资源分级等)
- 虚拟内存:页面置换算法(FIFO、OPT、LRU)的优缺点对比
? 联系实际:Linux内核的CFS调度器如何体现“公平”与“响应时间”平衡?Android的Binder机制与进程通信有何异同?
软件工程原理:工程化思维的体现
软件工程原理考查考生是否具备“系统级开发能力”,内容包括:软件生命周期模型(瀑布、迭代、敏捷、DevOps)、需求工程(用例图、用户故事)、设计模式(单例、工厂、观察者)、软件测试(黑盒/白盒、单元测试、自动化测试)、项目管理(WBS、甘特图、关键路径)。
核心考点:
- 用UML绘制类图、顺序图(如电商系统订单流程)
- Scrum框架中Sprint、Backlog、Daily Scrum的作用
- RESTful API设计原则(资源、状态转移、无状态)
- CI/CD流水线的典型工具链(GitLab CI、Jenkins、Docker)
【案例分析】(2024·浙江大学)
某在线教育平台需支持万人并发直播,采用微服务架构。请分析其可能遇到的性能瓶颈,并提出优化方案。
参考要点:
- 瓶颈:数据库连接池耗尽、消息队列积压、CDN缓存失效
- 优化:读写分离、分库分表(ShardingSphere)、Redis集群、Kafka分区扩展
- 架构升级:边缘计算+边缘节点缓存直播流
数据库系统:数据管理的基石
数据库常作为专业课组成部分,考查内容包括:关系模型(ER图→关系模式)、SQL语言(增删改查、嵌套查询、聚合)、范式理论(1NF-BCNF)、事务与并发控制(ACID、隔离级别、锁协议)、索引与查询优化。
高频题型:
- 根据事务调度判断串行性、可串行性
- PL协议下加锁顺序对死锁的影响
- B+树索引的插入/删除操作维护
- 用SQL实现“查询选修3门以上课程的学生姓名及选课门数”
? 关联实际:MySQL的InnoDB引擎如何通过MVCC实现RR隔离级别?TiDB分布式数据库如何解决CAP权衡?