Java入門初級中級問題及解答

1:什么是注釋?注釋分為幾種?注釋有什么作用?

注釋就是對代碼的解釋說明性文字,分為三種:單行注釋、多行注釋、文檔注釋。注釋可以對程序進行說明,給人看,還可以對程序進行排錯。

2:什么是關鍵字?有什么特點?

關鍵字就是被java語言賦予了特殊含義的單詞。特點就是所有的關鍵字都是小寫。

3:什么是標識符?由哪些部分組成?常見的命名規(guī)則有哪些?

標識符就是給類、接口、方法、變量名起的名字。常見的規(guī)則有:有數(shù)字、字母、_以及$符號組成,不能以數(shù)字開頭,不能是java中的關鍵字。

4:什么是常量?常量的分類?字面值常量表現(xiàn)形式有哪些?

在程序的運行過程中其值不發(fā)生改變的量。

字面值常量: 1 14

自定義常量: int MAX = 100;

5:什么是變量?變量的定義格式?要使用變量需要注意什么?

在程序運行過程中,其值是可以在某個范圍內(nèi)發(fā)生改變的量。

變量其實就是內(nèi)存中一小塊區(qū)域。

由3部分組成:

1,數(shù)據(jù)類型: 限定變量的取值

2,變量名:方便使用。

3,值: 如果沒有值就沒有意義。

6:Java中的數(shù)據(jù)類型分幾類?基本數(shù)據(jù)類型有哪些?

基本類型:4類8種?;緮?shù)據(jù)類型有:

整數(shù)(byte,short,int,long)、浮點數(shù)(float,double)、字符(char)、布爾(boolean)。

7:算術(shù)運算有哪些,各自的作用?

有:+,-,*,/,%,++,--。

+:正號,加法,字符串連接符

%:取得余數(shù)

++,--:

單獨使用:在操作數(shù)據(jù)的前后效果一致。

參與操作使用:

在操作數(shù)據(jù)的前面,是先++或者--,然后參與操作。

在操作數(shù)據(jù)的后面,是先參與操作,后++或者--。

8:+運算符需要注意的問題?

當把+號作為加法和字符串連接符一起使用的時候,注意把運算的地方()起來。

9:賦值運算符常見的有哪些,各自的作用?

=:把右邊的內(nèi)容賦值給左邊

+=,-=,*=,/=,%=:把左邊的和右邊的操作后賦值給左邊。

注意:

+=隱含了強制類型轉(zhuǎn)換。

x+=y;等價與:x = (x的數(shù)據(jù)類型)(x + y);

10:邏輯運算符有哪些都有什么作用?

&:有false則false

|:有true則true

^:相同為false,不同為true。通過情侶關系來理解。

!:非false則true,非true則false。偶數(shù)次不改變以前的真假。

&&:和&的結(jié)果一樣,但是具有短路效果。左邊有false,右邊不執(zhí)行。

||:和|的結(jié)果一樣,但是具有短路效果。左邊有true,右邊不執(zhí)行。

11:位移運算符有什么不同?

要想操作,就必須把所有的數(shù)據(jù)轉(zhuǎn)換為二進制。然后操作。

<<:把數(shù)據(jù)向左移動,后邊補0。其實相當與乘以2的移動位數(shù)次冪。

>>:把數(shù)據(jù)向右移動,左邊補是最高位的值。其實相當與除以2的移動位數(shù)次冪。

>>>:把數(shù)據(jù)向右移動,左邊補0。其實相當于除以2的移動位數(shù)次冪。

12:什么是函數(shù)重載?

函數(shù)名相同,參數(shù)列表不同,跟返回值不關,就是函數(shù)重載。

13:類是什么?類的組成是哪些?

類是抽取了同類對象的共同屬性和行為形成的對象或?qū)嶓w的"模版".

類是由成員變量,成員方法,構(gòu)造函數(shù)組成

14:對象是什么?什么時候需要使用對象?

對象是現(xiàn)實世界中實體的描述,是其自身所具有的狀態(tài)特征及可以對這些狀態(tài)施加的操作結(jié)合在一起所

構(gòu)成的獨立實體.

需要描繪具體事物的時候要使用對象.

15:封裝是什么?自己概述

隱藏對象的屬性和具體的實現(xiàn)細節(jié),僅對外提供公共的訪問方式.

類、方法其實也是封裝的體現(xiàn)。

16:繼承是什么?自己概述

概念:把多個類中相同的內(nèi)容抽取出來,單獨定義到一個類(父類)中,再定義其他類(子類)的時候,繼承父類即可.

好處:1.提高了代碼的復用性,降低了代碼的重復率.2.提高了代碼的維護性3.讓類與類之間產(chǎn)生了關系,是多態(tài)的前提.

17:匿名對象是什么?應用場景是什么?

匿名對象就是沒有名字的對象,由于沒有指向,所以效率較高一些。

應用場景:A:調(diào)用方法。但是僅僅只限調(diào)用一次而已。B:匿名對象用作實際參數(shù)傳遞。

18:構(gòu)造方法的作用是什么?構(gòu)造方法的特點是什么?構(gòu)造方法的注意事項是什么?

構(gòu)造方法的作用是初始化數(shù)據(jù)。特點是:名稱和類名一致,并且沒有返回值類型的修飾和返回值。

注意:如果我們沒有給構(gòu)造方法,系統(tǒng)將給出一個無參構(gòu)造方法。如果我們給出了構(gòu)造方法,系統(tǒng)將不再提供構(gòu)造方法。

19:給成員變量賦值有幾種方式?

1,通過set/get方法。

2,通過帶參構(gòu)造。

20:方法重寫和方法重載的區(qū)別?重載可以改變返回值類型嗎?(*面試題)?

方法重寫:

子類中出現(xiàn)和父類中一模一樣的方法聲明的方法。

方法重載:

同一個類中,出現(xiàn)方法名相同,參數(shù)列表不同的方法。

跟返回值無關。

重載可以改變返回值類型,因為他跟返回值無關。

21:static關鍵字是什么?有什么特點?什么時候用呢?

static關鍵字:是靜態(tài)的意思,可以修飾類中成員變量和成員方法。

靜態(tài)的特點:隨著類的加載而加載、優(yōu)先與對象而存在、被所有對象所共享、可以通過類名.靜態(tài)的內(nèi)容調(diào)用。

22:this和super的區(qū)別,以及應用場景? (*面試題)? ?

this:當前類的引用對象。誰調(diào)用代表誰。

super:父類的存儲空間標識??梢岳斫鉃楦割悓ο?,誰調(diào)用代表誰父親。

應用場景:

A:成員變量

this.成員變量 本類的成員變量

super.成員變量? 父類的成員變量

B:構(gòu)造方法

this(...) 本類的構(gòu)造方法

super(...) 父類的構(gòu)造方法

C:成員方法

this.成員方法() 本類的成員方法

super.成員方法() 父類的成員方法

23:代碼塊是什么?代碼塊的分類有哪些及每種代碼塊的作用是什么?

用{}括起來的代碼,就叫代碼快。

分為:

A:局部代碼快: 就是在方法中用{}括起來的代碼。作用是限定變量的生命周期,提高效率。

B:構(gòu)造代碼快:在類中,方法外。用{}括起來的代碼。作用是把所有構(gòu)造方法中相同的內(nèi)容抽取出來,

定義到構(gòu)造代碼塊中,將來在調(diào)用構(gòu)造方法的時候,會去自動調(diào)用構(gòu)造代碼塊。構(gòu)造代碼快優(yōu)先于構(gòu)造方法。

C:靜態(tài)代碼快:在類中、方法外。用{}括起來的代碼。只不過加了static修飾。

作用是:隨著類的加載而加載,而且只加載一次的代碼。

24:一個類的實例化過程有哪些步驟?(*面試題)

Student s = new Student(); 在內(nèi)存中到底執(zhí)行了哪些步驟。

1,加載Sutdent.class文件進內(nèi)存(類加載器)

2,在棧內(nèi)存為 s 變量申請一個空間

3,在堆內(nèi)存為Student對象申請空間

4,對類中的成員變量進行默認初始化

5,對類中的成員變量進行顯示初始化

6,有構(gòu)造代碼塊就先執(zhí)行構(gòu)造代碼塊,如果沒有,則省略

7,執(zhí)行構(gòu)造方法,通過構(gòu)造方法對對對象數(shù)據(jù)進行初始化

8,堆內(nèi)存中的數(shù)據(jù)初始化完畢,把內(nèi)存值復制給 s 變量

26:繼承是什么?繼承的好處是什么?Java中的繼承特點是什么?

繼承就是:把多個類中相同的內(nèi)容提取出來,定義到一個類中。

? 然后讓這多個類和這個類產(chǎn)生一個關系,這多個類就具備該類的數(shù)據(jù)了。

? 這種關系叫:繼承。

繼承的好處是:提高代碼的復用性,提高了代碼的維護性,讓類與類之間產(chǎn)生了一個關系,是多態(tài)的前提。

繼承的特點是:Java中類只能夠單繼承,但是可以多層繼承。

27:方法重寫和重載有什么區(qū)別?重載可以改變返回值類型嗎?(*面試題)

方法重寫:子類中出現(xiàn)和父類一模一樣的方法聲明的方法。

方法重載:同一個類中,出現(xiàn)的方法名相同,參數(shù)列表不同的方法。

重載可以改變返回值類型,因為跟返回值無關。

28:子父類中構(gòu)造方法的執(zhí)行有什么特點?為什么要這樣?

子類構(gòu)造方法的執(zhí)行,首先會去執(zhí)行父類的構(gòu)造方法。

因為子類中可能直接訪問了父類的數(shù)據(jù),父類的數(shù)據(jù)要優(yōu)先于子類的數(shù)據(jù)進行初始化。

29:靜態(tài)代碼塊,構(gòu)造代碼塊,構(gòu)造方法的執(zhí)行順序是什么?

靜態(tài)代碼塊 -- 構(gòu)造代碼塊 -- 構(gòu)造方法

30:final關鍵字是什么,可以修飾什么,有什么特點?

final關鍵字:是最終意思,可以修飾類、方法、變量。

修飾類:類不可以被繼承。

修飾方法:方法不可被重寫

修飾變量:變量為常量。

31:多態(tài)是什么,前提是什么?

多態(tài):對象在不同時刻表現(xiàn)出來的多種狀態(tài)。是一種編譯時期狀態(tài)和運行時期狀態(tài)不一致的現(xiàn)象。

成員變量:編譯看左邊,運行看左邊。

成員方法:編譯看左邊,運行看右邊。因為,普通成員方法可以重寫,變量不可以。

靜態(tài)方法:編譯看左邊,運行看左邊。

前提:類與類之間要有繼承關系。要有方法的重寫。父類引用指向子類對象。

32:多態(tài)的好處及弊端?如何解決多態(tài)的弊端。

;

好處:提高了程序的可維護性(前提要有繼承保證),和擴展性。


弊端:不能使用子類的特有功能。

33:什么是抽象類?抽象類的特點和好處是什么?

相同的方法,有相同方法的聲明,但是方法體不一樣,只抽取方法聲明的方法,叫做抽象方法,有抽象方法的類,叫做抽象類。

特點:

A:類或者方法必須用abstract修飾。

B:具體類在繼承抽象類的時候,要么本身也是抽象類,要么實現(xiàn)抽象類中的所有抽象方法。

C:抽象類不能被實例化。要想使用,必須按照多態(tài)的方式使用。

D:成員特點:

a:成員變量

可以是變量,也可以是常量。

b:構(gòu)造方法

有構(gòu)造方法,但是不能實例化。

用于子類訪問父類數(shù)據(jù)的初始化。

c:成員方法

可以有抽象方法也可以有非抽象方法。

好處:

A:限定子類必須實現(xiàn)某些功能。

B:提高代碼的復用性。

抽象類的幾個問題:

A:抽象類不能實例化,構(gòu)造方法有什么用。

用于子類訪問父類數(shù)據(jù)的初始化。

B:抽象類沒有抽象方法,有什么意義?

限制創(chuàng)建對象。

C:abstract不能和哪些關鍵字共存?

final: 沖突

private: 沖突

static: 無意義

34:什么是接口? 接口的特點?

如果一個抽象類中的方法全部是抽象方法,那么java就針對這種類型的抽象類,給出了一個更抽象的表達式:接口。

特點:

A:所有的方法,都是抽象方法。

B:類實現(xiàn)接口

要么本身是抽象類,要么重寫接口中的抽象方法。

C:接口不能被實例化,要想使用,用多態(tài)。

D:成員特點

a:成員變量

只有常量,并且是靜態(tài)常量。默認修飾符:public static final

b:構(gòu)造方法

沒有構(gòu)造方法,子類數(shù)據(jù)的初始化默認走的是Ojbect類的構(gòu)造方法

c:成員方法

全部是抽象的,有默認修飾符:public abstract

35:抽象類和接口的區(qū)別? (*面試題)

A:成員區(qū)別

抽象類:

成員變量:可以是變量,也可以是常量。

構(gòu)造方法:有。

成員方法:有,可以是抽象的,也可以是非抽象的。

接口:

成員變量:只能是常量。默認修飾符:publci static final

構(gòu)造方法:沒有,子類數(shù)據(jù)的初始化默認走的是Ojbect類的構(gòu)造方法。

成員方法:只能是抽象的,默認修飾符是:public abstract

B:類與接口的關系區(qū)別

類與類:

繼承關系,單繼承。

類與接口:

實現(xiàn)關系,單實現(xiàn)、多實現(xiàn)。

接口與接口:

繼承關系,單繼承、多繼承。

C:設計理念的區(qū)別

抽象類被繼承體現(xiàn)的是:is a的關系。抽象類中一般定義的是整個繼承結(jié)構(gòu)的共性功能。

接口被實現(xiàn)體現(xiàn)的是:like a的關系。接口中一般定義的是整個繼承結(jié)構(gòu)的擴展功能。

36,什么是內(nèi)部類?有什么特點?

把類定義在其他類的內(nèi)部,就被稱為內(nèi)部類。

內(nèi)部類的訪問特點:

A:內(nèi)部類可以直接訪問外部類的成員,包括私有。

B:外部類要訪問內(nèi)部類的成員,必須創(chuàng)建對象。

37,為什么內(nèi)部類訪問局部變量必須加final修飾?(*面試題)

A: 防止在使用后數(shù)據(jù)發(fā)生改變。

B: 延長變量的生命周期。

38,什么是匿名內(nèi)部類?本質(zhì)是什么?

匿名內(nèi)部類就是沒有名字的內(nèi)部類。

格式:

new 類名或者接口名() {

重寫方法;

};

本質(zhì):是繼承類或者實現(xiàn)接口的子類匿名對象。

39,==和equals()的區(qū)別? (*面試題)

A:==

a:基本類型 比較的是基本類型的值

b:引用類型 比較的是引用類型的地址值

B:equals()

只能比較引用類型。

默認比較地址值。

40,什么是字符串?字符串的特點是什么?

字符串:由多個字符組成的一串數(shù)據(jù)。

特點:一旦被賦值就不能被改變。(*面試題)

注意:這里指的是字符串的內(nèi)容不能發(fā)生改變。而字符串的引用是可以再次賦值的。

41:String s1 = new String("hello");和String s2 = "hello";的區(qū)別?(*面試題)

有區(qū)別,區(qū)別是:前者創(chuàng)建了兩個對象,后者創(chuàng)建了一個對象。

42:String、StringBuffer、StringBuilder的區(qū)別?(*面試題)

String:字符長度是固定的。

StringBuffer/StringBuilder:字符長度是可變的。

StringBuffer:安全的,但效率較低一些。

StringBuilder:不安全的,但效率較高一些。

StringBuffer和StringBuilder兼容。

43:什么是基本數(shù)據(jù)包裝類?

為了對基本類型的數(shù)據(jù)進行更多的操作的,java就針對每種基本類型的數(shù)據(jù)提供了對應的包裝類類型。

對應的類型

byte Byte

short Short

int Integer

long Long

float Float

double Double

char Character

boolean Boolean

44:什么是正則表達式?

正則表達式就是符合一定規(guī)則的字符串。

45:集合和數(shù)組有什么區(qū)別?(*面試題)

集合:

長度可以發(fā)生改變。

只能存儲對象類型,引用類型。

可以存儲任意類型的對象。

數(shù)組:

長度固定。

可以存儲基本類型,也可以存儲引用數(shù)據(jù)類型。

只能存儲同一種類型的元素。

46:集合有多少種? 各自的特點是什么?

Collection

|--List 有序(存入和取出的順序一致),元素可重復

|--ArrayList

底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢。

線程不安全,效率高。

|--Vector

底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢。

線程安全,效率低。

|--LinkedList

底層數(shù)據(jù)結(jié)構(gòu)是鏈表,查詢慢,增刪快。

線程不安全,效率高。

|--Set 無序的 元素唯一

|--HashSet

|--TreeSet

47:泛型是什么?有什么用?在哪里用?泛型有什么好處和弊端?

泛型是一種把明確數(shù)據(jù)類型的工作推遲到創(chuàng)建對象或者調(diào)用方法的時候才去明確的特殊的數(shù)據(jù)類型。

能優(yōu)化程序設計,解決了黃色警告線問題。

把運行時期的異常提前到了編譯時間。

避免了強制類型轉(zhuǎn)換。

好處:

優(yōu)化了程序的設計,解決了黃色警告線的問題。

把運行時期的問題提前到了編譯時期間解決了。

避免了強制類型轉(zhuǎn)換。

弊端:讓類型統(tǒng)一了,不能存儲不同的數(shù)據(jù)類型了。

48:用迭代器遍歷集合的時候,用集合修改集合有沒有問題?如果有,怎么解決?(*面試題)

有問題,因為會出現(xiàn)并發(fā)修改異常。

解決方法有多種,比如,我們可以不通過集合來修改集合,而使用迭代器來修改集合。

像ListIterator迭代器就有添加方法。

49、HashSet如何保證元素唯一性的呢?

底層數(shù)據(jù)結(jié)構(gòu)是哈希表(散列表)。具體的是由一個元素是單向鏈表的數(shù)組組成。

它依賴于兩個方法:hashCode()和equals()方法。

執(zhí)行順序:

先判斷hashCode()是否相同,

如果相同

繼承執(zhí)行equals()方法,看其返回值:

true:元素重復,不存儲。

false:元素不重復,存儲。

如果不同

存儲。

記?。?/p>

看到HashXxx結(jié)構(gòu)的集合,就要知道,被該集合存儲的元素要重寫hashCode()和equals()方法。

而且,是自動生成的。

50、TreeSet底層數(shù)據(jù)結(jié)構(gòu)是什么?如何保證元素的唯一性的呢?

底層數(shù)據(jù)結(jié)構(gòu)是二叉樹。

根據(jù)比較的返回值是否是0來決定。

如何保證元素的排序的呢?

A:自然排序 元素具備比較性

讓集合中被存儲的元素所屬的類實現(xiàn)Comparable接口。

B:比較器排序 集合具備比較性

在創(chuàng)建集合對象的時候,讓構(gòu)造方法接收一個Comparator接口的子類對象。

自然排序和比較器排序的區(qū)別:

TreeSet構(gòu)造函數(shù)什么都不傳, 默認按照Comparable(接口,compareTo(T))的順序(沒有實現(xiàn)Comparable就報錯ClassCastException)

TreeSet如果傳入Comparator(接口compare(T1,T2)), 就優(yōu)先按照Comparator

51、LinkedHashSet底層數(shù)據(jù)結(jié)構(gòu)是什么?如何保證元素的唯一性的呢?

底層由鏈表和哈希表組成。

由鏈表保證有序。

由哈希表保證唯一。

52、什么是可變參數(shù)?

針對在寫一個方法的時候,不知道具體要有多少個形式參數(shù)的時候。

? java提供了可變參數(shù)的用法。

注意:

A:變量其實是該數(shù)據(jù)類型的一個數(shù)組。

B:形式參數(shù)如果有多個的話,可變參數(shù)只能是最后一個。

C:數(shù)據(jù)類型要一致。

53、Map和Collection集合的區(qū)別?(*面試題)

A:Map集合存儲的是鍵值對形式的元素。

? Collection集合存儲的是單個的元素。

B:Map集合的鍵是唯一的。

? Collection的子接口Set集合元素是唯一的。

C:Map集合的值是可以重復的。

? Collection的子接口List集合的元素是可以重復的。

D:Map集合的數(shù)據(jù)結(jié)構(gòu)僅對鍵有效,對值無效.

? Collection的數(shù)據(jù)結(jié)構(gòu)是針對元素有效的

54、Hashtable和HashMap的區(qū)別?(面試題)

A:HashMap 線程不安全,效率高。允許null鍵和null值。

B:Hashtable 線程安全,效率低。不允許null鍵和null值。

55、Collection和Collections有什么區(qū)別?

Collection:是集合的頂層接口,定義了集合的通用方法。

Collections:是一個工具類,里面定義了對集合進行操作的一些常見方法。

56、什么是異常?異常有哪幾種?各有什么特點?

程序出現(xiàn)了不正常的情況,就是異常。

異常的繼承體系結(jié)構(gòu):

Throwable

|--Error 嚴重的問題,一般我們解決不了。

|--Exception

|--RuntimeException 運行時期異常,這種問題一般要修正代碼。

|--非RuntimeException 編譯時期異常,必須進行處理,否則代碼不能夠通過。

57、throws和throw的區(qū)別? (*面試題)

throws

位置:在方法()后面,跟的是類名,后面可以跟多個異常類名,并且用逗號隔開

表示拋出異常,交給調(diào)用者去處理

如果后面根據(jù)的是RuntimeException及其子類,那么,該方法可以不用處理。

如果后面根據(jù)的是Exception及其子類,那么,必須要編寫代碼進行處理,或者調(diào)用的時候拋出。

throw

位置:在方法中,跟的對象名稱。后面只能跟一個異常對象

表示拋出異常,由方法體內(nèi)語句處理

如果方法中,有throw拋出RuntimeException及其子類,那么,聲明上可以沒有throws。

如果方法中,有throw拋出Exception及其子類,那么,聲明上必須有throws。

58、final、finally、finalize的區(qū)別?(*面試題)

final:是最終的意思,用于修飾類、變量、和方法。修飾類的時候,類是最終類,不可以被繼承。

修飾變量的時候,變量為常量,不可以被改變。修飾方法的時候,方法不能被重寫。

finally:是異常處理的一部分,它里面的代碼永遠會執(zhí)行(前提:jvm沒退出),一般用于釋放資源。

finalize:是object類的一個方法,用于垃圾處理。

59、什么是遞歸?使用遞歸需要注意哪些?

遞歸就是方法定義中調(diào)用方法本身的現(xiàn)象。

A:遞歸一定要有出口,否則就是死遞歸。

B:遞歸的次數(shù)不能太多,否則內(nèi)存溢出。

C:構(gòu)造方法不能遞歸使用。

60、基本的IO流有哪些?(*面試題)

字節(jié)流:InputStream、OutputStream、FileInputStream、FileOutputStream、

字符流:Writer、Reader、FileWriter、FileReader、

高效字節(jié)流:BufferedInputStream、BufferedOutputStream

高效字符流:BufferedWriter、BufferedReader

最開始的時候,只有字節(jié)流,但是后來由于中文字符或者其他字符的出現(xiàn),用兩個字節(jié)才能表示。

如果用字節(jié)流也是可以讀寫字符文件的數(shù)據(jù)的,但是比較麻煩。為了簡化這種操作,就提供了字符流。

61、flush()和close()的區(qū)別?(*面試題)

flush():刷新緩沖區(qū),流對象還可以繼續(xù)使用。

close():釋放流資源,但是會先刷新一次緩沖區(qū),操作完畢后,流對象不可以再使用。

62、什么是多線程?進程和線程的區(qū)別是什么?

多線程就是應用程序的多條執(zhí)行路徑。

進程:正在運行的應用程序,每個進程的具備獨立的運行空間。

線程:是進程的執(zhí)行單元,執(zhí)行路徑。如果是多個線程,那么,這多個線程共享同一個進程資源。

63、啟動線程調(diào)用的是run()還是start()方法?run()和start()的區(qū)別是什么?(*面試題)

啟動線程調(diào)用的是start()

run()封裝了被線程執(zhí)行的代碼,start()是啟動線程并調(diào)用run()方法。

64、多線程有幾種實現(xiàn)方案?分別是什么?如何操作?(*面試題)

多線程有兩種實現(xiàn),分別是:

1,繼承Thread類

自定義類繼承Thread類,在類中重寫run()方法,測試類中創(chuàng)建自定義類對象,并調(diào)用start()方法

2,實現(xiàn)Runnable接口

自定義類實現(xiàn)Runnable接口,重寫run()方法,測試類中創(chuàng)建自定義對象,

創(chuàng)建Thread對象,把自定義對象作為構(gòu)造參數(shù)傳遞。調(diào)用Thread類的start()方法。

65、線程的生命周期? (*面試題)

新建: 創(chuàng)建線程對象

就緒: 具備cup執(zhí)行資格,沒有執(zhí)行權(quán),隨時準備執(zhí)行

運行: 具備執(zhí)行資格,執(zhí)行權(quán),執(zhí)行run()中的代碼

堵塞: 是當線程運行到符合某個我們定義的條件時,它會停止下來等待喚醒

死亡: run()結(jié)束了

66、多線程為什么會出現(xiàn)安全問題?怎么解決呢?(*面試題)

如果滿足以下條件,那么就會出現(xiàn)安全問題:

A:是多線程程序。

B:有共享的數(shù)據(jù)。

C:針對共享數(shù)據(jù)有多條語句操作。

只要我們把多線程環(huán)境中,把操作共享數(shù)據(jù)的操作,變成單線程就沒有問題了。

Java針對這種情況,就提供了同步技術(shù):

A:同步代碼塊

B:同步方法

C:JDK5以后的Lock鎖

67、同步的鎖對象分別是?(*面試題)

代碼塊:任意對象

方法:this

靜態(tài)方法:類名.class

68、sleep()和wait()的區(qū)別?(*面試題)

sleep():必須指定時間,不釋放鎖對象。

wait():可以指定時間,也可以不指定。釋放鎖對象。

69、線程死鎖是什么,為什么有死鎖,怎么解決死鎖?(*面試題)

? ? ? ? 為了解決程序因占用資源,出現(xiàn)資源爭搶,而出現(xiàn)的程序進入等待的狀態(tài)(死鎖)。

? ? ? ? 舉例:有A和B兩個線程,有CD 兩把鎖, A和B嵌套CD鎖,A線程中有C,D鎖,B線程中有D C兩把鎖,當兩個線程運行時,就可能會出現(xiàn)死鎖導致

程序停滯的情況。

? ? ? ? 怎么解決:真正意義上來說,死鎖是不能被解決的,死鎖是多線程中的一個需要避免的重大的問題,當我們在編寫程序時,可以給共享的資源加上另外一

個把鎖,控制資源的動態(tài),同時可以設置線程的優(yōu)先級使線程之間協(xié)調(diào)合理的利用CPU的時間。

70、線程間的通信是什么?

不同種類的線程針對同一個資源的操作。

71、什么是網(wǎng)絡編程?

用編程語言來實現(xiàn)計算機的資源共享和信息傳遞,就叫做網(wǎng)絡編程。

72、網(wǎng)絡通信三要素是什么? (*面試題)

A:IP地址

計算機在網(wǎng)絡中的唯一標識。

現(xiàn)在使用的是:"點分十進制"

B:端口

應用程序的的標記。

C:協(xié)議

通信的規(guī)則。

73、UDP和TCP的區(qū)別? (*面試題)

UDP:不建立連接,數(shù)據(jù)打包傳輸,數(shù)據(jù)有限制,數(shù)據(jù)不可靠,速度快。

TCP:建立連接,數(shù)據(jù)無限制,數(shù)據(jù)可靠,速度慢。

74、反射是什么?反射獲取字節(jié)碼文件的三種方式?反射的好處?(*面試題)

? ? ? ? 在運行狀態(tài)下,通過class文件對象(Class的對象),去使用構(gòu)造方法,成員變量,成員方法。就是反射。

? ? ? ? 3種方法:

? ? ? ? ? ? ? ? A.用Object類的getClass方法得到。

? ? ? ? ? ? ? ? B.用任意數(shù)據(jù)類型的靜態(tài)class屬性可以得到

? ? ? ? ? ? ? ? C.用Class類的靜態(tài)方法forName(String className)方法得到

? ? ? ? 好處:只要有一個類或者一個類的對象,就可以得到這個類或?qū)ο蟮乃袑傩院头椒?。包括私有的?/p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374

推薦閱讀更多精彩內(nèi)容

  • 一、基礎知識:1、JVM、JRE和JDK的區(qū)別:JVM(Java Virtual Machine):java虛擬機...
    殺小賊閱讀 2,399評論 0 4
  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,676評論 0 11
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,121評論 1 32
  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,606評論 4 12
  • 姓名:袁明輝 公司:寧波惠爾頓嬰童安全科技股份有限公司 組別:利他一組 【知~學習】 背誦《六項精進大綱》3遍,共...
    YuanWelldon閱讀 444評論 0 0