前言:今年突然JAVAEE火爆起來,相比之下Android就顯得不溫不熱了谎懦,很多人都在說Android市場(chǎng)現(xiàn)在飽和了肚豺,工作不好找了,究竟是不是真如別人說的:Android已經(jīng)臨至暮年了界拦,小灰灰今日帶你一探究竟吸申。
1. 投遞簡(jiǎn)歷
在越來越多的人選擇了智聯(lián)招聘、51Jb去投遞簡(jiǎn)歷的時(shí)候享甸,我還是選擇專注于互聯(lián)網(wǎng)招聘的拉勾網(wǎng)截碴,為了驗(yàn)證公司對(duì)Android需求的緊迫性到底強(qiáng)不強(qiáng)烈,這次我選擇使用比較簡(jiǎn)潔的在線簡(jiǎn)歷去投遞蛉威。
個(gè)人簡(jiǎn)介和經(jīng)歷也寫的很簡(jiǎn)潔日丹,一句話帶過。
對(duì)于項(xiàng)目部分蚯嫌,一定要給出項(xiàng)目的鏈接網(wǎng)址哲虾,好讓HR在簡(jiǎn)歷篩選的時(shí)候能通過網(wǎng)站看到你做的項(xiàng)目的具體描述,因?yàn)樽謹(jǐn)?shù)限制的緣故择示,我選擇了把項(xiàng)目里面技術(shù)關(guān)鍵字寫出來即可(后來在面試的時(shí)候束凑,面試官告訴我就是看到我會(huì)這個(gè)技術(shù)點(diǎn)才讓我來面試的)在技術(shù)點(diǎn)選擇上,一定要找出你項(xiàng)目里面的技術(shù)亮點(diǎn)栅盲,提煉出項(xiàng)目的技術(shù)關(guān)鍵字汪诉。如下圖:
在線簡(jiǎn)歷就寫了這么點(diǎn),是不是太簡(jiǎn)潔呢谈秫?
接下來就是投遞了摩瞎,因?yàn)槔淳W(wǎng)規(guī)定投遞簡(jiǎn)歷每天最多10家拴签,我就隨便投遞了7家孝常,目前的結(jié)果如下:
(3個(gè)面試邀請(qǐng)旗们,2個(gè)待溝通,2個(gè)不合適)
2. 參加面試
目前參加了種子科技和西安卓派的面試构灸,具體如下:
種子科技
面試結(jié)果:起初我要了10k上渴,面試完前就回去了,之后第二天打電話讓去復(fù)試談薪資喜颁,我就以有個(gè)xx公司給我12k的薪資稠氮,我更傾向xx公司給拒絕了,結(jié)果下午人事專門打電話過來說半开,也愿意給12k的工資隔披,希望我能考慮一下她們公司,當(dāng)然寂拆,我肯定還是拒絕了奢米。
面試經(jīng)過:在這家公司,主要聊的都是產(chǎn)品的業(yè)務(wù)邏輯纠永,貌似面試官對(duì)產(chǎn)品的設(shè)計(jì)和運(yùn)營(yíng)更感興趣鬓长,這時(shí)候有的童鞋肯定就擔(dān)心了,“關(guān)于業(yè)務(wù)一點(diǎn)感覺都沒有尝江,說啥呀”涉波, 其實(shí)兄弟你想多了泽论,如果面試管技術(shù)牛逼肯定會(huì)問你技術(shù)芒填,現(xiàn)在他只提問產(chǎn)品的業(yè)務(wù)邏輯,說明技術(shù)肯定二把刀了宅楞,那就用他聽不懂的技術(shù)把他講懵逼就行了惭聂,當(dāng)然回答盡可能圍繞一個(gè)點(diǎn):隨時(shí)都要表現(xiàn)咱們技術(shù)的專業(yè)性窗声,有深度。要想通過這一關(guān)彼妻,一定要對(duì)自己簡(jiǎn)歷上項(xiàng)目的業(yè)務(wù)邏輯非常熟悉哦嫌佑,問你一個(gè)業(yè)務(wù)邏輯,馬上從業(yè)務(wù)邏輯扯到技術(shù)上去侨歉,懵死他屋摇,他若不死那你必死無疑,因?yàn)檫@些愛問業(yè)務(wù)邏輯的都基本算是老狐貍了幽邓,你要是回答的吞吞吐吐的炮温,基本不到10分鐘你就可以滾蛋了。
西安卓派
面試結(jié)果:12k的Offer牵舵,技術(shù)人員說薪資沒啥問題柒啤,下周和老板聊聊倦挂。
技術(shù)問答:
- 網(wǎng)絡(luò)請(qǐng)求框架你都用過那些?
我之前在深圳泰捷的時(shí)候担巩,因?yàn)槭菣C(jī)頂盒開發(fā)方援,目前還是基于Android5.0的,所以網(wǎng)絡(luò)請(qǐng)求這塊一直使用的Google推出的Volley涛癌,它比較適合任務(wù)頻繁但數(shù)據(jù)量不大的請(qǐng)求犯戏,當(dāng)然Volley 默認(rèn)根據(jù) Android 系統(tǒng)版本使用不同的 Http 傳輸協(xié)議實(shí)現(xiàn),在 Android 3.0 以上 Volley 使用ApacheHttpStack 作為傳輸協(xié)議拳话,在2.3 及以下使用 HttpURLConnection 作為傳輸層協(xié)議先匪,如果是在6.0系統(tǒng),Volley無法正常編譯了弃衍,這時(shí)也可以使用 OkHttp 作為Volley傳輸層的實(shí)現(xiàn)呀非,用法也很簡(jiǎn)單,在Volley構(gòu)建RequestQueue的時(shí)候镜盯,用 OkHttp 實(shí)現(xiàn)一個(gè)新的 HurlStack 用于構(gòu)建 Volley 的 requestQueue岸裙,所以平時(shí),我更習(xí)慣于Volley+OkHttp+Https去做網(wǎng)絡(luò)請(qǐng)求形耗。
-
那Retrofit你用過嗎哥桥?
這個(gè)我私下學(xué)習(xí)過,它更適合和RxJava聯(lián)合使用激涤,響應(yīng)式編程拟糕,應(yīng)該算當(dāng)下最熱門的Android開發(fā)技術(shù)了。
RxJava里面有一個(gè)Just的操作符倦踢,你知道是做什么嗎送滞?
Just操作符將某個(gè)對(duì)象轉(zhuǎn)化為Observable對(duì)象,并且將其發(fā)射出去辱挥,可以是一個(gè)數(shù)字犁嗅、一個(gè)字符串、數(shù)組晤碘、Iterate對(duì)象等褂微。其實(shí)操作符時(shí)間一長(zhǎng)都忘得差不都了,不過這些東西簡(jiǎn)單园爷,現(xiàn)學(xué)現(xiàn)用沒問題的宠蚂。(其實(shí)我怕他在往深的問,我真的就不會(huì)了)
- 下拉刷新的控件你做過嗎童社?
這個(gè)屬于Android自定義控件的范疇求厕,自定義控件常見有兩類,一種是繼承系統(tǒng)已有的控件,一種是通過onDraw去繪制全新的控件呀癣,對(duì)于第一種美浦,常見就是自定義下拉刷新和上拉加載的listview,做法很簡(jiǎn)單项栏,為listview添加頭布局浦辨,通過setPadding去實(shí)現(xiàn),在onTouchEvent方法監(jiān)聽觸摸事件忘嫉,解讀手勢(shì)荤牍,不斷去更新setPadding方法,上啦加載則是在onScrollStateChanged方法中庆冕,判斷最后一個(gè)條目是否可見和當(dāng)前l(fā)istview的狀態(tài)是否符合要求。當(dāng)然在5.0版本后劈榨,Google提供了全新的下拉刷新控件SwipRefreshLayout访递,目前很多知名的APP如知乎等都在采用這個(gè)控件。
- 子線程如何發(fā)消息同辣,需要注意什么拷姿?
其實(shí)線程并無主次之分,只不過我們的UI界面運(yùn)行的線程被定義為主線程或者UI線程旱函,通常APP啟動(dòng)的時(shí)候响巢,主線程會(huì)調(diào)用Looper.prepare(),這個(gè)方法會(huì)為主線程綁定一個(gè)Looper對(duì)象棒妨,Looper會(huì)為當(dāng)前線程創(chuàng)建對(duì)應(yīng)的MessageQueue踪古,并在Looper的靜態(tài)變量ThreadLocal中將新的Looper對(duì)象和當(dāng)前線程關(guān)聯(lián),之后就會(huì)調(diào)用Looper.loop開始消息輪詢券腔,通過我們都是在主線程創(chuàng)建Hander伏穆,然后在子線程調(diào)用handler.sendMessage(),將消息發(fā)送到主線程額消息隊(duì)列纷纫,因此消息被發(fā)到哪個(gè)線程的MessageQueue,取決于Handler在哪個(gè)線程創(chuàng)建枕扫,如果要在子線程向主線程發(fā)送消息,可以在子線程中創(chuàng)建Handler辱魁,當(dāng)然同時(shí)也需要在子線程調(diào)用Looper.prepare和Looper.loop方法烟瞧,這樣子線程就有了自己的消息隊(duì)列并開始輪詢消息隊(duì)列的消息。
- 如果RecycleView里面又嵌套了一個(gè)RecycleView染簇,會(huì)出現(xiàn)什么問題参滴?
在項(xiàng)目開發(fā)中,我從未如此使用過剖笙,但之前在ScollView中嵌套過ListView卵洗,導(dǎo)致listview只顯示一兩個(gè)條目,結(jié)果方法也簡(jiǎn)單,要么動(dòng)態(tài)計(jì)算ListView每個(gè)條目的高度算出總高度設(shè)置為listview过蹂,要么自定義一個(gè)listview并重寫 onMeasure()方法十绑,設(shè)置全部顯示。所以如果是RecycleView嵌套R(shí)ecycleView我猜測(cè)解決辦法也是一樣酷勺,必須先設(shè)置子RecylcerView的高度先確定出子RecyclerView里面條目的高度本橙,然后從而確定子RecyclerView的高度,設(shè)置給子RecylcerView脆诉,這樣做RecyclerView就可以正確顯示出子ReclyclerView的條目了甚亭。
- 線程池中有一個(gè)方法,可以讓某個(gè)線程等待其它線程執(zhí)行完成后才開始執(zhí)行自己的任務(wù)击胜,你清楚是哪個(gè)嗎亏狰?
這個(gè)我不清楚,如果非要這么做偶摔,我進(jìn)行一個(gè)計(jì)數(shù)標(biāo)記暇唾,假設(shè)A線程要等待B、C辰斋、D線程運(yùn)行結(jié)束后才開始策州,我會(huì)在A線程先調(diào)用
while(count!=3);
讓線程在這么死等宫仗,B够挂、C、D線程run方法最后我執(zhí)行一次count++
- 如果我有個(gè)需求藕夫,公司項(xiàng)目需求孽糖,上線的App和內(nèi)部使用的APP訪問的域名地址不同,但希望一次就可以打出來這兩個(gè)包汁胆,怎么做梭姓?
這個(gè)其實(shí)有點(diǎn)類似Android多渠道打包,可以通過清單文件的MetaData操作嫩码,一般用工具打渠道包的時(shí)候誉尖,會(huì)讀取渠道配置信息,我可以將域名地址添加到配置信息里面铸题,將系統(tǒng)的Applicat中讀取MetaData信息铡恕,把域名地址獲取到,這樣就可以同時(shí)打出兩個(gè)訪問不同域名地址的安裝包了
- 都用過那些設(shè)計(jì)模式丢间?單例設(shè)計(jì)模式怎么實(shí)現(xiàn)探熔?
在項(xiàng)目開發(fā)中,遇到的設(shè)計(jì)模式挺多的烘挫,如單例模式诀艰、工廠模式柬甥、觀察者模式、裝飾者模式其垄、適配器模式等苛蒲,單例有兩種,餓漢式和懶漢式绿满,其中懶漢式在多線程情況下會(huì)出現(xiàn)線程安全問難臂外,同時(shí)java的反射機(jī)制會(huì)破壞單例這個(gè)時(shí)候,面試管說到了枚舉也可以實(shí)現(xiàn)單例喇颁,我表示認(rèn)同漏健。
我的詢問過程
剩下的就是聊了一些生活方面的問題,我也順勢(shì)詢問了一下公司的情況橘霎,
- 問了最近很火的微信小程序會(huì)對(duì)公司的Android開發(fā)產(chǎn)生沖擊嗎蔫浆?
公司不會(huì)去考慮微信小程序,現(xiàn)有的業(yè)務(wù)邏輯很復(fù)雜茎毁,小程序根本做不到克懊。
- 目前的混合開發(fā)是不是Android開發(fā)的潮流
面試官表示認(rèn)同,但也認(rèn)為七蜘,Js畢竟有很多的局限性,現(xiàn)階段還是無法取代Android原生墙懂,很多功能都需要依賴原生控件才能實(shí)現(xiàn)橡卤,公司目前對(duì)android的招人需求還是蠻強(qiáng)烈的,但招人的要求也越來越嚴(yán)格了损搬,現(xiàn)在更傾向三年及三年以上的Android開發(fā)人員碧库。
- 公司是不是更喜歡對(duì)新技術(shù)掌握更好的人?
面試官說:目前西安的Android開發(fā)還無法和大城市相比,主流開發(fā)技術(shù)相對(duì)落后巧勤,你能掌握這么多新技術(shù)嵌灰,已經(jīng)相當(dāng)不錯(cuò)了。
還有一家面試颅悉,在下周二開始沽瞭,到時(shí)候再更新。剩瓶。驹溃。
3. 面試總結(jié)
從這幾次面試來看,目前Android的招聘還是挺多的延曙,只是要求越來越高了
不得不說豌鹤,前兩年的移動(dòng)開發(fā)確實(shí)很火,為什么枝缔?因?yàn)橐粋€(gè)行業(yè)剛興起布疙,智能手機(jī)發(fā)展之快速讓人震驚,加上創(chuàng)業(yè)的越來越多,基本上創(chuàng)業(yè)都需要做一個(gè) App灵临,以上種種原因綜合下來導(dǎo)致移動(dòng)開發(fā)人才特別緊缺截型,可以說隨便能鼓搗出來點(diǎn)東西都很容易找到工作。而現(xiàn)在明顯降溫了俱诸,對(duì)人才的要求也越來越苛刻菠劝,現(xiàn)在搞一個(gè)公眾號(hào)就可以創(chuàng)業(yè)融資了,App 不再是剛需了睁搭,所以跟前兩年比需求確實(shí)少了很多赶诊。但是跟同類其他編程行業(yè)比移動(dòng)開發(fā)依然需求蠻大的,這種現(xiàn)象只能說明以前是「瘋狂」园骆,而現(xiàn)在才是「正程蚧荆」,所以那些說 Android 開發(fā)飽和了锌唾,我并不認(rèn)同锄码,因?yàn)槲铱吹礁鞔笳衅妇W(wǎng)站 Android 跟 iOS 開發(fā)的職位跟其他崗位的招聘比并沒有少,所以所謂的「飽和」只是一種從「瘋狂」到「正成翁椋」的錯(cuò)覺而已
這個(gè)解釋一下很多人的疑問滋捶,說投了很多簡(jiǎn)歷,都沒有回應(yīng)余黎,總感覺今年工作特別難找重窟。其實(shí)因?yàn)橐苿?dòng)開發(fā)前兩年的火爆,導(dǎo)致很多新興的培訓(xùn)機(jī)構(gòu)大舉招聘移動(dòng)開發(fā)惧财,所以這兩年你會(huì)發(fā)現(xiàn)培訓(xùn) iOS巡扇、Android 開發(fā)的人特別多,但不是所有的培訓(xùn)機(jī)構(gòu)都像傳智播客垮衷、黑馬程序這樣嚴(yán)把質(zhì)量關(guān)厅翔,及時(shí)創(chuàng)新課程大綱,緊隨市場(chǎng)的技術(shù)需求搀突,大多都是借著招聘的火熱勢(shì)頭刀闷,以培訓(xùn)為名來大筆撈錢,導(dǎo)致Android開發(fā)的人越來越多描姚,質(zhì)量卻越來越差涩赢,初級(jí)的Android程序員太多了,而現(xiàn)在企業(yè)也看清了這其中的貓膩轩勘,更愿意招聘有更多工作經(jīng)驗(yàn)的中高級(jí)的Android開發(fā)人員筒扒,再也不像兩年前招不到人需要自己培養(yǎng)了,現(xiàn)在可選的人一大把绊寻,為什么要先招進(jìn)來再培養(yǎng)你呢花墩?
所以綜上悬秉,真的別杞人憂天,沉下心來學(xué)好基礎(chǔ)冰蘑,提升技能比什么都重要和泌,如果你找不到工作,只能說你學(xué)的還不夠好祠肥,或者能力還不達(dá)標(biāo)武氓,并不能說明沒有這個(gè)崗位的招聘,以個(gè)人能力的不行來否定整個(gè)市場(chǎng)的需求是弱者的行為仇箱!