我靠着这套学习视频+文档,自学Android从外卖小哥走到了头条
5.受到一些心靈雞湯的鼓勵,比如什么種一顆樹最好的時機是十年前,其次,就是現在!
辭職之后
我辭去工作,開始在家自學Android開發。主要的學習方式就是在網上看視頻教程。那些視頻教程,初級的基本上免費。中高級的有些會收費,大概50-300元左右一套。反正“學費”上我沒花什么錢,總共不到一千元吧。
先是學了些java基礎(把學校學的撿起來)。在思考未來就業方向時,猶豫了是繼續學java還是選擇學Android。在我讀書時是學過JAVA的,有過一些基礎,再考慮到就業各個方面還是選擇了Android,我這個情況,肯定進不了大廠,做不了大項目了。但是能混口飯吃就很好了!
學完前java基礎后,我還跟著視頻教程,自己做了兩三個簡單的項目。在我學習過程中,讓我比較有自信的是——沒遇到什么挫折。當然,肯定遇到過各種問題被卡住,于是加入了一個圈子,里面有我這樣的小白,有Android講師,有大廠大牛。里面給了我很多建議!
我的今日頭條之路
投頭條主要是因為聽說頭條的筆試面試難度都高,想試試。最開始也沒打
算去頭條,所以直接投的北京Android開發。
頭條走的內推,但還是參加了統一的筆試(有概率免筆試),筆試印象不太深了,只記得有兩個算法題,而且難度都挺大,是那種很容易做對30%但很難做對100%的算法題,不過憑借著我刷題的功底(以及當時的靈機一動),還是把兩題全都做出來了。
然后就收到了頭條視頻面試的通知。值得注意的是,頭條的筆試刷人比例很大,我周圍基本沒有人進頭條的面試。面試一共三輪,每輪面試完后幾分鐘都會接到HR的電話通知面試是否通過。
一面大概持續了一個小時。問的問題印象不太深了,主要問的都是計算機基礎、Java基礎和Android基礎的問題,但問的深度較深。比如問到Java并發的時候,就讓我用代碼來演示線程之間的同步;還深入到了wait()和notify()的工作原理(鎖池,喚醒的native實現),以及notify()和notifyAll()的區別、notify()可能造成死鎖的問題。印象中沒有要做算法題(如果有也應該是LeetCode Easy難度的)。一面完面試官就直接讓我等二面了。
二面大概持續了一個小時。
二面記的也不太清楚了,挑幾個我記得的說。最開始是問到了一些Java基礎,比如int和Integer的區別之類的。然后還用實例讓我分析Java面向對象編程的一些細節,比如內部類的性質、什么時候用內部類、內部類和靜態內部類的關系。還問到了一些進制的問題,比如數的二進制表示、與十六進制的關系、移位運算。
問完這些就開始看著我的簡歷問,問到了我Python學的怎么樣(項目中用到一些Python)、怎么學習Python的、主要拿來干什么之類的問題。然后面試官讓我解釋一下YUV顏色空間,這個讓我心里一驚,因為這個第一個問我YUV顏色空間(整個秋招只有兩個面試官問到YUV顏色空間,另一個是網易游戲),而且看樣子面試官是了解YUV顏色空間的,要知道只有專門做圖像視頻的才會了解到這些;然后我就詳細介紹了YUV顏色空間,以及對應的如I420和NV21格式。隨后面試官又問我懂不懂Android上的codec(因為我簡歷上寫了Android的MediaCodec),我說我用過MediaCodec,面試官又問主要用來干什么,我說拿來做視頻硬解碼。然后面試官針對MediaCodec的使用、注意事項等問了我十多個問題,我都一一很快作了回答。到這里我基本就反客為主了,因為用MediaCodec的人很少,而我因為科研的關系專門鉆研過MediaCodec,還實現了第一個通用的視頻解碼方法,可以說對MediaCodec了解的很深了;而面試官可能就是剛剛入門,正在學習MediaCodec,所以我的回答就是游刃有余了。面試官問完這些問題后很興奮,看我全都答上來了就覺得我的面試應該算通過了,但他看了看時間發現才四十多分鐘,于是就說再出個算法題我做,就是一道經典的算法題——兩個字符串大數相加,早有準備,所以一口氣就寫出來了。
最后結束的時候面試官跟我說非常希望我能去頭條實習。最后我問面試官為什么他會了解MediaCodec這么冷門的東西,面試官說他目前正在參與西瓜視頻APP的研發,接觸到視頻處理,所以就了解到MediaCodec了。
然后就是三面了,三面也大概持續了一個小時
因為網絡的原因,是電話面試的。三面的畫風和前兩面不一樣,沒有問太多技術方面的問題。最開始還是讓我介紹項目,介紹完了就問我項目中遇到的問題和解決方法,這個我回答的很細,面試官也問的很細;因為這個之前準備過,所以答的也不錯,光這個問題就花了大概半小時。面試官之后問我說似乎解決這個問題并沒有用到太多技術,我回答說是的,但最困難的應該是尋找原因、作出嘗試、再尋找原因、再作出嘗試的過程。然后就是問我我的項目代碼進行過怎樣的優化、現在還存在哪些問題,我說以前代碼結構太差,牽一發而動全身,后來學習了設計模式,代碼結構就清晰了很多,面試官又仔細問了我用到了哪些設計模式,是怎么改造代碼的;然后問存在的問題,我答還缺乏一個通用的框架來支撐各種不同的二維碼,然后面試官問了我繼續改造的思路。最后面試官跟我說雖然前面兩輪面試問了很多基礎,但他還是要考考我,問我Java里有哪些Map。這題倒是把我難住了,因為我只是看過Map的各種繼承的圖,還沒專門背下來過,于是我就只說出了HashMap、LinkedHashMap和TreeMap(實際還有ConcurrentHashMap等),然后跟面試官介紹了典型的使用場景。這樣就結束了三面。
三面結束后過了十幾分鐘就接到HR電話說面試通過,接下來幾天會有HR的電話面試。然后等到HR電話面試,實際就是聊聊天,HR了解一下我拿到offer的情況、對城市的選擇、能否實習等,然后問我對部門有沒有喜好(今日頭條、西瓜視頻、抖音、火山小視頻等),因為我也不在意,就說沒喜好、都可以。剩下的就不仔細說了。
再后來就是接到了HR溝通薪資的電話,HR說我分到了主端(即今日頭條),然后給我的是sp,后來發現是sp里的最高擋。
如果自學的話,以下是建議:
是墻的問題,這里有不需要翻墻的資源。AndroidDevTools 配置中遇到的問題自己多搜索。
總結
以上是生活随笔為你收集整理的我靠着这套学习视频+文档,自学Android从外卖小哥走到了头条的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAVI 技术(一)
- 下一篇: Android ROM开发(三)——精简