首頁>職場>

前言

有一個朋友剛進入這個行業半年,想到以後肯定會跳槽,所以來問我現在去面試的話,對於一年開發經驗的程式設計師面試官都會問些什麼問題,他之後也好準備準備。

因為這個問題問得太泛,不同的公司對1年左右經驗的開發人員要求不一樣,所以我這裡就以我現在公司的標準或者說我個人的標準來回答。

希望對有同樣疑問的朋友能有點幫助。

一年Android開發經驗需要具備什麼

簡單來說,最重要的是有成長潛力

一般三年以上經驗的員工,我更看重他之前的工作經驗能否能讓他快速獨立負責某一塊工作,是否能將他之前的經驗轉化團隊的戰鬥力,不同公司業務與經歷差別很多,這樣的人可能帶來不一樣的技術經驗與視角,這也是為什麼常說外來的和尚會念經,其實是一個經驗互補、避免既有團隊老化陳腐的一個方法。

三年以內經驗的員工,更多的是看他的成長潛力,而成長潛力最主要的是基本功。只有基本功紮實的員工,才能快速學習掌握新技能,在之後的業務變化中,就能快速適應,滿足團隊要求。

Android發展起來只有短短几年,我畢業那會都是Windows開發的天下,包括手機也都是WinCE, Windows Mobile系列,哪能想到如今這般景象。現在做Android/iOS是挺好,沒準哪天就都是Web開發的天下了,我始終認為“一次開發、到處執行” 既然是所有IT人努力與嚮往的場景,那麼這一天遲早是要到來的。正如現在的開發語言越來越簡潔越來越注重開發效率一樣,趨勢是不可阻擋的。

那麼我個人的建議是:仔細想想自己學校裡學的東西是否都學紮實了?(如果你是計算機相關專業的話)如果沒有,優先要做的就是再把那些東西好好溫習下。

面試流程及面試問題

一般寫完簡歷就可以投遞了,可以找朋友內推或拉鉤網、Boss直聘直接投遞,這樣比較快一些。

一般的面試安排都是3輪技術面和1輪HR面,部分公司可能會有增減。

技術面試一般會先做個自我介紹,然後問問你做的專案,考察一下基礎,之後再寫個演算法,最後可能問問你有什麼想問的麼。

自我介紹

自我介紹一般主要說一下你在哪就職,目前的工作情況,工作經驗有多久,都做過哪些東西,尤其要突出一下你的亮點。這個大家提前準備一下就好。

專案經歷

自我介紹完之後,面試官就會看你的工作經歷,挑一些問你,或者直接讓你介紹做過的最好的東西。

大家寫到工作經歷的東西,負責的部分一定要特別熟,經得起面試官的拷問,如果只是參與的,也要儘量弄熟,否則就不要往上寫。

每個人的經歷不同,做過的東西都不一樣,所以我就不給大家整理了。

基礎

問完專案,就該考察考察候選人的基礎了,一般包括Android基礎、Java基礎、Android常用的開源框架、設計模式和網路基礎等等。下面我來列舉一下常見的考察點:

Java相關

Java基礎

HashMap1.7和1.8的實現原理final關鍵字,為什麼匿名內部類使用區域性引用要用final

Java多執行緒

執行緒池的使用和原理鎖機制:synchronized、Lockvolatile關鍵字ThreadLocal原理

JVM

Java記憶體結構Java垃圾回收機制Java類載入過程Android相關

Android基礎

Handler通訊機制跨程序通訊方式Activity啟動模式記憶體最佳化、佈局最佳化View的繪製流程Android事件分發機制動畫的分類及其原理MVC、MVP和MVVM模式SparseArray原理

Android開源框架

Android網路庫:Volley、OkHttp和Retrofit的使用、原理和對比Android圖片庫:Glide和Picasso的使用、原理和對比EventBus的使用和原理RxJava的使用和原理Router的使用和原理網路基礎HTTP相關:包括HTTP2.0、HTTPS等TCP相關:三次握手、四次揮手等設計模式單例模式代理模式:靜態代理和動態代理觀察者模式

這些基礎知識一方面大家可以直接閱讀原始碼,一方面可以去網上搜索相關文章去學習,我這裡也做了一些關於原始碼的整理。(文末可以檢視領取)

畢竟只要是程式設計師,不管是Java還是Android,如果不去閱讀原始碼,只看API文件,那就只是停留於皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的。

真正最能鍛鍊能力的便是直接去閱讀原始碼,不僅限於閱讀各大系統原始碼,還包括各種優秀的開源庫。

另外,騰訊面試真的很喜歡問原理,而且問得比較細,所以還是需要加強對原理的研究。

演算法

問完基礎就可以寫演算法了,透過我的面試經歷來看,演算法的難度不是很大,基本刷過《劍指Offer》就足以應對面試了。

大家刷《劍指Offer》的時候,每道題一定要自己先做一遍,這些題基本牛客網上都有,大家可以直接在那上面敲程式碼。做完之後看看書上的解題思路,如果發現自己的方法不是很好,可以按照書上的思路自己實現一遍,再和書上的程式碼對比一下,這樣印象才深刻。

記住,我們刷《劍指Offer》並不是去記每道題,而是記每種解題的思路,自己有個總結,這樣以後在遇到沒見過的題目時,才會應對自如。

我在準備的過程中已經把《劍指Offer》所有的題目都用Java實現了一遍,可以參考劍指Offer Java版官方題解彙總。

其它

除了上面以外,面試官也可能會問問跳槽原因,我一般還是以個人技術成長的角度回答的,具體我就不詳述了。

最後,面試官還可能會問問你有什麼要問的,一般我們要問問技術、專案相關的東西,比如你們使用的技術棧是怎樣的、團隊的規模怎麼樣、我來了之後會做些什麼工作等等。

關於HR面

如果你能進到HR面,那麼恭喜你拿offer就很有希望了。

一般HR會問你生活的方方面面,大家如實回答就好。當HR問我們對薪資的訴求時,我一般還是以現公司總包的基礎上漲30%要求薪資,這樣起碼也會給你到20%-30%。當然有些公司比較例外,比如快手可能給的會高一些。

最後HR會再問問你有什麼要問的,這時候可以問問公司的薪資待遇等情況,比如有多少年終獎、評級制度怎樣的、多久晉升和普調一次、普調的幅度多少、有哪些福利待遇、有多少年假等等。

另外,一定要問問後續還有什麼流程,是否要做背調、什麼時候做背調。之前在脈脈上看到說有的公司早早做了背調,導致候選人還沒提離職,同事就全知道了。也是好可怕。所以大家一定要求HR在你提完離職之後再做背調。

這裡給大家提供一個方向,進行體系化的學習:

1、看影片進行系統學習

前幾年的Crud經歷,讓我明白自己真的算是菜雞中的戰鬥機,也正因為Crud,導致自己技術比較零散,也不夠深入不夠系統,所以重新進行學習是很有必要的。我差的是系統知識,差的結構框架和思路,所以透過影片來學習,效果更好,也更全面。關於影片學習,個人可以推薦去B站進行學習,B站上有很多學習影片,唯一的缺點就是免費的容易過時。

另外,我自己也珍藏了好幾套影片,有需要的我也可以分享給你。

2、進行系統梳理知識,提升儲備

客戶端開發的知識點就那麼多,面試問來問去還是那麼點東西。所以面試沒有其他的訣竅,只看你對這些知識點準備的充分程度。so,出去面試時先看看自己複習到了哪個階段就好。

系統學習方向:

架構師築基必備技能:深入Java泛型+註解深入淺出+併發程式設計+資料傳輸與序列化+Java虛擬機器原理+反射與類載入+動態代理+高效IOAndroid高階UI與FrameWork原始碼:高階UI晉升+Framework核心解析+Android元件核心+資料持久化360°全方面效能調優:設計思想與程式碼質量最佳化+程式效能最佳化+開發效率最佳化解讀開源框架設計思想:熱修復設計+外掛化框架解讀+元件化框架設計+圖片載入框架+網路訪問框架設計+RXJava響應式程式設計框架設計+IOC架構設計+Android架構元件JetpackNDK模組開發:NDK基礎知識體系+底層圖片處理+音影片開發微信小程式:小程式介紹+UI開發+API操作+微信對接Hybrid 開發與Flutter:Html5專案實戰+Flutter進階

知識梳理完之後,就需要進行查漏補缺,所以針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了完美的總結。

3、讀原始碼,看實戰筆記,學習大神思路

“程式語言是程式設計師的表達的方式,而架構是程式設計師對世界的認知”。所以,程式設計師要想快速認知並學習架構,讀原始碼是必不可少的。閱讀原始碼,是解決問題 + 理解事物,更重要的:看到原始碼背後的想法;程式設計師說:讀萬行原始碼,行萬種實踐。

4、面試前夕,刷題衝刺

面試的前一週時間內,就可以開始刷題衝刺了。請記住,刷題的時候,技術的優先,演算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎麼會問。

關於面試刷題,我個人也準備了一套系統的面試題,幫助你舉一反三:

總結

改變人生,沒有什麼捷徑可言,這條路需要自己親自去走一走,只有深入思考,不斷反思總結,保持學習的熱情,一步一步構建自己完整的知識體系,才是最終的制勝之道,也是程式設計師應該承擔的使命。

12
最新評論
  • 工作沒回報,還要繼續嗎?
  • 體質內的你,二十年還是科員嗎?