谢邀。
6 V5 D1 S( J, [" X$ |
! G- U5 [+ S4 `) l, F' `序$ A# J" f, ]. w, x( f; ]/ D
% U4 J$ Q+ O) w我自己出版了一本书《C++ 服务器开发精髓》,在这本书凝聚了我从客户端到服务器、从 Windows 到 Linux 的经验总结,你还将从本书中系统地学习到 C++ 开发编译调试完整技术链、多线程编程技术、作者精心凝炼的20多个网络编程重难点知识、网络故障排查与定位知识、如何设计可兼容可扩展的通信协议、如何设计高性能网络框架、如何设计高性能服务框架、如何开发服务常用组件等知识。 一、写在前面的话
" S2 p* A* K+ \& Q$ Q+ J0 Q# f5 s% u1 |- G$ V! @" x
未进入字节之前,一直想从 BAT 三家公司中选择一家,无奈百度工作地点太远,腾讯面试周期太长,拿了阿里的 offer 因为一些原因而放弃。当然,在经历了几家大大小小的公司,尤其是前年创业公司的经历让我这次坚定了这次非去大厂不可的念头。, y5 C- N6 _# F* V7 D" x
虽然不乏很多小而美的公司,但是大多数小公司,尤其是创业公司,你的付出与收益比,真的很看老板的良心,一些老板表面衣着光鲜、人模狗样的,背地里却是一波又一波的无下限操作。) z( h1 h+ {1 u( i. V, p* j2 P
拿到字节跳动的 offer 以后,我还和 HR 要求考虑一个星期。其实我当时蛮忐忑的,因为网上到处都是字节和拼多多加班严重、剥削员工的负面新闻。3 X4 X% c- I9 ]
当然进来之后,直到今天,一直觉得,其实字节是个很 nice 的公司,虽然也存在一些不足之处,但是上层大多数管理者都能做到坦诚清晰、务实敢为,对于做不到但是员工呼吁强烈的事情,也不会虚以委蛇。做人做事就应当这样,做不到的事应当不敷衍、不应付,做得到的事,尽快落实执行。
0 k) n* P" D- u% ~二、关于职级与能力要求/ j! Z( D, T$ P' q: o
( B* h6 V5 m2 ]- N, K/ G. ^$ x
很多同学可能很关心我是如何通过字节的面试的,这里简单地说一下吧。我是后端岗位,职级对标阿里 P7,字节的职级分为 1-1、1-2、2-1、2-2、3-1、3-2 等,剩下的依此类推,从 3-1 开始属于各个业务线的 leader,属于管理层。当然,也有管理层的职级但是并不带团队的同事。
0 s P$ [+ ]$ o& P3 {应届生一般是 1-1,技术岗位的各个职级的能力要求如下:4 l4 t9 G1 T6 A; I+ i4 @
1-1 可以在 leader 或者高级开发的指导或者带领下完成相关功能的开发;1-2 能够独立负责具体模块的开发;2-1 能够独挡一面;2-2 可以负责某个业务的整条业务线的设计与开发;3-1 及以上属于领导层。
8 x# J6 X9 G1 D8 T& |0 j. z 2-1 及以上的职位的工作都是自我驱动的,也就是说,很多时候,你得自己想去做点事,主动去找各个对接方去沟通和寻求资源,最终取得的成果作为年终考核依据。你的沟通方可能是别的团队的产品、开发、测试等等相关的同学。如果你等着别人来找你,或者等着你的 leader 来给你安排具体的任务,那么你最终可能得到能力与职级不匹配的评价。) X/ x. [* j; w
所以越往上的 leader 的双月或者年度目标大多数都是方向性的,就类似于当年我们的伟大领袖毛主席,从来只给出战略目标,而不去管具体战术层面上的事情,战术层面上的事情交给将军们就可以。
1 \1 a: |, _ f字节大多数后端团队使用 Go 作为开发语言,少数对性能要求比较高的、或者有历史原因的业务使用 C++,鲜有 Java。经常有培训机构推广 Java 课程,总喜欢“碰瓷”字节,对标字节要求的 Java 水平,其实不符合事实的。9 p# s4 y5 b( X1 j* K, `" J
三、关于面试要求. X0 E/ u0 f) X! L. C
2 W8 V8 I5 m+ P/ X) ]
字节至少一半以上的后端开发都是从其他语言转过来的,在这之前,他们可能是 C、C++、Java 开发,当然,面试的时候如果你不熟悉 Go,也不会对 Go 作强行要求,像我当时就是以 Java 开发者的身份面试的。面试官问了很多 Java 的问题。5 t9 R# t- F$ G9 F4 ]% V
对应届生的考察,往往着重考察算法数据结构、基础知识和原理。例如,如果一个应届学生被问到 TCP 三次握手的问题,如果说不清楚,面试大概率通过不了,然后面试官会在给该同学的评语中写上类似“基础不好”这样的话。应届生很看重学历哦。
. W, ?/ t8 ?6 M& ]社招的要求更高一点,除了考察上述内容以外,还有相关的技术经验和解决问题的能力考察。
& o# [/ d+ q' Q" x) U, e1 W有的面试官会给出具体的场景,让你给出解决方案,这就是所谓的场景题。当然,你的方案一定要可以落地,例如说到集群部署,你可能要给出可行的集群部署方案,包括但不限于集群的机器编排、服务的扩展、数据同步问题、不同集群的切换等。做技术本身就是一件严谨的事情,尤其是你提出的方案如果不能用于行之有效的编码,那这样的答案一般也不算好。
, q6 K5 p( _1 L9 g" T. k& f3 m2 U对于一些张口各种技术术语,问到具体细节说不清道不明的面试者,大多数面试官一般不会当面拆穿。面试者可能面完之后自我感觉良好,感觉什么问题都回答出来了,然而可能再也没有下文了。所以,社招的同学,建议找自己熟悉和擅长的领域来说,切忌东拉西扯。2 H' v7 t% B4 X" u) `8 P# L- \
另外,做后端开发的同学可能认为字节一定要求你以往有高性能高并发相关的工作经验,其实不是这样的,每个人所学的、从前所做的工作都是千差万别的,不可能每个人都在有巨量业务支撑的企业做过,因此要求每个人都有高性能高并发的工作经验是不现实的。字节的要求一般是在技术上你有你擅长的领域,例如,网络通信、分布式、RPC、消息中间件、CDN 等等,你只要有一方面技术出彩就行;或者,你在以往工作中的表现亮眼,例如为公司解决了什么关键性问题、或者为公司带来了什么突破或者效益都是 OK 的;甚至,你对以往从事的工作有自己的独立思考,独特的方法论,你知道你的系统、业务的优缺点,对于缺点,在资源足够的情况下,你有很好的解决方案。
0 R7 F1 A0 `5 p6 q1 o9 S: e读到这里,有些同学可能会酸了:你说了这么多,就感觉面试官很牛逼似的。其实不然,个人觉得在面试流程和体验上,字节对面试官的约束非常多,一场面试开始之前,面试官需要对候选人做充分的了解,公司对面试官不可以问面试者的一些问题做了详细的规定,在面试中的行为也做了详细的规定。例如,不能无故玩手机,不可以问个人生活问题,不可以问薪资等等,面试官问的每个问题以及面试者的回答必须详细记录,用于复盘和团队对面试者的表现和能力进行鉴定。! x1 K1 Q6 m$ M: K$ F; M2 j
所以,如果是 C/C++或者 Java 出身,就实话实说,不要非要装作自己很熟悉 Go 的样子,往往适得其反。0 C0 {7 R3 s3 c0 e# `
正因为相对高标准的面试要求,所以招进来的大多数同事,综合素质都不错,你鲜有在小公司遇到一些恶心的人和事。
2 d5 h( c3 e3 p; i四、关于工作与生活
! k9 R/ \. L% |7 @$ [8 J
: O7 `" F: E0 W3 F5 K1 x在字节呢,我个人觉得工作是有的,生活嘛,工作日有鸡毛的生活。
% k: B& B% d; o" s, ]9 j字节的工作时间通常是早上 10 点到晚上 7 点,这是理论上的工作时间,但是大多数开发一般默认是早上 10 点到晚上 10 点。可以用一个例子来说明,比如 A 同事想组织一个会议,如果时间定在晚上 11 点,可能就不太合适,但是如果定在晚上 9 点,那么就无可厚非了,因为默认这个时间点还是工作时间。% l3 p; H9 X' K
当然,实际情形下,大家对工作时间的处理都比较灵活,如果你当天有事,可以随时请假,或者提前下班,只要兼顾好工作就可以了。一部分同学,7 点晚饭后,会去健身房锻炼一会儿,八点多回来再继续工作。大多数同事都有足够的带薪年假、病假等各种假期。字节是不打卡的,一般只要你能按时完成工作,没人会在乎你在哪里、何时上下班。
9 m0 O3 t% G f4 n6 v一周分为大小周的,所谓大小周就是每隔一周的周日要求正常工作。我现在的感觉是遇到双休日、放两天假的感觉不亚于放了一个长假。当然,工作的周日是可以拿双倍工资的,之前是 1.2 倍,后来被吐槽,公司很快就改革了。如果某周的周日上班,接下来新的一周的周三属于活动日,当天的伙食一般比往常更加丰富。最让人开心的是,平常的时候,晚上饭点是 7 点,活动日的晚上 5:30 就开饭了,而且吃完饭就可以愉快地下班了。
' r& C F% b( x! B5 |/ C) r V字节的工作节奏比较快,作为技术开发,你每天除了要不断推进自己业务线的开发工作,还要不断处理线上各种 oncall 问题,所谓 oncall 问题就是你的产品上线以后,会有很多用户在使用过程中遇到各种问题,这类问题可能是需求、产品缺陷或者程序 bug;另外,技术的同学还需要随时支持公司的大大小小的相关活动,或者中台部门提出的各种技术改造或者优化任务。在这里,节奏快,大大小小的工作都有比较紧张的时限,所以,带薪摸鱼比较难,哈哈。' d8 c* k& v) I; w% i0 K" ]2 u
字节内部有各种技术分享,公司会有相关部门专门组织大大小小的分享,分享的讲师可能来自内部也可能来自外部,公司内部的文档库也是一个学习的好地方。另外,大多数情况下,你可以低门槛地看到其他同事或者业务线的代码仓库。, Q" O1 x) `4 k. {, m
字节内部有各种大大小小的部门,但是总体来说,职阶比较扁平,我上面几个人就到一鸣同学了。部门分为做基础架构、通用技术的各种中台部门和业务部门,还有职能部门,内部有亲属是同事必须报备,有 5 个部门禁止内部谈恋爱。业务部门分为稳定业务部门和创新业务线,像大家熟知的抖音、西瓜视频、今日头条就属于稳定业务部门,创新业务一般属于内部孵化项目,通常需要保密的,很多做保密项目的同学需要封闭开发,其项目名在前期一般会使用一个字母代号表示(例如 M、K、T),当你问及一个同学(我们内部都叫同学)在做什么,他们往往不一定会告诉你,创新产品研发出来之后,会内部试用,等迭代到一定程度后再决定是否对外或者继续往上面投入更多的资源,很多创新项目可能做着做着就停掉了,这属于未孵化成功。像抖音这样的产品最早也是孵化项目,只不过他们孵化成功了。字节内部每年未孵化成功的项目都有很多。9 S' p# n) ? K8 V. T
字节内部转岗比较容易,很多同学今天在 A 业务线上,明天可能就去了 B 业务线。而且字节推崇的原则是不给自己设边界,所以技术可以干产品的活儿,测试也可能干技术的活儿。
- I7 ~+ [/ [8 A7 M% F还有一个比较有意思的地方就是,员工入职可以不使用自己的真实姓名,比如我做第一个项目的时候,我的名字叫关云长,后来转到第二个项目上去的时候,我改成了 Tom,所以很多同事虽然飞书上叫 XXX,但他真实的姓名不一定叫这个名字。# G+ A3 L# D! v7 ?& f: O$ G
字节是提供一日三餐的,早上 9 ~ 10 点为早餐时间,中午 12 点开饭,晚上一般 7 点左右开饭,下午 3 点左右有下午茶,我印象中周三下午的下午茶是麦当劳的鸡翅或者鸡块,一周会有至少两天的水果作为下午茶,比如切好的香瓜、菠萝、西瓜或者整个的火龙果。如果遇到逢年过节,或者特色日子,会有一些特色下午茶,如青团、哈根达斯冰淇淋。4 y: N) H$ m! l! z2 y( P/ w: f
每天的吃的花样都不一样,另外前台放置了各种零食,还有茶叶、枸杞子、咖啡、菊花等等,随意拿。
" U, l9 n( {3 S1 I" W3 [! N每天的饮食讲究荤素搭配,有正统的餐,也有为健身的同学提供的健康餐(轻食餐),这是昨天的晚餐菜单,大家可以瞅一瞅:
* Y. W) l; w8 l自助餐
& H+ Y8 l f6 f; Y7 P; c, m; y, u- v8 R0 T主荤:香炸排条、咖喱鸡块
) v J3 K2 Z: {3 g! n: u半荤:杏鲍菇肉片、鱼香芋丝
9 p$ w: T# {8 j) X/ P素菜:葱油冬瓜、五香素鸡0 T* r, W" r3 O Y/ i- h
风味小吃:本帮炒面( ?" }; G0 P- q9 h% h3 ^: q7 U D
主食:白米饭、越南炒饭; J8 X8 U* j! s+ x0 q3 [
杂粮:蒸红薯 K" g" U3 E1 k4 m, B' U
饮品:茉莉蜜茶" G; ~9 _3 Y% K4 M! _9 w
水果:香梨
, J1 r0 D. a4 g8 n) M0 c& x+ |面食:南瓜饼、黄金糕、牛肉豆腐包
; {# R/ m2 L; \7 b- ?! m甜汤:红豆汤) D6 b0 g0 f7 K2 A8 r
咸汤:荠菜豆腐汤
$ r* b# f' l$ i/ l; ^盒饭& O& p+ r- B7 T9 t/ E7 j$ v
主荤:藤椒牛肉、水煮肉片
. ~5 U- M8 v: H2 A; ]% _半荤:肉末青豆
& s2 X% a$ t7 e s& v素菜:香菇油菜. j" M4 G. f" w+ V; D: q$ [
主食:白米饭
6 w1 b( m7 q* \& L/ ]杂粮:玉米 M! h; V6 C7 }4 |/ Y5 N2 X4 F" {) \
饮品:茉莉蜜茶+草莓酸奶& B; C( t, P# K$ { T/ Q9 N: k
例汤:紫菜青瓜汤6 @/ u; E' J6 u* o- b- L1 r4 s
水果:西红柿5 F3 C- M9 p' P
特色面食(饭):红烧牛腩米线+ g6 |* {& p {) X1 a" ]
轻食餐
; g5 H$ |% r( L c" [! l2 l轻食餐餐品:尼斯吞拿鱼沙拉、美式俱乐部三明治, L+ F. i' O8 g' _, l6 A
轻食餐饮品:吕梁野山坡蓝莓汁% y3 c' D9 L0 v# [7 w
比较 nice 的是,这些吃的一般不限量,你想吃多少拿多少,在伙食方面字节真的给到员工足够的诚意,还有各种针对饮食的建议和问卷调查,所以菜单经常采纳员工的建议而做调整。8 N# k3 K4 i) I
吃的好,加上活动的时间少,大多数同学都比飞书上的照片胖几圈。
5 F' o/ Q' g$ i0 p4 C各种问卷调查一般都带有抽奖活动,抽奖活动很多有阳光普照奖。# G3 p: {) Z1 p* ~5 E9 A) `: B" _6 v
另外,在字节内部写技术、产品等文档,每过一段时间会进行结算,根据你的输出文字多少以及被阅读情况给你一些奖励,比如奖励京东卡。/ {/ y$ S. @$ W; }! G1 y- u3 E$ r
字节内部总体的氛围是比较轻松愉快的,大家都以姓名相称,提倡坦诚清晰的文化,有事说事,减少客套,直奔主题。你可以在飞书上随时随地地对任何一位同学进行评价,评价的内容该同学不会看到,会被他的 leader 看到。这些评价会作为该同学年终绩效的评定依据之一。当然,你也可以评价你的 leader,你的 leader 的 leader 会看到这些 评价。当然,字节在绩效评定方面,做的也比较好,例如:$ j9 Q# G' Q, ~: L" t
你可以主动邀请与你工作相关的同学对你的工作进行评价,包括前端、后端、产品、测试,只要和你打交道过的同学都可以;你可以主动评价任何与你工作相关的同学;leader 在做出绩效评定前,会与你正式沟通一次,有时候你的 leader 的 leader 也会作为陪审员;当然,你可以评价你的 leader,包括 ta 的管理能力,你的评价会被你的 leader 的 leader 看到;绩效评定以后,你可以参与绩效问卷调查,你可以在问卷中写出你的建议或者不满。
; e5 J4 e8 Z: q# I ^& L5 n: V % }" B# o& k# t$ I
总之,这样最大程度地避免了 leader 的一言堂,同时又尽可能客观公正地评出每个员工的绩效。
% P& ]5 M# k D5 A五、关于技术、视野与平台9 {" F1 O- V: Z$ @3 q
6 o# T' G! u! I5 R9 C F F) K前面洋洋洒洒地写了很多,其实我觉得本小节应该才是你关注的重点。4 A5 V- `" p) a% M( L3 V! O
相比较之前经历的大大小小的公司,我在字节的感受和收获颇多。无论是做事的方式、思考的方式,都深受影响。我接触到了形形色色的大牛和各方面的专家,很多同学可能看起来年纪不大,但可能就是某方面的专家。另外,字节内部有很多成熟的、优秀的解决问题的完整流程和方案。这是在小公司你无法获得到的。2 n( \) g6 \2 K- N- \% b0 }9 }
举个我印象深刻的例子,例如你写的代码,会有专门的做安全的同学对你代码中可能存在的安全隐患进行分析和排查,一旦发现问题就会通知你改进;另外,你的服务上线以后,会有内部安全的同事以各种方式去对你进行安全测试,所以服务上线初期,你可能经常会收到一些乱七八糟的“攻击”请求。这些部门倒逼着你去优化你的代码和业务。
* S. q- V3 m( k: `: v6 L& V当然,部门多大了,业务线多了,也会存在一些问题,例如各种文档来不及编写和更新,各种规范来不及制定,影响跨部门协作,部分中台部门的服务水平需要提高。
: ~/ }7 _. T4 p' M; j) y六、薪资与年终奖
1 r4 E" t7 d) j7 e" W4 s& I" B0 T0 f2 b
网上说,字节的薪资比同等水平要高 30%-40%,这个我没法判断,读者自决。字节加班费是平常的 2 倍;年终奖一般是 3 个月及 3 个月以上。- Q( t1 k8 }6 p3 q
最让人感动的是字节的工资发放时间,一般就在当月的最后一个工作日就发放了,所以即使遇到节假日,只会提前而不会顺延。这点纵观大大小小的 IT 公司,很少能做到这样的。4 I* L5 F+ ~+ l( g% j2 h+ T. Q
七、我的遗憾
5 c! Y9 o. C2 P; P
8 V0 ~1 ^* j8 k3 K: i7 A字节发展这么快,和她的文化有很大关系,坦诚清晰、务实敢为,这是公司上上下下所坚持的,在当今社会能坚持这样文化的企业,真的不多。
/ B; m" c1 N" G6 t! l0 L我其实很少说要内推谁谁谁来字节什么的,主要原因是,我自己其实蛮累的,准确的说,蛮辛苦的,初衷是不愿意再拉更多朋友进入这样的状态吧。当然,如果你非要“入坑”,可以加我内推。! ^+ H/ |. {8 V: b3 Y
我自从毕业以来一直想进 BAT 其中一家公司,但是始终未能如愿。进字节并非是我意料之中的事情,之前网上对字节的各种评价,如今在字节工作一年多之后,我的感受是:和网上说的很不一样。累嘛,其实挺累的,否则放个两天假不会像放了一个长假那样惬意,期待活动日的周三像小时候期待过年一样。% i/ R d8 s, Q( K" y
目前应该会继续在字节待很久,这是一个富有正能量的地方,也是一个快速发展和朝气蓬勃的集体,所以似乎一下没有任何跳槽的动力了。
' c G `* E' l$ T* H+ K我想给在一二线城市工作的做 IT 相关的同学一个建议,有机会一定要努力进大厂工作一次。理由嘛,你懂的。另外,需要克服成年人的恐惧,人呀,年纪越大,怕的东西越多。像我这种自学出家,一路摸爬,进的大厂,与科班相比存在诸多不足。例如,以前我对数据结构和算法特别恐惧,第一次去百度面试的时候,被算法题虐的体无完肤。如今,我作为面试官坐在那里和面试者侃侃而谈算法。
) B ?9 B9 q- r你千万不要把曾经经历的苦难当作什么财富,如果这些苦难不能转换成你成长的肥料,那你承受的那些,其实并不值得。相反,我们大多数人都很讨厌苦难,希望远离它们。
. m( L7 e" B$ A8 c4 c“贤愚千载知谁是,满眼蓬蒿一土丘”,人到中年,大多数人衡量成功的标准无非就是车子房子票子,请原谅这么多年后,我仍然这么愤世嫉俗。但是对于那些向往这些物事的人来说,它们的确是一剂良药。如果你努力,你即将获得它们,或者正在获得。
' ?8 G3 k: p1 i( `! [“曾经若许闲乘月,拄杖无时夜叩门”,这才是我——张小方,喜欢的生活。我曾经咒骂夫子们酸溜溜的文辞,抨击影视作品中无病呻吟的桥段,如今,每一句话都是历经沧桑的启示,它们是人实实在在的心理感受。8 b$ R& v% v. I5 _8 u' t$ S8 i
千言万语只能无语。我相信,有一天,我会像风一样自由。! |9 H8 a; e# M7 y& u, d
最后我精心整理了一份学习书单(少即是精):5 N2 M- h" [+ H, e3 M6 e7 p
# Z4 s8 B/ J+ B! ^. D
8 u5 A- M# F* p4 n; @
* H8 @+ \8 q" a获取链接:
! k# b/ B% I7 b" n- r% b. ^$ G+ J1 L计算机必看经典书籍(含下载方式)本文首发于我的公众号【高性能服务器开发】,欢迎关注,原文链接:加入字节跳动 455 天,谈一谈我的感受。
# B* Q6 ?: O$ B1 D7 S' B# K0 X! ]1 ^+ }2 \6 n8 `" Z8 e% |
原创不易,只收藏不点赞都是耍流氓,记得关注我 @张小方 哦。 |