Android菜鳥提升之路---BAT大廠的面試題(Android+Java)
首先宣告 :發此部落格是因為在後續我會學習這些面試用到的題目,一為了方便自己以後找工作複習方便,二也可以方便大家一起學習,這些面試題是我從鴻洋的部落格中轉載來!
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),具體的可以看看這篇博文 Java容器類 http://alexyyek.github.io/2015/04/06/Collection/)
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的關於執行緒相關的原始碼級別的東西。
學習的參考資料如下:
Java 記憶體模型
java執行緒安全總結
http://www.iteye.com/topic/806990
深入理解java記憶體模型系列文章
http://ifeve.com/java-memory-model-0/
執行緒狀態:
一張圖讓你看懂JAVA執行緒間的狀態轉換
https://my.oschina.net/mingdongcheng/blog/139263
鎖:
鎖機制:synchronized、Lock、Condition
http://blog.csdn.net/vking_wang/article/details/9952063
Java 中的鎖
http://wiki.jikexueyuan.com/project/java-concurrent/locks-in-java.html
併發程式設計:
Java併發程式設計:Thread類的使用
http://www.cnblogs.com/dolphin0520/p/3920357.html
Java多執行緒程式設計總結
http://blog.51cto.com/lavasoft/27069
Java併發程式設計的總結與思考
https://www.jianshu.com/p/053943a425c3#
Java併發程式設計實戰-----synchronized
http://www.cnblogs.com/chenssy/p/4701027.html
深入分析ConcurrentHashMap
http://www.infoq.com/cn/articles/ConcurrentHashMap#
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的作用與理解
相關推薦
Android菜鳥提升之路---BAT大廠的面試題(Android+Java)
首先宣告 :發此部落格是因為在後續我會學習這些面試用到的題目,一為了方便自己以後找工作複習方便,二也可以方便大家一起學習,這些面試題是我從鴻洋的部落格中轉載來!java面試題熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉原始碼實現原理,甚至要
Linux菜鳥起飛之路【二】Linux基本常識
copy 聯合 das 安裝第三方 所有組 以及 改進 伯克利 版本 一、Unix操作系統基本常識
1.什麽是Unix?
Unix是一個計算機操作系統,是一個用來協調、管理和控制計算機硬件與軟件資源的控制程序。
2.Unix操作系統的特點?
多用戶與多任務。多用戶表示在同一
Linux菜鳥起飛之路【七】文件合並、歸檔和壓縮
div 結果 執行 img src gzip 圖片 com .com 一、文件合並操作
1.覆蓋符號與追加符號
a)“>”代表將左邊文件的內容覆蓋右邊文件的內容,如果右邊文件不存在則創建這個文件
b)“>>”代表將左邊文件的內容追加到右邊文件中,如果右邊文
程式設計菜鳥到大佬之路:C語言程式(十二)
第十二天學習精要
遞迴初步
遞迴
一個函式,自己呼叫自己,就是遞迴。
# include <iostream>
using namespace std;
int factorial(int n) // 函式返回n的階乘
{
if (n ==
【linux--菜鳥學習之路】fread和fwrite
fread
函式名: fread
功 能: 從一個流中讀資料
用 法: int fread(void *ptr, int size, int nitems, FILE *stream);
參 數:用於接收資料的地址(ptr)
單個元素的大小(siz
菜鳥成長之路之Thread的SetDeamon()守護執行緒原始碼分析(4)
相信大家的童年都有過《西遊記》的陪伴,唐僧四人一起去西天取經的故事肯定也是耳熟能詳,在西遊記裡唐僧作為整個取經隊伍的領導者,而徒弟們跟隨師傅指引的方向去前進,這裡我們可以把取經當成是Thread執行的終點,師傅作為被守護執行緒,徒弟作為守護執行緒,當取完經後或者師
菜鳥成長之路之Thread的setPriority()設定優先順序原始碼分析(5)
我們知道執行緒在執行start()之後,如果沒有cpu執行權的話,它是在runnable狀態,而不會進入到running狀態或者exception狀態,而且各個執行緒執行的結果次數也有可能不會是一樣的,這體現了多執行緒的不確定性,那麼我們可以通過設定優先順序來讓執行緒執行
菜鳥成長之路之Thread的join()原始碼分析(5)
有些業務要求我們當所有執行緒任務執行完後,做下記錄或者是做別的事,那麼我們在Thread裡面是應該怎麼實現呢?
今天我們來看Thread的join();
public final void join(long millis)
等待該執行緒終止的時間最長為 mi
Python,菜鳥成長之路,Turtle庫
turtle庫的基本介紹turtle庫概述turtle(海龜)庫是turtle繪圖體系的python實現 turtle繪圖體系:1969年誕生,主要用於程式設計入門的一種繪圖方式,是python語言標準庫之一,入門級的圖形繪製函式庫。標準庫:Python計算生態 = 標準庫
XRMelo的菜鳥起飛之路
切正題
我們都知道在使用alertView actionSheet等系統控制元件,他們的共同的特性就是會有一層灰色的view遮蓋了與當前頁面的互動.並且點選控制元件以外的灰色區域,會回到之前的頁面.
ASP.NET MVC4 菜鳥專案之路(一)改造示例程式碼擴充套件使用者資訊管理
模板建立示例專案
MVC的基礎內容我就不說了,入門建議看看官方的MvcMovie示例。
開啟VS2012,【新建專案】,選擇【ASP.NET MVC 4 Web應用程式】,名稱叫MyMvc(這隨便取,但常規是公司.專案的名稱空間),按【確定】,模板選【I
android菜鳥筆記之UI執行緒阻塞
最近在學習Android,有些還是需要記錄下來,方便以後查詢
首先
當一個應用程式啟動之後,android系統會為這個應用程式建立一個主執行緒。這個執行緒非常重要,它負責渲染檢視,分發事件到響 應監聽器並執行, 對介面進行輪詢的監聽。因此,一般也叫做“UI”執行緒。andr
嵌入式Linux菜鳥學習之路
1.裝置驅動的作用
計算機系統由硬體、軟體組成,而對於實際開發來說,硬、軟體間耦合性應儘量低,即應用開發工程師不需關心 硬體,而硬體開發工程師無暇顧及軟體。為了降低硬、軟耦合性,產生了裝置驅動工程師。
2.作業系統驅動設計架構
在無作業系統時,硬體工
小程式填坑之路——文字超出部分隱藏(已解決)
一直使用之前的版本沒有問題,今天在首頁顯示“定位”的地方不能生效,先上程式碼我再說原因
/*文字超出省略*/
{
text-overflow: ellipsis;
white-space: normal;
overflow: hidden;
display: -web
架構師成長之路 5 --如何獲取知識(學習境界)(方法)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
 
毛毛Django修煉之路3——Django基本框架(系統模板)
毛毛Django修煉之路3——Django基本框架(系統模板)
一、基本語法
1、變數相關
{{name}} 直接呼叫傳遞的變數
{{name|length}} 呼叫方法
{{name|default:"預設值"}} 呼叫方法
2、邏輯相關
1、if判斷:
菜鳥自學selenium+python基於web的自動化(功能自動化)
本人是自動化測試初學者,真正的菜鳥一隻。
實際入坑測試接近2年(截止發文之前)。對自動化測試沒有太深入的瞭解,寫這些只是做個鋪墊,因為能看這篇文章的基本都是小白或者菜鳥。說到這裡,不再繼續侃,直接上菜。
為什麼學自動化,because make so much money!那
史上最全 BAT 大廠面試題整理
主要分為以下幾部分:(1)java面試題(2)Android面試題(3)高階技術面試題(4)非技術性問題&HR問題彙總1java面試題熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉原始碼實現原理,甚至要你知道有哪些不足,怎麼改進,還有
架構師成長之路(5)--如何獲取知識(學習境界)(方法)
哲學家常思考的問題:" 我是誰?"" 我從哪裡來?"" 要到哪裡去?不只是哲學家,我想每個人都有自己對這三個問題的認知。
如果我們要成為架構師,我們自己要面臨的三大問題:
找準自己定位:我是誰?在哪裡?
怎樣做好架構師:我要做什麼?
如何搭建架構師知識體系:我該怎麼做?
.Net轉Java自學之路—SpringMVC框架篇四(校驗)
基本 row str 出錯 edi otn basename value string SpringMVC使用Hibernate的校驗框架validation(和Hibernate沒有關系)。
頁面提交請求的參數,請求到Controller方法中,使用validation
Android菜鳥提升之路---BAT大廠的面試題(Android+Java)
首先宣告 :發此部落格是因為在後續我會學習這些面試用到的題目,一為了方便自己以後找工作複習方便,二也可以方便大家一起學習,這些面試題是我從鴻洋的部落格中轉載來!java面試題熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉原始碼實現原理,甚至要
Linux菜鳥起飛之路【二】Linux基本常識
copy 聯合 das 安裝第三方 所有組 以及 改進 伯克利 版本 一、Unix操作系統基本常識 1.什麽是Unix? Unix是一個計算機操作系統,是一個用來協調、管理和控制計算機硬件與軟件資源的控制程序。 2.Unix操作系統的特點? 多用戶與多任務。多用戶表示在同一
Linux菜鳥起飛之路【七】文件合並、歸檔和壓縮
div 結果 執行 img src gzip 圖片 com .com 一、文件合並操作 1.覆蓋符號與追加符號 a)“>”代表將左邊文件的內容覆蓋右邊文件的內容,如果右邊文件不存在則創建這個文件 b)“>>”代表將左邊文件的內容追加到右邊文件中,如果右邊文
程式設計菜鳥到大佬之路:C語言程式(十二)
第十二天學習精要 遞迴初步 遞迴 一個函式,自己呼叫自己,就是遞迴。 # include <iostream> using namespace std; int factorial(int n) // 函式返回n的階乘 { if (n ==
【linux--菜鳥學習之路】fread和fwrite
fread 函式名: fread 功 能: 從一個流中讀資料 用 法: int fread(void *ptr, int size, int nitems, FILE *stream); 參 數:用於接收資料的地址(ptr) 單個元素的大小(siz
菜鳥成長之路之Thread的SetDeamon()守護執行緒原始碼分析(4)
相信大家的童年都有過《西遊記》的陪伴,唐僧四人一起去西天取經的故事肯定也是耳熟能詳,在西遊記裡唐僧作為整個取經隊伍的領導者,而徒弟們跟隨師傅指引的方向去前進,這裡我們可以把取經當成是Thread執行的終點,師傅作為被守護執行緒,徒弟作為守護執行緒,當取完經後或者師
菜鳥成長之路之Thread的setPriority()設定優先順序原始碼分析(5)
我們知道執行緒在執行start()之後,如果沒有cpu執行權的話,它是在runnable狀態,而不會進入到running狀態或者exception狀態,而且各個執行緒執行的結果次數也有可能不會是一樣的,這體現了多執行緒的不確定性,那麼我們可以通過設定優先順序來讓執行緒執行
菜鳥成長之路之Thread的join()原始碼分析(5)
有些業務要求我們當所有執行緒任務執行完後,做下記錄或者是做別的事,那麼我們在Thread裡面是應該怎麼實現呢? 今天我們來看Thread的join(); public final void join(long millis) 等待該執行緒終止的時間最長為 mi
Python,菜鳥成長之路,Turtle庫
turtle庫的基本介紹turtle庫概述turtle(海龜)庫是turtle繪圖體系的python實現 turtle繪圖體系:1969年誕生,主要用於程式設計入門的一種繪圖方式,是python語言標準庫之一,入門級的圖形繪製函式庫。標準庫:Python計算生態 = 標準庫
XRMelo的菜鳥起飛之路
切正題 我們都知道在使用alertView actionSheet等系統控制元件,他們的共同的特性就是會有一層灰色的view遮蓋了與當前頁面的互動.並且點選控制元件以外的灰色區域,會回到之前的頁面.
ASP.NET MVC4 菜鳥專案之路(一)改造示例程式碼擴充套件使用者資訊管理
模板建立示例專案 MVC的基礎內容我就不說了,入門建議看看官方的MvcMovie示例。 開啟VS2012,【新建專案】,選擇【ASP.NET MVC 4 Web應用程式】,名稱叫MyMvc(這隨便取,但常規是公司.專案的名稱空間),按【確定】,模板選【I
android菜鳥筆記之UI執行緒阻塞
最近在學習Android,有些還是需要記錄下來,方便以後查詢 首先 當一個應用程式啟動之後,android系統會為這個應用程式建立一個主執行緒。這個執行緒非常重要,它負責渲染檢視,分發事件到響 應監聽器並執行, 對介面進行輪詢的監聽。因此,一般也叫做“UI”執行緒。andr
嵌入式Linux菜鳥學習之路
1.裝置驅動的作用 計算機系統由硬體、軟體組成,而對於實際開發來說,硬、軟體間耦合性應儘量低,即應用開發工程師不需關心 硬體,而硬體開發工程師無暇顧及軟體。為了降低硬、軟耦合性,產生了裝置驅動工程師。 2.作業系統驅動設計架構 在無作業系統時,硬體工
小程式填坑之路——文字超出部分隱藏(已解決)
一直使用之前的版本沒有問題,今天在首頁顯示“定位”的地方不能生效,先上程式碼我再說原因 /*文字超出省略*/ { text-overflow: ellipsis; white-space: normal; overflow: hidden; display: -web
架構師成長之路 5 --如何獲取知識(學習境界)(方法)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
毛毛Django修煉之路3——Django基本框架(系統模板)
毛毛Django修煉之路3——Django基本框架(系統模板) 一、基本語法 1、變數相關 {{name}} 直接呼叫傳遞的變數 {{name|length}} 呼叫方法 {{name|default:"預設值"}} 呼叫方法 2、邏輯相關 1、if判斷:
菜鳥自學selenium+python基於web的自動化(功能自動化)
本人是自動化測試初學者,真正的菜鳥一隻。 實際入坑測試接近2年(截止發文之前)。對自動化測試沒有太深入的瞭解,寫這些只是做個鋪墊,因為能看這篇文章的基本都是小白或者菜鳥。說到這裡,不再繼續侃,直接上菜。 為什麼學自動化,because make so much money!那
史上最全 BAT 大廠面試題整理
主要分為以下幾部分:(1)java面試題(2)Android面試題(3)高階技術面試題(4)非技術性問題&HR問題彙總1java面試題熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉原始碼實現原理,甚至要你知道有哪些不足,怎麼改進,還有
架構師成長之路(5)--如何獲取知識(學習境界)(方法)
哲學家常思考的問題:" 我是誰?"" 我從哪裡來?"" 要到哪裡去?不只是哲學家,我想每個人都有自己對這三個問題的認知。 如果我們要成為架構師,我們自己要面臨的三大問題: 找準自己定位:我是誰?在哪裡? 怎樣做好架構師:我要做什麼? 如何搭建架構師知識體系:我該怎麼做?
.Net轉Java自學之路—SpringMVC框架篇四(校驗)
基本 row str 出錯 edi otn basename value string SpringMVC使用Hibernate的校驗框架validation(和Hibernate沒有關系)。 頁面提交請求的參數,請求到Controller方法中,使用validation