鲷鱼猫在腾讯的讨饭经历

先来正经的实习记录

实习单位:腾讯公司

实习部门:企业微信研发部

实习时间:2024年7月1日 - 2024年8月30日

一、实习背景及目的

此次为期两个月的实习,我有幸进入了腾讯公司企业微信研发部担任实习生。企业微信是腾讯公司开发的一款面向企业用户的办公与通讯工具。实习的主要目的是通过参与实际项目,提升我的编程技能、团队协作能力以及对大规模系统的理解和应用能力。这不仅能为我的职业生涯打下坚实的基础,还能让我更好地理解企业级应用的开发和维护。

二、实习内容

7.1 - 7.10

  1. 环境配置与工具使用

在实习的初期,我的主要任务是搭建开发环境和熟悉相关工具。这包括下载和安装VSCode、Office365,配置打印机,申请MNET权限和云服务器。具体步骤如下:

  • 下载VSCode和Office365: 安装这些基础工具是为了后续的代码编写和文档处理。

  • 配置打印机: 确保在需要打印文档时可以顺利进行。

  • 申请MNET权限: 由于初次申请访问权限时遇到权限问题,通过联系技术支持最终解决了问题。

  • 申请云服务器和DevCloud: 由于服务器权限问题,经历了一些波折,最终成功申请到需要的权限。

  • 配置SSH: 使用VSCode访问服务器文件夹,解决了vscode无法解析服务器输出内容的问题。

在克隆代码库的过程中,我遇到了递归拉取代码库慢的问题。通过逐步拉取子模块,最终解决了这个问题。这一阶段让我熟悉了公司内部的开发环境和工具使用,为后续的开发工作打下了基础。

  1. 学习框架与搭建Demo

接下来,我学习了公司内部使用的hikit框架,并搭建了一个简单的Demo,实现在服务器上运行基本的加减乘除操作。通过这个过程,我掌握了hikit框架的基本使用方法,并解决了许多实际操作中的问题。

随后,我又搭建了xmq和hiweb的Demo。xmq是公司内部使用的消息队列系统,而hiweb则是一个轻量级的Web框架。在搭建过程中,我遇到了一些路径依赖问题,通过查阅文档和咨询同事,最终成功解决了这些问题。这一过程不仅提高了我的动手能力,还让我对公司内部的技术框架有了更深入的理解。

7.11 - 7.15

  1. 开发流程与工具学习

为了更好地参与实际项目,我学习了protobuf的C++实现,并了解了企业微信的开发流程。这一过程让我掌握了protobuf的基本使用方法,并了解了如何在实际项目中应用。

在参与代码优化和模块拆分工作时,我遇到了proto对象析构时产生core的问题。通过分析代码和查阅资料,我发现这是由于proto依赖写得不合理引起的。为了解决这个问题,我完成了二十几个模块对象的proto依赖缺失问题的修复,并上线。通过这个过程,我不仅提高了代码的稳定性,还学会了如何解决复杂的技术问题。

7.16 - 8.11

看奥运会、看小说、看公司文档摸鱼

8.12 - 8.20

  1. 模块优化与工具开发

在实习的中期,我参与了多个模块的优化工作。首先,我完成了gaaliassvr模块的下线工作。通过查看监控和接口调用情况,我发现主调方的代码已经切换请求方,可以顺利下线该模块。这一过程让我学会了如何通过监控和日志分析系统的运行情况,并通过调整代码实现模块的平滑下线。

接下来,我扩充了GidLog工具,增加了用微信号、手机号、Vid查询Gid日志的功能,并完善了日志的输出格式。这个工具的开发和测试,进一步提高了我的动手能力和对日志系统的理解。

  1. 需求开发与自测

在这段时间里,我还参与了多个需求的开发和自测工作。首先,我编写了gidprofile新增身份证字段和实名修改的审核详情的读写接口,并完成了自测。随后,我又编写了实名展示页逻辑cgi,申请了存储读写接口apitest权限,并在个人docker上进行了测试。

在参与实名更改需求的评审会时,我学到了完整的需求评审流程,并熟悉了相关模块的代码逻辑。通过这些工作,我不仅提高了代码编写能力,还学会了如何进行需求评审和自测。

三、工作内容及收获

  1. 用Mock IP方法验证登录地区的封禁有效性

这是我在实习期间完成的第一个小需求。我的任务是设计一个开发方案,验证登录地区的封禁有效性。具体步骤如下:

背景: 需要确认某些域名在接入层封禁登录后,是否仍然可以被访问。

方案: 在测试docker中,针对提供的vid,使用mock IP的方法进行验证。

流程: 修改函数CheckCountryCanUseWework,将指定vid的IP地址改为对应的值,编译模块并在docker中自测。

通过这个项目,我学会了如何从零开始,了解客户端请求是如何在后台被处理的,如何使用patchbuild编译工具,在个人docker上进行测试,以及如何发布和上线代码。这一过程让我对企业微信的技术架构有了更深入的了解。

  1. Proto对象析构时产生core问题优化

在这个项目中,我解决了proto对象析构时产生的core问题。通过分析代码,我发现这是由于proto依赖写得不合理引起的。为了解决这个问题,我完成了二十几个模块对象的proto依赖缺失问题的修复,并上线。通过这个过程,我不仅提高了代码的稳定性,还学会了如何解决复杂的技术问题。

  1. 代码优化:拆分大文件gaauthserviceimpl.cpp

在这个项目中,我负责拆分gaauthserviceimpl.cpp文件。通过分析代码,我将其按接口功能分类,拆分成多个小文件。这不仅提高了代码的可读性和维护性,还减少了代码的耦合度。通过这个项目,我学会了如何进行代码优化和模块拆分。

  1. 模块优化:废弃gaaliassvr模块

在这个项目中,我负责废弃gaaliassvr模块。通过查看监控和接口调用情况,我发现主调方的代码已经切换请求方,可以顺利下线该模块。通过这个项目,我学会了如何通过监控和日志分析系统的运行情况,并通过调整代码实现模块的平滑下线。

  1. 工具开发:编写GidLog查询工具

在这个项目中,我扩充了GidLog工具,增加了用微信号、手机号、Vid查询Gid日志的功能,并完善了日志的输出格式。通过这个项目,我提高了动手能力和对日志系统的理解。

  1. 微信客服知识库写存储逻辑优化

在这个项目中,我优化了ImportWxAiIntent的逻辑,将CommitImportWxAiIntent逻辑挪到xmq,提高了写入数据的效率。通过这个项目,我学会了如何优化代码逻辑,提高系统的性能。

  1. 个人实名认证更改需求后台开发

在这个项目中,我参与了个人实名认证更改需求的开发工作。具体包括编写gidprofile新增身份证字段、实名修改的审核详情的读写接口和实名展示页逻辑,并完成了自测。通过这个项目,我提高了代码编写能力和需求实现能力。

四、学习与成长

  1. 代码能力

通过阅读和学习企业微信后台代码,我掌握了工业代码的规范标准,学会了如何从日志开始排查问题,定位问题所在。在解决proto对象析构时产生的core问题时,我学会了如何分析和解决复杂的技术问题。

  1. 多人开发

在大型项目中,我学会了分模块协作,理解了一个模块的功能往往涉及其他模块,编译上线需要经过层层申请和审核,避免潜在的安全问题。在废弃gaaliassvr模块的项目中,我通过与其他组同事的协作,顺利完成了模块的下线工作。

  1. 技术解决方案

在实习期间,我接触了patchbuild编译工具、Linux开发常用命令、Protocol Buffer、RPC框架hikit、MQ、HiMon系统上报监测工具、日志、CI上线流程等。通过这些技术解决方案的学习和应用,我进一步提高了技术能力和解决问题的能力。

五、挑战与不足

  1. 初期基础问题

由于经验的不足,刚入手工作时经常遇到基础问题,如代码编写不安全、在云开发机执行不安全命令,缺乏排查问题的经验。在键哥和fitz哥的指导下,我逐渐掌握了安全编码和问题排查的方法。

  1. 多人协作

在gaaliassvr下线任务中,由于与其他组沟通不畅,导致进度拖延。在键哥和fitz哥的指导下,我学会了如何高效沟通,推进项目进度。在后续的项目中,我逐渐提高了与人沟通和团队协作的能力。

六、总结

在这两个月的实习中,我不仅在技术上得到了很大的提升,还学会了如何在大型项目中进行团队协作和高效沟通。这段经历让我对企业微信的后台系统有了深入的理解,也为我未来的职业发展打下了坚实的基础。感谢腾讯公司和企业微信研发部的各位同事对我的指导和帮助。

再上零碎的记忆

计算机人的学科素养

你有排查思路吗

当我问键哥一些报错信息的时候,键哥通常不会直接告诉我原因,而是引导我去思考,有可能是什么原因导致了错误。通过打印日志,查看机器的日志,查看每一步的运行是否符合预期;主动了解上下游代码的逻辑,比如读取一个配置文件,需要先访问一个配置客户端的单例,由他去查询配置文件,这是一种多模块分工的思想,如果不主动了解代码,那么后面的执行逻辑,大概也是不会了解的。

食堂

香蕉才是腾讯员工的工卡

广州国际媒体岗里,腾讯租了4层楼,算是一个小分部,里面有广研、微信读书、企业微信。食堂也只是承包了一半,自然食物也不会特别好,果腹即可。每顿饭都会有香蕉作为水果。

唯一的好处是,这边的牛肉正宗,都是鲜牛肉,量也多,简直是天地良心啊!!

健身房

又到了每周一度的练腿日

麻雀虽小,五脏俱全。健身房的器材很新,人也不算多。狠心靠着两个月的锻炼和吃吃吃,肌肉又涨了不少(肥肉也是😫)

麦当劳

楼下的麦当劳依旧保持着小时候的样子,有儿童乐园,可以举办小朋友的生日聚会,麦当劳还会专门给每个小朋友准备周边礼物。

86dbd23bd5742379d99bfed7e4bb9c6

艺术品

前有排泄物

忘记了是哪一天,一个大台子,上有一个正六面体,被搬了过来:

2312cedc7670652b1c2ded165725dcd

六个面分别是企业微信、qq邮箱、微信视频号、腾讯会议、还有两个没看到。每个面有8个插座,可能是象征着连接充电??

自他搬过来的时候,外面就包着这层塑料膜,让本就难堪的设计更加难看。后来物业人员又在八个角上加了红色的边,防止尖锐碰伤人。但还是没有把塑料膜撕掉。寓意着:屎山代码只会越堆越高,后人不敢动前面的臃肿的代码,于是在代码上继续加上层层补丁,所谓敏捷开发就变成了shit上加上shit。

真是艺术品。

image-20240909142744708

杂图

偷感鹅:

618838f2995f0b2d8f348800e80c53b

暴雨前的广州塔:

d1e1cabc1b4debbf9dabae184b6d45f

夜间从媒体岗看珠江:

e6d8575113bbfbf34293c2a797b2c5c

下班路:

f1512b6faf6f28c271767f17fa7a07d

和奶酪猫的周末

深圳和广州一个小时的高铁,我们交替住在奶酪猫的小窝和鲷鱼猫的小窝。有非常幸福的生活日常,吃吃玩玩。

详见奶酪猫的日记。