日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android面试题Java基础篇

發布時間:2024/1/8 Android 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android面试题Java基础篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android面試題Java基礎篇,由本人整理匯總,后續將繼續推出系列篇,如果喜歡請持續關注和推薦,更多精彩內容可以關注微信公眾號(Android高級編程):android-tech

系列文章目錄:

  • Android面試題View篇
  • Android面試題進程篇
  • Android面試題線程篇
  • Android面試題網絡篇
  • Android面試題架構篇
  • Android面試題系統原理篇
  • Android面試題內存&性能篇

一個語言的編譯過程

  • 1.詞法分析:將一串文本按規則分割成最小的結構,關鍵字、標識符、運算符、界符和常量等。一般實現方法是自動機和正則表達式
  • 2.語法分析:將一系列單詞組合成語法樹。一般實現方法有自頂向下和自底向上
  • 3.語義分析:對結構上正確的源程序進行上下文有關性質的審查
  • 4.目標代碼生成
  • 5.代碼優化:優化生成的目標代碼

Java 中內部類為什么可以訪問外部類
因為內部類創建的時候,需要外部類的對象,在內部類對象創建的時候會把外部類的引用傳遞進去

java類加載過程:

  • 1.加載時機:創建實例、訪問靜態變量或方法、反射、加載子類之前
  • 2.驗證:驗證文件格式、元數據、字節碼、符號引用的正確性
  • 3.加載:根據全類名獲取文件字節流、將字節流轉化為靜態儲存結構放入方法區、生成class對象
  • 4.準備:在堆上為靜態變量劃分內存
  • 5.解析:將常量池中的符號引用轉換為直接引用
  • 6.初始化:初始化靜態變量

靜態方法跟靜態代碼塊有什么區別
靜態方法屬于類,用類名.就能直接調用,靜態代碼塊是類加載的時候就會調用的

關鍵字final和static是怎么使用的

final:

  • 1、final變量即為常量,只能賦值一次。
  • 2、final方法不能被子類重寫。
  • 3、final類不能被繼承。

static:

  • 1、static變量 對于靜態變量在內存中只有一個拷貝(節省內存),JVM只為靜態分配一次內存, 在加載類的過程中完成靜態變量的內存分配,可用類名直接訪問(方便),當然也可以通過對象來訪問(但是這是不推薦的)。
  • 2、static代碼塊
    static代碼塊是類加載時,初始化自動執行的。
  • 3、static方法
    static方法可以直接通過類名調用,任何的實例也都可以調用,因此static方法中不能用this和super關鍵字,不能直接訪問所屬類的實例變量和實例方法(就是不帶static的成員變量和成員成員方法),只能訪問所屬類的靜態成員變量和成員方法。

String,StringBuffer,StringBuilder區別

  • 1、三者在執行速度上:StringBuilder > StringBuffer > String (由于String是常量,不可改變,拼接時會重新創建新的對象)。
  • 2、StringBuffer是線程安全的,StringBuilder是線程不安全的。(由于StringBuffer有緩沖區)

StringBuffer跟StringBuider的區別
StringBuider非線程安全,執行速度快,單線程用這個類

Java中重載和重寫的區別:

  • 1、重載:一個類中可以有多個相同方法名的,但是參數類型和個數都不一樣。這是重載。
  • 2、重寫:子類繼承父類,則子類可以通過實現父類中的方法,從而新的方法把父類舊的方法覆蓋。

Java中實現多態的機制是什么?
答:方法的重寫Overriding和重載Overloading是Java多態性的不同表現

  • 重寫Overriding是父類與子類之間多態性的一種表現
  • 重載Overloading是一個類中多態性的一種表現.

說說你對Java反射的理解
JAVA反射機制是在運行狀態中, 對于任意一個類, 都能夠知道這個類的所有屬性和方法; 對于任意一個對象, 都能夠調用它的任意一個方法和屬性。 從對象出發,通過反射(Class類)可以取得取得類的完整信息(類名 Class類型,所在包、具有的所有方法 Method[]類型、某個方法的完整信息(包括修飾符、返回值類型、異常、參數類型)、所有屬性 Field[]、某個屬性的完整信息、構造器 Constructors),調用類的屬性或方法自己的總結: 在運行過程中獲得類、對象、方法的所有信息。

說說你對Java注解的理解
元注解的作用就是負責注解其他注解。java5.0的時候,定義了4個標準的meta-annotation類型,它們用來提供對其他注解的類型作說明。
@Target
@Retention
@Documented
@Inherited

switch語句能否作用在byte上,能否作用在long上,能否作用在String上?
switch能作用在byte、char、short和int上,JDK1.7后可以作用在String上。

”==”和equals方法究竟有什么區別?
==和equals都可以比較地址。==是運算符,equals是方法,方法可以通過重寫改變其行為,如String的equals就是比較字符串內容。

構造方法能否被重寫和重載?
構造方法不能被重寫但是能被重載。

面向對象的特征有哪些?
封裝、繼承、多態和抽象。

抽象類和接口的區別?

  • 1).抽象類是abstract class修飾,接口是interface修飾。
  • 2).抽象類可以有任意類型的屬性,接口只能有靜態常量修飾的屬性。
  • 3).抽象類可以有普通方法和抽象法方法,接口的方法都是抽象方法。
  • 4).抽象類和接口都不能實例化,但是抽象類有構造方法,接口沒有構造方法。
  • 5).抽象類只能單根繼承,接口可以多重實現。

內部類可以引用它的包含類的成員嗎?有沒有什么限制?
可以引用。如果需要指定當前類時要用外部類.this來引用。如果引用局部變量,需要將局部變量指定為final。

String s = new String(“xyz”);創建了幾個String Object? 二者之間有什么區別?
2個對象。”xyz”創建在字符串常量池中,new String()創建在堆中。

try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執行,什么時候被執行,在return前還是后?
會在return前執行。

Integer與int的區別
Integer為包裝類,int是基本數據類型。包裝類擁有方法和屬性,基本數據類型不具備。包裝類可以通過intValue來轉換成基本數據類型,也可以通過new Integer()將基本數據類型轉換為包裝類。在JDK1.5后,包裝類和基本數據類型可以實現自動轉換。

java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?
java中有三種流,分別是字節流(InputStream、OutputStream)、字符流(Reader、Writer)、對象流(ObjectInputStream、 ObjectOutputStream)。

談談final,finally,finalize的區別?

  • final是修飾符,可以修飾類(不能被繼承)、屬性(常量)、和方法(不能被重寫)。
  • finally是異常處理塊中的代碼塊,表示無論如何都會執行的代碼塊。
  • finalize是Object類的方法,該方法在對象被垃圾回收之前執行的方法。

當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結果,那么這里到底是值傳遞還是引用傳遞?
java中只有值傳遞,如果傳遞的對象,實際也是傳遞該對象的地址。

用最有效率的方法算出2乘以8等於幾
將2的二進制向左移3位,java中用<<來移位

是否可以從一個static方法內部發出對非static方法的調用?
不能,除非先創建非static方法所在類的對象。

什么是內部類?內部類的作用
內部類可直接訪問外部類的屬性
Java中內部類主要分為成員內部類、局部內部類(嵌套在方法和作用域內)、匿名內部類(沒構造方法)、靜態內部類(static修飾的類,不能使用任何外圍類的非static成員變量和方法,不依賴外圍類)
使用內部類最吸引人的原因是:每個內部類都能獨立地繼承一個(接口的)實現,所以無論外圍類是否已經繼承了某個(接口的)實現,對于內部類都沒有影響。 因為Java不支持多繼承,支持實現多個接口。但有時候會存在一些使用接口很難解決的問題,這個時候我們可以利用內部類提供的、可以繼承多個具體的或者抽象的類的能力來解決這些程序設計問題。可以這樣說,接口只是解決了部分問題,而內部類使得多重繼承的解決方案變得更加完整。

靜態屬性和靜態方法是否可以被繼承?是否可以被重寫?以及原因?
可繼承 不可重寫 而是被隱藏
如果子類里面定義了靜態方法和屬性,那么這時候父類的靜態方法或屬性稱之為"隱藏"。如果你想要調用父類的靜態方法和屬性,直接通過父類名.方法或變量名完成。

java的對象鎖和類鎖的區別
java的對象鎖和類鎖在鎖的概念上基本上和內置鎖是一致的,但是,兩個鎖實際是有很大的區別的,對象鎖是用于對象實例方法,或者一個對象實例上的,類鎖是用于類的靜態方法或者一個類的class對象上的。我們知道,類的對象實例可以有很多個,但是每個類只有一個class對象,所以不同對象實例的對象鎖是互不干擾的,但是每個類只有一個類鎖。但是有一點必須注意的是,其實類鎖只是一個概念上的東西,并不是真實存在的,它只是用來幫助我們理解鎖定實例方法和靜態方法的區別的

總結

以上是生活随笔為你收集整理的Android面试题Java基础篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。