1. 程式人生 > 其它 >22歲專科菜逼Android開發之路的2021年終總結

22歲專科菜逼Android開發之路的2021年終總結

轉眼已經到了2021年的末尾,回首這過去的一年,發現自己曾經定下的目標一個都沒有完成。

前言

我是一個專科畢業的菜逼,大學的最後一年發現自己什麼都不會,聽說程式設計師賺的多,就趁著培訓機構來學校講課的機會報了個培訓班。

在培訓班的時候正好疫情來了,就全部改為線上學習,那段時間沒人督促也沒有好好的學技術,導致自己現在的基礎很差。

等學完了出來也只能在二線城市找了個7.5k的工作,這期間邊上班邊還貸款還是挺吃力的。

雖說公司小,但好歹是個甲方,過年過節的福利是真的挺不錯的,幹了一年半這期間還給我漲了20%的薪水,過年還有三個月的年終獎,唯一我不太喜歡的就是裡面的人挺卷的,尤其是我的老大,天天捲到8、9點鐘,加班還沒有加班費。

今年公司連續接了好幾個專案,加班加點沒日沒夜的,終於把我的腰間盤給累的突出了,在醫院看病的期間我還是下定了決心準備跳槽。

準備階段

疫情向好、面試在即,還在迷茫躊躇中的後浪們,如何才能在面試中讓自己脫穎而出,讓面試官眼前一亮?

文章末尾我將分享幾篇乾貨滿滿的面試筆記和資料給大家,記得一定要好好收藏哦!!

首先準備一份漂亮的簡歷

一份漂亮的簡歷就是你進入大廠的敲門磚。

網上有很多教程教大家如何寫出一份漂亮的簡歷,這裡我就不做重複勞動了,大家可以去網上直接下載。

今天我就要逆向思維講解一下什麼樣的簡歷是糟糕的,這裡大家一定要檢查一下自己的簡歷有沒有如下的毛病:

  • 薪資期望定得過高或者過低。我們在簡歷上填寫的期望薪資,建議和投遞的崗位薪資範圍較為接近,懶人可以直接填面議。因為定得過高,面試官看到之後可能會加大面試過程中提問問題的難度。(你想啊,你定的薪資都比面試官高那麼多,人家心裡什麼滋味?還不把你往死裡問,看看你到底值不值這個價?)但是如果你定得過低,面試官可能直接就選擇忽視你的簡歷了,畢竟工資又不是面試官發的,人家只是想招進來一個有能力可以背鍋的,你定得那麼低,明顯是對自己水平沒信心,也就不會考慮你了。

  • 對自己盲目自信,自己搞不明白的也往簡歷裡寫,什麼都寫精通。這也是非常常見的問題。簡歷最講究的是真誠,會什麼就寫什麼,不要為了凸顯自己多厲害而胡亂往上寫,否則害的還是你自己。你要知道的是,一般好一點的面試官都會簡單結合你簡歷上填寫的內容進行鍼對性的提問。因為技術可提問的點非常多,但是面試的時間是有限的,那麼如何才能快速地考察一個人的技術水平呢?最簡單的方式就是結合這個人的工作經歷進行鍼對性的提問。其實面試最基本的一項任務就是驗證你簡歷內容的真實性

  • 簡歷內容過於豐富,技能內容與崗位描述匹配度不高。我就經常在Android招聘崗位上收到很多奇葩的簡歷。這些人的技能樹通常是:C,Android,後臺,js等,也就是俗稱的全乾工程師。說真的,即使你真的全會,你寫的這個簡歷也只是適合小廠的面試,因為大廠是不會去招一個什麼都會,什麼都不精的人的。你需要在簡歷中著重突出你區別於其他人的優勢,最好的做法就是什麼樣的崗位投遞什麼樣的簡歷,多做幾套簡歷作為備選。

  • 工作經歷過於豐富。例如3年待過3家及以上數量的公司。工作經歷豐富固然是好事,但你也不能全都寫到簡歷裡去,選擇2~3家較為有名的公司介紹一下即可,否則別人會對你的團隊協作能力以及忠誠度提出質疑。

  • 專案經驗過於簡單或者論文化。無論你的專案經驗是多還是少,列舉3~4個即可。除此之外,專案經驗切忌不要論文化,我經常看到很多人的簡歷上專案經驗是大段大段的描述,加起來可能有2~3頁紙...說真的,你寫這麼多,面試官反而不會看,因為想全部看完實在是太累了。這裡你只需要簡單介紹一下專案的內容、你負責的模組和擔任的角色、涉及到的技術以及最後專案的成果等即可。

  • 技術部落格或者github主頁沒有什麼內容也寫到簡歷裡。記住技術部落格或者github主頁這一類的,本來都屬於加分項,可有可無的,但是如果你寫了,面試官誓必會滿懷期待地點進去看,如果這個時候呈現給他的卻是空白頁或者寥寥幾行內容的話,這種一落千丈的感受會給面試官留下非常不好的印象。

  • 簡歷中填寫很多對求職無關的內容。與職位要求無關的內容就不需要寫到簡歷裡去了。因為你的簡歷是拿去找工作用的,任何一個與找工作無關的內容寫到簡歷裡只會浪費你簡歷的空間。例如你的一些興趣愛好或者無關證件。

自我介紹要背得滾瓜爛熟

自我介紹可以說是面試的必要環節,無論你參加什麼形式的面試,面試官一定會首先讓你做一個簡單的自我介紹,所以自我介紹這一關一定要準備充分,最好做到爛熟於心。

自我介紹不是簡歷的重複背誦。我們在做自我介紹的時候,一定要把握好重點,切忌過長或者過短。

自我介紹的過程,也是一個自我推銷的過程。你可以把面試官當作你的顧客,而把你自己當作推銷的產品。你要做的就是使用最真誠的方式,把你個人的工作經驗、優點、能力與面試公司的崗位需求緊密結合起來,讓面試官相信招這個人進來確實可以分擔工作的壓力。

那麼我們在做自我介紹的時候,需要介紹哪些內容呢?下面我簡單列舉一些內容供大家參考:

  • 個人基本資訊。個人資訊的介紹要突出重點。我們需要把重點放在與 「公司需求」 匹配的資訊上,如果該資訊匹配或有關聯,那麼我們就說,如果完全沒關聯,那就一句話帶過或者不說。
  • 工作經歷。如果你的工作經歷非常豐富,那麼簡單挑1~2家和目前應聘公司類似的簡單介紹一下即可,其實底層的邏輯就是過去經歷是否與目前應聘崗位相匹配或有關聯。
  • 專案經歷。專案經歷不要講太多,挑一個匹配的或者印象最深刻的重點講一下即可,其他的可以一筆帶過。專案經歷可以簡單從四個維度展開:專案的背景、專案的內容、你在專案中承擔的角色和工作、專案的成果或者業績。
  • 未來願景。說一些積極向上的內容,進一步說明自身與崗位相匹配,描繪未來願景,從而更好地打動面試官。(要讓面試官覺得招你進來是非常有價值的,小夥子不僅是衝著錢來的,還是有追求講情懷的)

自我介紹不易過長,準備2~3分鐘即可。與此同時,你平時還需要多加練習,根據不同的公司、不同的場合以及面試的不同崗位,進行不同內容的自我介紹。

面試前多刷刷面試題

面試前多刷面試題,是對面試最起碼的尊重。

雖然我在這裡不提倡大家臨時抱佛腳,但是適當地抱一抱佛腳也比那些什麼都不準備,就直接裸面的人要好很多,至少你的態度是端正的。

臨近年終,很多人開始蠢蠢欲動了,總有一些人啥都不準備,直接甩兩膀子就去面試的。面試基本上是一問三不知,要麼就是說之前看過忘了...更有甚者直接就說,我就是出來面個試感受一下面試氣氛以及最新行情的...

拜託,能不能給予面試最起碼的尊重?你來面試也是需要花費面試官時間的,簡單準備一下不香嘛?萬一你運氣好,恰好這家公司職位擴充,降低面試要求了呢? 你這麼隨便,豈不是把白花花的機會全都給浪費掉了嘛!

下面給大家總結出來了一些面試常見的知識點,還有對應的PDF電子書,有需要的朋友文末有自助領取方式。

Android技術面試一般涉及的要素

Java基礎

面試Android崗位,Java基礎那是必問的。如果專案中使用kotlin比較多的話,可能還會問一些kotlin相關的問題。

Java, 作為一門基礎語言,考核的是應聘者是否具備紮實的基本功。很多培訓班或者非科班出身的人,經常會栽在這一環節。一般這個環節的問題答不上來的話,基本上是提前結束了。

那麼常見面試的Java基礎問題有哪些呢?下面我們簡單列舉一些供大家參考:

  • 1.Java集合類List,Map,Set相關的實現原理。
  • 2.Java執行緒池的實現原理和使用
  • 3.Java執行緒同步相關的知識點。
  • 4.Java鎖機制,以及死鎖產生的原因以及解決方案。
  • 5.Java反射、泛型、註解相關的知識點以及使用。
  • 6.Java類載入機制。
  • 7.Java虛擬機器的資源回收機制以及演算法。

以上基本上是面試Android崗位的常見考點,所以我們必須重視對Java語言的學習和理解,即便你在平時工作中使用kotlin較多,也不能忽視對Java基礎知識的鞏固和學習。

Android基礎

Android基礎,不用說這是面試Android崗位必須要問的內容。要是連這個都答不上來,基本你的面試就提前結束了。

Android基礎是任何Android面試都需要考核的內容。不過這也是按級別而定,一般高階開發工程師的面試,Android基礎只是一筆帶過。

那麼Android基礎有哪些呢?下面我們簡單列舉一些供大家參考:

  • 1.Handler機制以及相關知識。
  • 2.Activity和Fragment生命週期。
  • 3.Android四大元件相關的知識。
  • 4.Android程序間通訊的方式。
  • 5.Context相關的知識。
  • 6.Activity的啟動模式。
  • 7.Android動畫相關知識。
  • 8.Android自定義元件相關知識。
  • 9.Android事件分發機制以及觸控事件衝突的處理。
  • 10.ANR產生的原因以及避免ANR的方式。
  • 11.記憶體洩漏產生的原因以及定位解決的方式。
  • 12.OOM產生的原因以及解決的方式。
  • 13.Android頁面渲染機制以及優化方式。
  • 14.LinearLayout、FrameLayout、RelativeLayout和ConstraintLayout的理解和效能對比。
  • 15.Android各版本的特性。
  • 16.Android螢幕適配的技巧。
  • 17.MVC,MVP,MVVM的理解與實踐。
  • 18.Android的主題、樣式、屬性相關的內容。
  • 19.JNI相關的知識。

以上內容是作為一名合格Android開發工程師所必備的知識點,也是常見的考點,請務必每條都要清楚掌握,
這樣你在面試過程中才能遊刃有餘。

Android原始碼分析

Android原始碼分析,算是要求較高的考核。不過這在大廠面試中非常普遍,因為很多大廠對Android原始碼的分析和理解都有相當高的要求。

那麼常見的Android原始碼分析有哪些呢?下面我們簡單列舉一些供大家參考:

  • 1.Android系統的啟動流程分析。
  • 2.APP啟動的流程分析。
  • 3.Activity的啟動流程分析。
  • 4.Zygote程序的建立和啟動流程分析。
  • 5.Window視窗建立和載入的流程分析。
  • 6.Dalvik和ART的理解。
  • 7.RecyclerView的原始碼分析。

閱讀原始碼是一件相對枯燥的事情,如果平時工作中涉及不到的話就很難堅持下去,因此需要非常強的毅力。不過話又說回來,如果你能夠熟練地掌握Android原始碼的話,那麼就非常有機會進入大廠了。

Android進階技能

這部分一般是對Android高階開發工程師的考核,主要涉及的點主要是一些效能優化,技術細節方面的問題。

要想成為一名高階開發工程師,效能優化以及架構設計永遠都是繞不開的話題。做技術如果只是廣而不深的話,是不可能成為一名高階開發工程師的。只有不斷提升自己的不可替代性,才能提高自己的價值。

那麼常見的Android進階技能有哪些呢?下面我們簡單列舉一些供大家參考:

  • 1.App穩定性優化。(crash、效能以及體驗等)
  • 2.App啟動速度優化。
  • 3.App記憶體優化。
  • 4.App介面繪製優化。
  • 5.App瘦身優化。
  • 6.App安全優化。
  • 7.網路請求優化。
  • 8.WebView使用優化。
  • 9.RecyclerView的快取重新整理優化。
  • 10.AOP技術的原理和實踐。
  • 11.gradle指令碼持續整合技術。
  • 12.App程序保活。

以上只是Android進階技能的一小部分通用性技術,除此之外還有很多細分領域相關的進階技能。總之,如果這項技術是你掌握而其他人普遍不瞭解的,那麼它就屬於進階技能。

新技術研究

Android這些年的技術發展基本上已經趨向成熟,所以對於新技術的研究也並不是那麼看中,可能面試官就是隨口問一下,想要知道你的學習慾望強不強罷了。

那麼有什麼新的技術可以在業餘時間進行研究呢?下面我們簡單列舉一些供大家參考:

  • 1.Android元件化。
  • 2.Android外掛化。
  • 3.Android熱更新技術。
  • 4.Android JetPack框架技術。
  • 5.Kotlin開發技術。
  • 6.Android Hook技術。
  • 7.AOP技術。
  • 8.依賴注入技術IoC。
  • 9.跨平臺開發技術:ReactNative、Flutter等。

上面的內容,其實很多已經算不上新技術了,如果你現在還不瞭解的話,那麼你最好花點時間瞭解一下,否則我只能說你是真的out了。

開源專案原始碼分析

開源專案原始碼分析和Android原始碼分析一樣,也是考核應聘者對原理的理解。如果僅僅只是會使用而不對其原理加以瞭解的話,那麼你也只能算是達到初級水平,這樣是無法進入到大廠的。

那麼開源專案的原始碼分析我們應該怎麼做呢?首先我們需要帶著問題一點點閱讀原始碼,搞清楚其內部的實現邏輯,然後梳理出其大致的設計架構,畫出UML圖,最後總結出其中運用到的設計模式和思想。

那麼有哪些優質的開源專案值得我們去研究其原始碼呢?下面我們簡單列舉一些供大家參考:

  • OkHttp
  • Retrofit
  • Glide
  • LeakCanary
  • RxJava
  • ARouter
  • EventBus
  • ButterKnife
  • GreenDao
  • Dagger2

以上我列舉的基本上都是我們平時開發過程中經常使用到的開源專案,認真研究和分析他們的設計思想和精髓,並積極運用到我們平時的編碼當中去,可以讓我們的技術得到質的飛躍!

演算法

部分大廠對Android開發工程師的演算法也是有一定要求的,這部分沒有什麼好說的,開啟LeetCode去多刷刷題就可以了。

雖說Android開發工程師也需要掌握一定的演算法,不過和那些專業做演算法的相比肯定是沒那麼高的要求的,我們並不需要把LeetCode的每道題都刷一遍,只要把一些簡單和中等難度的題刷一遍就可以了。

那麼常見的Android演算法題有哪些呢?下面我們簡單列舉一些供大家參考:

  • 1.各類排序。(尤其二分法插入排序、歸併排序需要著重掌握其思想)
  • 2.手寫反轉連結串列、連結串列複製、連結串列合併。
  • 3.手寫佇列或者連結串列等資料結構的實現。
  • 4.字串匹配、去重問題。
  • 5.雙指標演算法問題。
  • 6.陣列查重問題。
  • 7.二叉樹的遍歷和序列化。
  • 8.貪心演算法相關問題。

一個好的演算法可能極大地提升應用的效能,如果你平時有心的話就會發現在Android原始碼中也經常能看到演算法的身影,感興趣的可以閱讀一下SparseArray的原始碼。

最後

如果你能夠一直堅持看到這兒,那麼首先我還是十分佩服你的毅力的。不過光是看完而不去付出行動,或者直接進入你的收藏夾裡吃灰,那麼我寫這篇文章就沒多大意義了。所以看完之後,還是多多行動起來吧!

以上這些內容均免費分享給大家,需要完整版的朋友,可以加我的技術交流群:34+5659+112,群內有很多Android大佬。

可以非常負責地說,如果你能夠堅持把我上面列舉的內容都一個不落地看完並且全部消化為自己的知識的話,那麼你就至少已經達到了Android中級開發工程師以上的水平,進入大廠技術這塊是基本沒有什麼問題的了。