我想把自己所經歷的求職這一點小事分享給大家,或許其中有些東西可以借鑒。我知道有很多跟我一樣剛畢業并且有一些Android開發基礎知識的同學,他們可能現在困惑,也可能現在不自信,當然可能還有更多的著急。這一切的根本原因可能在于自己掌握的Android知識點少,項目經驗有限。然而不用擔心,一切只會變好,只要我們向前。
我的背景
我是2016屆畢業的學生,我的專業是信息管理與信息系統。在大三的時候也是自己學了一點Android基礎知識并且在大四的時候在某個互聯網公司實習過,我想大部分人都與我差不多,都可能是同一個技術水平。當然這里排除那些在初中就會用VB的同學了。
互聯網公司
在我求職的過程中,收到的面試邀請通知60%是培訓機構,這個原因很可能是自己應屆生的標簽加上簡歷上的描述不夠專業。20%是外包公司,剩下的20%就是純互聯網公司了。在這樣的一個情況下,你可能拒絕去培訓機構面試,拒絕去外包公司面試,而直接去純互聯網公司面試,這樣做是不明智的,只要是面試你就去。
下面是我的一個關于面試流程以及面試問題的總結,這些面試問題不可能每個公司都是這樣的,但是對于我們這些面試經驗少同時技術水平有限的人來說或許會有一些借鑒意義。
HR面試
自我介紹
你了解過我們公司嗎
說說你的優勢
請簡單介紹一下你所做的項目
在這個項目里面你具體負責哪些內容
你為什么離職
你為什么選擇Android開發而不是IOS開發
當出現一個問題時你是怎樣解決的
……
技術面
1.項目層1
技術面項目層這里要分三種:1.公司已經是A輪以上的公司或產品接近成熟了的更傾向于問你具體做的項目; 2.公司是天使輪投資的公司更傾向于從他們的一個產品出發;3.外包公司比較傾向于看你做的項目的多少了;
所以自己在接到面試通知的時候,要首先觀察公司的性質,然后再去找相應的側重點。比如,在這里我面試的是一家天使輪的公司,我在官網上把產品下載下來了,然后逐漸從App的引導頁到登錄頁再到主頁逐漸各個頁面進行分析。緊接著把它其中所涉及的知識點進行抽離出來,并統一歸納。最后就是對這些知識點進行熟悉與掌握了。
比如我們舉個例子:X產品是一個以社區為主的App,并且它支持微信登錄、分享、收藏、支付等。然后我們就從這些簡單的東西中挖掘出知識點。如下所示:
微信登錄、分享、收藏、支付是怎么做的?
在這里普遍人的回答是直接進入微信開發平臺然后下載相應的SDK并參考相應的技術文檔一步一步進行實現。這樣回答的話雖然沒什么可挑剔的,但是沒有突出亮點,在這里應該圍繞著X產品在進行第三方登錄時其內部的邏輯是什么樣的?是不是先有一個在微信上的認證過程,然后認證成功后,在X產品中喚醒某個界面然后接下來又是什么操作?要具體到整個操作的細節邏輯。
圖片上傳、壓縮、裁剪、緩存處理
因為社區類型的X產品展示了大量的圖片。所以說對圖片進行處理肯定是經常要遇到的,所以在這里自己就要去總結與圖片相關的基礎知識點了。
內存優化(參考《Android開發藝術探索》)
眾所周知,每一個App都需要進行相應的優化。特別是對于那些界面非常豐富的產品了,在這個問題上我
們可以從以下幾個方面闡述內存優化。
1.布局優化 方法:減少布局資源文件的層級;因為層級少了,Android繪制的工作量也就少了。可以采用相應的標簽;
2.不要在onDraw()方法里面創建對象和執行耗時操作,因為onDraw()被頻繁調用;
3.內存泄漏優化 方法:靜態變量導致Activity無法正常銷毀;屬性動畫導致內存泄漏;當播放動畫的時候沒有進行停止,這樣在Activity銷毀的時候就無法對Activity進行回收。
4.ListView與Bitmap優化;
5.線程優化 方法:采用線程池的形式這樣可以避免大量線程的產生,同時在線程池里面可以對線程進行重用,并且線程池里面可以控制線程的最大并發數。這樣的話避免了一定的系統開銷同時也可以避免大量的線程因搶奪資源而阻塞;
6.其它優化 方法:比如避免創建過多的對象;常量使用static final 來修飾;采用內存緩存與磁盤緩存等等;
文件存儲
這一點基本算是基礎知識點了,我們除了要掌握那幾種存儲方式還要知道它們具體的在什么情況下用?怎么用?用的時候注意什么?并且能夠熟練的使用數據庫,如果能夠寫出一些較為一點難度的SQL語句,比如子查詢、多表查詢等那就更好了。可能這里有的公司會直接給你幾個關于SQL語句的測試題。
框架
現在一些網絡請求框架、數據解析框架、數據庫存儲框架這也是可能要問到的問題。X產品在請求網絡數據的時候若用到一些框架時那很可能是比較流行的Volley、OkHttp、Retrofit等,所以我們在這里要做好準備,比如我用過Volley,那么肯定熟悉Volley的優缺點,除了這一點外,我們還要比較這三者之間的區別,并且要熟悉它底層是具體怎么做的。
其它
剛開發出來的產品不可能是完美的,所以你就盡可能的去發現其中的不足,越是明顯不足的地反就越說明是這家公司薄弱的地方,那么在面試的時候提出關于這方面的問題概率就很大。隨便舉個例子,比如X產品對Activity的啟動模式表現出來的邏輯有點不友好,那么你發現后就得自己清楚的去熟悉Android的四種啟動模式。細節很重要,多去尋找總會有收獲。
2.基礎層1
基礎層上面的話會問一些關于Java的知識點,同時也包括Android的基礎知識點。這里我就不一一列舉了,Java的話還是要注重在線程上,包括同步、異步等等。當然還可能問到關于集合方面的知識,常見的是ArrayList與LinkedList之間有什么區別?而關于Android方面的話基礎知識也就是四大組件、數據傳遞、消息機制、設計模式這些了。
CEO面
關于CEO面試的話這里就不涉及到技術了,但是在這個環節我們要展示我們積極向上的心態以及勤奮好學充滿激情。CEO或者是創始人最愿意跟你聊的是互聯網行業,什么O2O,B2C…。這些我也是暈了。可能在這一點上他是在考察你是否對互聯網這個行業關注。還有問你你怎么看待這款互聯網產品在大眾面前這么流行的?在這個時候你就要去找到這個產品的特點并順著這個特點一直說下去然后發表你自己的看法最后基本上沒什么問題的了。我自己覺得在這一層面試上我們要盡量多發表自己的看法,表達出自己的熱情,這樣就可以證明我們在某個問題上是獨立思考并且有主見的。
結語
這也是自己面試大概5次得出來的一個想法,一點經驗,分享給大家。如果能幫助到你最好了,同時在找工作的時候沒有資金來源的我們會非常沒有安全感,特別是自己一個人在大城市的時候。但是大家不要灰心,也不要心冷,要充滿自信。我們可以在一次一次的面試中成長這也是一件非常愉快的事情。如果在面試的時候的發現自己哪個知識點不熟悉的話回來后要立刻熟悉,立刻實戰,最后共勉。
-
Android
+關注
關注
12文章
3935瀏覽量
127374 -
工程師
+關注
關注
59文章
1570瀏覽量
68514
發布評論請先 登錄
相關推薦
評論