移動開發:如果沒做好這些準備及面試題,找工作還是先緩緩吧

南方吳彥祖_藍斯發表於2020-11-01

根據回憶寫下的面試要點,都是比較常見的問題。大家可以對照回答下,不清楚的可以查下資料補充下。

今年疫情下,Android開發的崗位明顯少了很多,開的工資也不是很高,除了一些大公司,比如位元組跳動,小公司工資不高,要求還是挺高的,感覺啥都要會,所以Android開發現在也是亞歷山大,所以離職要慎重,不要裸辭,多彌補下基礎知識,梳理下自己的工作及對應的應用及實踐,準備充足點,不要浪費少量的機會。

Android基礎

1、什麼是ANR 如何避免它?
如果耗時操作需要讓使用者等待,那麼可以在介面上顯示進度條。
2、View的繪製流程;自定義View如何考慮機型適配;自定義View的事件
3、分發機制;View和ViewGroup分別有哪些事件分發相關的回撥方法;自定義View如何提供獲取View屬性的介面;
4、Art和Dalvik對比;虛擬機器原理,如何自己設計一個虛擬機器(記憶體管理,類載入,雙親委派);JVM記憶體模型及類載入機制;記憶體物件的迴圈引用及避免;
5、ddms 和 traceView;
6、記憶體回收機制與GC演算法(各種演算法的優缺點以及應用場景);GC原理時機以及GC物件;記憶體洩露場景及解決方法;
7、四大元件及生命週期;ContentProvider的許可權管理(讀寫分離,許可權控制-精確到表級,URL控制);Activity的四種啟動模式對比;Activity狀態儲存於恢復;
8、什麼是AIDL 以及如何使用;
9、請解釋下在單執行緒模型中Message、Handler、Message Queue、Looper之間的關係;
10、Fragment生命週期;Fragment狀態儲存startActivityForResult是哪個類的方法,在什麼情況下使用,如果在Adapter中使用應該如何解耦;
11、AsyncTask原理及不足;ntentService原理;
12、Activity 怎麼和Service 繫結,怎麼在Activity 中啟動自己對應的Service;
13、請描述一下Service 的生命週期;
14、AstncTask+HttpClient與AsyncHttpClient有什麼區別;
15、如何保證一個後臺服務不被殺死;比較省電的方式是什麼;
16、如何通過廣播攔截和abort一條簡訊;廣播是否可以請求網路;廣播引起anr的時間限制;
17、程式間通訊,AIDL;
18、事件分發中的onTouch 和onTouchEvent 有什麼區別,又該如何使用?
19、說說ContentProvider、ContentResolver、ContentObserver 之間的關係;
20、請介紹下ContentProvider 是如何實現資料共享的;
21、Handler機制及底層實現;
22、Binder機制及底層實現;
23、ListView 中圖片錯位的問題是如何產生的;
24、在manifest 和程式碼中如何註冊和使用BroadcastReceiver;
25、說說Activity、Intent、Service 是什麼關係;
26、ApplicationContext和ActivityContext的區別;
27、一張Bitmap所佔記憶體以及記憶體佔用的計算;
28、Serializable 和Parcelable 的區別;
29、請描述一下BroadcastReceiver;
30、請描述一下Android 的事件分發機制;
31、請介紹一下NDK;
32、什麼是NDK庫,如何在jni中註冊native函式,有幾種註冊方式;
33、AsyncTask 如何使用;
34、對於應用更新這塊是如何做的?(灰度,強制更新,分割槽域更新);
35、混合開發,RN,weex,H5,小程式(做Android的瞭解一些前端js等還是很有好處的);
36、什麼情況下會導致記憶體洩露;
37、如何對Android 應用進行效能分析以及優化;
38、說一款你認為當前比較火的應用並設計(直播APP);
39、OOM的避免異常及解決方法;
40、螢幕適配的處理技巧都有哪些;
41、兩個Activity 之間跳轉時必然會執行的是哪幾個方法?
42、Okhttp原理
43、Rxjava用法和原理
44,熱更新技術有哪些,知道的原理!
45、Activity啟動流程
46、Android記憶體管理
47、Android許可權管理
48、將一下7.0的新特性
49、說下你你們專案的架構
50、元件化的有點和具體實施方案
51、記憶體洩露檢測方法
52、Http協議,SSL握手機制。

Android——效能優化

1.如何對 Android 應用進行效能分析
2.什麼情況下會導致記憶體洩露
3.如何避免 OOM 異常:首先OOM是什麼?Android的OOM怎麼樣?如何避免OOM?
4.Android 中如何捕獲未捕獲的異常
5.ANR 是什麼?怎樣避免和解決 ANR(重要)
6.Android 執行緒間通訊有哪幾種方式
7.Devik 程式,linux 程式,執行緒的區別
8.描述一下 android 的系統架構
9.android 應用對記憶體是如何限制的?我們應該如何合理使用記憶體?
10.簡述 android 應用程式結構是哪些
11.請解釋下 Android 程式執行時許可權與檔案系統許可權的區別
12.Framework 工作方式及原理,Activity 是如何生成一個 view 的,機制是什麼
13.多執行緒間通訊和多程式之間通訊有什麼不同,分別怎麼實現
14.Android 螢幕適配
15.什麼是 AIDL 以及如何使用
16.Handler 機制
17.事件分發機制
18.子執行緒發訊息到主執行緒進行更新 UI,除了 handler 和 AsyncTask,還有什麼
19.子執行緒中能不能 new handler?為什麼
20.Android 中的動畫有哪幾類,它們的特點和區別是什麼
21.如何修改 Activity 進入和退出動畫
22.SurfaceView & View 的區別

專案框架的使用

1.開發中都使用過哪些框架、平臺
2.使用過那些自定義View
3.自定義控制元件:繪製圓環的實現過程
4.自定義控制元件:摩天輪的實現過程
5.GridLayout的使用
6.流式佈局的實現過程
7.第三方登陸
8.第三方支付
9.程式保活

非技術問題彙總

1、研究比較深入的領域有哪些;
2、對業內資訊的關注渠道有哪些;
3、最近都讀哪些書;
4、自己最擅長的技術點,最感興趣的技術領域和技術點;
5、專案中用了哪些開源庫,如何避免因為引入開源庫而導致的安全性和穩定性問題;
6、實習過程中做了什麼,有什麼產出;
7、5枚硬幣,2正3反如何劃分為兩堆然後通過翻轉讓兩堆中正面向上的硬8幣和反面向上的硬幣個數相同;
8、時針走一圈,時針分針重合幾次;
9、N * N的方格紙,裡面有多少個正方形;
10、現在下載速度很慢,試從網路協議的角度分析原因,並優化(網路的5層都可以涉及)。

HR問題彙總

1、您在前一家公司的離職原因是什麼?
2、講一件你印象最深的一件事情;
3、介紹一個你影響最深的專案;
4、介紹你最熱愛最擅長的專業領域;
5、公司實習最大的收穫是什麼;
6、與上級意見不一致時,你將怎麼辦;
7、自己的優點和缺點是什麼?並舉例說明?
8、你的學習方法是什麼樣的?實習過程中如何學習?實習專案中遇到的最9、大困難是什麼以及如何解決的;
10、說一件最能證明你能力的事情;
11、針對你你申請的這個職位,你認為你還欠缺什麼;
12、如果通過這次面試我們單位錄用了你,但工作一段時間卻發現你根本13、不適合這個職位,你怎麼辦;
14、專案中遇到最大的困難是什麼?如何解決的;
15、你的職業規劃以及個人目標;未來發展路線及求職定位;
16、如果你在這次面試中沒有被錄用,你怎麼打算;
17、評價下自己,評價下自己的技術水平,個人程式碼量如何;
18、通過哪些渠道瞭解的招聘資訊,其他同學都投了哪些公司;
19、業餘都有哪些愛好;
20、你做過的哪件事最令自己感到驕傲;
21、假如你晚上要去送一個出國的同學去機場,可單位臨時有事非你辦不可,你怎麼辦;
22、就你申請的這個職位,你認為你還欠缺什麼;
23、當前的offer狀況;如果BATH都給了offer該如何選;
24、你對一份工作更看重哪些方面?平臺,技術,氛圍,城市,money;
25、理想薪資範圍;杭州崗和北京崗選哪個;
26、理想中的工作環境是什麼;
27、談談你對跳槽的看法;
28、說說你對行業、技術發展趨勢的看法;

疫情之下,如何做好職業規劃

目前困難重重,簡歷多,招人少,個人前景不明

1,求職崗位數量縮減,招聘通道縮減

缺少招聘會通道,缺少面對面溝通了解,
各行業受到打擊,減少人力成本,裁員和減少招聘需求很常見。

2,崗位競爭激烈

物以稀為貴,崗位少,必定求職競爭更加激烈。

怎樣應對?

1,調整心態,做好持久戰

接受目前現狀,調整心態,多充電讀書,做好長期求職準備,找工作當成一種狀態,就是把找工作當成一種“工作”。

2,時刻準備,搶佔先機

從職業規劃上提升自己的自我競爭力。圍繞內因和外因梳理強化自己的優勢。內因就是我們的才幹知識和技能,外因就是靠行業定位,企業匹配,職位設計。

自己的優勢是什麼,還需要提升什麼技能,適合什麼崗位,是專精一個崗位,還是所有崗位都涉獵,最後達到自己職業規劃的目標。

行業和公司選擇上,考慮直接進大廠還是去創業公司,是不是去競品公司歷練,是不是去外派公司積累經驗。

一些個人建議:

做好長期職業規劃,梳理自己的優劣勢及興趣愛好,找到自己的長期優勢,並強化和建立起自己的優勢。

在做好本質工作的前提下,發展多份收入模式,工作收入,發展興趣帶來的收入,投資產生的被動收入,多收入驅動,從此人生髮展之路會順利寬廣很多。

找工作之前,以長遠目標為終,想好自己想在哪個崗位發展,發展路線是什麼,然後去各種招聘渠道去找合適的工作,多利用身邊的資源和圈子,藉助他人力量幫助你找到合適的工作。

找工作之前做好筆試面試的準備,準備充分點,不要浪費機會,在選擇公司和崗位時要慎重綜合考慮,當你拿到多個offer時,以最重要的三個要素去分別打分,最後確定你的決定。

找工作跟投資原理一樣,選擇好賽道,良好商業模式的公司,選擇企業文化認同的公司,選擇你佩服和領導力強的領導所帶領的公司。

總之,所選工作是適合自己的,也是適合公司的,達到雙贏結果。

最後

學習技術是一條慢長而艱苦的道路,不能靠一時激情,也不是熬幾天幾夜就能學好的,必須養成平時努力學習的習慣。所以:貴在堅持!

對於很多初中級Android工程師而言,想要提升技能,往往是自己摸索成長,不成體系的學習效果低效漫長且無助。整理的這些架構技術希望對Android開發的朋友們有所參考以及少走彎路,本文的重點是你有沒有收穫與成長,其餘的都不重要,希望讀者們能謹記這一點。

如何進階?

1、確定好方向,梳理成長路線圖

不用多說,相信大家都有一個共識:無論什麼行業,最牛逼的人肯定是站在金字塔端的人。所以,想做一個牛逼的程式設計師,那麼就要讓自己站的更高,成為技術大牛並不是一朝一夕的事情,需要時間的沉澱和技術的積累。

關於這一點,在我當時確立好Android方向時,就已經開始梳理自己的成長路線了,包括技術要怎麼系統地去學習,都列得非常詳細。

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

2、通過原始碼來系統性地學習

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

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

3、閱讀前輩的一些技術筆記

4、刷題備戰,直通大廠

歷時半年,我們整理了這份市面上最全面的安卓面試題解析大全
包含了騰訊、百度、小米、阿里、樂視、美團、58、獵豹、360、新浪、搜狐等一線網際網路公司面試被問到的題目。熟悉本文中列出的知識點會大大增加通過前兩輪技術面試的機率。

如何使用它?

1.可以通過目錄索引直接翻看需要的知識點,查漏補缺。
2.五角星數表示面試問到的頻率,代表重要推薦指數

總結

愛默生說:一個朝著自己目標前進的人,整個世界都給他讓路。所以,作為現在的你,不惑很簡單,多思考多規劃,未來會更清晰,朝著自己的目標一步一步走下去,儘早地取得成功。畢竟,年齡在程式設計師界裡,也是一種優勢。

如果,你沒有靠山,就讓自己成為自己最穩的靠山吧!

以上文章中的資料,均可以免費分享給大家來學習,無論你是零基礎還是工作多年,現在開始就不會晚。

以上內容均放在了開源專案:github 中已收錄,裡面包含不同方向的自學Android路線、面試題集合/面經、及系列技術文章等,資源持續更新中...

相關文章