6.28 字节一年,人间三年
- 作者
- Name
- 青玉白露
- Github
- @white0dew
- Modified on
- Reading time
- 7 分钟
阅读:.. 评论:..
想来字节做研发,可以先看我这三年的体会和建议。
大家好,我是白露啊。
今天和大家分享一个真实的故事,是关于字节网友分享自己三年的工作经历和感受。
由于白露也曾在字节待过两年,可以说,说的都对。
你有没有想过来字节跳动做研发?如果你有这个想法,那么不妨先看看,或许可以为你提供一些参考。
当我还没来字节的时候,“字节一年,人间三年”这句话就耳熟能详。
尽管身边对字节的评价褒贬不一,但我始终相信,“实践是检验真理的唯一标准”。
于是,经过一番思考,我决定接受挑战,来到这个充满机遇和未知的公司。转眼三年过去了,我有许多感受和你们分享。
新人Landing
很多人会认为字节对新人的友好度不够,但我的体验确大不相同。
入职的第一天,你不会立马陷入忙碌的工作中,通常会给新人一到两周,甚至更长的时间去熟悉团队的各项需求开发和质量管理流程。
在新人阶段,很多人(包括我自己)都会遇到不理解的业务逻辑,再加上文档不全,这时你可能会感到迷茫,不知道该找谁咨询,甚至觉得提问会难为情。
我的建议是,善用搜索,学会思考,大胆提问。无论是mentor还是不认识的同事,大都会乐于帮忙。
业务和个人成长
字节的一个特点就是始终保持创业精神,拥抱变化。很多人吐槽字节的业务变化频繁,但其实这种变化在任何公司都是常见的。
真正重要的是,你要如何适应这些变化并在其中寻找机会。
比如最近火热的LLM和AIGC技术,字节投入了大量资源去探索新产品和技术。
如果你觉得某个新领域让你充满激情,那就大胆去尝试,把它当成一次自主创业。在字节,有很多充满创业精神的同事,他们的经验和激情会激励你前进。
工作氛围和公司文化
字节的工作氛围和企业文化非常独特。
这里没有PPT文化,却有很多有价值的飞书文档:知识库、技术方案……
这些文档不仅仅是普通的工作文档,更是一个宝藏,有许多优秀且乐于分享的同事在上面提供他们的经验和知识,包括旅游攻略、理财思维、工作认知和行业分析。
字节的氛围平等,没有排资论辈的文化,没有严格的上下级关系,对事不对人,更注重结果。与优秀的人合作,做有挑战的事,极大地扩展了我的视野和知识。
我的建议
如果我需要对初入职场的你提几点建议,我会说:技术实力是基本功,但清晰的表达和强大的共情能力,更是能提高沟通效率、事倍功半的利器。
技术实力主要靠自身打磨,无论在工作中,还是工作外,不能拉下。技术没有上限,要有自信,大多数情况下,掌握的知识足以应对工作内容,但如果想要把工作做得更好,必须多花时间和精力思考。
至于清晰的表达和共情能力,这些软实力在工作中同样重要。在与团队成员和其他协作方合作时,清晰的表达能提高效率,而良好的共情能力,能站在他人角度思考问题,在边界区域主动了解他人的工作内容,更有利于事情的推进。
Ending
纸上得来终觉浅,绝知此事要躬行。
字节跳动是一个充满机遇和挑战的地方,从白露自身的的体验来看,如果你是一个很乐于挑战的同学,那么十分适合加入字节。
我说一些其他的,在字节:
- 字节确实很值得去,很锻炼人,也能学到好多东西。我有学弟朋友一年从1-2升职到2-1,和他对接的人都不敢相信他是一个校招生。
- 字节是一个很大的平台,有众多业务线:短视频、信息流、电商、生活服务……干就完了!
- 字节一年,工作三年。是真的。
希望这篇文章能给你带来一些新的视角和启发,无论是对于职业规划,还是对企业文化的理解。未来,我们将继续分享更多有趣且有潜力的公司和人物。大家有任何问题或想法,欢迎在评论区和我讨论分享~
简单的场景题——TopK
面试官: 同学你好,今天我们来讨论一个关于大数据处理的问题。假设你有10亿个数据,需要找出其中最大的10000个。你知道怎么解决这个问题吗?
求职者: 当然。我会使用最小堆的方法来解决这个问题。具体步骤如下:
- 先拿10000个数建堆:先从10亿个数据中取出前10000个元素,构建一个最小堆。
- 逐个添加剩余元素:然后遍历剩下的元素,如果当前元素大于堆顶元素(堆中的最小值),则将当前元素替换堆顶,并调整堆结构使之仍然是一个最小堆。
- 遍历完后,堆中的10000个数就是所需的最大的10000个。
这种方法的时间复杂度是O(n log m),其中n为数据总数(10亿),m为需要找出的最大元素数量(10000)。
面试官: 那么,你能解释一下复杂度分析吗?为什么时间复杂度是O(n log m)?
求职者: 当然。
- 建立初始堆:从前10000个数建立一个最小堆,时间复杂度是O(m),其中m是10000。
- 遍历剩余数据:对于每个剩余的数据,都要进行一次比较和可能的堆调整。比较操作是O(1),堆调整是O(log m)。
所以总的时间复杂度是O(n - m) * O(log m),简化后就是O(n log m)。
面试官: 很好。那么,如果内存受限,你会怎么优化这个方法呢?
求职者: 如果内存受限,可以使用Hash方法将数据划分成多个partition,每个partition交给一个线程处理。线程的处理逻辑仍然是使用最小堆。最后由一个线程将结果进行归并。
具体步骤如下:
- 数据划分:将数据按照Hash方法划分成n个partition。
- 多线程处理:每个线程处理一个partition,使用最小堆找出每个partition中的最大10000个数。
- 结果归并:最后一个线程将所有partition的结果进行归并,得到最终的最大10000个数。
面试官: 那么,这种方法的瓶颈在哪里?你会怎么进一步优化?
求职者: 这种方法的瓶颈在于数据倾斜,即每个线程的处理速度可能不同,快的线程需要等待慢的线程,导致最终的处理速度取决于最慢的线程。
为了解决这个问题,可以将数据划分成c × n个partition(c > 1),每个线程处理完当前partition后主动取下一个partition继续处理,直到所有数据处理完毕,最后由一个线程进行归并。
这样可以均衡负载,提高整体处理速度。
面试官: 很好。最后一个问题,如果数据中含有较多重复值,你会怎么处理?
求职者: 如果数据中含有较多重复值,可以先进行去重操作,然后再进行后续处理。去重的方法可以使用Hash或者依图法。这样可以大大减少需要处理的数据量,提高整体的处理效率。
面试官: 很好,今天的面试就到这里了,感谢你的回答。我们会尽快通知你结果。祝你好运!