回顧一下本身這段時間的經歷,九月份的時候,公司通知了裁人,我匆匆忙忙地出去面了幾家,但最終都沒有拿到offer,我感受今年的寒冬有點冷。到十二月份,公司開始第二波裁人,我決定主動拿賠償走人。後續的面試過程我作了一些準備,基本都能走到hr面,後面我也順利地拿到了offer,我給你們分享下個人求職體會,但願能給你們一些參考。
通常Android面試分爲兩部分:Java部分和Android部分,下面說一下本身面試過程遇到的一些具體題目和一些相關知識點。java
下面列一兩個遇到的題吧git
基本數據類型,int大小,一個字節佔幾位, int的取值區間。 Integer a = 123456 Integer b = 123456 return a==b 若是a = a b = 1 結果呢
int a = 2; int rusult = a++ + 4<<2 求 result的值
public static String fun(String s) { return s.length() < 0 ? (fun(s.substring(1) + s.charAt(0))) : ""; } System.out.println("result = " + fun("Smart")); 它的打印結果是什麼。
相似這種的題不少,考察的都是基礎知識的牢固性。因此須要本身多鞏固基礎。github
常見的數據結構就是:數組,棧,隊列,集合,映射,鏈表,堆,二分搜索樹,紅黑樹。固然還有其餘的一些,好比AVL平衡樹等一些數據結構。面試
咱們要作的就是了解它們的實現原理和各自的優缺點。算法
數據結構部分面試遇到最多的就是:編程
算法算法其實就是咱們平時常見的一些排序:選擇排序,插入排序,冒泡排序,希爾排序,歸併排序,快速排序。以及和數據結構相關聯的解決部分問題的一些計算方法。設計模式
算法面試遇到的一些題:數組
算法這一塊是須要練習的推薦去Leetcode上面刷刷題,開拓一下思惟。算法也並不必定要求你能寫出來,主要考察你的思路,已經如何優化你的算法。緩存
JVM虛擬機咱們須要知道他們內部組成:堆,虛擬機棧,本地方法棧,方法區,計數器。每一塊都存放什麼東西,以及垃圾回收的時候主要回收哪些塊的東西。GC-ROOT鏈是從哪些地方開始的,垃圾回收集算法(不多遇到問的)。安全
類加載ClassLoader已經雙親委派機制,類加載的過程,類加載的信息對應在JVM的哪些塊中。
列一個遇到的類加載的面試題:
public class TestClassLoader { static class Father { public static final String TAG = "Father"; static { System.out.println("static Father"); } { System.out.println("unStatic Father"); } public Father() { System.out.println("constract Father"); method(); } public void method() { System.out.println("method Father"); } @Override public String toString() { return "toString Father"; } } static class Son extends Father { public static Son instance = new Son(); static { System.out.println("static Son"); } { System.out.println("unStatic Son"); } public Son() { System.out.println("constract Son"); method(); } public void method() { System.out.println("method Son"); } @Override public String toString() { return "toString Son"; } } public static void main(String[] args) { System.out.println("1.---------------------"); System.out.println(Son.TAG); Son[] sons = new Son[10]; System.out.println(sons); System.out.println("2.---------------------"); System.out.println(Son.instance); System.out.println("3.---------------------"); Son son = new Son(); Father father = son; father.method(); System.out.println(son); } }
寫出打印輸出。
加一個小插曲:上面的題是餓了嗎面試問到的。面試個人人本身說是17年北航畢業的研究生。說本身很是注重基礎,全程問了不少JAVA基礎,包括上面的類加載的題,很自豪的說這個題是他本身出的。還有Collections下面的子類都有哪些,都有什麼不一樣。可是Android相關的題目問的水平很通常,說這個沒有嘲諷的意思。想說的是有些面試從一開始就註定了你可能進不了這個公司。面試有的時候也是要看眼緣的。不要灰心,找出本身的不足,補齊它,繼續前行。還有就是上面那個題,的確很不錯。
當多個線程訪問一個對象的時候,若是不用考慮這些線程在運行時環境下的調度和交替執行,也不須要進行額外的同步,或者在調用方進行任何其餘的協調操做,調用這個對象的行爲均可以獲取正確的結果,咱們就認爲這個對象時線程安全的。
線程安全就是一些多線程下載,同步,鎖,死鎖,線程池。volatile關鍵字的特性,變量的原子性。以及java.util.concurrent包下的類,也須要了解一下。
通常會問的是手寫單例,以及雙重鎖式單例的優勢。還有就是讓你本身實現一個多線程下載,看你怎麼設計。
封裝,繼承,多態,抽象,反射,註解,設計模式,設計模式的原則。
面試中通常會問下:
以上這些東西主要考察你的代碼設計能力。
通常http和https問的比較多,對稱加密和非對稱加密也會問。tcp和socket偶爾碰見問的。
我以爲JAVA部分大體上能夠分爲這幾大塊,細想一套代碼,其實就是類和組合這些類,怎麼組合其實就是設計模式。而類裏面包含的其實就是基本數據類型和一些數據機構來存放這些基本數據類型或者類,而後就是JVM去怎麼加載這些類。針對上面幾個部分我推薦幾本書吧:《JAVA編程思想》《深刻理解JAVA虛擬機 第二版》《大話設計模式》《HeadFirst設計模式》《數據結構和算法》《圖解HTTP》
數據結構和算法重點推薦:https://github.com/wangxp423/... 以及readme中提到的劉宇波(liuyubobobo)他開源的代碼和文檔。他在慕課網錄製了四套視頻來說解數據結構和算法。文檔通俗易懂。很適合初學者,和想系統瞭解的人。
Android部分我就不分幾大塊了。直接列舉,可是列舉到的每一項都是面試常常會問到而且會延伸問的,因此須要深刻的去研究。
加分項:Kotlin,Gradle,Flutter,組件化,插件化,熱修復。
上面的列的相關內容,看似很短一句話,可是每一項都須要你深刻的去研究,要了解原理,最好去看一下源碼實現。固然還有一些是我沒寫到的,多是我寫的時候沒有想起來,並不表明他們不重要,你也須要重視,再來一波推薦:《Android開發藝術探索》強烈推薦,建議細細的讀,若是粗枝大葉建議讀兩到三遍,針對性的讀。《Android進階之光》《高級Android開發強化實戰》《Android組件化架構》《Android熱修復技術原理》《Android插件化開發指南》
如今外面面試問的的確比較多,要求也挺高的,行情很差,薪資也很差要,因此心態必定要放好,找好本身的定位,心態必定要好。
面試以後要儘可能作到總結,從我最開始沒什麼準備就出去面試,被打擊一通以後,總結了七八家面試題,會發新面試問到的都是那些知識點,可能角度不同,可是你只要深度夠,他怎麼問,你基於原理來回答,基本上都沒差,從簽了賠償協議之後出來面試,連續四家公司都走到了HR面,能夠說面試的感受上來了。前面的總結積累終究沒有白費。
在寫這篇文章以前,我專門看了下我以前收藏的別的公號上發的面試題,很全,我都有點不想寫這篇文章了。可是想了下我這三個月聽到要裁人開始面試,到第一批沒被裁,第二批裁人遲遲不來。到第二批來的時候主動申請被裁。中間面試被打擊,失落,看到新聞那那都在裁人,到如今面試總體感受還不錯。仍是想分享一下本身的內心路程,想告訴你們,裁人別慌,作本身該作的,其餘本身決定不了的,先放一放,內心列一個123,一條一條來。
能夠看到我在上面推薦了不少書籍,並且JAVA部分時分塊來了。是由於當我看到不少面試題,針對題來的時候,題會不少,並且有時候你會以爲你的題都會了,可是面試的時候仍是面很差,說明你的知識並不紮實。或者你知識會了這個題,並無融會貫通,因此在JAVA部分我分大塊來描述,並且針對每一塊,我都有推薦一本相關的書,你可能不須要都看,能夠針對性的看。而Android部分時詳細的知識點,這些知識點我但願的是,可以深刻研究。而推薦的書籍,書中的部分都有一些相關的知識點,你們也能夠選擇性的看,固然論壇,博客都是知識的來源,你們作好知識點深度和廣度的基類就好了。
最後,雖然裁人的不少,都在說Android要沒落,可是,不要慌,作本身的計劃,學本身的習,競爭無處不在,每一個行業都是如此。祝你們2020年萬事大吉。