標籤:多線程並發 環境變數配置 代碼塊 其他 通過 小數 oat 介紹 運算
- JDK和JRE的區別:
答:JDK是Java語言的開發套件,包含JRE和開發套件(java,exe等),JRE是Java的語言的運行環境,包含jvm和核心類庫,jvm是Java的虛擬機器,保證了Java的跨平台向性
- JVM跨平台嗎?
jvm是Java的虛擬機器,不同的作業系統對應jvm不一樣,jvm不具有跨平台性
- 保留字
保留字是還未使用的關鍵字,可能在Java以後的版本中使用,goto和const
- Java語言的特點:
完全物件導向性,跨平台性,開源,安全可靠,高效能性,多線程,健壯性,
- main是關鍵字嗎
不是的,main是主函數的名字,能夠被虛擬機器識別,是程式執行的入口
- path和classpath的區別:
path環境變數配置的是可執行檔.exe的執行路徑,classpath配置的Java語言編譯後聲場的位元組碼檔案執行路徑
- 電腦最基本的儲存單位是:位元組
電腦直接識別的進位:二進位
- 變數和常量有什麼區別:
變數在運算過程中的值是變化的,可以被多次賦值,常量則是固定的
- VARIANT 資料型別的分類:
變數需要先定義,再賦值,再使用
基礎資料型別 (Elementary Data Type):4類8種 byte short int long float double char boolean
引用資料類型:數組,類,介面
- 常量分類:
自訂常量:自己通過final修飾定義的常量
字面值常量:包括整數,小數,布爾,字元,字串
- byte的範圍:-128 127
char的範圍: 0 65535
- long是8個位元組,float是4個位元組,為什麼long比float小
底層的運算規則不同
- ++和--的使用:
單獨使用時,在前後都一樣
參與運算時,在前是先自加或自減,在後是先參與運算,在進行自加或者自減
- 邏輯 | 與 短路 || 的區別
| 不管前面的是真是假都會運算, || 前面為真後面不參與運算,提高了運算的效率
- 邏輯 & 與 短路 && 的區別
& 不管前面是真是都會運算, && 前面如果為假的話,後面的不參與運算了,提高了運算的效率\
- while和dowhile,for的區別:
do while 是先執行後判斷
while和for先判斷後執行,for迴圈結束後,其定義的初始化條件不能再使用
- break和continue的區別:
break是完全跳出迴圈,continue是跳出本次迴圈,進行下次迴圈
- 方法重載和方法重寫的區別:
方法重載是在同一個類中出現同名方法,參數列表不同,與傳回值無關
方法重寫在子類之間,子類出現和父類聲明完全相同的方法時,就成為方法重寫,重寫要求傳回值相同或者有字父類別關係
- 構造方法,set方法後可以給成員變數賦值,這兩種賦值的區別?
構造方法主要的作用是用來給對象初始化的,賦值只是他的兼職工作,也可以不賦值
- 靜態代碼塊和構造代碼塊的區別:
靜態代碼塊屬於類,給類進行初始化,類一載入就會執行,只執行一次
構造代碼塊給對象進行統一初始化,每建立一次就會執行一次
- 四種許可權修飾符:
public protectd 預設 private
- == 和 equal的區別:
"=="是比較子,既能比較基礎資料型別 (Elementary Data Type),有可以比較引用資料類型,基礎資料型別 (Elementary Data Type)比較的是數值,引用資料類型比較的是地址值
equal是方法,重寫equal方法比較的是對象的內容,如果沒有重寫將調用object的equal方法,比較的是地址值
- string和stringBuffer和stringBuilder的區別:
string是一個特殊的引用資料類型,是一個長度不可以改變的字元序列,沒有緩衝區,,一旦建立不可以改變,即使重新賦值不是在原來的基礎上改變,而是重新建立了一個對象,將引用指向這個新的對象,浪費空間,效率比較低
stringBuffer和stringbuilder是一個容器,是可變的字串序列
stringBuffer,安全執行緒的,效率比較低,
stringBuilder的底層是字元數組,線程不安全,效率比較高
- 集合體系:
- ArrayList與LinkedList的區別:
ArrayList的底層採用的資料的資料結構,查詢慢,增刪快
LinkedListd底層是鏈表,增刪快,查詢慢
- 資料結構的簡單介紹:
棧:先進後出,壓棧,彈棧
隊列:先進先出
鏈表:每個元素都指向下一個元素
數組:一快連續的儲存地區
- 線程和進程多線程:
進程是一個正在執行的程式,每個程式至少有一個控制單元,正在啟動並執行程式
線程是進程中的控制單元,線程式控制制著進程的執行,是進程的執行路徑
多線程:進程的多條執行路徑,每個執行路徑就是線程
- 多線程並發和多線程並行:
兩個或多個任務發送請求時,CPU只能執行一個,就會交替執行這些任務,CPU會高速切換執行,這就是多線程並發
多線程並行,兩個或者多個任務同時執行,前提是多核CPU
- 多線程的特點:具有隨機性和和延遲性
- 線程的兩種實現方式:
繼承Thread類,好處是繼承,代碼簡單,能夠直接使用Thread的方法, 缺點就是擴充性差,應為繼承了thread類,不可以再繼承其他的類了
實現Runnable介面,好處就是擴充性比較強,缺點:代碼比較多,無法直接使用Thread類
- 線程的生命週期:
建立 就緒 運行(可能發生阻塞和等待) 死亡
- sleep和wait的區別:
sleep是讓線程睡眠,必須給相應的時間,時間到了自動喚醒,睡眠的時候不放棄CPU的執行權利
wait是讓線程等待,可以傳參也可以不傳參,傳參是讓指定時間後等待,需要被喚醒,等待的時間放棄CPU的執行權利
- 讓線程暫停:
wait:讓線程等待,等待的時候放棄CPU的執行權
yield:讓線程暫停,並執行其他的線程
- 什麼是IO流:
用來硬碟和記憶體之間互動資料的
- IO流分類
- close()和flush()的區別:
flush()是用來重新整理緩衝區的,重新整理之後還是可以再次寫出的
close()是用來關閉釋放資源的,關閉之後無法寫出
JavaEE面試總結(一)