flutter開發小程序,最強整理!寫給程序員的Flutter詳細教程,大廠直通車!
flutter開發小程序,最強整理!寫給程序員的Flutter詳細教程,大廠直通車!
前言
當你開始開始去跳槽面試的時候,明明只是一份15K的工作,卻問你會不會熱修復,懂不懂性能優化,火箭造得讓你猝及不防,結果就是涼涼;現如今市場,熱修復、性能優化、NDK、APP開發、架構、源碼等可以說是現在高級Android開發求職的必備技能。
早期的鳥兒有蟲吃,現如今做開發的門檻越來越高。
但是,術業有專攻,總有一些技術牛逼的程序員可以吊打、碾壓面試官!
本人經常隔段時間就偷偷投點簡歷,請假出去面試幾次,目的不是想跳槽,主要是為了看看市場上的技術流行趨勢,順便檢驗一下自己的水平,當然,如果面到了心儀的公司或者大廠,那不是更好嘛,哈哈哈!
flutter開發小程序?前段時間收到了字節跳動的面試,雖然有點小震驚,但還是用平常心對待了。結果一不小心,面試的時候就吊打了面試官。
前后一個半小時的面試過程全程沒卡殼,項目和算法全部搞定,甚至聊到了面試官的盲點
面試題目
1.一個創業公司
(發現問下來幾乎全是java基礎知識,幾乎沒有android知識)
先是筆試:
- 生產者消費者模型用線程方式實現、按元素大小拼接兩個鏈表
- 同步和異步的區別
- 阻塞和非阻塞的區別
- 泛型擦除
- 集合中線程安全的類和非線程安全的類(SparseArray和ListArray的區別,SparseArray怎么存數據、取數據)
- Gradle插件怎么做
- https怎么實現防抓包
- 封裝第三方庫等等;
2.一個五六百人的民企
- 線程池
- 消息推送(自己做一個消息推送怎么實現)
- Exoplayer相對于系統的MediaPlayer有什么優點
- h5面面加載緩存,和原生怎么傳遞數據
- MQTT和XMPP有什么區別,為什么會有那么多協議
- https的原理,中間人攻擊
- 怎么中斷一個線程
3.大廠
(多家公司面試題匯總,一些我認為的簡單或是常規問題就不羅列了,全是我自己之前沒怎么關注的問題,所以有時第三方庫爛大街的原碼分析要看,但有些關鍵點,其實很多博文可能都沒分析到,需要自己多想想,自己主動去思考)
- AsyncTask原理,在子線程中定義AsyncTask實例可不可以,為什么不可以呢
- OkHttp原理(說了那些攔截器)怎么實現多路復用的(這個主要從https實現多路復用的原理上談,用了二進制分幀,那okHttp其實就是按分幀來讀取,具體可以自己看看相關博客)
- Handler的機制,android內部是怎么實現發送延時消息,(一開始以為是用個類似于Timer之類的定時任務,后來才知道是用系統開機時間+延時時間得到一個時間T1,當手機當前時間到了T1的話,就會把消息發送出去。但有可能UI線程被阻塞了,所以到了T1時間,也不能確保100%這個Message被發出去的)
- 性能優化減少apk體積,怎么減小so包的體積呢
- 怎么給一個應用加固
- ANR的原理,怎么從trace.log中找到ANR的原因及出現的地方(找到main thread),如果只是在主線程中Thread.sleep(10S),會不會出現ANR
- JNI層的Crash怎么定位(通過ndk中相應的工具addr2line ndk-stack等可以定位到行)
- 廣播為什么能作為四大組件,有什么特殊之處(經面試官提醒,能實現一對多通信),本地廣播的實現原理
- Android中設計Fragment的好處,那有了Activity為什么還要設計出Fragment來呢(解耦)
- ViewStub為什么能實現延遲加載(它沒有進行測量和繪制,只在調flate或是setVisibility時才會加載進布局)
- Binder怎么實現進程間通信的,怎么注冊服務的。。。。
。。。。還有很多題,就不一一舉例了,只能說給自己一個教訓,很多東西看深點就不會多問一點就不知道了。
4.創業公司想招團隊負責人
- 做過哪些性能優化,Leakcanery的原理,怎么檢測內存泄漏的
- android的新技術你用了哪些
- 你認為你應用中做得比較nb的地方有哪些,你認為你項目中解決了哪些技術難點等等。。。
5.我認為反常規的面試
專科程序員怎么進一線大廠,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學習方向及思路(詳細的內容太多了~),提供給大家:
對于程序員來說,要學習的知識內容、技術有太多太多,這里就先放上一部分,其他的內容有機會在后面的文章向大家呈現出來,不過我自己所有的學習資料都整理成了一個文檔,一直在不斷學習,如今整理的資料不知不覺居然已經有將近80G了,在這里作為讀者福利免費分享給大家,希望能幫助到大家,也節省大家在網上搜索資料的時間來學習,也可以分享動態給身邊好友一起學習!
資料獲取傳送門:點擊免費獲取Android架構設計
大廠編程語言、群內有許多技術大牛,有任何問題,歡迎廣大網友一起來交流,群內還不定期免費分享高階Android學習視頻資料和面試資料包~
為什么某些人會一直比你優秀,是因為他本身就很優秀還一直在持續努力變得更優秀,而你是不是還在滿足于現狀內心在竊喜!希望讀到這的您能點個小贊和關注下我,以后還會更新技術干貨,謝謝您的支持!
Android架構師之路很漫長,一起共勉吧!
如果你覺得文章寫得不錯就給個贊唄?如果你覺得那里值得改進的,請給我留言,一定會認真查詢,修正不足,謝謝。
到這的您能點個小贊和關注下我,以后還會更新技術干貨,謝謝您的支持!**
Android架構師之路很漫長,一起共勉吧!
非科班程序員進大廠很難,如果你覺得文章寫得不錯就給個贊唄?如果你覺得那里值得改進的,請給我留言,一定會認真查詢,修正不足,謝謝。