年後想跳槽漲薪?你想要的面試題全在這裡
新的一年即將來臨,最近在網上看到了許多小夥伴想在年後跳槽漲薪
馬上年初又是找工作的大潮即將來臨
這邊給大家分享一下面試會遇到的問題(如果你想獲取這些面試題的答案以及詳細問題連結請見文末)
找工作還是需要大家不要經常,有我們幹這一行的接觸人本來就不多 難免看到面試官會緊張,主要是因為怕面試官問的問題到不上來,那時候不要著急 ,答不上了的千萬不然胡扯一些,直接就給面試官說這塊我還沒接觸到,以後如果工作當中遇到的話我可以很快的吧這個問題給解決了,但是我們有了這篇文章,就不一樣了,基本上問的問題都有適當的看一下,到時候很快就可以拿到 offer 我在這裡祝大家工作順利,天天開心 ,好了下面就是正題:
一、 Android
1.Activity
說下Activity的生命週期?
onStart()和onResume()/onPause()和onStop()的區別?
Activity A啟動另一個Activity B會回撥哪些方法?如果Activity B是完全透明呢?如果啟動的是一個對話方塊Activity呢?
談談onSaveInstanceState()方法?何時會呼叫?
onSaveInstanceState()與onPause()的區別?
如何避免配置改變時Activity重建?
優先順序低的Activity在記憶體不足被回收後怎樣做可以恢復到銷燬前狀態?
說下Activity的四種啟動模式?(有時會出個實際問題來分析返回棧中Activity的情況)
談談singleTop和singleTask的區別以及應用場景
onNewIntent()呼叫時機?
瞭解哪些Activity啟動模式的標記位?
如何啟動其他應用的Activity?
Activity的啟動過程?
2.Fragment
談一談Fragment的生命週期?
Activity和Fragment的異同?
Activity和Fragment的關係?
何時會考慮使用Fragment?
3.Service
談一談Service的生命週期?
Service的兩種啟動方式?區別在哪?
一個Activty先start一個Service後,再bind時會回撥什麼方法?此時如何做才能回撥Service的destory()方法?
Service如何和Activity進行通訊?
用過哪些系統Service?
是否能在Service進行耗時操作?如果非要可以怎麼做?
AlarmManager能實現定時的原理?
前臺服務是什麼?和普通服務的不同?如何去開啟一個前臺服務?
是否瞭解ActivityManagerService,談談它發揮什麼作用?
如何保證Service不被殺死?
4.Broadcast Receiver
廣播有幾種形式?什麼特點?
廣播的兩種註冊形式?區別在哪?
5.ContentProvider
ContentProvider瞭解多少?
6.資料儲存
Android中提供哪些資料持久儲存的方法?
Java中的I/O流讀寫怎麼做?
SharePreferences適用情形?使用中需要注意什麼?
瞭解SQLite中的事務處理嗎?是如何做的?
使用SQLite做批量操作有什麼好的方法嗎?
如果現在要刪除SQLite中表的一個欄位如何做?
使用SQLite時會有哪些優化操作?
7.IPC
Android中程序和執行緒的關係?
為何需要進行IPC?多程序通訊可能會出現什麼問題?
什麼是序列化?Serializable介面和Parcelable介面的區別?為何推薦使用後者?
Android中為何新增Binder來作為主要的IPC方式?
使用Binder進行資料傳輸的具體過程?
Binder框架中ServiceManager的作用?
Android中有哪些基於Binder的IPC方式?簡單對比下?
是否瞭解AIDL?原理是什麼?如何優化多模組都使用AIDL的情況?
8.View
MotionEvent是什麼?包含幾種事件?什麼條件下會產生?
scrollTo()和scrollBy()的區別?
Scroller中最重要的兩個方法是什麼?主要目的是?
談一談View的事件分發機制?
如何解決View的滑動衝突?
談一談View的工作原理?
MeasureSpec是什麼?有什麼作用?
自定義View/ViewGroup需要注意什麼?
onTouch()、onTouchEvent()和onClick()關係?
SurfaceView和View的區別?
invalidate()和postInvalidate()的區別?
9.Drawable等資源
瞭解哪些Drawable?適用場景?
mipmap系列中xxxhdpi、xxhdpi、xhdpi、hdpi、mdpi和ldpi存在怎樣的關係?
dp、dpi、px的區別?
res目錄和assets目錄的區別?
10.Animation
Android中有哪幾種類型的動畫?
幀動畫在使用時需要注意什麼?
View動畫和屬性動畫的區別?
View動畫為何不能真正改變View的位置?而屬性動畫為何可以?
屬性動畫插值器和估值器的作用?
11.Window
Activity、View、Window三者之間的關係?
Window有哪幾種類型?
Activity建立和Dialog建立過程的異同?
12.Handler
談談訊息機制Hander?作用?有哪些要素?流程是怎樣的?
為什麼系統不建議在子執行緒訪問UI?
一個Thread可以有幾個Looper?幾個Handler?
可以在子執行緒直接new一個Handler嗎?那該怎麼做?
如何將一個Thread執行緒變成Looper執行緒?Looper執行緒有哪些特點?
Message可以如何建立?哪種效果更好,為什麼?
這裡的ThreadLocal有什麼作用?
主執行緒中Looper的輪詢死迴圈為何沒有阻塞主執行緒?
使用Hanlder的postDealy()後訊息佇列會發生什麼變化?
13.執行緒
Android中還了解哪些方便執行緒切換的類?
AsyncTask相比Handler有什麼優點?不足呢?
使用AsyncTask需要注意什麼?
AsyncTask中使用的執行緒池大小?
HandlerThread有什麼特點?
快速實現子執行緒使用Handler
IntentService的特點?
為何不用bindService方式建立IntentService?
執行緒池的好處、原理、型別?
ThreadPoolExecutor的工作策略?
什麼是ANR?什麼情況會出現ANR?如何避免?在不看程式碼的情況下如何快速定位出現ANR問題所在?
14.Bitmap
載入圖片的時候需要注意什麼?
LRU演算法的原理?
15.效能優化
專案中如何做效能優化的?
瞭解哪些效能優化的工具?
佈局上如何優化?
記憶體洩漏是什麼?為什麼會發生?常見哪些記憶體洩漏的例子?都是怎麼解決的?
記憶體洩漏和記憶體溢位的區別
什麼情況會導致記憶體溢位?
16.谷歌新動態
是否瞭解和使用過谷歌推出的新技術?
有了解剛釋出的Androidx.0的特性嗎?
Kotlin對Java做了哪些優化?
二、Java
1.基礎
面向物件程式設計的四大特性及其含義?
String、StringBuffer和StringBuilder的區別?
String a=""和String a=new String("")的的關係和異同?
Object的equal()和==的區別?
裝箱、拆箱什麼含義?
int和Integer的區別?
遇見過哪些執行時異常?異常處理機制知道哪些?
什麼是反射,有什麼作用和應用?
什麼是內部類?有什麼作用?靜態內部類和非靜態內部類的區別?
final、finally、finalize()分別表示什麼含義
重寫和過載的區別?
抽象類和介面的異同?
為什麼匿名內部類中使用區域性變數要用final修飾?
Object有哪些公有方法?
2.集合
Java集合框架中有哪些類?都有什麼特點
集合、陣列、泛型的關係,並比較
ArrayList和LinkList的區別?
ArrayList和Vector的區別?
HashSet和TreeSet的區別?
HashMap和Hashtable的區別?
HashMap在put、get元素的過程?體現了什麼資料結構?
如何解決Hash衝突?
如何保證HashMap執行緒安全?什麼原理?
HashMap是有序的嗎?如何實現有序?
HashMap是如何擴容的?如何避免擴容?
hashcode()的作用,與equal()有什麼區別?
3.併發
同步和非同步、阻塞和非阻塞的概念
Thread的join()有什麼作用?
執行緒的有哪些狀態?
什麼是執行緒安全?保障執行緒安全有哪些手段?
ReentrantLock和synchronized的區別?
synchronized和volatile的區別?
synchronized同步程式碼塊還有同步方法本質上鎖住的是誰?為什麼?
sleep()和wait()的區別?
4.Java新動態
是否瞭解Java1.x的特性嗎?
談談對面向過程程式設計、面向物件程式設計還有面向切面程式設計的理解
三、計算機網路
1.基礎
五層協議的體系結構分別是什麼?每一層都有哪些協議?
為何有MAC地址還要IP地址?
TCP和UDP的區別?
擁塞控制和流量控制都是什麼,兩者的區別?
談談TCP為什麼要三次握手?為什麼要四次揮手?
播放視訊用TCP還是UDP?為什麼?
2.HTTP
瞭解哪些響應狀態碼?
get和post的區別?
HTTP1.0、HTTP1.1、HTTP2.0的區別?
HTTP和TCP的區別
HTTP和HTTPS的區別
HTTP和Socket的區別
在位址列打入URL會發生什麼?
四、JVM
JVM記憶體是如何劃分的?
談談垃圾回收機制?為什麼引用計數器判定物件是否回收不可行?知道哪些垃圾回收演算法?
Java中引用有幾種型別?在Android中常用於什麼情景?
類載入的全過程是怎樣的?什麼是雙親委派模型?
工作記憶體和主記憶體的關係?在Java記憶體模型有哪些可以保證併發過程的原子性、可見性和有序性的措施?
JVM、Dalvik、ART的區別?
Java中堆和棧的區別?
五、作業系統
作業系統中程序和執行緒的區別?
程序死鎖的產生和避免?
六、資料結構&演算法
怎麼理解資料結構?
什麼是斐波那契數列?
迭代和遞迴的特點,並比較優缺點
瞭解哪些查詢演算法,時間複雜度都是多少?
瞭解哪些排序演算法,並比較一下,以及適用場景
快排的基本思路是什麼?最差的時間複雜度是多少?如何優化?
AVL樹插入或刪除一個節點的過程是怎樣的?
什麼是紅黑樹?
100盞燈問題
老鼠和毒藥問題,加個條件,必須要求第二天出結果
海量資料問題
(手寫演算法)二分查詢
(手寫演算法)反轉連結串列
(手寫演算法)用兩個棧實現佇列
(手寫演算法)多執行緒輪流列印問題
(手寫演算法)如何判斷一個鏈有環/兩條鏈交叉
(手寫演算法)快速從一組無序數中找到第k大的數/前k個大的數
(手寫演算法)最長(不)重複子串
七、設計模式
談談MVC、MVP和MVVM,好在哪裡,不好在哪裡?
如何理解生產者消費者模型?
是否能從Android中舉幾個例子說說用到了什麼設計模式?
裝飾模式和代理模式有哪些區別?
實現單例模式有幾種方法?懶漢式中雙層鎖的目的是什麼?兩次判空的目的又是什麼?
談談了解的設計模式原則?
八、資料庫
資料庫中的事務瞭解嗎?事務的四大特性?
如何理解資料庫的正規化?
九、HR問題
請簡單的自我介紹一下
談談專案經歷,為什麼會做,怎麼做的,遇到的難點?
談談實習經歷,做了什麼,收穫有哪些?
談談學習Android的經歷,有哪些學習方法和技巧?
成績怎麼樣?獎學金情況?
學過哪些課程?那門課印象最深刻/最有意義/學的最好/最不喜歡?為什麼?
學習生活中遇到什麼挫折,如何解決的?
家是哪裡的?是獨生子女嗎?從小的家庭環境如何?
平常有哪些興趣愛好?大學參加了哪些校園活動?
評價一下自己的優缺點?/用x個詞形容你自己。/別人都是怎樣評價你的?
覺得自己部落格寫的最好的文章是什麼?為什麼?
覺得自己的優勢是什麼?
是否會考研?/為何不保研?
近x年的職業規劃?
為什麼想來我們公司?/為何不轉正留在xx?
對公司/部門是否有了解?
為何會選擇做技術?/對女生做開發的看法?
還投過那些公司,進展如何?如果xx和xx都給你發offer會如何選擇?
有男/女朋友嗎?未來有什麼規劃?
如何看待加班?
意向工作城市是哪?/是否會考慮在xx發展?
對於薪酬有什麼想法?
有什麼問題想要問我?

需要領取獲取面試資料及答案、問題詳細連結,以及Android高階架構資料、原始碼、筆記、視訊。高階UI、效能優化、架構師課程、NDK、混合式開發(ReactNative+Weex)微信小程式、Flutter全方面的Android進階實踐技術。
可以進群 【940780115】 免費領取,歡迎各位一起來探討在Android開發上面所遇見的問題。