最全的BAT大廠面試題整理

最全的BAT大廠面試題整理html

 

 

臨近年關,又到了面試求職高峯期,最近有不少網友都在求大廠面試題。正好我以前電腦裏面有這方面的整理,因而就發上來分享給你們。前端

這些題目是網友去百度、小米、樂視、美團、5八、獵豹、360、新浪、搜狐等一線互聯網公司面試被問到的題目。熟悉本文中列出的知識點會大大增長經過前兩輪技術面試的概率。java

網上的都是按照公司劃分的,想找具體某一方面的知識點有點很差找,我這裏就根據知識點分門別類的整理了一下,想看哪一塊能夠快速找到,但願能夠幫助你們,祝你們求職順利。react

主要分爲如下幾部分:c++

(1)java面試題面試

(2)Android面試題算法

(3)混合開發面試題數據庫

(4)高端技術面試題編程

(5)非技術性問題&HR問題彙總小程序

1、java面試題

熟練掌握java是很關鍵的,大公司不只僅要求你會使用幾個api,更多的是要你熟悉源碼實現原理,甚至要你知道有哪些不足,怎麼改進,還有一些java有關的一些算法,設計模式等等。

(一) java基礎面試知識點

java中==和equals和hashCode的區別

int、char、long各佔多少字節數

int與integer的區別

談談對java多態的理解

String、StringBuffer、StringBuilder區別

什麼是內部類?內部類的做用

抽象類和接口區別

抽象類的意義

抽象類與接口的應用場景

抽象類是否能夠沒有方法和屬性?

接口的意義

泛型中extends和super的區別

父類的靜態方法可否被子類重寫

進程和線程的區別

final,finally,finalize的區別

序列化的方式

Serializable 和Parcelable 的區別

靜態屬性和靜態方法是否能夠被繼承?是否能夠被重寫?以及緣由?

靜態內部類的設計意圖

成員內部類、靜態內部類、局部內部類和匿名內部類的理解,以及項目中的應用

談談對kotlin的理解

閉包和局部內部類的區別

string 轉換成 integer的方式及原理

(二) java深刻源碼級的面試題(有難度)

哪些狀況下的對象會被垃圾回收機制處理掉?

講一下常見編碼方式?

utf-8編碼中的中文佔幾個字節;int型幾個字節?

靜態代理和動態代理的區別,什麼場景使用?

Java的異常體系

談談你對解析與分派的認識。

修改對象A的equals方法的簽名,那麼使用HashMap存放這個對象實例的時候,會調用哪一個equals方法?

Java中實現多態的機制是什麼?

如何將一個Java對象序列化到文件裏?

說說你對Java反射的理解

說說你對Java註解的理解

說說你對依賴注入的理解

說一下泛型原理,並舉例說明

Java中String的瞭解

String爲何要設計成不可變的?

Object類的equal和hashCode方法重寫,爲何?

(三) 數據結構

經常使用數據結構簡介

併發集合瞭解哪些?

列舉java的集合以及集合之間的繼承關係

集合類以及集合框架

容器類介紹以及之間的區別(容器類估計不少人沒聽這個詞,Java容器主要能夠劃分爲4個部分:List列表、Set集合、Map映射、工具類(Iterator迭代器、Enumeration枚舉類、Arrays和Collections)

List,Set,Map的區別

List和Map的實現方式以及存儲方式

HashMap的實現原理

HashMap數據結構?

HashMap源碼理解

HashMap如何put數據(從HashMap源碼角度講解)?

HashMap怎麼手寫實現?

ConcurrentHashMap的實現原理

ArrayMap和HashMap的對比

HashTable實現原理

TreeMap具體實現

HashMap和HashTable的區別

HashMap與HashSet的區別

HashSet與HashMap怎麼判斷集合元素重複?

集合Set實現Hash怎麼防止碰撞

ArrayList和LinkedList的區別,以及應用場景

數組和鏈表的區別

二叉樹的深度優先遍歷和廣度優先遍歷的具體實現

堆的結構

堆和樹的區別

堆和棧在內存中的區別是什麼(解答提示:能夠從數據結構方面以及實際實現方面兩個方面去回答)?

什麼是深拷貝和淺拷貝

手寫鏈表逆序代碼

講一下對樹,B+樹的理解

講一下對圖的理解

判斷單鏈表成環與否?

鏈表翻轉(即:翻轉一個單項鍊表)

合併多個單有序鏈表(假設都是遞增的)

(四) 線程、多線程和線程池

開啓線程的三種方式?

線程和進程的區別?

爲何要有線程,而不是僅僅用進程?

run()和start()方法區別

如何控制某個方法容許併發訪問線程的個數?

在Java中wait和seelp方法的不一樣;

談談wait/notify關鍵字的理解

什麼致使線程阻塞?

線程如何關閉?

講一下java中的同步的方法

數據一致性如何保證?

如何保證線程安全?

如何實現線程同步?

兩個進程同時要求寫或者讀,能不能實現?如何防止進程的同步?

線程間操做List

Java中對象的生命週期

Synchronized用法

synchronize的原理

談談對Synchronized關鍵字,類鎖,方法鎖,重入鎖的理解

static synchronized 方法的多線程訪問和做用

同一個類裏面兩個synchronized方法,兩個線程同時訪問的問題

volatile的原理

談談volatile關鍵字的用法

談談volatile關鍵字的做用

談談NIO的理解

synchronized 和volatile 關鍵字的區別

synchronized與Lock的區別

ReentrantLock 、synchronized和volatile比較

ReentrantLock的內部實現

lock原理

死鎖的四個必要條件?

怎麼避免死鎖?

對象鎖和類鎖是否會互相影響?

什麼是線程池,如何使用?

Java的併發、多線程、線程模型

談談對多線程的理解

多線程有什麼要注意的問題?

談談你對併發編程的理解並舉例說明

談談你對多線程同步機制的理解?

如何保證多線程讀寫文件的安全?

多線程斷點續傳原理

斷點續傳的實現

(五)併發編程有關知識點(這個是通常Android開發用的少的,因此建議多去看看):

平時Android開發中對併發編程能夠作得比較少,Thread這個類常常會用到,可是咱們想提高本身的話,必定不能停留在表面,,咱們也應該去了解一下java的關於線程相關的源碼級別的東西。

2、Android面試題

Android面試題包括Android基礎,還有一些源碼級別的、原理這些等。因此想去大公司面試,必定要多看看源碼和實現方式,經常使用框架能夠試試本身能不能手寫實現一下,鍛鍊一下本身。

(一)Android基礎知識點

四大組件是什麼

四大組件的生命週期和簡單用法

Activity之間的通訊方式

Activity各類狀況下的生命週期

橫豎屏切換的時候,Activity 各類狀況下的生命週期

Activity與Fragment之間生命週期比較

Activity上有Dialog的時候按Home鍵時的生命週期

兩個Activity 之間跳轉時必然會執行的是哪幾個方法?

前臺切換到後臺,而後再回到前臺,Activity生命週期回調方法。彈出Dialog,生命值週期回調方法。

Activity的四種啓動模式對比

Activity狀態保存於恢復

fragment各類狀況下的生命週期

Fragment狀態保存startActivityForResult是哪一個類的方法,在什麼狀況下使用?

如何實現Fragment的滑動?

fragment之間傳遞數據的方式?

Activity 怎麼和Service 綁定?

怎麼在Activity 中啓動本身對應的Service?

service和activity怎麼進行數據交互?

Service的開啓方式

請描述一下Service 的生命週期

談談你對ContentProvider的理解

說說ContentProvider、ContentResolver、ContentObserver 之間的關係

請描述一下廣播BroadcastReceiver的理解

廣播的分類

廣播使用的方式和場景

在manifest 和代碼中如何註冊和使用BroadcastReceiver?

本地廣播和全局廣播有什麼差異?

BroadcastReceiver,LocalBroadcastReceiver 區別

AlertDialog,popupWindow,Activity區別

Application 和 Activity 的 Context 對象的區別

Android屬性動畫特性

如何導入外部數據庫?

LinearLayout、RelativeLayout、FrameLayout的特性及對比,並介紹使用場景。

談談對接口與回調的理解

回調的原理

寫一個回調demo

介紹下SurfView

RecycleView的使用

序列化的做用,以及Android兩種序列化的區別

差值器

估值器

Android中數據存儲方式

(二)Android源碼相關分析

Android動畫框架實現原理

Android各個版本API的區別

Requestlayout,onlayout,onDraw,DrawChild區別與聯繫

invalidate和postInvalidate的區別及使用

Activity-Window-View三者的差異

談談對Volley的理解

如何優化自定義View

低版本SDK如何實現高版本api?

描述一次網絡請求的流程

HttpUrlConnection 和 okhttp關係

Bitmap對象的理解

looper架構

ActivityThread,AMS,WMS的工做原理

自定義View如何考慮機型適配

自定義View的事件

AstncTask+HttpClient 與 AsyncHttpClient有什麼區別?

LaunchMode應用場景

AsyncTask 如何使用?

SpareArray原理

請介紹下ContentProvider 是如何實現數據共享的?

AndroidService與Activity之間通訊的幾種方式

IntentService原理及做用是什麼?

說說Activity、Intent、Service 是什麼關係

ApplicationContext和ActivityContext的區別

SP是進程同步的嗎?有什麼方法作到同步?

談談多線程在Android中的使用

進程和 Application 的生命週期

封裝View的時候怎麼知道view的大小

RecycleView原理

AndroidManifest的做用與理解

(三)常見的一些原理性問題

Handler機制和底層實現

Handler、Thread和HandlerThread的差異

handler發消息給子線程,looper怎麼啓動?

關於Handler,在任何地方new Handler 都是什麼線程下?

ThreadLocal原理,實現及如何保證Local屬性?

請解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關係

請描述一下View事件傳遞分發機制

Touch事件傳遞流程

事件分發中的onTouch 和onTouchEvent 有什麼區別,又該如何使用?

View和ViewGroup分別有哪些事件分發相關的回調方法

View刷新機制

View繪製流程

自定義控件原理

自定義View如何提供獲取View屬性的接口?

Android代碼中實現WAP方式聯網

AsyncTask機制

AsyncTask原理及不足

如何取消AsyncTask?

爲何不能在子線程更新UI?

ANR產生的緣由是什麼?

ANR定位和修正

oom是什麼?

什麼狀況致使oom?

有什麼解決方法能夠避免OOM?

Oom 是否能夠try catch?爲何?

內存泄漏是什麼?

什麼狀況致使內存泄漏?

如何防止線程的內存泄漏?

內存泄露場的解決方法

內存泄漏和內存溢出區別?

LruCache默認緩存大小

ContentProvider的權限管理(解答:讀寫分離,權限控制-精確到表級,URL控制)

如何經過廣播攔截和abort一條短信?

廣播是否能夠請求網絡?

廣播引發anr的時間限制是多少?

計算一個view的嵌套層級

Activity

Android線程有沒有上限?

線程池有沒有上限?

ListView重用的是什麼?

Android爲何引入Parcelable?

有沒有嘗試簡化Parcelable的使用?

(四)開發中常見的一些問題

ListView 中圖片錯位的問題是如何產生的?

混合開發有了解嗎?

知道哪些混合開發的方式?說出它們的優缺點和各自使用場景?(解答:好比:RN,weex,H5,小程序,WPA等。作Android的瞭解一些前端js等仍是頗有好處的);

屏幕適配的處理技巧都有哪些?

服務器只提供數據接收接口,在多線程或多進程條件下,如何保證數據的有序到達?

動態佈局的理解

怎麼去除重複代碼?

畫出 Android 的大致架構圖

Recycleview和ListView的區別

ListView圖片加載錯亂的原理和解決方案

動態權限適配方案,權限組的概念

Android系統爲何會設計ContentProvider?

下拉狀態欄是否是影響activity的生命週期

若是在onStop的時候作了網絡請求,onResume的時候怎麼恢復?

Bitmap 使用時候注意什麼?

Bitmap的recycler()

Android中開啓攝像頭的主要步驟

ViewPager使用細節,如何設置成每次只初始化當前的Fragment,其餘的不初始化?

點擊事件被攔截,可是想傳到下面的View,如何操做?

微信主頁面的實現方式

微信上消息小紅點的原理

CAS介紹

3、混合開發面試題

大廠除了技術深度以外,還要求你具有一些廣度的知識,好比你要會前端知識,會混合開發,至少會一種腳本語言,C c++更不用說了,也是必會的。

Hybrid作過嗎?

Hybrid通訊原理是什麼,有作研究嗎?

react native有多少了解?講一下原理。

weex瞭解嗎?如何本身實現相似技術?

flutter瞭解嗎?內部是如何實現跨平臺的?

Dart語言有研究貴嗎?

快應用瞭解嗎?跟其她方式相比有什麼優缺點?

說說你用過的混合開發技術有哪些?各有什麼優缺點?

Python會嗎?

會不會PHP?

Gradle瞭解多少?groovy語法會嗎?

相關文章
相關標籤/搜索