人生第一次实习——腾讯WXG企业微信
鲷鱼猫在腾讯的讨饭经历
先来正经的实习记录
实习单位:腾讯公司
实习部门:企业微信研发部
实习时间:2024年7月1日 - 2024年8月30日
一、实习背景及目的
此次为期两个月的实习,我有幸进入了腾讯公司企业微信研发部担任实习生。企业微信是腾讯公司开发的一款面向企业用户的办公与通讯工具。实习的主要目的是通过参与实际项目,提升我的编程技能、团队协作能力以及对大规模系统的理解和应用能力。这不仅能为我的职业生涯打下坚实的基础,还能让我更好地理解企业级应用的开发和维护。
二、实习内容
7.1 - 7.10
- 环境配置与工具使用
在实习的初期,我的主要任务是搭建开发环境和熟悉相关工具。这包括下载和安装VSCode、Office365,配置打印机,申请MNET权限和云服务器。具体步骤如下:
下载VSCode和Office365: 安装这些基础工具是为了后续的代码编写和文档处理。
配置打印机: 确保在需要打印文档时可以顺利进行。
申请MNET权限: 由于初次申请访问权限时遇到权限问题,通过联系技术支持最终解决了问题。
申请云服务器和DevCloud: 由于服务器权限问题,经历了一些波折,最终成功申请到需要的权限。
配置SSH: 使用VSCode访问服务器文件夹,解决了vscode无法解析服务器输出内容的问题。
在克隆代码库的过程中,我遇到了递归拉取代码库慢的问题。通过逐步拉取子模块,最终解决了这个问题。这一阶段让我熟悉了公司内部的开发环境和工具使用,为后续的开发工作打下了基础。
- 学习框架与搭建Demo
接下来,我学习了公司内部使用的hikit框架,并搭建了一个简单的Demo,实现在服务器上运行基本的加减乘除操作。通过这个过程,我掌握了hikit框架的基本使用方法,并解决了许多实际操作中的问题。
随后,我又搭建了xmq和hiweb的Demo。xmq是公司内部使用的消息队列系统,而hiweb则是一个轻量级的Web框架。在搭建过程中,我遇到了一些路径依赖问题,通过查阅文档和咨询同事,最终成功解决了这些问题。这一过程不仅提高了我的动手能力,还让我对公司内部的技术框架有了更深入的理解。
7.11 - 7.15
- 开发流程与工具学习
为了更好地参与实际项目,我学习了protobuf的C++实现,并了解了企业微信的开发流程。这一过程让我掌握了protobuf的基本使用方法,并了解了如何在实际项目中应用。
在参与代码优化和模块拆分工作时,我遇到了proto对象析构时产生core的问题。通过分析代码和查阅资料,我发现这是由于proto依赖写得不合理引起的。为了解决这个问题,我完成了二十几个模块对象的proto依赖缺失问题的修复,并上线。通过这个过程,我不仅提高了代码的稳定性,还学会了如何解决复杂的技术问题。
7.16 - 8.11
看奥运会、看小说、看公司文档摸鱼
8.12 - 8.20
- 模块优化与工具开发
在实习的中期,我参与了多个模块的优化工作。首先,我完成了gaaliassvr模块的下线工作。通过查看监控和接口调用情况,我发现主调方的代码已经切换请求方,可以顺利下线该模块。这一过程让我学会了如何通过监控和日志分析系统的运行情况,并通过调整代码实现模块的平滑下线。
接下来,我扩充了GidLog工具,增加了用微信号、手机号、Vid查询Gid日志的功能,并完善了日志的输出格式。这个工具的开发和测试,进一步提高了我的动手能力和对日志系统的理解。
- 需求开发与自测
在这段时间里,我还参与了多个需求的开发和自测工作。首先,我编写了gidprofile新增身份证字段和实名修改的审核详情的读写接口,并完成了自测。随后,我又编写了实名展示页逻辑cgi,申请了存储读写接口apitest权限,并在个人docker上进行了测试。
在参与实名更改需求的评审会时,我学到了完整的需求评审流程,并熟悉了相关模块的代码逻辑。通过这些工作,我不仅提高了代码编写能力,还学会了如何进行需求评审和自测。
三、工作内容及收获
- 用Mock IP方法验证登录地区的封禁有效性
这是我在实习期间完成的第一个小需求。我的任务是设计一个开发方案,验证登录地区的封禁有效性。具体步骤如下:
背景: 需要确认某些域名在接入层封禁登录后,是否仍然可以被访问。
方案: 在测试docker中,针对提供的vid,使用mock IP的方法进行验证。
流程: 修改函数CheckCountryCanUseWework,将指定vid的IP地址改为对应的值,编译模块并在docker中自测。
通过这个项目,我学会了如何从零开始,了解客户端请求是如何在后台被处理的,如何使用patchbuild编译工具,在个人docker上进行测试,以及如何发布和上线代码。这一过程让我对企业微信的技术架构有了更深入的了解。
- Proto对象析构时产生core问题优化
在这个项目中,我解决了proto对象析构时产生的core问题。通过分析代码,我发现这是由于proto依赖写得不合理引起的。为了解决这个问题,我完成了二十几个模块对象的proto依赖缺失问题的修复,并上线。通过这个过程,我不仅提高了代码的稳定性,还学会了如何解决复杂的技术问题。
- 代码优化:拆分大文件gaauthserviceimpl.cpp
在这个项目中,我负责拆分gaauthserviceimpl.cpp文件。通过分析代码,我将其按接口功能分类,拆分成多个小文件。这不仅提高了代码的可读性和维护性,还减少了代码的耦合度。通过这个项目,我学会了如何进行代码优化和模块拆分。
- 模块优化:废弃gaaliassvr模块
在这个项目中,我负责废弃gaaliassvr模块。通过查看监控和接口调用情况,我发现主调方的代码已经切换请求方,可以顺利下线该模块。通过这个项目,我学会了如何通过监控和日志分析系统的运行情况,并通过调整代码实现模块的平滑下线。
- 工具开发:编写GidLog查询工具
在这个项目中,我扩充了GidLog工具,增加了用微信号、手机号、Vid查询Gid日志的功能,并完善了日志的输出格式。通过这个项目,我提高了动手能力和对日志系统的理解。
- 微信客服知识库写存储逻辑优化
在这个项目中,我优化了ImportWxAiIntent的逻辑,将CommitImportWxAiIntent逻辑挪到xmq,提高了写入数据的效率。通过这个项目,我学会了如何优化代码逻辑,提高系统的性能。
- 个人实名认证更改需求后台开发
在这个项目中,我参与了个人实名认证更改需求的开发工作。具体包括编写gidprofile新增身份证字段、实名修改的审核详情的读写接口和实名展示页逻辑,并完成了自测。通过这个项目,我提高了代码编写能力和需求实现能力。
四、学习与成长
- 代码能力
通过阅读和学习企业微信后台代码,我掌握了工业代码的规范标准,学会了如何从日志开始排查问题,定位问题所在。在解决proto对象析构时产生的core问题时,我学会了如何分析和解决复杂的技术问题。
- 多人开发
在大型项目中,我学会了分模块协作,理解了一个模块的功能往往涉及其他模块,编译上线需要经过层层申请和审核,避免潜在的安全问题。在废弃gaaliassvr模块的项目中,我通过与其他组同事的协作,顺利完成了模块的下线工作。
- 技术解决方案
在实习期间,我接触了patchbuild编译工具、Linux开发常用命令、Protocol Buffer、RPC框架hikit、MQ、HiMon系统上报监测工具、日志、CI上线流程等。通过这些技术解决方案的学习和应用,我进一步提高了技术能力和解决问题的能力。
五、挑战与不足
- 初期基础问题
由于经验的不足,刚入手工作时经常遇到基础问题,如代码编写不安全、在云开发机执行不安全命令,缺乏排查问题的经验。在键哥和fitz哥的指导下,我逐渐掌握了安全编码和问题排查的方法。
- 多人协作
在gaaliassvr下线任务中,由于与其他组沟通不畅,导致进度拖延。在键哥和fitz哥的指导下,我学会了如何高效沟通,推进项目进度。在后续的项目中,我逐渐提高了与人沟通和团队协作的能力。
六、总结
在这两个月的实习中,我不仅在技术上得到了很大的提升,还学会了如何在大型项目中进行团队协作和高效沟通。这段经历让我对企业微信的后台系统有了深入的理解,也为我未来的职业发展打下了坚实的基础。感谢腾讯公司和企业微信研发部的各位同事对我的指导和帮助。
再上零碎的记忆
计算机人的学科素养
你有排查思路吗
当我问键哥一些报错信息的时候,键哥通常不会直接告诉我原因,而是引导我去思考,有可能是什么原因导致了错误。通过打印日志,查看机器的日志,查看每一步的运行是否符合预期;主动了解上下游代码的逻辑,比如读取一个配置文件,需要先访问一个配置客户端的单例,由他去查询配置文件,这是一种多模块分工的思想,如果不主动了解代码,那么后面的执行逻辑,大概也是不会了解的。
食堂
香蕉才是腾讯员工的工卡
广州国际媒体岗里,腾讯租了4层楼,算是一个小分部,里面有广研、微信读书、企业微信。食堂也只是承包了一半,自然食物也不会特别好,果腹即可。每顿饭都会有香蕉作为水果。
唯一的好处是,这边的牛肉正宗,都是鲜牛肉,量也多,简直是天地良心啊!!
健身房
又到了每周一度的练腿日
麻雀虽小,五脏俱全。健身房的器材很新,人也不算多。狠心靠着两个月的锻炼和吃吃吃,肌肉又涨了不少(肥肉也是😫)
麦当劳
楼下的麦当劳依旧保持着小时候的样子,有儿童乐园,可以举办小朋友的生日聚会,麦当劳还会专门给每个小朋友准备周边礼物。
艺术品
前有排泄物
忘记了是哪一天,一个大台子,上有一个正六面体,被搬了过来:
六个面分别是企业微信、qq邮箱、微信视频号、腾讯会议、还有两个没看到。每个面有8个插座,可能是象征着连接充电??
自他搬过来的时候,外面就包着这层塑料膜,让本就难堪的设计更加难看。后来物业人员又在八个角上加了红色的边,防止尖锐碰伤人。但还是没有把塑料膜撕掉。寓意着:屎山代码只会越堆越高,后人不敢动前面的臃肿的代码,于是在代码上继续加上层层补丁,所谓敏捷开发就变成了shit上加上shit。
真是艺术品。

杂图
偷感鹅:
暴雨前的广州塔:
夜间从媒体岗看珠江:
下班路:

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






