前言
當初在北京的4年多,是我作業中最精彩的一段經歷,這也是為何我的小說以我在北京打拼時的真實經歷為背景,因為那是一段難忘而又精彩的時光,
16年偶得一個大廠的offer,因此我就毅然決然的來到了杭州,來到杭州以后,我的作業平淡了許多,或許和年齡有一定關系,也或許和杭州這個宜居的城市氛圍有關,
大廠有各種小公司沒有的福利和待遇優勢,因此在這家公司的3年,我住進了自己的房子,也生了個可愛的兒子,也有了自己的豪車,總的來說,在老東家的這3年里,我識訓了很多,不僅僅是作業上的,更是生活上的,
但是,天下沒有不散的宴席,3年了,我也知道,不能再繼續沉淪下去,因此我在19年,果斷開啟了人生第4次跳槽之路,
此時我已經過了而立之年,和當初在北京跳槽時,我明顯感覺出了很大的不同,
接下來,我就和大家簡單聊聊,我這次跳槽的感受,相信對于很多同學應該有些幫助和參考,特別是在杭州的同學,
回應面試
首先就是有很多人有問我面試都問些什么,
說實話,我只能隱約想起Handler、Activity、性能、TCP/IP協議這些個關鍵字,具體的問題真的是幾乎都沒記住,有些問題回答的還是沒有那么完美,想著能提前去刷一些面試題,心理也有個底,事后我自己也去收集許多面試題,想了解的直接到文末去就好了,接下來我們繼續說,
我參加的是阿里的社招面試,而社招不同于校招,問題的范圍其實是很隨機的,因為能參加一些比較知名的互聯網公司社招的人,70%以上都會有個3-5年的經驗,這倒不是說一兩年經驗的同學沒有機會進這些公司,而是因為這種公司,大部分情況下只招一些比較資深的開發和應屆生,而不招那些處于中間階段的人,而1-2年經驗的同學,往往就剛好處于這個尷尬的階段,
對于能有3-5年經驗的這部分人中,每個人的經歷又都不同,所擅長的點也不一樣,因此這就會導致每個人的問題和范圍都不太一樣,
很少說有哪個知名的互聯網公司,比如BAT、京東、360、搜狐、網易等這些公司,其社招面試還有固定的問題和模式,讓你可以像應屆生面試一樣,在面試前靠臨時抱佛腳度過這一關,
大部分公司在社招的時候,不光是阿里,其它公司也都一樣,基本上都分為兩個階段的提問,
第一個階段是主語言本身以及它的高級特性,第二個階段是講述自己的專案,并在中間穿插著問題,
所以,我不妨就這兩個階段,談談社招面試的準備,而不是去把阿里面試的程序背一遍,說實話,我也確實記不住,所以不要再問我阿里面試都會問哪些問題了,你看看上面關于面試題都沒好好講,也會發現,我里面也基本上沒有寫具體的問題,原因是一樣的,真的記不住啊,(就是因為記憶力的問題,導致我從小偏科,文科成績一直堪憂,-_-)
社招面試如何準備
我會分為四個部分來談論這個問題,由于Android主要開發語言是Java和Kotlin,由于我是用Java開發,因此關于主語言的問題,都是與Java相關,其它語言的同學可以選擇性忽略,此外,面試的時候一般面試官的問題都是環環相扣,逐漸深入的,這點在下面大家可以更明顯的感受出來,
1、主語言本身以及它的高級特性,
主語言當然就是你平日里拿來賺錢的家伙,不要告訴我你沒有主語言,你會N多種語言,或者是你精通N多種語言,你要非這么說的話,你可以來杭州試試,我保證不打死你,最多打殘,
我的主語言很顯然是Java,那么對于Java來說,它的語言本身以及它的高級特性,都有哪些比較容易在面試中問到呢?
一般情況下,主要有以下知識點很容易被問到,(PS:以下所列舉的,都是一些Java相對而言比較高級一點的知識點,因為這里談的是社招,而不是校招)
- 1)Java的資料結構相關的類實作原理,比如LinkedList,ArrayList,HashMap,TreeMap這一類的,以下簡單模擬一個資料結構的連環炮,
- 2)Java并發包當中的類,它們都有哪些作用,以及它們的實作原理,這些類就是java.concurrent包下面的,與上面一樣,咱們也簡單的模擬一個并發包的連環炮,
- 3)IO包和NIO包中的內容,這部分里面NIO會是重點,IO包大部分都會比較熟悉,因此可能會直接略過,直接問你NIO的內容,
- 4)Java的虛擬機的內容,這部分主要包括三部分,GC、類加載機制,以及記憶體,
2、講述自己的專案,并在中間穿插著問題
這一部分是面試程序中必問,也是聊得最久的一個階段,除非你前面的語言部分非常扎實,扎實到面試官問了一兩個小時,依舊沒有探出你對語言本身的了解到底有多深,否則的話,你一定逃不過自己的專案這一關,而且一般情況下聊得時間不會太短,
這一部分內容,一般的模式就是你自己去講你做過的專案,然后面試官會冷不丁的讓你去解釋其中某一部分,比如讓你解釋當時為什么要這么做,或者問你現在覺得有沒有更好的辦法,而這些穿插的問題,大部分與你的專案所用到的技術有關,而你需要做的,就是充分、再充分的去總結自己做過的專案(尤其是最近的一兩個專案),挖掘出一個甚至N個亮點,以備于到時候可以讓面試官產生眼前一亮的感覺,如果你能達到這種效果的話,基本上離你成功就不遠了,
3、額外的加分項
上面兩個階段基本上是必問的,還有一些加分項,這些加分項中,有些內容面試官也會問你(比如TCP/IP協議、演算法),但更多的是會先問你了解不了解,你了解的話再繼續聊,不了解的話就直接略過了,不至于因為這種問題而直接把你打入地獄,
下面我列舉一下這些加分項,如果可以的話,這些加分項還是要爭取一下的,
1、計算機系統原理,
2、網路通信協議(TCP/IP,HTTP等),
3、資料結構與演算法,
4、著名開源專案的原始碼,
5、你自己有很棒的開源專案,
6、你的個人博客,
7、待評論區補充,
像1~6這就是我的超級加分項,當然你們想看我這些學習筆記和原始碼的都可以在文末自行查閱,
4、與你職位相關的內容
其實這最后一項是對前面三項的補充,你應該盡量去主攻和你面試的職位相關的內容,比如你面試一個實時計算的職位,那么你的演算法最好要厲害,對于著名的實時計算開源專案要熟悉,最好閱讀過原始碼,而且還要對分布式系統有一定的見解,
因此,這個第4部分沒有具體的內容,只是提醒你,如果你很明確自己的面試職位,最好在面試前準備的時候,盡量朝職位的需求方向靠攏,這樣成功的可能性更大,
對于Android程式猿學習的建議
一定要學會總結自己的移動開發知識體系
總結知識體系的程序是一個查缺補漏的程序,遇到沒掌味訓者了解不深的知識點,務必去了解、搞清楚,否則就不算掌握,一般都需要經歷以下六步,這里就不一一展開,

作為一名有著快八年開發經驗的老Android,這里我把自己的一個知識體系分享給大家,給大家提供一個參考,
-
底層基礎(或者可以叫他《移動開發架構師筑基必備技能》第二點里面有分享,這份資料是一個基礎知識的整合)
-
Android高級UI與FrameWork原始碼:高級UI晉升+Framework內核決議+Android組件內核+資料持久化
-
360°全方面性能調優:設計思想與代碼質量優化+程式性能優化+開發效率優化
-
解讀開源框架設計思想:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網路訪問框架設計+RXJava回應式編程框架設計+IOC架構設計+Android架構組件Jetpack
-
NDK模塊開發:NDK基礎知識體系+底層圖片處理+音視頻開發
-
微信小程式:小程式介紹+UI開發+API操作+微信對接
-
Flutter等跨平臺開發技術

針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了系統性的,有條理的總結, -
架構師筑基語言基礎

-
設計思想解讀開源框架

-
360°全方位性能調優

-
Android框架體系架構

-
NDK模塊開發(音視頻開發系列)

-
Flutter學習進階

-
微信小程式開發

結語
本文到此就基本結束了,整篇文章很長,幸苦大家閱讀了,但是還是那句話,每個人吸收知識的時候,都要有抽取精華,去除糟粕的能力,我所說的,可能有些是對的,有些是錯的,有些是適合你的,有些是不太適合你的,你要自己能夠判斷,
其實你在生活和作業當中也是一樣的,你身邊的人形形色色,有的人你喜歡,有的人你很討厭,但其實你喜歡的人也有缺點,你討厭的人也有優點,你要學會從你討厭的人身上學會他的優點,千萬不要一棒子打死,這只會讓你失去很多學習成長的機會,
好了,說了這么多了,就到此為止吧,希望本文可以幫助到作為程式猿或即將成為程式猿的你,
文本中所有資料都可以在下面二維碼中免費領取

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/330264.html
標籤:其他
上一篇:Web——面試題整理
