直言不讳的说,这是一篇内推推广文。但本文讲的是笔者在抖音 iOS 基础组两年的工做经历,诚心推荐,并没有合做。本文所描述经历只局限于抖音 iOS 客户端团队,若与其余团队状况有较大误差也是合理的。文末有内推群,固然此次主要是以校招内推为主。web
2018 年 4 月,我去面试了字节跳动的 Musical.ly 团队而且得到了 offer(面经可在我博客中查看:www.desgard.com/summary-2018)。当时内心仍是很开心的,由于很早就知道 Musical.ly 这个产品,而且 2018 年春节,抖音成为现象级 App,因此天然而然地就会想到 Musical.ly 和 TikTok 会爆红全球。面试
考虑到现象级产品效应以及我的待遇问题,便选择了跳槽字节跳动。浏览器
刚入职的时候正赶在 Musical.ly 和 TikTok 的“技术融合”阶段;组件化刚刚起步,刚刚开始下沉第一个组件;在研发平台以及本地研发工具方面也是从未有人接触过的领域。性能优化
既然是这种状况那咱们就开始搞起!微信
笔者在字节作了什么
仔细想一想,在字节的两年作的都是关于组件化和研发流程的事情,但主要两个从零到一的项目就是研发工具链 MBox 以及远程依赖 Seer 服务。下面先单独讲讲。架构
研发工具链 MBox
考虑到组件化以后业务同窗的开发成本,迫切但愿一个多仓库管理工具。而且因为抖音项目是使用 CocoaPods 进行多组件的整合与集成,因此咱们须要一个研发工具来实现 Pod 源码形态的快速转换。在此基础上 MBox 诞生了。
编辑器
对比与市面上各路大厂的仓库管理工具:蚂蚁伙伴(蚂蚁金服)、EasyBox(百度)、One(滴滴)等,MBox 吸收了不少工具的优势,而且考虑到后期功能的加强以及其余业务团队的定制化,咱们将全部子模块所有拆成插件。如此一来,在集团内的每一个同窗均可以参与 MBox 的开发,打造本身团队的 Workflow。工具
如下是 MBox 在原生能力上的主要功能模块,但全部的实现方式均是 MBox 插件,在产品接入时能够按需选择接入,也能够按需增减。组件化
从 2018 年 9 月至今,MBox 已经服务于全公司的 30+ 个产品线,协助你们完成平常的需求开发,提高总体研发效率。性能
远程依赖 Seer 服务构建
在阿里的 MTL 工程管理平台中会有一个“依赖表”的概念,其实咱们能够理解成是讲当前稳定的一套 Pods 依赖表(经过 CI/CD 出包后的 Podfile.lock
)。经过这个依赖表,咱们能够自由的实现对应版本的依赖情况;在组件低耦合的场景下,实现换壳多项目开发;能够快速进行 CocoaPods 依赖决议。
因为团队规模日益增加,研发同窗习惯组件化开发模式,而对于字节这种中台业务的独立,其“研发换壳”逐渐成为最大的痛点。(好了不说了,这个功能咱们要有 (╯‵□′)╯︵┻━┻)
一个服务考验的是一个全栈的能力,如下是使用的技术栈。
其中的难点就是解析 Podfile.lock
进行版本分析,以及如何根据差别化的 Podfile.lock
计算出版本的 Diff。剩下的就是在 Pods 中如何注入依赖,因为有以前 MBox 写 CocoaPods 插件的经验,这里也就十分容易了。
Seer 上线后持续迭代,目前已经成为抖音 iOS 项目中不可缺乏的一个环节。而且还会用在中台项目对于抖音适配的开发流程中。
具体的技术细节须要等开源才能细说,固然若是你也是相关效率工程方向的开发同窗,也欢迎一块儿交流和沟通。
有什么收获
如下是我概括的在字节跳动客户端基础团队工做的一些收获,因为我是在工做第一年加入的,我以为也能够适用于刚入职场的小白:
如何在一个百人团队中与同事协做开发;
了解了巨型 App 的所有迭代流程;
如何肯定产品痛点,如何打磨技术产品;
如何调研技术方案,如何解决问题;
怎样进行指标监控和量化;
如何 Oncall 本身负责的服务;
如何将我的的产出同步和分享出去;
...
字节值得称赞的那些事
免费三餐、下午茶、房补、加班打车、活动日、健身房这些我就不说了,本身脑补就好。
1. 经过数据来衡量成果
-
对于业务同窗来讲,会定义不少产品指标来评判业务的有效性。例如:用户转化率、渗透率、留存率等等。这些埋点会最终决定需求是否在下一版本保留以及 AB 实验的选择等。 -
对于技术同窗来讲,也会增长需对技术指标埋点来衡量效果。对于抖音项目来讲,除了那些常规指标(冷热启动、卡顿、Crash 率等等),还会有与垂直业务关联度较高的一些指标,例如首帧、首次启动相机等等。这些指标不只会统计抖音每一个版本,并且还会统计对应竞品的每一个版本数据,在比较中才能知道自身 App 的短板。 -
对于咱们研发工具而言,用户就是全部的开发。因此咱们也会增长不少数据埋点,例如 pod install
的耗时、编译耗时等等。这样咱们就能够明确的知道研发同窗吐槽效率低的缘由是什么。
2. OKR 是“我的管理工具”,而不是“我的工做管理工具”
这二者有什么差异?我的管理工具其实你能够写不少自身相关的 Object Key,然后者只是一个变相的记录向上管理工做工具。
例如在咱们团队中,可能有的同窗 OKR 中会出现 “这个双月减肥 XX 斤” 或者是 “这个双月 LeetCode 刷 XX 道题”等,由于关系到我的规划而不是我的工做规划,OKR 会集中的把你的目标记录在一个位置,这样在双月末能够一块儿 Review,来衡量本身的时间。
因此,你想成为时间管理大师吗?👀
3. 优秀的内网学习资源
在字节内部有不少优质的学习资源,不管 byteKM 平台(内部技术博客)、仍是 Study 平台(内部技术视频分享),都具备至关高的质量,与外部不少付费资源质量至关。并且须要交流或者有什么问题均可以直接飞书交流。
这些资源不但能够促进自我成长,并且当你加入撰写、分享技术文章后,还能收获必定的影响力。教学相长,一箭双雕。
不少内部脱敏后的优质外网文章(你会发现不少都是咱们团队的小伙伴,手动狗头):
-
《抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提高超15%》 -
《iOS 渲染原理解析》 -
《模糊的 Any 和 Optional》 -
《Swift 5 以后 "Method Swizzling"?》
基础与架构真的很高深吗?
说穿了,作基础技术须要这几点:
-
了解业务同窗的痛点,经过技术手段来提升效率; -
技术栈偏向全栈开发,更加看重脚本能力,以解决问题的角度出发; -
持续学习,多接触其余大厂的技术方案;
咱们将研发效率当作产品的北极星指标来看待,那其实作基础的同窗也就是”作业务”,只是成长的角度不一样。
而工程架构与性能优化可能就须要资历更深的工程师来加持,每每须要对业务的深入理解、对技术的清楚认识、对方案的广度了解。这些你须要用本身的时间和精力去不断培养和积累,可是谁都会经历从零到一的阶段?因此并不用过分担忧和焦虑。
我的看来,作业务和作架构只是服务的对象和用户不一样,一样都拥有价值。
总的来讲,字节跳动从我的成长来看,很适合做为你的第一份工做。
内推方式
后面就是关于此次校招内推的一些规则了,社招的话直接加群联系冬瓜就好。另外还有一点我知道的就是,iOS 客户端校招的标准,是不须要你有 iOS 基础的,也就是计算机基础达标就 OK。好了我就说这么多,你品你细品 - -。
如下是内网提早批校招邮件放出的内容:
字节跳动2021校园招聘研发提早批内部推荐全面启动!本次校招提早批主要针对研发类岗位,3000+HC 虚位以待!
超早上岸:帮助同窗们 6 月拿offer,快人一步;
超稳通关:多一次投递机会,结果不影响秋招;
内推时间:2020/6/16-2020/7/16
招聘对象:2020年9月-2021年8月期间毕业的同窗(中国大陆以毕业证为准,非中国大陆区以学位证为准),且最高学历毕业后无全职工做经验的学生。
职位类别:研发类岗位
这边我放出几个内推码,请你们按照城市来选择不一样的内推码,这样咱们比较好跟进和反馈:
-
上海(及其余城市的抖音客户端部门): FFGFNVU 、 DPC639Q -
北京: B2Y9RJK (小吉的内推码) -
深圳: ZQVUCYU (丹子的内推码)
内推加群
使用内推码的同窗切记必定要加群在群里和对应同窗跟进。
若是群满后,请在公众号后台:【点击“加群”】→ 【内推加群】,添加 Bot 以后,回复“内推加群”,便可得到加群邀请。
最后,但愿你们在求职季,都能找到本身心仪的工做!成为 offer 收割机!🤖
本文分享自微信公众号 - 一瓜技术(tech_gua)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。