寫在前面的話
我是雙非本科15年畢業的,畢業之後就一直在做Android相關方面的開發工作,到18年經歷了兩家創業公司。
一家工作了不到半年老闆就跑路了,一家工作到18年初,因為運營不當倒閉了(一度懷疑自己是不是去哪家公司就得哪家倒閉)。
自上家公司倒閉後,隻身來到深圳尋求發展,因為之前待的小公司不是老闆跑路,就是公司倒閉,所以這次就想找個大公司,想穩定一點。
大公司技術底蘊也比較強,想多學習學習,提升自己。前後大概經過了1個月左右,找到了一家公司,雖然不是大廠級別,但我所在的技術團隊也有大幾十號人,相比於我之前的經歷,這應該也算得上大公司了,然後一直待到了今年5月份。
大小公司對比大公司和小公司真的不一樣,我以前一直在小公司做開發,一個同時開發幾個app也是比較常見的。
在大公司裡面,充斥著各種規章制度,流程規範價值觀的衡量,kpi考核等。
同時個人做的事也比較窄,因為大公司要求的深度而不是廣度,人多,各人負責自己的那一方面。我在裡面主要做一些業務需求的迭代開發,整體而言不算很難,屬於比較養老的。
在這家公司我待了大概2年3個月的時間。以前我一直念念想找一家大公司,可是等我真正進去了以後才發現,其實不是我想的那樣,你要是被分進了核心專案組的話那還好說,如果在邊緣專案組的話,結果那就不好說了。
KPI考核這個東西,好壞還真不好衡量。就像阿里的325一樣,有的時候因為這個KPI,愣是把人搞成了抑鬱症。
跳槽原由跑題了,跑題了。
還是說回自己跳槽的原因,馬雲曾說辭職原因無非有:
第一,錢沒給到位;
第二,心受委屈了!
我的原因更傾向於前者,在這家公司待了2年半,活不多,但由於崗位原因,自己的技術方面和工資方面一直都沒有太大的漲幅,同時也因為其他一些原因,我在今天5月初疫情高峰過去後選擇了裸辭。
然後準備了2個月,在7月份的時候開始投簡歷找工作。雖然疫情已經過去一段時間了,但還是能感受到疫情對IT行業的影響的,從投簡歷就能看出來,招人的需求不多,投了簡歷,公司迴應也不是很積極。
從投簡歷,到約公司面試,到最後入職的話花了2個月左右的時間,下面我就記錄以下具體的經歷。
我面試的公司主要有:
同時我還面試了一些比較小的的公司,不出名,前後大概有20家左右吧,透過率大概在50%左右,不過最後因為薪資的問題沒有談攏,所以就拒絕掉了。
怎麼說呢,我出來上班,首先考慮的是薪資,比較都要先活著再談其他的。不過有的公司薪資雖然達到了,但是因為做的東西跟我預期的不一樣,所以也拒絕了。
還有一些大公司,像宇宙條,阿里,騰訊的,就是我自身問題了,能力達不到他們的要求,被拒了,這也很正常,畢竟能進去的也是少部分人,大多數的還是比較普通的。
面試方向一開始我是找的關於應用層的開發,但是發現需求很少。
現在Android面試找工作的方向一般有應用需求開發,系統framework研發,音影片開發,基礎架構開發,跨平臺開發等幾個方面。
從這次找工作來看,除了應用需求開發以外,其他的幾個方面的需求還是比較高的,但同時要求也很高,並不是說你會使用MVP+Rxjava+Retrofit+Dagger2+Glide+Jetpack+Flutter+RN等技術點就可以了。
現在一般公司都要去你懂原理,瞭解技術實現細節了,現在市場上對於初中級的Android開發要求比較少了,更多的是對於高階研發的需求量比較大。
所以對於Android研發的人而言,需要加強自身的硬技術,有過硬的技術就不怕找不到好工作。
因為這次疫情的影響,找工作都是電話面試和影片面試。基本上一面是電話面試,二面三面的是影片面試,一般是在牛客網等平臺開一個面試房間,有的公司需要線上coding的,要求比較高。
我從投簡歷到約公司面試,大概面了十幾家公司,我每次面試完一家公司都會做個總結,把涉及到的內容都記錄下來,同時不會的也會去惡補一下,都整理成相關文件,現在詳細記錄以下我的面試內容,供有需求的同學參考參考。
面試內容面試的範圍主要涉及Java基礎,Android相關的,資料結構與演算法,計算機網路等幾個方面。
下面依次列出所問的問題:
Java部分
什麼是執行緒,什麼是程序?JDK & JVM & JRE分別是什麼以及它們的區別?解釋一下為什麼Java可以跨平臺?什麼是面向過程 & 什麼是面向物件 & 區別?給我說說Java面向物件的特徵以及講講你程式碼中凸顯這些特徵的經驗。什麼是過載 & 什麼是重寫 & 區別。談談你對this和super的認識。介面和抽象類的區別。靜態屬性和靜態方法能被繼承嗎?靜態方法又是否能被重寫呢?給我說說許可權修飾符特性。給我談談Java中的內部類。閉包和內部類的區別?Java多型的實現機制是什麼?談談你對物件生命週期的認識?static關鍵字的作用?final關鍵字的作用。Android 部分
Activity是什麼?典型情況下的Activity生命週期?異常情況下的Activity的生命週期 & 資料如何儲存和恢復?從Activity A跳轉到Activity B之後,然後再點選back建之後,它們的生命週期呼叫流程是什麼?如何統計Activity的工作時間?給我說說Activity的啟動模式 & 使用場景。如何在任意位置關掉應用所有Activity & 如何在任意位置關掉指定的Activity?Activity的啟動流程(從原始碼角度解析)?啟動一個其它應用的Activity的生命週期分析。Activity任務棧是什麼?在專案中有用到它嗎?說給我聽聽什麼情況下Activity不走onDestory?什麼情況下Activity會單獨執行onPause?a->b->c介面,其中b是SingleInstance的,那麼c介面點back返回a介面,為什麼?如果一個Activity彈出一個Dialog,那麼這個Acitvity會回撥哪些生命週期函式呢?Activity之間如何通訊 & Activity和Fragment之間通訊 & Activity和Service之間通訊?說說Activity橫豎屏切換的生命週期。前臺切換到後臺,然後在回到前臺時Activity的生命週期。下拉狀態列時Activity的生命週期?Activity與Fragment的生命週期比較?瞭解哪些Activity常用的標記位Flags?談談隱式啟動和顯示啟動Activity的方式?Activity用Intent傳遞資料和Bundle傳遞資料的區別?為什麼不用HashMap呢?在隱式啟動中Intent可以設定多個action,多個category嗎 & 順便講講它們的匹配規則?Activity可以設定為對話方塊的形式嗎?如何給Activity設定進入和退出的動畫?Activity使用Intent傳遞資料是否有限制 & 如果傳遞一個複雜的物件,例如一個複雜的控制元件物件應該怎麼做?在Activity中可以多次呼叫setContentView方法嗎?說說不同時機第二次呼叫setContentView會發生什麼?說說分別在Activity裡每一個生命週期函數里呼叫finish方法後,接下來Activity的生命週期如何回撥?有什麼方法可以啟動一個沒有在AndroidManifest.xml中註冊過的Activity?在Activity進行配置時,catrgory和action的區別是什麼?activity中分別在onCreate,onStart,onResume中呼叫finish後的生命週期如何回撥?鎖定屏與解鎖螢幕,Activity 生命週期?如何設定Activity進入和退出的動畫?談談你對Activity中onNewIntent()方法的認識?如果一個Activity啟動比較慢,需要最佳化,你覺得可以從哪些方面入手?Activity之間傳遞資料的方式Intent是否有大小限制,如果傳遞的資料量偏大,有哪些方案?瞭解scheme跳轉協議嗎?談一談談談你對Activity的Context的認識?如何在Application中獲取當前Activity例項?Activity程序優先順序?Activity出現ANR的條件有哪些 & 解決方案?網路部分
你的專案架構是怎樣的三次握手,四次揮手的相關問題網路請求框架的原理post和get的區別如何實現一張5M的圖片上傳其他關於每家公司問的面試內容具體我整理成了一個文件,需要的可以隨手點贊+任意評論後,私信我獲取領取方式。
面試總結這是我自己總結出來的面試問題答案,每次面試都會查漏補缺。
offer情況總共面試了將近20家公司,大概可以的有40%~50%左右,不過有的公司因為薪資達不到自己的期望,所以拒絕了。
有的公司要求比較高,我沒有達到他們的期望也被拒絕了,最終選擇了一家中等規模的公司,主要做基礎架構部分的內容,他們家的app,使用者量達到5000萬左右,日活也有幾百萬,進去主要做效能最佳化這方面的,比較符合我的預期,所以就選擇了這家,目前已經上班2個月了,一切都還滿意。
最後,在這裡我也分享一份乾貨,由大佬收錄整理的 Android學習PDF+架構影片+原始碼筆記,還有高階架構技術進階腦圖、Android開發面試專題資料,高階進階架構資料幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習。