新的一年已經開始,最近在網上看到了許多小夥伴打算跳槽或者申請漲薪
這邊給大家分享一下面試會遇到的問題(如果你想獲取這些面試題的答案以及詳細問題鏈接請見文末)
找工作還是需要大家不要經常,有我們幹這一行的接觸人本來就不多 難免看到面試官會緊張,主要是因為怕面試官問的問題到不上來,那時候不要著急 ,答不上了的千萬不然胡扯一些,直接就給面試官說這塊我還沒接觸到,以後如果工作當中遇到的話我可以很快的吧這個問題給解決了,但是我們有了這篇文章,就不一樣了,基本上問的問題都有適當的看一下,到時候很快就可以拿到 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發展?
- 對於薪酬有什麼想法?
- 有什麼問題想要問我?
注:關注我,私信發送“面試”即可獲取以上面試資料答案。
閱讀更多 java高級程序猿 的文章