2025年下半年软件设计师下午真题及参考答案_第1页
2025年下半年软件设计师下午真题及参考答案_第2页
2025年下半年软件设计师下午真题及参考答案_第3页
2025年下半年软件设计师下午真题及参考答案_第4页
2025年下半年软件设计师下午真题及参考答案_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2025年下半年软件设计师下午练习题及参考答案一、数据流图与数据字典【试题1】阅读下列说明与图示,回答问题1至问题4。【说明】某市“智慧停车”平台拟升级,新增“错峰共享”功能:私人车位业主可在平台发布空闲时段,周边车主可预约并驶入。平台需验证业主身份、车位产权、车辆牌照,完成在线支付后生成动态二维码,道闸扫码抬杆。支付中心与银行采用HTTPS双向证书校验;道闸厂商提供SDK,接口以JSON形式返回0/1表示抬杆成功/失败。平台还需向市交通局实时上传停车记录,交通局只接收Kafka消息,格式为Avro模式。【图示】图11顶层数据流图(未给出,考生需自行补全0层、1层)外部实体:E1业主、E2车主、E3支付中心、E4道闸厂商、E5市交通局主要加工:P1身份验证、P2车位发布、P3预约管理、P4订单管理、P5支付校验、P6二维码生成、P7抬杆控制、P8数据上报【问题1】(4分)根据说明,将图11中缺失的0层数据流补充完整,要求给出数据流名称、起点、终点,至少写出4条。【答案】1.车位空闲时段→E1→P22.预约请求→E2→P33.支付结果→P5→E34.抬杆指令→P7→E4【问题2】(3分)数据字典中“动态二维码”条目包含哪些数据项?写出3项即可。【答案】二维码编号、有效截止Unix时间戳、车位编号哈希(SHA256前8字节)【问题3】(4分)P7抬杆控制加工内部出现“接口返回1但道闸未抬”异常,请用50字以内说明在数据流图中如何增加异常数据流,并给出该数据流名称。【答案】增加“抬杆异常通知”数据流,起点P7,终点E4,用于触发SDK重试或人工干预。【问题4】(4分)市交通局要求Kafka消息在500ms内送达,若网络抖动导致重试,请说明在数据字典中应对哪个数据项设置约束,并给出约束表达式。【答案】对“消息发送时间戳”设置约束:current_timestamp–msg_timestamp≤500ms。二、数据库设计【试题2】阅读下列说明,回答问题1至问题3。【说明】某电商“秒杀”系统采用MySQL8.0,商品表items(item_id,stock,…),订单表orders(order_id,user_id,item_id,quantity,status,create_time,…)。高并发下需保证库存扣减与订单写入原子性,且不允许超卖。【问题1】(5分)给出一种基于乐观锁的库存扣减SQL,要求单行更新且返回受影响行数,若更新失败则重试,写出完整语句。【答案】UPDATEitemsSETstock=stock–?WHEREitem_id=?ANDstock–?>=0;【问题2】(4分)若采用Redis+Lua脚本预扣库存,再异步落库,请写出Lua脚本核心片段(仅含库存判断与扣减)。【答案】localkey=KEYS[1]localqty=tonumber(ARGV[1])localcurr=tonumber(redis.call('GET',key)or0)ifcurr<qtythenreturn1endredis.call('DECRBY',key,qty)returncurr–qty【问题3】(6分)orders表数据量10亿行,需按user_id分库分表,采用雪花算法生成order_id。请说明:(1)order_id哪些位段用于分片路由;(2)若扩容至32库×32表,如何平滑迁移,给出2步关键操作。【答案】(1)取雪花算法41位时间戳后的10位作为分库键,再取随后5位作为分表键。(2)步骤1:在线双写,新数据同时写入旧节点与影子节点;步骤2:对比校验后切换读流量,再下线旧节点。三、UML建模【试题3】阅读下列说明与图,回答问题1至问题3。【说明】某跨境支付系统支持“收单”“退款”“结算”三类业务。系统采用领域驱动设计,识别出聚合根:Transaction、SettlementBatch、Refund。【图示】图31类图(节选)Transaction1—RefundSettlementBatch1—Transaction【问题1】(3分)在类图中补充“Refund”对“Transaction”的限定符,使一个交易最多只能有一次成功退款,写出限定符名称及类型。【答案】限定符:status,类型:RefundStatusEnum,值=SUCCESS唯一。【问题2】(4分】画出“收单成功后30分钟内可全额退款”状态机图,要求包含状态、触发事件、监护条件。【答案】状态:Created→Paid→Refunding→Refunded触发:t0=pay_success,t1=refund_apply,t2=refund_success监护条件:[now–pay_time≤30min]【问题3】(4分)若采用事件风暴,识别出“结算完成”领域事件,请写出事件名称、发布聚合根、消费聚合根。【答案】事件:SettlementCompleted;发布:SettlementBatch;消费:Transaction(更新settlement_id)。四、数据结构与算法【试题4】阅读下列说明,回答问题1至问题3。【说明】某短视频推荐系统需实时计算用户兴趣向量,维度512,每秒10万QPS,要求99线延迟<50ms。【问题1】(5分】给出一种内存布局,使向量点积计算对CPUCache友好,说明结构体定义及对齐方式。【答案】structVec512{floatv[512];}__attribute__((aligned(64)));数组连续存放,512×4B=2048B,跨32个CacheLine,对齐64B避免falsesharing。【问题2】(5分)采用SIMD指令集AVX512,写出内联函数计算两个Vec512的点积,要求使用FMA。【答案】inlinefloatdot512(constVec512&a,constVec512&b){__m512sum=_mm512_setzero_ps();for(inti=0;i<512;i+=16){__m512va=_mm512_load_ps(&a.v[i]);__m512vb=_mm512_load_ps(&b.v[i]);sum=_mm512_fmadd_ps(va,vb,sum);}return_mm512_reduce_add_ps(sum);}【问题3】(5分)若向量稀疏度90%,给出一种压缩存储格式及解压算法,使得点积耗时<非稀疏1.5倍。【答案】格式:CSRlike,存(index,value)对,按index升序;解压:双指针遍历,若index相等则乘积累加,复杂度O(nnz)。五、操作系统与网络【试题5】阅读下列说明,回答问题1至问题3。【说明】某云原生网关基于Envoy,采用eBPF做socket层加速,将HTTP1.1报文直接转发至后端Pod,绕过内核TCP协议栈。【问题1】(4分)给出eBPF程序attach的2种钩子点名称,并说明各自作用。【答案】1.BPF_PROG_TYPE_SK_MSG:拦截socket层sendmsg,实现零拷贝转发;2.BPF_PROG_TYPE_CGROUP_SOCK_ADDR:在connect时重写目标IP端口,实现透明代理。【问题2】(4分)若后端Pod缩容,连接需优雅迁移,请说明如何用eBPFmap保存socket状态,并给出map类型及键结构。【答案】map类型:BPF_MAP_TYPE_SOCKHASH;键:struct{__u32sip,dip;__u16sport,dport;}四元组。【问题3】(4分)当网关侧收到RST报文时,需向客户端发送502,说明在eBPF程序中如何区分该RST来自后端而非客户端。【答案】检查skb>mark字段,若mark&0x1000为真则来自后端,触发502响应;否则透传。六、软件架构设计【试题6】阅读下列说明,回答问题1至问题3。【说明】某银行核心系统拟从集中式COBOL大型机迁移至分布式微服务,要求TPS提升至1万,事务一致性达到ACID,支持异地双活。【问题1】(5分)给出一种基于Saga的事务编排方案,使“转账”业务涉及3个微服务(余额、流水、通知)仍满足最终一致,要求画出编排图并写出补偿事务。【答案】编排:1.扣减余额(T)→2.写入流水(T)→3.发送通知(T);补偿:3'.撤销通知(C)→2'.删除流水(C)→1'.回补余额(C)。【问题2】(4分)若采用SeataAT模式,写出全局事务ID的生成策略,并说明如何防止分支事务悬挂。【答案】策略:Snowflake+机房号2位;防悬挂:分支注册时加全局锁,若全局事务已回滚则拒绝注册。【问题3】(4分)异地双活距离800km,网络RTT40ms,如何保证余额查询读到最新数据,给出2种机制并对比优缺点。【答案】机制A:读写均走主库,强一致,延迟40ms,吞吐受限;机制B:读本地只读库,写后同步,采用PacificA协议,RPO=0,RTO<1s,但实现复杂。七、安全性与可靠性【试题7】阅读下列说明,回答问题1至问题3。【说明】某医疗影像AI系统部署在私有云,需通过HIPAA审计,数据包含DICOM影像及患者PHI。【问题1】(4分)给出一种端到端加密方案,使影像在传输、静态、内存中均加密,写出加密层级及算法。【答案】传输:TLS1.3+AES256GCM;静态:LUKSv2+XTSAES512;内存:IntelSGX+AES128密封密钥。【问题2】(4分)若GPU显存残留患者影像,给出一种清除方法,并说明为何cudaMemset不足以通过审计。【答案】方法:使用cudaLaunchHostFunc注册回调,在流完成后执行3次随机覆写再释放;原因:cudaMemset可能被编译器优化跳过,审计要求可验证清除。【问题3】(4分)系统需支持医生在2分钟内下载3GB影像,给出一种加速下载机制并计算理论最小带宽。【答案】机制:HTTP/3+QUIC+多路复用+前端CDN预热;最小带宽:3×8Gb/120s=200Mb/s。八、案例分析【试题8】阅读下列说明,回答问题1至问题4。【说明】某省“一网通办”系统上线3个月后,用户反馈高频事项办理页面平均打开6s,远超2sSLA。运维监控发现:1.政务外网到阿里云CDN首包1.2s;2.静态资源1.8s;3.后端3次串行RPC平均各1s;4.数据库慢查询0.5s。【问题1】(4分)用80字以内说明最应优先优化的瓶颈,并给出依据。【答案】串行RPC累计3s占比50%,且可并行化,收益最大。【问题2】(4分)给出一种并行化方案,使RPC总耗时降至1.2s,要求写出伪代码并说明线程池参数。【答案】CompletableFuture[]fs={rpc1(),rpc2(),rpc3()};CompletableFuture.allOf(fs).join();线程池:core=50,max=100,队列=SynchronousQueue,拒绝策略=CallerRuns。【问题3】(4分)若CDN缓存命中率仅70%,给出2种提升策略。【答案】1.增加版本哈希指纹,强制长期缓存;2.对HTML使用stale

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论