揮一揮衣袖,開始一段新的旅程

悄悄的我走了,正如我悄悄的來;我揮一揮衣袖,不帶走一片雲彩。

前言

錢鍾書老先生在《圍城》中說道:“天下只有兩種人。比如一串葡萄到手,一種人挑最好的先吃,另一種人把最好的留到最後吃。照例第一種人應該樂觀,因爲他每吃一顆都是吃剩的葡萄裏最好的;第二種人應該悲觀,因爲他每吃一顆都是吃剩的葡萄裏最壞的。不過事實卻適得其反,緣故是第二種人還有希望,第一種人只有回憶”。

而我在反思自己時卻發現,無法將自身完全歸於這兩種人的一類,如果非要選一種,我更像是老先生提到的第二種人,總喜歡把最好的留到最後。按理說這樣的人應該總是向前充滿希望的,但是我卻熱衷於收集回憶,記錄生活中的點點滴滴,認真記下生活中的每一筆支出,寫下人生中一次次感動…

其實一開始我並沒有這方面的愛好,不知從何時起,兒時的記憶漸漸和夢境中的畫面雜糅在了一起,有些事情已經分不清是之前確實發生的,還是曾經在夢境中悄悄的來到過,所以慢慢地我養成了這樣的習慣,記錄生活中一切想要被回憶的事情,期待着有一天能與對此感興趣的人一起分享這些點點滴滴。

緣由

技術博客中很少寫自己的生活,這一次其實也和技術有關,在一個工作崗位上勤勤懇懇工作六年之後,今年終於鼓足勇氣決定出來找找新的機會,確定了新的目標之後回頭看看這六年收穫了很多,同時在這段找工作的經歷中也學會了不少東西,新的工作基本定下來了,現在總結一下工作以來的經歷以及面試中遇到的問題,方便後續覆盤時能有個參照。

懵懵懂懂的6年前

走出校門

從大四學期便開始走出校門,一切按照教學大綱進行着,大四這年是企業實訓,我們被安排到一家機構進行學習,學習結束已經13年的深冬,我們一羣小夥伴作爲花朵開始走出曾經的溫室。

其實從實訓的後半段我們已經開始在北京各大高校“流竄”,參加了很多不請自來的校招,進行了一輪輪的筆試,但很少有人從中得到滿意的工作機會,我也嘗試過幾次,但是感覺自己真的很渺小,經過努力得到了一個大廠的面試邀請,我懷着激動的心情前去面試,走的時候還換上了自己都覺得怪異的正裝,好在面試官並不在意我的這份不自然,完全投入身心開始進行面試。

很幸運我通過了一面,但是在去參加二面的路上我才發現後背已經被汗水浸溼了,之前也參加過幾次面試,但是這一次確實是讓我身心俱疲,從中也漸漸體會到了不同公司之間的技術差距,我一心想加入這個團體,但是二面的結果又把我拉回了現實,二面的過程很糟糕,有一道題我至今還記得,那就是關於數據庫的連接,但是回答的很模糊,由於自己的知識儲備不足,我懷疑自己當時連題目都沒有弄懂。

走進社會

大廠失利後,開始尋找其他的機會,畢竟工作是現在的第一要務,放棄了保研機會一心想着早點參加工作,如果連工作都找不到豈不是讓人笑話了,時間不久便通過了幾家面試,其中有意向可以試試的有兩家,一家是做偏硬件的軟件,另一家就是做遊戲開發的,工資待遇差不多,相比較而言第一家要高一些,但是當時沉迷於Dota的我經過“深思熟慮”之後,委婉的謝絕了第一家的邀請,進入了這家遊戲公司,也就是後來我工作了6年的公司。

開始工作

我的人生很幸運,我一直這樣覺得,在這裏我碰到了我工作的中的第一位導師,都說師傅領進門,修行在個人,那麼他就是我進入社會環境的那個師傅,但是他比我也大不了幾歲,我更願意稱呼他爲兄長。

時光荏苒,歲月如梭,即便轉眼已經過去了6年多,但是工作第一天他讓我修改的第一個BUG我至今還記得,那是一把“罪惡坑的鑰匙”,BUG具體的細節並不重要,而是他處理的方式讓我記憶猶新。

開發環境配置好之後,兄長便指給我一個BUG,讓我嘗試修改,便是那個“罪惡坑的鑰匙”,第二天他就過來詢問BUG的修改情況,我告訴他我的修改思路A,他說可以這樣改,但是這種修改方式可能會給後面帶來一些不利於擴展的問題,然後在他的電腦上給我看了他建議的修改思路B,然後讓我按照這個思路去修改,我比較之後確實思路B更好一些。問題的關鍵是這個BUG他已經想好了修改方案,並且嘗試修改過,他指定讓我修改完全是爲了幫我熟悉問題的處理方式而非完成工作。

之後也和一些其他領導溝通過工作,但是能這樣帶我入門的兄長就只此一個,其他人大多是就是完成工作即可,很少有人再想教我的什麼東西了。我是幸運的,在我懵懂的年紀碰上了這樣一位領路人,之後我們在項目組之間分分合合,但始終工作在同一個屋檐下。

勤勤懇懇的6年

初入職場

剛剛參見工作,一切都顯得那麼新鮮,經常會有這樣的感嘆:原來遊戲中的這個功能是這樣實現的!開始的時候對於工作的狀態還是有點不適應,印象最深的就是下午的時候總是昏昏沉沉的,當時可以用“熬”這個字來形容,但是隨着後面工作內容的鋪開,大腦在緊張的處理這些問題時,犯困的毛病就改掉了。

工作之前寫的項目很多是個人完成的,就是幾個人合夥做一個項目,基本上也不太大,所有的代碼也都很瞭解,但是剛接觸這個遊戲項目時感覺它太大了,所有的代碼只能不斷的搜索才能找到,仿照已有的功能開發了兩個新功能之後,漸漸的找到了感覺。

很長一段時間之後再回過頭來看自己的代碼時會發出這樣的感嘆:這段代碼是我寫的嗎?現在整個流程我已經清楚了,但是當時寫這段代碼的時候是怎麼找到這裏的。其實一開始寫代碼完全是照葫蘆畫瓢,很多語句不知道什麼意思,但是功能類似,這樣寫完就可以用了。

當時還有一個情況就是開發環境是沒有網絡的,有問題不能上網去查,好在分配給我的沒有太複雜的功能,依照原來的系統都可以完成,並且我喜歡做筆記,常用的那些代碼實現都讓我記在了本子裏,有些還記了不止一遍,這些筆記我至今還留着,現在看起來顯得過於幼稚,但卻是我工作以來的痕跡。

漸入佳境

工作一年以後,對整個遊戲已經比較熟悉了,可以獨自完成很多功能,穩定下來的遊戲也逐漸對接多個平臺開始蓬勃發展,那時的我真的是幹勁十足,每天像打了雞血一樣,作爲服務器開發的我開始偶爾“插手”客戶端的開發工作。

期間還養成了每天讀書的習慣,其實這個習慣的養成是被動的,原因是分配給我的電腦比較卡,我提過幾次但是一直沒有換的機會,每天早上開機至少得10分鐘左右才能正常順暢的工作,所以後來我一般會早來一會,開機這期間我就會把旁邊同事的書拿過來看看,後來同事的書看完了,我就買一些相同類型的技術書籍來看,再後來開始擴展知識面,買一些流行技術的書,這個習慣就一直保留了下來,一直到現在每年都會看幾本技術書籍,有些是不朽的經典,有些是新進的技術。

其實很多書的內容我只是有大概的印象,具體的內容早就忘記了,偶有幾本書感覺有意思會回過頭來再次翻看,每次看都會有不同的感受,我喜歡在紙質書上做筆記,想到什麼就寫什麼,有些章節會被我劃的很亂。在我看書的時候總有同事問我,你看那麼多書都記得嗎?都學會了嗎?這時我常常會自嘲一般的回答:“看着玩而已,早都不記得了”。

實際上記不記得重要嗎?今天吃了有營養的東西,明天依舊會餓,你會因爲明天還會吃飯就放棄今天的美食嗎?我想不會的吧,我感覺看書也是一樣,我今天看了明白了一些事情,或者讀到一個故事感動了很久,明天忘了就忘了,畢竟我曾經學會過,曾經也感動過。這些東西會消失的無影無蹤嗎?我想也不會的吧,吃過的美食總會有一部分營養進入了我們的細胞,成爲了肉體的一部分,而曾經讀過的書會忘得一乾二淨嗎?當然不會,那些使我們印象深刻的文字總會在未來的某個深刻,在我們的腦子中再次迸發出來。

再入蠻荒

天下沒有不散的筵席,參加工作時就參與開發的這個項目終於到了最後的維護階段,這個階段距離我剛進公司時已經過去了2年半的時間,此時原項目不再進行新的開發只進行必要的維護,原項目組的人也被分成了兩部分,現在的有兩個新項目,一個是相同技術棧不同玩法的端遊項目,一個是緊追潮流的手遊項目。我當時想去做手遊,最終也確實分到了手遊組,就是從這時起,我與之前的兄長分到了不同的項目。

事實證明這個公司向手遊進軍的項目確實是一條蠻荒的道路,整個技術鏈遇到了前所未有的挑戰,我們一步步探索着前進的道路,試圖越過一個個技術的深坑,而真實情況卻是多少次我都陷在了裏面。

在這個項目組我遇到了很多新的夥伴,有的樂觀、有的開放、有的樂於奉獻、有的精益求精,在這我看到了相同而又不同的服務器程序,之前的程序被改的面目全非,我又得重新適應,面對全新的客戶端也有太多的新知識需要學習,每天必須打起十二分精神來應對工作。

一次次的否定自我,一次次的推到重建,在項目的緊要關頭,升級引擎、重建UI、優化邏輯,最終還是把這款遊戲送上了線,但事實卻如曇花一般,一閃而過,失敗了,我們沒有做出成功的產品,僅僅是做了一次失敗的嘗試,此時距離進入這個項目組過了1年半的時間。

併入源頭

手遊組的失敗嘗試使我有了到外面大世界看看的想法,就在這時,和我們一同開始的另一個項目組已經完成了一次輪迴,很明顯他們成功了,作爲同時開始的兩個項目,一成一敗的比較對於我們的打擊很大,而那個成功的項目組也進入維護階段,領導決定合併兩個項目組繼續完成手遊的開發,這使我又打消了出門找工作的念頭。

兩個項目雖然一成一敗,但是各有優勢,因爲最終做的是手遊,所以原來的手遊組有技術優勢,而另一個成功的項目有成功的遊戲內容,兩者一合併應該很快就能出一個產品,更重要的是,這兩撥人有很多都是曾經的好友,好友聯手打造一個遊戲也是很有意思的事情。

可是理想很豐滿,現實很骨感,事實證明做出一款遊戲是多麼的不容易,雖然兩部分好友合併到一起沒有什麼磨合的問題,但是遊戲內容的一次次修改不斷衝擊着之前制定的開發計劃,整個開發計劃不斷修改,時間節點在不斷修改的需求面前顯得那麼渺小,常常被無情的踐踏。

終於看到勝利的曙光了,在不斷調整了2年之後,遊戲迎來了上線的的一天,之後開始根據線上反饋進行調整,在我看來遊戲開發到這已經基本完成,雖然達不到爆款的要求,但終究是一款中規中矩的遊戲,沒有大的問題,也沒有太閃光的點,我在這的修行也要告一段落了。

離開這裏的一個導火索是遊戲內容一次大的調整,本來現階段不可能大面積修改功能了,可是在計劃中還是出現了太多看不懂的修改內容,因爲之前有了完成遊戲就離開的想法,看到這裏彷彿又要開啓一個新遊戲了,我也就沒有再留下的必要了,是時候到外面的世界去看看了。

信心滿滿的6年後

外出求索

19年底,在第一家也是唯一一家公司呆了6年之後,我開始外出面試了,從一開始的信心滿滿到後面的發奮圖強,我逐漸認識到了,我必須出來闖闖了,我在一個安逸的地方待了太久,雖然每天都在學習,但事實上優秀的人比你還要努力,以下簡單介紹下面試過程,對於需要掌握的知識進行一個梳理,便於日常複習警醒自己,大概面了幾家,以下按一面時間先後排列以下T、D、Y、W、Z、H:,全部以字母代替就不列出公司名了,有興趣的可以進一步交流下。

T公司

很抱歉一開始把公司名看錯了,當時還在想一家旅遊公司怎麼還做遊戲,但是畢竟是第一家在招聘APP上給我發麪試邀請的公司,怎麼也要去看看,後來瞭解了一下這是一家主營棋牌類的公司,面試當天早早就來到了這家公司,順便再樓下吃個了飯,面試開始先填個表格,內容跟查戶口一樣,我只填了其中的必要信息,接着做筆試題,包括後面幾家面試,這是我唯一做的一套筆試題,內容不難,可能就是一個簡單瞭解。

我還沒寫完面試官就來了,我看他特別像我初中的化學老師,整個過程很輕鬆,聊聊筆試題、曾經的項目,面試官還介紹了他們公司的情況,他表示了對我的肯定,問我有沒有興趣轉Golang語言,我內心是拒絕的,其實嘴上也拒絕了,因爲我一直使用C++,之後又是其他一個組的負責人來面試,他們使用的Python,整個過程依舊輕鬆加愉悅,還向他請教了分佈式服務器的知識,最終因爲我不想放棄C++而結束,他問原因是什麼?我開玩笑說:可能是情懷吧!

涉及到筆試面試部分內容,列舉在此主要爲了重溫覆盤,如果你想做遊戲開發也可以看看這些知識:

  • 不同類型數據內存佔用大小
  • 估算PC機上1秒鐘可能執行的空的for循環次數
  • linux下常用搜索文件命令
  • 常用的設計模式
  • 字符串翻轉
  • 撲克牌中挑最長順子
  • 迴旋排列矩陣
  • 分佈式服務器設計
  • linux中的lvs
  • 服務器橫向擴展
  • 從頭實現一個服務期
  • websocket
  • 玩家揹包怎樣設計

D公司

這個公司完全是抱着學習的心態去的,因爲公司本身很大並且不是做遊戲的,來這家公司完全是因爲他們的技術總監在招聘APP給我發了面試邀請,我本來覺得不合適,人家說可以來試試,抱着學習的態度我就去了,爲了這次面試還看了好幾個調度算法,最終也沒用上。

本來10點半的面試,7點多我就出發了,期間地鐵還坐反了,還好出門早,來到西二旗發現手機都沒有信號,出門都騎不了自行車,走了很久才找到一輛,開鎖出發一氣呵成,9點多就到公司樓下了,旁邊便利店買了個菜糰子,對於幹吃的我來說太大了,10點左右進入公司,大公司就是不一樣,進門登記後還要貼一個籤,這是怕我亂跑啊。

面試不久後進行,來了一個小哥哥,年紀應該不大,很沉穩的樣子,帶了一臺筆記本電腦,這個好像是標配,提倡無紙化辦公吧,我的一切反饋他都會記錄在上面,整個過程對於他來說應該是輕鬆的,但是對於我來說有些窘迫,整個過程對我的評價就是,很多東西用的很熟,但是對於原理掌握的還不夠,算是沒有達到他們的要求,這也在我的意料之中,畢竟就是來學習的。涉及到的面試內容大概有如下問題:

  • 開源項目源碼的閱讀情況
  • 動態庫加載路徑
  • 編譯的過程
  • 線程崩潰爲什麼會導致進程掛掉?一定會掛掉嗎?
  • 加權最短路徑
  • 打印過程中出現中斷
  • 中斷信號怎麼處理
  • 怎麼理解多態
  • 編譯時多態和運行時多態
  • 模板和基礎類型的效率比較
  • gdb調試
  • 爲什麼先構造基類
  • 析構函數的調用順序
  • 非阻塞的write什麼時候返回
  • 如果連不上服務器會有那些情況
  • 注意wireshark的使用
  • listen的backlog參數

Y公司

這個公司有自己成熟的產品線,涉及到卡牌、MMORPG等等,同樣是在招聘APP上收到面試邀請,但這次招人的是一個SLG遊戲組,整個給人的感覺無論是公司的氛圍還是項目的情況與我當前公司很像,一共來公司面了兩次,第一次兩個技術Leader分別進行面試,然後又和HR聊了一下,技術面主要圍繞曾經的項目,後來第二次面試跟遊戲製作人聊了一下,感覺和之前的公司更像了,當時就打了退堂鼓,最終婉言謝絕了這家公司的Offer,面試主要技術內容:

  • 技能設計
  • redis緩存
  • 指針用法
  • 二分法思想
  • 項目熟練度

W公司

這個公司是遊戲開發中的大廠了,首先是在招聘APP上,HR和我溝通之後要去了簡歷想要看看,後來收到了面試電話確定了面試時間,面試當天也是早早的來到了公司,這天在周圍沒有找到吃飯的地方,要餓着肚子了,等待了一會被HR小姐姐帶去二樓等了半小時,後來她跑過來告訴我位置錯了,確實有點尷尬。

之後我被帶去了正確的位置,然後開始了面試過程,面試官是一個小哥哥,整個面試的過程感覺表現的不是很好,有些問題回答的不太完整,但是卻從中學習到了很多東西,臨走時問了幾個面試問題的正解,並且冒昧的問了小哥哥的工作年限,得知才比我大兩歲就已經在遊戲大廠當主程之後,深感我們之間的差距還很大,同時也激起了我努力學習的意志。

面試後好幾天也沒有消息,本來我感覺這次面試可能失敗了,但是幾天後我又收到了該公司的二面邀請,收到邀請時挺高興的,當時還有另外幾家面試,之前已經約好了時間,所以這次二面不得不向後推了幾天,因爲是第二次去,路線熟悉了很多,又是早早來到公司,本來以爲還是技術面,但是交流幾個問題之後發現問的都是之前的項目,和人員之間的溝通的問題,後來對方主動說明他是項目負責人,整個聊天過程比較輕鬆,談過之後讓回去等消息。

第二天收到HR視頻面試的邀請,本來想約晚一點回家好好面試,但是因爲HR小姐姐還有其他安排,我只得將面試時間提前,在公司旁邊找了個安靜的地方進行視頻面試,主要聊了一下目前的薪資待遇以及項目情況,能夠入職的時間等等,整個過程很愉快,並且得知其實是一個工作室在招聘,我問了一些相關的問題,面試結束回到家我仔細考慮了這個機會,第二天又找該項目的負責人瞭解了項目的詳細情況,覺得這是一個很好的學習機會,與目前的工作內容有很強的互補性,可以試一試。

  • Gitflow使用方法
  • gcc編譯過程
  • extern和static的作用
  • 多態、虛函數、多繼承虛函數
  • 大根堆創建和插入
  • 排序找出接近當前數的較大數
  • 迭代器的理解、迭代器都是指針嗎?
  • 字符編碼、unicode、utf8
  • 指針數組、數組指針、函數指針
  • 引用和指針的區別
  • 網絡4次揮手、爲什麼要4次?
  • 函數阻塞是否佔用資源–掛起不佔用

Z公司

這個公司不是遊戲公司,近兩年異常火爆,有專門的遊戲部門,但是我面試的職位不是遊戲崗位,而是時下非常火的中臺崗位,其實是在嘗試新的領域。起初是獵頭在招聘APP上要了我的簡歷,然後接到了公司HR小姐姐的電話,約定了面試時間,相互加了微信,面試之前和HR小姐姐交流了不少,知道公司技術面大概有3面,因爲心裏沒底,抱着學習的態度考慮能過兩面就行,如果實在太難能過一面也行,作爲一個求知者,知道各個公司都需要哪些知識也就有了學習的目標。

可現實總是太殘酷,這個面試我算通過了半面,什麼叫半面,由於我的“出色”表現,我感覺正常的一輪面試並沒有結束就被禮貌的請出來了,因爲幾個問題之後我也感覺出來了,我之前學的技術和他們開發思想差的有點多,所以出於禮貌,面試官也沒說什麼,還給出了一些建議,人真的不錯,大公司的涵養還是有的。

  • 你開發的最滿意的系統 --道具系統
  • map和hashmap的區別
  • stl的使用
  • vector的擴容,是不是線程安全的?
  • 遍歷刪除vector元素,迭代器失效
  • 有沒有用過redis的有序集合
  • redis中hash插入的時間複雜度
  • 設計一個紅包系統 --評價爲原始的面向對象方式,有些過時
  • 給出建議這個紅包系統必須要考慮redis、分佈式、容災、備份
  • 建議如果想轉向互聯網需要準備的很多,可以先看下現有的解決方案

H公司

這個公司的面試機會是獵頭推薦的,主要做戰爭題材的遊戲比較多,現在也有卡牌和休閒,本來約的面試時間比較早,但是由於個人原因回了次老家,結果這個面試不得不向後推了,面試當天來到公司,前臺居然一個人都沒有,之後電話聯繫到面試官,首先表達了之前改約的歉意開始了面試過程。

面試主要圍繞之前的項目進行,對具體的系統實現問的很詳細,通過對細節的瞭解,對我之前的工作內容有很多不理解,感覺有很多內容不符合他的認知,整個過程倒還輕鬆,沒有太多的技術問題,總體感覺不是一路人,很可能走不到一起。

聊了大概一小時,換HR繼續聊,還是問了之前項目、期望薪資以及入職時間等等,確定了是卡牌組再招人,問了一些當前公司情況之後,按照流程回去等消息,但個人覺得可能不太合適。

  • 面向對象要求比較高,C+Class的方式不被認可
  • 着重問了一個遊戲系統的實現方式(押鏢)
  • 面相對象設計技能系統
  • 強調遊戲充值實現的重要性,以及可能出現的多種情況
  • 認爲只有DBA纔有權利修改數據庫結構

準備離開

出去面試一圈基本確定了新的工作,是時候離開了,先跟帶自己入門的兄長道個別,我們兩個聊了很久,對於我離開去學習新知識,兄長表示支持,他不僅是我工作上的領路人,同時脾氣特別好,平時處理問題也很妥當,一直是我學習的榜樣。

緊接着便向老大提出了離職,準備年前離職後去新公司入職,而老大的意思是再等等,年前太倉促了,先看看現在公司的情況,年後回來如果還想走再辦離職吧,考慮到還有一段時間的就要放假了,爲了更好的完成了交接工作,我答應了老大的請求。

即將離開

過年期間考慮了好久,還是準備出去闖一闖,今年春節的新型冠狀病毒疫情非常嚴重,很多公司都推遲了上班時間,雖然2號之後就回來上班了,但是很多同事由於封路的原因都還沒回來,離職手續也一直沒有辦成,年後又找老大聊了一次,畢竟工作了6年,雖然不捨,但是確實該離開了,期待下週的情況能好一些,能順利辦完手續開始新的旅程。

揮揮手再出發

更新於2020年2月15日22:45:51

揮手告別

事情辦得比較順利,經過前期的準備,週一便完成了工作交接,上傳了交接文檔,週二開始辦理離職手續,由於新型冠狀病毒疫情的原因,公司依舊沒有什麼人,好在辦理離職的人員都在,簽字、簽字、再簽字,成功在下午拿到離職證明,不過唯一遺憾的是,工牌和門禁卡同時上交了,不能給我留個紀念了,畢竟是在身上裝了6年的工牌,6年了幾乎沒有離開過……

因爲很多同事也沒來,加之疫情的嚴重性,散夥飯並沒有吃成,前一天下班的時候專門去旁邊的簋街轉了一圈,發現除了幾家僅有的外賣之外,都是黑着燈的,這可是簋街啊,是讓人們可以排隊等到凌晨2點的簋街,現在居然這樣冷冷清清的,找不到吃飯的地方,散夥飯只能作罷。

下班前跟僅有的幾個來上班的好友道了別,當然其中還有我那位可敬的兄長,當所有人都在關心你飛的高不高時,只有朋友關心你累不累,兄長就是這樣的朋友,臨走了還關心地問我社保能不能接上,只因爲我之前和他提過一次擔心社保斷繳的問題。因爲很多人還沒來上班,剩下的關係好的小夥伴,在我晚上回家後,通過微信開始了與他們的遠程雲分別。

還看今朝

告別了過去的工作,自然要步入新的旅程,爲儘量避免人員接觸,新的公司在週五爲我在線辦理了入職手續,兩位幫忙辦理入職的新同事真的非常友好,整個流程遇到不懂的都會及時解答,這讓我非常期待下週一正式工作後的生活,新的旅程即將開始,又要在一個地方生根發芽了~

發佈了149 篇原創文章 · 獲贊 272 · 訪問量 53萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章