官术网_书友最值得收藏!

第15章 字節跳動的代碼與櫻花

(本章代碼濃度過高,謹慎觀看哈哈哈)

2016年8月30日BJ字節跳動總部大廈

周吔站在大廈玻璃幕墻前,仰頭望著“字節跳動”四個發光字,指尖無意識地摩挲著書包帶。沈硯穿著標志性的藍衛衣,胸前別著“技術顧問”徽章,看上去和普通程序員無異。

周吔跟著他穿過辦公區,此起彼伏的鍵盤聲像極了高考前的自習室。她看見有人穿著印有“代碼即正義”的T恤,有人在工位上擺著機械鍵盤,還有人對著白板激烈討論,白板上歪歪扭扭寫著“推薦算法第47次迭代方案”。

經過茶水間時,周吔被冰箱上的便利貼吸引:“‘前端組的咖啡歸我,后端組的bug歸你’這是你們的企業文化?”

“算是‘程序員黑話’,”沈硯從冰箱里拿出兩罐可樂,拉環聲清脆,“意思是‘別搶我咖啡,你的代碼自己debug’。”

兩人路過一間玻璃會議室,里面正在進行頭腦風暴,投影屏上跳動著抖音的用戶畫像。

“他們在討論什么?”她小聲問。

“TikTok的海外推薦算法,”沈硯指了指屏幕上的東南亞地圖,“比如在印尼,用戶更喜歡用短視頻記錄婚禮,所以要增加‘傳統服飾’的標簽權重。”

“哇,你怎么知道的這么多?”

“技術顧問的職責之一,”他晃了晃工牌,“幫不同部門翻譯‘技術語言’和‘人話’。”

沈硯的工位在角落,靠近落地窗,桌上擺著《算法導論》。周吔一眼便看見鎮紙下的櫻花書簽。

“沒想到你還留著。”她伸手觸碰書簽,發現下面壓著一張便簽:“‘周吔的睫毛在逆光下的反光率是37%’這是什么?”

“算法筆記,”他耳尖微燙,“為了優化‘逆光濾鏡’參數。”

“騙子,”她促狹看著沈硯笑,“你明明就是想我了。”

這時,陳默抱著文件夾路過,看見周吔時眼睛一亮:“嫂子來啦?老大工位的櫻花書簽可是他的‘鎮宅之寶’”

“陳默!”沈硯打斷他,“去幫我拿杯冰美式。”

“懂了懂了,”陳默擠眼,“這就去,不打擾你們‘技術交流’。”

周吔望著陳默的背影:“你們程序員都這么愛開玩笑?”

“只有他愛,”沈硯嘆氣,“不過他說得對”他拿起書簽,陽光穿過櫻花花瓣的鏤空處,在她臉上投下細碎的影,“你確實是我的‘鎮宅之寶’。”

這時手機震動,周吔收到張嘉嘉的消息:“小周,云邊鎮的劇本寫到程霜第一次遇見劉十三,需要女生主動的細節,幫我想想?”

她抬頭看向沈硯,忽然有了靈感:“要不……女生故意把橡皮擦滾到男生腳邊,然后說‘你的鞋比我的代碼還會躲BUG’?”

沈硯挑眉:“這臺詞……似曾相識?”

她吐了吐舌頭:“抄襲我們的初遇場景,不行嗎?”

“行,”他笑,“不過張嘉嘉要是敢把這段寫進去,我就找他收‘靈感版權費’。”

周吔跟著沈硯穿過開放式辦公區,忽然停在茶水間冰箱前。昨天在酒店整理行李時,她特意把惠州帶來的桂圓干和酸梅湯秘方分裝成小袋,此刻正安靜地躺在帆布包側袋里。

“等等,”她拽了拽沈硯的衛衣下擺,“我帶了點惠州特產,要不要分給你同事?”

“特產?”沈硯挑眉,“不是說行李箱超重了嗎?”

“但給你的同事們的份,我偷偷留了。”她眨眼,從包里掏出印著惠州西湖風景的油紙袋,里面是用玻璃罐裝好的桂圓干,還有手寫的酸梅湯秘方卡片。

路過陳默工位時,她忽然停住。工位上擺著個歪歪扭扭的程序員公仔,胸前掛著“代碼永不崩潰”的牌子——和沈硯送她的薩摩耶公仔是同類型。

她遞上一罐桂圓干,“陳默,謝謝你之前幫我查數學題的解題步驟。”

陳默瞪大眼睛,看看沈硯又看看周吔,忽然笑出小括號:“嫂子太客氣了!不過這桂圓干……老大平時可舍不得分享零食。”

“誰說的?”沈硯伸手搶過罐子,“她帶的酸梅湯秘方更厲害,消暑的同時還能提神醒腦。”

“哦~”周圍忽然響起起哄聲,幾個程序員湊過來,其中一個戴著“算法之神”徽章的男生笑道:“沈顧問這是被甜到寫bug了?”

這時,張一明端著咖啡路過,目光掃過油紙袋。

周吔遞上卡片:“張總,這是酸梅湯秘方,夏天煮了喝能提神。”

“收下了!”張一明接過卡片,故意提高聲音,“不過沈硯,下次再用‘優化睡眠’當借口獨吞特產,我就把你的‘專屬濾鏡’代碼公開。”

“張總!”沈硯皺眉,周圍爆發出一陣哄笑,有人開始喊“老大重色輕友”,有人追問“周吔專屬濾鏡”是什么。

周吔這才想起,沈硯曾說過給她定制過“情感濾鏡”。她湊近他耳邊:“原來你真的寫了專屬代碼?”

“只是調整了0.3%的亮度和對比度,”他別過臉,“因為你在逆光下的睫毛……”

“會反光,反光率37%,”她替他說完,想起工位上的便簽,“所以是‘周吔綠’和‘睫毛濾鏡’?”

周圍突然安靜,幾個程序員掏出小本本:“筆記記下來!原來老大的靈感來源是——”

“干活去!”沈硯抄起鍵盤作勢要敲,人群哄笑著散開。陳默趁亂拿走兩罐桂圓干,邊走邊喊:“嫂子下次來帶點荔枝啊!上次寄過來的超級甜!”

周吔看著被洗劫一空的油紙袋,忽然笑出聲:“你們程序員搶零食的樣子,像極了我和朋友搶烤肉”

“因為代碼消耗熱量快,”沈硯收拾著空罐子,忽然從抽屜深處摸出個鐵盒,“不過我留了一手,你送的酸梅湯原料,藏在這里。”

鐵盒里裝著曬干的酸梅、薄荷葉,還有她手寫的便簽:“程序員加班必備,煮15分鐘即可,忌空腹喝。”

臨近中午的時候,沈硯帶她去員工食堂。路過休息區時,有人在玩Switch,有人在打乒乓球,還有個程序員戴著VR眼鏡調試設備。

“好悠閑哇,你們上班環境好輕松呀”周吔看著有人邊吃泡面邊寫代碼。

“這叫‘彈性工作制’,”沈硯替她挑了靠窗的位置,“不過凌晨三點的會議室,比高考考場還熱鬧。”

12:00·員工食堂張一明端著餐盤坐到對面,故意調侃:“聽說你給一位作家提供靈感了?沈硯沒吃醋吧?”

“吃醋?”周吔挑眉,“他幫我想了好多細節,比如‘橡皮擦滾到腳邊’的梗”

“哦~”張一明拖長聲音,“原來‘技術顧問’的工作范圍,還包括幫女朋友想戀愛劇情?”

沈硯咬著吸管斜睨他:“張總要是這么閑,不如去優化TikTok的海外推薦算法?”

“哪敢啊,”張一明舉手投降,“不過說真的,周吔,”他忽然正經,“如果以后想拍短劇,字節的微視部門可以直接對接。”

“謝謝張總,”周吔笑,“不過我現在連《雷雨》的臺詞都記不全……”

“記臺詞?”沈硯忽然放下可樂罐,“我寫了個‘臺詞記憶小程序’,用艾賓浩斯曲線幫你規劃背誦,”

“沈硯!”她打斷他,“你是不是連我的課表都想寫成代碼?”

“差不多,”他認真點頭,“比如把‘臺詞課’設為每日9點提醒,‘形體課’設為14點,還有……”

“打住!”她假裝生氣捂住他的嘴,“我自己會安排,謝謝沈顧問。”

午餐后,沈硯帶她參觀實驗室。玻璃墻內,工程師們在調試VR設備,屏幕上閃爍著抖音的未來界面——那是沈硯參與設計的“元宇宙短視頻”原型。

“以后用戶可以用VR拍視頻,”他指著屏幕上的虛擬櫻花,“每片花瓣都是實時渲染的3D模型,飄落軌跡符合流體力學算法。”

“聽起來像魔法。”周吔伸手觸碰玻璃,虛擬櫻花落在她指尖。

“是代碼的魔法,”他輕聲說,“就像我用算法算出,今天帶你參觀的最佳路線——能避開所有需要開會的同事,還能在下午三點零七分,讓陽光剛好照到你臉上。”

她轉頭看他,發現他耳尖泛紅,沈硯,”她忽然握住他的手,“你其實……”

“其實什么?”他低頭看她,睫毛在陽光下投下扇形陰影。

“其實比代碼更懂浪漫。”

窗外,此刻陽光正好,字節跳動大廈的玻璃幕墻反射著藍天白云。周吔望著沈硯,忽然明白——有些代碼是寫給機器的,有些浪漫是寫給人心的,而她,恰好是他代碼里最溫柔的例外。

下午,周吔的帆布鞋踏入沈硯的辦公室,目光被他工位的白板吸引。上面用馬克筆寫著一行未擦去的代碼:if (zhouye_smile == true){ world_light += 100;}

“這是……”她指尖劃過字母,忽然想起之前在惠州夜市視頻時,他說“你笑的時候,我心跳破表了”。

沈硯伸手擦掉代碼:“測試用的偽代碼,不值一提。”

“明明是‘周吔笑了,世界亮了’,”她歪頭看他,“程序員的浪漫,就是把情話寫進bug里?”

“被你發現了,”他嘆氣,從抽屜深處抽出一本《Python入門》,封面貼著便利貼:“給周同學的第一節編程課——2016.8.30”

她愣住:“你還記得我們的約定?”

“約定?”他裝傻,

陳默抱著機箱進來,忽然指著周吔的帆布包:“嫂子!上次你寄的荔枝太甜了,我吃了三顆就寫了1000行代碼!”

周吔掏出玻璃罐,“桂圓干也一樣甜,你們程序員多補補、”

沈硯扶額:“陳默,你話太多了。”

陳默嬉皮笑臉:“冤枉!是嫂子寄的荔枝太好吃。”

周吔笑出梨渦:“下次還給你們寄荔枝”

沈硯打開電腦,屏幕上是精心準備的Python教學PPT。周吔抱著《Python入門》坐在轉椅上,眼睛亮晶晶的:“聽說程序員上課前都要‘祭鍵盤’?”

“祭鍵盤?”沈硯挑眉,把筆記本電腦推給她,“你想祭什么?”

“比如……”她從帆布包里掏出袋荔枝干,“用特產賄賂老師,換取‘作業減半’特權?”

“賄賂技術顧問,按字節規定要扣年終獎,”他接過袋子卻忍不住笑,“不過看在你剛才給陳默他們分桂圓干的份上。先說好,今天必須學會變量賦值。”

“首先安裝Python環境,”沈硯調出官網,“點擊這個Download按鈕,”

“等等!”周吔突然按住他的手,“為什么不是中文界面?你們程序員欺負文科生?”

“全球統一界面,”他耐心解釋,“就像抖音的算法邏輯,不分國界。”

周吔打開VS Code,盯著空白界面皺眉:“這和Word長得不一樣……”

“這是專業編輯器,”他忍住笑,“就像你們表演系用的斯坦尼斯拉夫斯基體系,程序員用的是”

“停!”她舉手投降,“直接教我寫代碼吧,我要看煙花!”

沈硯推開小會議室的玻璃門,投影儀自動投射出Python官方文檔,周吔跟著他走進來坐在椅子上,盯著滿屏英文抓了抓頭發:“為什么第一行代碼不是‘你好,世界’?”

“因為程序員的浪漫,從不說人話,”沈硯拖過轉椅坐在她身側,指尖在鍵盤上敲出經典語句:

print(“Hello, World!“)

“這行代碼的意思是,”

“我知道!”周吔舉手搶答,“是你好世界!”

“……”沈硯無奈笑出聲,“是所有程序員的初戀,每個編程故事的起點。”

“那我的初戀代碼,能改成‘你好,沈硯’嗎?”她拽了拽他的袖子。

“可以,但要先學會怎么正確寫。”他調出中文輸入法,“看好了,”

周吔突然按住他的手:“我自己來!”

她皺著眉輸入:

print(“你好,沈硯!)

按下F5的瞬間,紅色報錯如煙花般綻放:

SyntaxError: EOL while scanning string literal

“錯了?”她盯著屏幕撇嘴,“是不是因為我沒寫‘世界’?”

“是因為右引號沒閉合,”沈硯用鼠標圈出空缺的引號,“就像你背臺詞時漏了半句,觀眾會出戲。”

“哦……”她故意拖長聲音,“那技術顧問能不能示范一下,怎么讓‘你好,沈硯’完整出戲?”

他無奈搖頭,補全代碼,屏幕中央跳出白色字符:

你好,沈硯!

“現在是‘完整出戲’了,”他說,“但少了點程序員的儀式感。”

“儀式感?”

他在代碼末尾加上一行注釋:

#致我的Hello World

周吔湊近屏幕,睫毛在投影光中顫動:“這行小字是什么?”

“注釋,”他輕聲說,“不會被計算機執行,但會被程序員記住——就像劇本里寫的人物小傳。”

“接下來學變量,”沈硯新建文件,“比如用name變量存你的名字。”

周吔突然搶走鍵盤,快速輸入:

name =“周吔“

“這次沒報錯!”她轉頭看他,發梢掃過他下巴,“沈硯快夸我!”

“先別急,”他故意調出控制臺,“試試打印name變量。”

她自信地輸入:

print(name)

屏幕彈出:

周吔

“看吧,我就說,”

“等等,”他憋著笑,“你怎么知道要直接寫變量名?”

“因為……”她眼神飄向窗外,“我剛才偷偷看了半章書!”

“撒謊,”他捏了捏她的耳垂,“書里這節標題是‘變量:程序員的儲物箱’,你連儲物箱長什么樣都不知道。”

“沈硯!”她捶他肩膀,“你居然考我?”

“那我再考考你,”他在代碼里加入新變量:

love =“代碼“

print(name +“愛“+ love)

“猜猜會輸出什么?”

周吔歪頭思考:“周吔愛代碼?”

按下回車,屏幕卻顯示:

周吔愛代碼

“為什么沒有空格?”她驚呼。

“因為字符串相加等于拼接,”他用鼠標劃出代碼,“想加空格,得手動寫——”

他修改代碼:

print(name +“愛“+ love)

這次輸出:

周吔愛代碼

“現在才對,”她滿意地點頭,“就像我對你說‘沈硯愛周吔’中間要留足心跳的空隙。”

沈硯的耳尖瞬間泛紅,快速最小化窗口:“下節課再學運算符優先級。”

“現在教你寫煙花代碼,”沈硯調出海龜繪圖庫,“先導入模塊。”

周吔突然指著他的代碼喊:“等等!你寫錯了!urtle寫成了turtle!”

他定睛一看,果然多了個t:“……你居然能發現?”

“因為我記住了urtle是‘烏龜’的意思,”她得意的笑,這時候的她還是準大學生,人生中知識儲存量最多的時間點。

“原來你才是隱藏的學霸,”他無奈笑,“那接下來,由周老師指導我畫櫻花?”

“榮幸之至!”她坐直身子,“先畫花瓣,用for循”

“等等,”他按住她的手,“for循環要記得寫冒號,還要縮進。”

“知道啦!”她甩開他的手,輸入:

for i in range(5):

turtle.circle(100)

turtle.left(72)

按下運行,一只綠色烏龜在屏幕上畫出五邊形:

“怎么不是櫻花?”她皺眉。

沈硯憋笑:“因為你沒告訴烏龜,這是櫻花,不是五邊形——”他修改代碼,加入顏色和弧度:

for i in range(5):

turtle.color(“pink“)

turtle.circle(100, 72)

turtle.left(144)

粉色花瓣在屏幕上緩緩綻放,周吔眼睛發亮:“原來櫻花的秘訣是144度!”

“也是我每次看你的角度,”他輕聲說,“能看到最亮的梨渦。”

陳默抱著文件夾進來,瞥見屏幕上的櫻花:“喲,老大這是提前過情人節?”

“學編程,”沈硯淡淡道,“別亂猜。”

“學編程需要畫櫻花?”陳默挑眉,“我學的時候只畫過二叉樹。”

周吔忽然指著代碼里的注釋:“陳默你看!這行寫著‘ZY的睫毛=37%反光率’!”

“什么?”陳默湊近屏幕,沈硯迅速最小化窗口:“ bug注釋,不值一提。”

“明明是——”周吔嘴角笑出弧度,“程序員的情話加密術。”

沈硯收拾電腦時,周吔忽然指著他的筆記本:“這是什么?”

頁面上是未保存的代碼:

if __name__==“__main__“:

while True:

print(“周吔是光“)

“死循環?”她挑眉。

“是程序員的執念,”他合上筆記本,“就像我每天睜開眼,第一件事是確認你有沒有發消息。”

“那我要給這段代碼加個終止條件,”她搶過筆,在后面寫下:

if kiss == True:

break

“現在,”她晃著筆笑,“只有收到吻,才能跳出循環喔。”

“霸道,”他嘆氣,卻在她轉頭時,快速在她額頭落下一吻,“這樣,循環終止。”

傍晚BJ·字節跳動19層小會議室,沈硯用馬克筆在白板上畫完循環結構示意圖,轉頭看見周吔正用他的鍵盤敲《小星星》旋律,櫻花發卡歪到一邊。

“認真點,”他彈了下她的額頭,“等會要學的是,”

“等等!”她忽然指著他電腦上的代碼片段,“這個import base64是什么?”

“Base64加密,”他調出示例代碼,“比如把‘周吔是光’變成亂碼,”

他敲下兩行代碼:

message =“周吔是光“

cipher = base64.b64encode(message.encode()).decode()

屏幕彈出:

“周吔是光”

周吔眼睛一亮,指尖劃過屏幕:“那我現在發消息給媽媽,用這個加密,他是不是就看不懂了?”

“理論上是,”沈硯忍住笑,“但前提是他也要知道解密方法,”

他補全代碼:

decrypted = base64.b64decode(cipher.encode()).decode()

print(decrypted)

輸出:

周吔是光

“哇!”她拍手,“這是不是黑客常用的技術?”

“黑客?”沈硯挑眉,“黑客更擅長攻防,比如滲透測試、漏洞挖掘——”

“那我能學嗎?”她拽了拽他的衛衣袖子,“就像《黑客帝國》里的崔妮蒂,用代碼控制世界!”

“控制世界需要先控制變量,”他調出Python官方文檔,“比如這個os.system函數——”

他輸入:

import os

os.system(“shutdown -s -t 60“)

周吔驚呼:“你要關機?!”

“只是演示,”他快速取消命令,“真正的黑客不會用這么粗暴的方式,而是用社會工程學”

“社會工程學?”

“比如,”他忽然湊近她耳邊,“假裝成快遞員騙你開門,或者,”

“停!”她捂住耳朵,“我還是學加密吧,這樣給你發消息,別人就偷不走了。”

“小偷要是知道你用Base64,”他彈了下她的發卡,“會笑到打鳴。”

周吔忽然搶過鍵盤,輸入:

import random

def hack_shenyan():

return random.choice([“請喝奶茶“,“陪看電影“,“寫代碼情書“])

“這是什么?”沈硯挑眉。

“黑客程序,”她一本正經,“每次運行都會隨機觸發你的‘指令’。”

他看著屏幕上跳出:

請喝奶茶

“耍賴,”他嘆氣,“這個程序沒有終止條件。”

“所以是死循環呀”她晃著手機,“就像我喜歡你,沒有終點。”

沈硯的耳尖略微泛紅:“下節課學網絡爬蟲,現在去吃飯。”

路過茶水間時,周吔忽然指著陳默的電腦:“他在干嘛?”

陳默正在用Wireshark抓包,屏幕上滿是數據流:“抓TikTok的海外請求包,找漏洞。”

“漏洞?”周吔眼睛發亮,“是不是像衣服上的破洞,需要用代碼縫補?”

“差不多,”陳默笑道,“比如發現某個接口沒有做權限校驗,黑客就能——”

“陳默!”沈硯打斷他,“你是想讓她半夜起來寫漏洞報告?”

“不敢不敢,”陳默舉手投降,“不過嫂子要是想學,可以參加我們的‘白帽黑客訓練營’——”

“真的?!”周吔轉頭看沈硯,眼神發光。

“可以,但每周只能學兩小時,”沈硯妥協,“而且必須先寫完今天的作業,用Base64加密一段臺詞,發給我。”

“成交!”她伸出小手和沈硯拉勾。

主站蜘蛛池模板: 池州市| 饶平县| 枣阳市| 永清县| 平乡县| 吉木乃县| 仙游县| 温州市| 巨鹿县| 内丘县| 乡城县| 弥渡县| 万州区| 新宁县| 射阳县| 普洱| 兴安县| 凤阳县| 顺义区| 上林县| 西城区| 原阳县| 淮南市| 科技| 黔西县| 枞阳县| 江安县| 阳高县| 湖南省| 通化县| 东乡县| 盘锦市| 南川市| 平利县| 乌拉特前旗| 吉木萨尔县| 泰顺县| 周口市| 万荣县| 舒城县| 文昌市|