科技公司XX软件开发工程师实习报告_第1页
科技公司XX软件开发工程师实习报告_第2页
科技公司XX软件开发工程师实习报告_第3页
科技公司XX软件开发工程师实习报告_第4页
科技公司XX软件开发工程师实习报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

科技公司XX软件开发工程师实习报告一、摘要

2023年7月3日至2023年9月17日,我在XX科技公司担任软件开发工程师实习生,负责核心模块的迭代开发与测试优化。通过参与XX系统V2.0重构,完成15个功能模块的编码实现,其中3个模块采用微服务架构,将接口响应时间从280ms缩短至120ms,QPS提升至8000。应用Git进行分支管理,累计提交代码297次,解决线上Bug42个。熟练运用Java、Python及SpringBoot框架,结合JMeter进行性能压测,形成3份可复用的性能优化方案,涉及缓存策略调整与数据库索引优化,通过应用将系统吞吐量提高35%。

二、实习内容及过程

实习目的主要是想把学校学的理论知识跟实际工作结合起来,看看自己在真实项目里能干成啥,顺便熟悉一下软件开发在公司里的完整流程。

实习单位是家做企业软件的科技公司,主要搞B2B平台的开发和运维,团队规模不大但氛围挺积极,大家平时交流技术问题挺多。

实习内容开始的时候主要是熟悉项目代码库和开发环境,跟着导师一起参与了一个小功能的开发,是给XX系统加一个数据导出功能。用Java写后端逻辑,SpringBoot框架,前端是React。刚开始写SQL查询的时候有点懵,因为数据表关联挺复杂的,跑个查询要半分钟,导师教我用到了SQL的EXPLAIN分析执行计划,还建议加个缓存层,最后用Redis把查询结果缓存起来,导出时间直接从45秒缩短到3秒多。这个过程中接触了Git的分支管理,我们团队用Gitflow模式,我负责开发完自己那块儿功能后,要自己合并到develop分支,合并过程踩了不少坑,因为之前没注意别的分支有改动,导致好几次冲突,最后花了几个小时才弄好,之后就开始注意看MergeRequest的对比差异。

后来参与了XX系统V2.0的一个模块重构,主要是把之前写的单体应用拆分成微服务,我用Python写了一个订单服务的API接口,服务发现用的是Nacos,感觉分布式环境下的日志排查比单体应用麻烦多了,有时候一个请求跨好几个服务,看日志得用SkyWalking这种工具才能串起来,刚开始有点慢,后来慢慢就熟悉了。重构过程中还遇到一个数据库连接池的问题,高峰期请求多的时候,发现连接数一下子用光了,查了资料才知道是HikariCP的配置太小了,跟导师商量后把最大连接数调大了,再配合线程池的优化,系统的并发能力确实强了不少。

实习期间最大的挑战是第一次接触微服务架构,之前都是写单体应用,对服务间的通信、事务一致性、分布式锁这些概念都不太懂,特别是有一次因为没处理好服务间的依赖关系,导致线上出现了数据不一致的问题,虽然问题不大,后来手动修复了,但挺后怕的,之后就开始系统学习CAP理论、BASE理论这些,还看了不少关于分布式事务的解决方案,比如TCC、Saga这些。另一个困难是性能调优,有一次系统压力测试,发现某个接口响应时间特别长,用JMeter压测的时候,CPU和内存都爆了,导师教我用到了Arthas这个Java诊断工具,通过动态代理修改方法实现了一些临时的优化,最后定位到是某个第三方库太耗资源了,跟技术选型那边提了建议,后面版本换了个轻量级的库,效果挺明显的。

实习成果的话,自己写的订单服务上线后,系统的并发能力确实提升了,压测数据从之前的5000QPS提到了8000QPS,接口平均响应时间也降到了120ms左右。参与的数据导出功能现在也稳定运行着,日均导出请求有几百次,用户反馈说比原来快多了。另外整理了一份关于分布式系统性能优化的文档,里面写了几个常用的排查思路和工具使用方法,导师看了还挺满意的。

这次实习让我对软件开发的工作流程有了更直观的认识,从需求分析、技术设计、编码实现到测试上线,每个环节都有不少细节要注意。最大的收获是学会了怎么用一些工具解决实际问题,比如Git的冲突解决、Arthas的动态诊断、SkyWalking的分布式链路追踪,这些都是书本上没写明白的。思维上感觉比以前更踏实了,以前写代码容易想当然,现在会多考虑各种边界情况和异常处理,也更能理解为什么大公司要搞这么复杂的技术架构,为了的就是系统的稳定性和可扩展性。

实习中也发现了一些问题,比如我们部门的管理方式有点太松散了,平时开会不固定时间,邮件沟通也经常石沉大海,有时候想问导师问题得等他方便才行,这有点影响效率。另外培训机制也不太完善,虽然给了几份项目文档,但都是半成品,很多设计思路都没写清楚,需要自己花很多时间去猜和试。岗位匹配度上,我主要还是做后端开发,但有时候也被安排去做一些运维相关的工作,感觉自己的技能树拓展得有点乱。

改进建议的话,管理上可以强制规定每周一必须开个短会同步进度,邮件要设置自动回复,说好啥时候回复,不然信息滞后真的会耽误事儿。培训方面,能不能把一些核心的设计文档补全,或者搞个新人引导计划,带着我们跑几遍项目流程,这样效率会高很多。岗位匹配度上,能不能让实习生根据自己的兴趣分一下方向,或者多给一些轮岗的机会,让我知道自己到底擅长哪块。

这次经历让我对未来的职业规划有点想法了,感觉后端开发还是我最喜欢的,特别是微服务和分布式系统这块儿,以后想继续深入研究,但也意识到自己现在技术深度还远远不够,得接着学,比如数据库底层、网络协议这些,不然以后真的干不过那些老工程师。

三、总结与体会

这8周,从2023年7月3日到9月17日,在XX科技公司的经历,让我对软件开发这个行当有了实打实的感受,不再只是书本上的概念和课堂上的代码。实习的价值在于,我把学校学到的设计模式、数据结构这些理论,真真切切用到了项目里,比如在重构XX系统V2.0订单服务时,用到SpringCloud的Nacos服务发现和配置中心,还有用Redis缓存优化查询性能,把接口响应时间从280ms拉到120ms,这个数据不是瞎说的,是JMeter压测出来的,这让我感觉,原来理论联系实际,真的能产生力量,这种从无到有,或者说从不好到变好的成就感,是实习最大的价值闭环。

这次实习也让我更清楚自己的职业规划了。之前有点迷茫,想前后端都试试,但在这边做后端,特别是接触微服务架构和分布式系统后,发现这才是我真正感兴趣的点。比如我遇到的那个服务间通信导致的数据不一致问题,虽然最后解决了,但让我深刻体会到CAP理论在现实世界里的权衡,这种挑战让我觉得学习更有劲头了。我打算接下来把精力更多放在这块儿,可能会去系统学习一下Kubernetes和更深入地理解分布式事务的各种方案,甚至考虑去考个云原生相关的证书,比如CKA,把实习中遇到的问题和学到的知识系统化,让它们变成我未来求职或者继续深造的资本。

从学生到职场人的转变,确实挺大的。以前写代码,觉得跑通就行,现在不一样了,要考虑成本、效率、稳定性,甚至要考虑运维能不能轻松部署。记得刚开始接手XX系统数据导出功能时,导师说性能要优化,我一开始有点懵,不知道从哪儿下手,后来自己查资料,用Arthas动态调整SQL执行参数,虽然过程挺曲折,调了好几次才找到最优值,但最后效果出来了,用户也满意了,这种感觉就是责任感的体现。遇到技术难题时,压力是肯定有的,但慢慢发现,压力也能逼自己进步,学会在压力下分析问题、寻找解决方案,这种抗压能力,我觉得比学会某个具体技术更重要。

看着自己参与开发的系统上线运行,处理各种线上问题,也让我对行业趋势有了点敬畏。现在大家都在谈云原生、大数据、AI结合,感觉技术迭代太快了,不变就得被淘汰。这次实习虽然时间不长,但让我意识到,持续学习是唯一的出路。比如我们用的SpringBoot,版本更新很快,新的特性、性能优化都不少,平时就得关注这些动态。行业里微服务、Serverless这么火,肯定有它的道理,得去理解它们背后的设计哲学,这样才能跟上节奏。这次经历让我明白,实习不是终点,而是新的起点,它让我更真切地感受到技术世界的广阔和挑战,也激发了我更强的学习动力。

四、致谢

感谢XX科技公司给我这次实习机会,让我能在实际项目中学习

温馨提示

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

评论

0/150

提交评论