一名程式媛的高級Android面試總結

  • 2019 年 10 月 7 日
  • 筆記

金九十銀面試季,相信大家都想好好把握住這次機會拿到心儀的offer,今天就給大家分享一位程式媛她的面試經歷及總結,文章最後我還會分享一些自己的面試經驗還有面試寶典,希望對程式媛們和程式猿們都能有所幫助~

現在的市場環境確實不大好,裁員與及在預謀裁員的公司一大把,當然招人的公司也有。樓主這幾天去面試了幾家公司,目的有以下幾點:

1、跟現在老東家簽約的合約快到期了,想出來看看新機會,有好機會就考慮挪挪窩了;

2、現在外面的市場是個什麼樣子,求職的人和招聘的人比例;

3、市場對於一個高級/資深開發工程師的要求是什麼樣子(畢竟紙上得來終覺淺,覺知此事須躬行);

4、年齡到底是不是個坎。

獲取面試機會的渠道

樓主從3月初開始先在北郵人論壇(自己北郵畢業的,傾向於學校論壇)上看社招版塊,投了五家,有兩家約面了。之後在Boss直聘網和獵聘網上填寫資訊,上傳自己做好的簡歷附件。周六剛填完,就有不少獵頭打電話,管我要簡歷,加微訊號,然後自報家門有哪些公司可以內推的,一開始沒經驗,想著獵頭能推薦,就讓他們內推唄。結果後來發現聯繫的獵頭都快要把自己手機打爆了,而且路數都一樣,都是那麼幾家公司幫忙推薦。周一趕緊把獵聘網上的簡歷撤下來了,給我的感覺就是獵聘網上幾乎全是獵頭吧,而且後面發現通過獵頭推薦的能去面試的公司幾乎沒有,可能幫忙遞了20家,能有2家約面就不錯,而且還不是應聘公司跟面試的人單約,是獵頭兩邊約,這樣面試時間可能得來回改,可能獵頭生怕跳單吧。獵頭會在面試前一天各種提醒你明天要面試啊,帶簡歷啊,當天又問你出沒出發啊,提醒你面完了給他們打電話呀,有時沒面完就開始給你打電話,發微信,詢問面試情況怎樣。可能生怕跳單了?反正聯繫得太頻繁了,搞得我現在對獵頭很反感,其實他們跟房屋中介一樣,如果你讓告訴中介要租房或是買房,他們一段時間內會不停得給你發消息打電話,約你出來看房子。通過獵頭找工作肯定有一定的成功率,但我是不想再通過獵頭找工作了。

再說說Boss直聘吧,這上面就清爽多了,很多公司直接把招聘職位、要求、公司簡介、員工待遇、崗位薪水等寫清楚了,他們可以在上面搜尋應聘者的簡歷,有意向的直接約面了。應聘者也可以看看各家公司的應聘職位,自遞簡歷,自報家門,如果對方有意向,直接約面。我大部分面試機會都是從這上面獲取的。如果是獵頭在這上面聯繫我,我一般都直接略過了。

下面說說自己面試了幾家公司遇到的一些面試題目吧,感覺無論自己怎麼準備,好像永遠達不到面試官滿意的程度,或者說自己總有很多不會的,稍微一問深了,就不會了,這也怪自己技術棧深度不夠、廣度不夠,沒面過,沒經驗。而且各個面試官真是看心情,路數完全不一樣,有的只問java特別特別基礎的知識,比如面向對象的設計原則、比如char占幾個位元組,能不能存中文。。。有的問android性能優化,有的只考演算法,有的可能來個腦筋急轉彎。不過這也激勵自己要努力,不能再每天無所事事的,做完公司那點活了,不去主動更新自己,也知道自己到底有幾斤幾兩了,當別人問自己的職業規劃時,自己也思索著,以後到底想發展成什麼樣。

面試題目

一個創業公司

(發現問下來幾乎全是java基礎知識,幾乎沒有android知識)

先是筆試:

  1. 生產者消費者模型用執行緒方式實現、按元素大小拼接兩個鏈表
  2. 同步非同步的區別
  3. 阻塞非阻塞的區別
  4. 泛型擦除
  5. 集合中執行緒安全的類和非執行緒安全的類(SparseArray和ListArray的區別,SparseArray怎麼存數據、取數據)
  6. Gradle插件怎麼做
  7. https怎麼實現防抓包
  8. 封裝第三方庫等等;
一個五六百人的民企
  1. 執行緒池
  2. 消息推送(自己做一個消息推送怎麼實現)
  3. Exoplayer相對於系統的MediaPlayer有什麼優點
  4. h5面面載入快取,和原生怎麼傳遞數據
  5. MQTT和XMPP有什麼區別,為什麼會有那麼多協議
  6. https的原理,中間人攻擊
  7. 怎麼中斷一個執行緒
大廠

(多家公司面試題匯總,一些我認為的簡單或是常規問題就不羅列了,全是我自己之前沒怎麼關注的問題,所以有時第三方庫爛大街的原碼分析要看,但有些關鍵點,其實很多博文可能都沒分析到,需要自己多想想,自己主動去思考)

  1. AsyncTask原理,在子執行緒中定義AsyncTask實例可不可以,為什麼不可以呢
  2. OkHttp原理(說了那些攔截器)怎麼實現多路復用的(這個主要從https實現多路復用的原理上談,用了二進位分幀,那okHttp其實就是按分幀來讀取,具體可以自己看看相關部落格)
  3. Handler的機制,android內部是怎麼實現發送延時消息,(一開始以為是用個類似於Timer之類的定時任務,後來才知道是用系統開機時間+延時時間得到一個時間T1,當手機當前時間到了T1的話,就會把消息發送出去。但有可能UI執行緒被阻塞了,所以到了T1時間,也不能確保100%這個Message被發出去的)
  4. 性能優化減少apk體積,怎麼減小so包的體積呢
  5. 怎麼給一個應用加固
  6. ANR的原理,怎麼從trace.log中找到ANR的原因及出現的地方(找到main thread),如果只是在主執行緒中Thread.sleep(10S),會不會出現ANR
  7. JNI層的Crash怎麼定位(通過ndk中相應的工具addr2line ndk-stack等可以定位到行)
  8. 廣播為什麼能作為四大組件,有什麼特殊之處(經面試官提醒,能實現一對多通訊),本地廣播的實現原理
  9. Android中設計Fragment的好處,那有了Activity為什麼還要設計出Fragment來呢(解耦)
  10. ViewStub為什麼能實現延遲載入(它沒有進行測量和繪製,只在調flate或是setVisibility時才會載入進布局)
  11. Binder怎麼實現進程間通訊的,怎麼註冊服務的。。。。

。。。。還有很多題,就不一一舉例了,只能說給自己一個教訓,很多東西看深點就不會多問一點就不知道了。

創業公司想招團隊負責人

做過哪些性能優化,Leakcanery的原理,怎麼檢測記憶體泄漏的

android的新技術你用了哪些

你認為你應用中做得比較nb的地方有哪些,你認為你項目中解決了哪些技術難點等等。。。

我認為反常規的面試

1)直接拿著我做的公司某個應用開始一通批判,覺得我自己對自己做的應用都不負責任,還有什麼理由來應聘你,問你認為你最善長做的是什麼,比如UI、功能、性能優化等,你要說UI吧,你這UI做得怎麼怎麼的,你要說性能吧,應用性能也確實一般般,讓我覺得我沒有啥善長的。回來老公說我們公司害了我,因為我現在的公司做的應用要求太低了,能用就行。但是別人對我要求松,我得對自己嚴要求、高標準〜〜〜〜

2)上來弄個類似於腦筋急轉彎的題

Set<Short> stack = new HashSet<>();  for(Short i = 0; i < 100; i++) {      stack.add(i);      stack.remove(i-1);  }  System.out.println(stack.size());());

我以為會拋異常,面試官問要是不拋,又會輸出什麼,我想著輸出1呢。後來自己下來試驗了一把,發現輸出100,讓我百思不得其解。後來百度搜索,經別人提點才知道因為i-1這裡用到了隱式類型轉換i-1會轉成int型的減法,所以在remove時,根本沒有那個對象,所以無論怎麼調stack.remove(i-1)都不會有元素移出,我不得不感嘆面試官設計的陷阱。後面又問了兩個矩陣傳送門問題,應該有取巧的辦法,可能我腦子真是太笨了,最終也沒有想出來。

面試感言

自己的總體感受是:現在市場大環境不好,各大互聯網招人的部門都是些邊緣部門或是新設部門,有些甚至是光桿司令或是完全全新的部門,從0個人開始招,先招團隊負責人等。現在市場是供過於求,有不少被公司裁掉的員工,在這個節點找工作,導致樓主去面試,面試官一上來就問你現在是離職態還是在職。如果自己不夠優秀,面試官有很多選擇,是不願意付高價來招聘你的,按道理什麼時候都這樣吧,只是現在有點過了。市場供過於求,應聘公司有得挑,不夠優秀,可有可無的人,一般會傾向於壓低工資。

通過這輪面試,讓我知道了自己的差距,自己的研究的東西太淺薄了,而且沒有自己的優勢或者說專長。而且自己作為一個女程式設計師,發現HR面時很吃虧,HR好像提前給你考慮了各種因素,結婚了是吧,有沒有小孩,有小孩你得照顧小孩吧,我們這裡很忙的。即使你再想證明自己,工作方面不會受影響,但他們還是不想冒這個險,就像我當年校招找工作,去自己老家某銀行面試,省行不要女生,可以去自己家裡的分行。因為你要結婚,要生孩子,要休產假,要照顧家庭。我什麼都沒說呢,就把我給否完了,給我先下個定義,難不成想讓女程式設計師都不要結婚不生娃么,你也有媳婦啊。

總的來說,自己劣勢挺明顯的,沒有在某方面有很深研究,沒有什麼優勢,知識面的廣度和深度都不夠,這方面要加強,同時作為一個有娃的女程式設計師,已經被別人否掉了50%了,所以必須從技術方面加強吧。

工作我還會繼續找,人都是追求上進的,有好機會還是會考慮挪窩的。我不想在我30歲就干一份可以養老的工作,技術我也會努力去提升,願我和大家都會有一個更好的未來。

說說最近Android的行情

最近時不時看到一些風涼話,動不動就說Android涼了,給大家幾個建議哈,首先要耐得住寂寞,不要被外界所干擾;其次要制定長期系統的學習計劃並持之以恆;最後,注意學習方式,不要休閑式學習,很多人只看書看部落格,但是從來不去動手實踐一下,那理解肯定不會太深刻,時間久了就容易忘。

最後

面試:如果不準備充分的面試,完全是浪費時間,更是對自己的不負責!

如果想變得優秀那就去看那些優秀的人在學什麼,做什麼,想盡一切辦法和他們交流;多出去看看這個世界,然後把自己逼到往死里學。

不管怎麼樣,不論是什麼樣的大小面試,要想不被面試官虐的不要不要的,只有刷爆面試題題做好全面的準備,當然除了這個還需要在平時把自己的基礎打紮實,這樣不論面試官怎麼樣一個知識點裡往死里鑿,你也能應付如流啊~

如何才能讓我們在面試中對答如流呢?

答案當然是平時在工作或者學習中多提升自身實力的啦,那如何才能正確的學習,有方向的學習呢?有沒有免費資料可以借鑒?為此我整理了一份Android學習資料路線: