计算机科学与技术XX互联网公司软件工程师实习报告_第1页
计算机科学与技术XX互联网公司软件工程师实习报告_第2页
计算机科学与技术XX互联网公司软件工程师实习报告_第3页
计算机科学与技术XX互联网公司软件工程师实习报告_第4页
计算机科学与技术XX互联网公司软件工程师实习报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

计算机科学与技术XX互联网公司软件工程师实习报告一、摘要

2023年7月1日至2023年8月31日,我在XX互联网公司担任软件工程师实习生,负责后端服务开发与优化。通过参与电商平台订单处理模块重构,将API响应时间从480ms降低至120ms,吞吐量提升至原先的3.2倍,支撑日均10万QPS的业务峰值。核心工作包括使用Go语言实现高并发订单路由器,应用Redis集群缓存热点数据,并设计SQL分库分表方案解决单表数据量超5GB的性能瓶颈。期间熟练运用Docker容器化部署与Kubernetes动态扩缩容技术,编写自动化测试脚本覆盖核心业务逻辑,通过JMeter压测验证系统稳定性。提炼出分布式系统超时控制与资源弹性伸缩的标准化方法论,为后续同类项目提供可复用架构方案。

二、实习内容及过程

实习目的主要是将学校学的分布式系统、数据库优化等理论知识,落到实际业务里去,了解互联网公司真实的开发节奏和工程规范。实习单位是家做电商SaaS服务的公司,核心业务是帮中小企业搭建线上销售渠道,技术栈以Java、Go为主,后端系统普遍采用微服务架构,数据库层混合使用MySQL和MongoDB。

第13周主要熟悉团队的开发流程,跟着导师参与一个订单中心模块的迭代。这个模块当时遇到的问题是高并发时库存扣减超时,导致部分订单重复支付。我负责优化库存服务的Redis缓存命中率,通过分析业务日志发现热点商品缓存失效后重新查询DB的次数占比超过60%。于是设计了一个基于布隆过滤器的预加载策略,每天凌晨根据销售数据预测次日爆款,提前把这些商品信息塞进Redis。实施后缓存命中率达到92%,库存查询P99响应时间从280ms降到50ms。期间还学习了如何用Prometheus+Grafana监控分布式环境下的服务瓶颈,发现慢SQL主要是由于缺乏合理的索引。

第46周独立负责一个营销活动的后端开发,需求是支持用户领取优惠券后7天内自动抵扣订单金额。这个功能涉及用户行为追踪、定时任务调度、事务一致性三个难点。我选了Quartz做定时器,用Redis存储优惠券状态,但刚开始写的时候发现多线程修改优惠券余额会出现CAS失败问题。卡了两天后突然意识到得用Redis的Watch命令,配合Lua脚本原子化扣减操作。上线当天处理了8.6万次领取请求,系统稳定。这段经历让我明白分布式事务不能只靠数据库锁,还得结合缓存策略来兜底。

最后两周参与了一个旧系统的性能改造项目。该模块是公司最早用SpringMVC写的,代码耦合度特别高,线上TPS只能跑到1.2k。我重点重构了用户权限校验模块,原先每次请求都要查询3张关联表,改用JWT+Shiro框架后,通过本地缓存权限信息,接口耗时直接降了70%。不过改造过程中踩了不少坑,比如Shiro的AOP切面处理得不够优雅,导致部分接口鉴权失败,最后不得不回过头重写逻辑。领导看我写文档挺认真,还让我整理了JavaWeb性能优化的Checklist,现在回头看确实学到了不少工程实践经验。

实习期间遇到的最大挑战是第一次接触CQRS架构。团队某个报表服务因为聚合查询慢到离谱,DB表里5千万条数据跑一条JOIN语句就要1.5秒。导师让我用ES替代原生的PostgreSQL,但我对Elasticsearch的倒排索引原理一窍不通。为了啃这块硬骨头,我啃完了官方文档和两本《Elasticsearch权威指南》,还主动加了个师兄请教。最后通过分词优化和QueryDSL调优,报表查询速度提到了300ms以内。虽然过程挺折腾,但感觉收获特别大。这段经历让我意识到技术深度和广度同样重要。

实习单位管理上觉得有点混乱,比如需求评审会经常临时加人,开发计划也不太稳定,有时候一个功能需求前一天还确定的技术方案,第二天突然要改架构。另外培训机制也不完善,新人上手全靠导师带,知识沉淀做得不好,有些工具链的使用规范都没统一文档。岗位匹配度上,虽然主要做Java开发,但接触Go的机会不多,感觉对底层原理的理解还是得加强。建议公司可以搞个内部技术Wiki,把常用的中间件配置、踩过的坑都记下来。或者定期组织技术分享会,让不同组的人多交流,比如我们可以搞个微服务治理专题,讨论服务熔断、配置中心这些实践问题。

三、总结与体会

这8周实习像把理论课上的分布式系统、数据库原理这些知识点,硬生生摁进了实际业务场景里。7月15号接手那个订单路由器重构任务时,对着几千行遗留代码,真有点懵。后来发现通过画时序图分析请求流转,再对照压测结果里的瓶颈指标,问题就变得清晰了。比如发现一个慢SQL根本原因,是业务方硬编码拼接SQL语句导致的,改用MyBatis动态SQL后查询时间直接从1.8秒降到80ms。这种把抽象理论变成可量化的性能指标的体验,是学校实验室里永远给不了的。

实习最大的收获是搞明白了工程实践跟学术研究的差别。以前觉得系统高可用就是加个Redis集群就完事了,现在才知道监控告警的阈值设定、熔断器的阈值计算,都得结合业务QPS波动来调。比如8月3号负责的优惠券抵扣功能上线前,用JMeter模拟10万并发压测,发现内存占用曲线在8.6万QPS时开始陡峭上升。这时候就得提前设置好Hystrix的舱壁隔离阈值,把线程池大小调到最优,而不是等到线上挂了再回溯。这种对系统容量的敬畏感,让我开始关注像CAP理论、BASE架构这些更底层的知识。

对职业规划的影响挺直接的。现在再看招聘要求里“精通SpringCloud”、“熟悉Kubernetes”这些词,不再只是觉得高大上,而是知道该怎么去验证自己的掌握程度。比如可以拿LeetCode上那些分布式系统设计的题目来练手,或者去考个AWS/GCP的云认证。8月20号的时候还主动找导师聊了次,他说感觉我对系统优化的敏感度上来了,建议我下学期可以系统学学性能分析工具。这种被认可的感觉,确实挺激励人继续深挖技术的。

行业趋势上明显感觉到,现在做后端不能光埋头写代码了,还得懂点DevOps。我们组搞的那个自动化部署脚本,用了Jenkins+Ansible,但一开始装配置各种不顺,后来发现社区版本跟公司自研环境总有兼容问题,最后还是导师教我用Dockerfile模板标准化环境。现在看那些大厂的技术分享,无服务器架构、Serverless这些词越来越火,感觉以后后端开发跟函数计算、API网关的结合会越来越紧密。这8周用Redis做缓存淘汰策略的经历,让我特别想深入了解缓存一致性协议,打算下学期就啃《缓存一致性设计》那本书。

从学生到职场人的心态转变挺明显的。以前遇到难题就想问导师,现在会先自己查文档、看源码,甚至去StackOverflow上找相似问题的解决方案。比如7月底那个权限模块重构,为了把Shiro的鉴权逻辑写得更优雅,连续一周天天加班到10点,最后用AOP动态代理解决后,那种成就感真的挺难忘的。虽然现在觉得加班有点离谱,但至少学到了怎么在高压下保持冷静。这种责任感提升,可能是比技术本身更宝贵的财富。后续打算把实习期间写的那些优化笔记,整理成技术博客,也算是对这段经历最好的沉淀。

四、致谢

8周的实习时光说长不长,说短不短。这段经历让我对计算机专业的理解,从书本上的概念,变成了能摸到、能量化的实际系统。真心感谢团队里的导师,那段时间遇到技术难题时,他总能一针见血地指出问题所在,而且从不吝啬分享他沉淀的经验。比如那个Redis缓存预热的问题,要不是他提醒我考

温馨提示

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

评论

0/150

提交评论