牛客網(wǎng)Java練習(xí)6

1.在一個(gè)基于分布式的游戲服務(wù)器系統(tǒng)中,不同的服務(wù)器之間夺艰,哪種通信方式是不可行的()?

A 管道
B 消息隊(duì)列
C 高速緩存數(shù)據(jù)庫(kù)
D 套接字
答案 A
管道( pipe ):管道是一種半雙工的通信方式塑悼,數(shù)據(jù)只能單向流動(dòng)劲适,而且只能在具有親緣關(guān)系的進(jìn)程間使用。進(jìn)程的親緣關(guān)系通常是指父子進(jìn)程關(guān)系厢蒜。
既然是不同的服務(wù)器之間進(jìn)行通信霞势,怎么可能會(huì)是具有親緣關(guān)系的進(jìn)程呢?

2.Test.main() 函數(shù)執(zhí)行后的輸出是()
public class Test {  
    public static void main(String [] args){  
        System.out.println(new B().getValue());  
    }  
    static class A{  
        protected int value;  
        public A(int v) {  
            setValue(v);  
        }  
        public void setValue(int value){  
            this.value = value;  
        }  
        public int getValue(){  
            try{  
                value++;  
                return value;  
            } catch(Exception e){  
                System.out.println(e.toString());  
            } finally {  
                this.setValue(value);  
                System.out.println(value);  
            }  
            return value;  
        }  
    }  
    static class B extends A{  
        public B() {  
            super(5);  
            setValue(getValue() - 3);  
        }  
        public void setValue(int value){  
            super.setValue(2 * value);  
        }  
    }  
}  

A 11 17 34
B 22 74 74
C 6 7 7
D 22 34 17
答案 D

3.考慮下面這個(gè)簡(jiǎn)單的例子斑鸦,讓我們看看reflection是如何工作的愕贡。
import java.lang.reflect.*;
public class DumpMethods{
    public static void main(String[] args) {
        try {
            Class c=Class.forName(args[0]);
            Method m[]=c.getDeclaredMethods();
            for (int i = 0; i < m.length; i++) {
                System.out.println(m[i].toString());
            }
        } catch (Throwable e) {
            System.err.println(e);
        }
    }
}

其中"c.getDeclaredMethods"的作用是:
A 取得類的公有方法對(duì)象
B 取得類的所有公有方法名稱
C 取得類的所有方法對(duì)象
D 以上選項(xiàng)都不正確
答案 D
public Method[] getDeclaredMethods()返回類或接口聲明的所有方法,包括public, protected, default (package) 訪問(wèn)和private方法的Method對(duì)象巷屿,但不包括繼承的方法固以。當(dāng)然也包括它所實(shí)現(xiàn)接口的方法。
public Method[] getMethods()返回類的所有public方法嘱巾,包括其繼承類的公用方法憨琳,當(dāng)然也包括它所實(shí)現(xiàn)接口的方法。

4.下面有關(guān)java threadlocal說(shuō)法正確的有旬昭?

A ThreadLocal存放的值是線程封閉篙螟,線程間互斥的,主要用于線程內(nèi)共享一些數(shù)據(jù)问拘,避免通過(guò)參數(shù)來(lái)傳遞
B 線程的角度看遍略,每個(gè)線程都保持一個(gè)對(duì)其線程局部變量副本的隱式引用,只要線程是活動(dòng)的并且 ThreadLocal 實(shí)例是可訪問(wèn)的骤坐;在線程消失之后绪杏,其線程局部實(shí)例的所有副本都會(huì)被垃圾回收
C 在Thread類中有一個(gè)Map,用于存儲(chǔ)每一個(gè)線程的變量的副本纽绍。
D 對(duì)于多線程資源共享的問(wèn)題蕾久,同步機(jī)制采用了“以時(shí)間換空間”的方式,而ThreadLocal采用了“以空間換時(shí)間”的方式

答案ABCD

ThreadLocal類用來(lái)提供線程內(nèi)部的局部變量顶岸。這種變量在多線程環(huán)境下訪問(wèn)(通過(guò)get或set方法訪問(wèn))時(shí)能保證各個(gè)線程里的變量相對(duì)獨(dú)立于其他線程內(nèi)的變量腔彰。ThreadLocal實(shí)例通常來(lái)說(shuō)都是private static類型的,用于關(guān)聯(lián)線程和線程的上下文辖佣。 可以總結(jié)為一句話:ThreadLocal的作用是提供線程內(nèi)的局部變量霹抛,這種變量在線程的生命周期內(nèi)起作用,減少同一個(gè)線程內(nèi)多個(gè)函數(shù)或者組件之間一些公共變量的傳遞的復(fù)雜度卷谈。 舉個(gè)例子杯拐,我出門(mén)需要先坐公交再做地鐵,這里的坐公交和坐地鐵就好比是同一個(gè)線程內(nèi)的兩個(gè)函數(shù),我就是一個(gè)線程端逼,我要完成這兩個(gè)函數(shù)都需要同一個(gè)東西:公交卡(北京公交和地鐵都使用公交卡)朗兵,那么我為了不向這兩個(gè)函數(shù)都傳遞公交卡這個(gè)變量(相當(dāng)于不是一直帶著公交卡上路),我可以這么做:將公交卡事先交給一個(gè)機(jī)構(gòu)顶滩,當(dāng)我需要刷卡的時(shí)候再向這個(gè)機(jī)構(gòu)要公交卡(當(dāng)然每次拿的都是同一張公交卡)余掖。這樣就能達(dá)到只要是我(同一個(gè)線程)需要公交卡,何時(shí)何地都能向這個(gè)機(jī)構(gòu)要的目的礁鲁。 有人要說(shuō)了:你可以將公交卡設(shè)置為全局變量啊盐欺,這樣不是也能何時(shí)何地都能取公交卡嗎?但是如果有很多個(gè)人(很多個(gè)線程)呢仅醇?大家可不能都使用同一張公交卡吧(我們假設(shè)公交卡是實(shí)名認(rèn)證的)冗美,這樣不就亂套了嘛。現(xiàn)在明白了吧析二?這就是ThreadLocal設(shè)計(jì)的初衷:提供線程內(nèi)部的局部變量粉洼,在本線程內(nèi)隨時(shí)隨地可取,隔離其他線程叶摄。

4.如何放掉一個(gè)指定占據(jù)的內(nèi)存空間属韧?()

A 調(diào)用free()方法
B 代用system.gc()方法
C 賦值給該項(xiàng)對(duì)象的引用為null
D 程序員無(wú)法明確強(qiáng)制垃圾回收器運(yùn)行
答案 D
在《java虛擬機(jī)》一書(shū)中明確講了徽鼎,釋放掉占據(jù)的內(nèi)存空間是由gc完成返吻,但是程序員無(wú)法明確強(qiáng)制其運(yùn)行,該空間在不被引用的時(shí)候不一定會(huì)立即被釋放风喇,這取決于GC本身柱衔,無(wú)法由程序員通過(guò)代碼控制。

5.下面有關(guān)maven和ant的描述愉棱,描述錯(cuò)誤的是唆铐?

A Ant 沒(méi)有正式的約定如一個(gè)一般項(xiàng)目的目錄結(jié)構(gòu),你必須明確的告訴 Ant 哪里去找源代碼
B Maven 擁有約定奔滑,因?yàn)槟阕裱思s定艾岂,它已經(jīng)知道你的源代碼在哪里
C maven和ant都有“生命周期”的概念,當(dāng)你輸入一個(gè)命令后朋其,maven或者ant會(huì)執(zhí)行一系列的有序的步驟王浴,直到到達(dá)你指定的生命周期
D Ant構(gòu)建文件默認(rèn)命名為build.xml,Maven默認(rèn)構(gòu)建文件為pom.xml
答案C

Ant和Maven都是基于Java的構(gòu)建(build)工具梅猿。理論上來(lái)說(shuō)氓辣,有些類似于(Unix)C中的make ,但沒(méi)有make的缺陷袱蚓。Ant是軟件構(gòu)建工具钞啸,Maven的定位是軟件項(xiàng)目管理和理解工具。
Ant特點(diǎn) ?
沒(méi)有一個(gè)約定的目錄結(jié)構(gòu) ?必須明確讓ant做什么,什么時(shí)候做体斩,然后編譯梭稚,打包 ?沒(méi)有生命周期,必須定義目標(biāo)及其實(shí)現(xiàn)的任務(wù)序列 ?沒(méi)有集成依賴管理
Maven特點(diǎn)
?擁有約定絮吵,知道你的代碼在哪里弧烤,放到哪里去 ?擁有一個(gè)生命周期,例如執(zhí)行 mvn install 就可以自動(dòng)執(zhí)行編譯蹬敲,測(cè)試暇昂,打包等構(gòu)建過(guò)程 ?只需要定義一個(gè)pom.xml,然后把源碼放到默認(rèn)的目錄,Maven幫你處理其他事情 ?擁有依賴管理粱栖,倉(cāng)庫(kù)管理

6.下面代碼的輸出是什么话浇?
public class Base
{
    private String baseName = "base";
    public Base()
    {
        callName();
    }
 
    public void callName()
    {
        System. out. println(baseName);
    }
 
    static class Sub extends Base
    {
        private String baseName = "sub";
        public void callName()
        {
            System. out. println (baseName) ;
        }
    }
    public static void main(String[] args)
    {
        Base b = new Sub();
    }
}

答案 A
A null
B sub
C base

new Sub();在創(chuàng)造派生類的過(guò)程中首先創(chuàng)建基類對(duì)象,然后才能創(chuàng)建派生類闹究。
創(chuàng)建基類即默認(rèn)調(diào)用Base()方法幔崖,在方法中調(diào)用callName()方法,由于派生類中存在此方法渣淤,則被調(diào)用的callName()方法是派生類中的方法赏寇,此時(shí)派生類還未構(gòu)造,所以變量baseName的值為null

1.首先价认,需要明白類的加載順序嗅定。
(1) 父類靜態(tài)代碼塊(包括靜態(tài)初始化塊,靜態(tài)屬性用踩,但不包括靜態(tài)方法)
(2) 子類靜態(tài)代碼塊(包括靜態(tài)初始化塊渠退,靜態(tài)屬性,但不包括靜態(tài)方法 )
(3) 父類非靜態(tài)代碼塊( 包括非靜態(tài)初始化塊脐彩,非靜態(tài)屬性 )
(4) 父類構(gòu)造函數(shù)
(5) 子類非靜態(tài)代碼塊 ( 包括非靜態(tài)初始化塊碎乃,非靜態(tài)屬性 )
(6) 子類構(gòu)造函數(shù)
其中:類中靜態(tài)塊按照聲明順序執(zhí)行,并且(1)和(2)不需要調(diào)用new類實(shí)例的時(shí)候就執(zhí)行了(意思就是在類加載到方法區(qū)的時(shí)候執(zhí)行的)
2.其次惠奸,需要理解子類覆蓋父類方法的問(wèn)題梅誓,也就是方法重寫(xiě)實(shí)現(xiàn)多態(tài)問(wèn)題。
Base b = new Sub();它為多態(tài)的一種表現(xiàn)形式佛南,聲明是Base,實(shí)現(xiàn)是Sub類梗掰, 理解為 b 編譯時(shí)表現(xiàn)為Base類特性,運(yùn)行時(shí)表現(xiàn)為Sub類特性嗅回。
當(dāng)子類覆蓋了父類的方法后及穗,意思是父類的方法已經(jīng)被重寫(xiě),題中 父類初始化調(diào)用的方法為子類實(shí)現(xiàn)的方法妈拌,子類實(shí)現(xiàn)的方法中調(diào)用的baseName為子類中的私有屬性拥坛。
由1.可知蓬蝶,此時(shí)只執(zhí)行到步驟4.,子類非靜態(tài)代碼塊和初始化步驟還沒(méi)有到,子類中的baseName還沒(méi)有被初始化猜惋。所以此時(shí) baseName為空丸氛。 所以為null。

7.在Java中著摔,對(duì)于不再使用的內(nèi)存資源缓窜,如調(diào)用完成的方法,“垃圾回收器”會(huì)自動(dòng)將其釋放谍咆。( )

A 正確
B 錯(cuò)誤
答案 B
方法調(diào)用時(shí)禾锤,會(huì)創(chuàng)建棧幀在棧中,調(diào)用完是程序自動(dòng)出棧釋放摹察,而不是gc釋放

JVM 內(nèi)存可簡(jiǎn)單分為三個(gè)區(qū):
1恩掷、堆區(qū)(heap):用于存放所有對(duì)象,是線程共享的(注:數(shù)組也屬于對(duì)象)
2供嚎、棧區(qū)(stack):用于存放基本數(shù)據(jù)類型的數(shù)據(jù)和對(duì)象的引用黄娘,是線程私有的(分為:虛擬機(jī)棧和本地方法棧)
3、方法區(qū)(method):用于存放類信息克滴、常量逼争、靜態(tài)變量、編譯后的字節(jié)碼等劝赔,是線程共享的(也被稱為非堆誓焦,即 None-Heap)
Java 的垃圾回收器(GC)主要針對(duì)堆區(qū)

8.下面哪些類實(shí)現(xiàn)或繼承了 Collection 接口?

A HashMap
B ArrayList
C Vector
D Iterator


答案 BCD

9.jdk1.8中着帽,下面有關(guān)java 抽象類和接口的區(qū)別杂伟,說(shuō)法錯(cuò)誤的是?

A 抽象類可以有構(gòu)造方法仍翰,接口中不能有構(gòu)造方法
B 抽象類中可以包含非抽象的普通方法稿壁,接口中的方法必須是抽象的,不能有非抽象的普通方法
C 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口歉备,但只能繼承一個(gè)抽象類
D 接口中可以有普通成員變量,抽象類中沒(méi)有普通成員變量
答案B D

interface A {
    abstract void a();
    static void s() {
    }
    default void d(){

    }
    void b();//默認(rèn)用abstract修飾
    int a = 0;//默認(rèn)用static final 修飾
}
9.假定str0,...,str4后序代碼都是只讀引用匪燕。Java 7中蕾羊,以上述代碼為基礎(chǔ),在發(fā)生過(guò)一次FullGC后帽驯,下列代碼在Heap空間(不包括PermGen)保留的字符數(shù)為()
static String str0="0123456789";
static String str1="0123456789";
String str2=str1.substring(5);
String str3=new String(str2);
String str4=new String(str3.toCharArray());
str0=null;

A 5
B 10
C 15
D 20
答案 C
substring實(shí)際是new龟再,5字符
str3和4也都是new,每個(gè)5字符
分別都會(huì)創(chuàng)建新的對(duì)象
常量池是PermGen的
因此應(yīng)該是一共15字符

這是一個(gè)關(guān)于java的垃圾回收機(jī)制的題目尼变。垃圾回收主要針對(duì)的是堆區(qū)的回收利凑,因?yàn)闂^(qū)的內(nèi)存是隨著線程而釋放的浆劲。堆區(qū)分為三個(gè)區(qū):年輕代(Young Generation)、年老代(Old Generation)哀澈、永久代(Permanent Generation牌借,也就是方法區(qū))。

年輕代:對(duì)象被創(chuàng)建時(shí)(new)的對(duì)象通常被放在Young(除了一些占據(jù)內(nèi)存比較大的對(duì)象),經(jīng)過(guò)一定的Minor GC(針對(duì)年輕代的內(nèi)存回收)還活著的對(duì)象會(huì)被移動(dòng)到年老代(一些具體的移動(dòng)細(xì)節(jié)省略)割按。

年老代:就是上述年輕代移動(dòng)過(guò)來(lái)的和一些比較大的對(duì)象膨报。Minor GC(FullGC)是針對(duì)年老代的回收

永久代:存儲(chǔ)的是final常量,static變量适荣,常量池现柠。

str3,str4都是直接new的對(duì)象,而substring的源代碼其實(shí)也是new一個(gè)string對(duì)象返回弛矛,如下圖:

經(jīng)過(guò)fullgc之后够吩,年老區(qū)的內(nèi)存回收,則年輕區(qū)的占了15個(gè)丈氓,不算PermGen周循。所以答案選C

10.存根(Stub)與以下哪種技術(shù)有關(guān)

A 交換
B 動(dòng)態(tài)鏈接
C 動(dòng)態(tài)加載
D 磁盤(pán)調(diào)度
答案 B
存根類是一個(gè)類,它實(shí)現(xiàn)了一個(gè)接口扒寄,它的作用是:如果一個(gè)接口有很多方法鱼鼓,如果要實(shí)現(xiàn)這個(gè)接口,就要實(shí)現(xiàn)所有的方法该编。但是一個(gè)類從業(yè)務(wù)來(lái)說(shuō)迄本,可能只需要其中一兩個(gè)方法。如果直接去實(shí)現(xiàn)這個(gè)接口课竣,除了實(shí)現(xiàn)所需的方法嘉赎,還要實(shí)現(xiàn)其他所有的無(wú)關(guān)方法。而如果通過(guò)繼承存根類就實(shí)現(xiàn)接口于樟,就免去了這種麻煩公条。
RMI 采用stubs 和 skeletons 來(lái)進(jìn)行遠(yuǎn)程對(duì)象(remote object)的通訊。stub 充當(dāng)遠(yuǎn)程對(duì)象的客戶端代理迂曲,有著和遠(yuǎn)程對(duì)象相同的遠(yuǎn)程接口靶橱,遠(yuǎn)程對(duì)象的調(diào)用實(shí)際是通過(guò)調(diào)用該對(duì)象的客戶端代理對(duì)象stub來(lái)完成的。
每個(gè)遠(yuǎn)程對(duì)象都包含一個(gè)代理對(duì)象stub路捧,當(dāng)運(yùn)行在本地Java虛擬機(jī)上的程序調(diào)用運(yùn)行在遠(yuǎn)程Java虛擬機(jī)上的對(duì)象方法時(shí)关霸,它首先在本地創(chuàng)建該對(duì)象的代理對(duì)象stub, 然后調(diào)用代理對(duì)象上匹配的方法。每一個(gè)遠(yuǎn)程對(duì)象同時(shí)也包含一個(gè)skeleton對(duì)象杰扫,skeleton運(yùn)行在遠(yuǎn)程對(duì)象所在的虛擬機(jī)上队寇,接受來(lái)自stub對(duì)象的調(diào)用。這種方式符合等到程序要運(yùn)行時(shí)將目標(biāo)文件動(dòng)態(tài)進(jìn)行鏈接的思想

11.Given the following code:
 import EnclosingOne.InsideOne
1.class Enclosingone
2.{
3.    public class InsideOne {}
4.
5.}
6.public class inertest
7.{
8.    public static void main(string[]args)
9.    {
10.        EnclosingOne eo = new EnclosingOne();
11.        //insert code here
12.    }
13.
14.}

Which statement at line 11 constructs an instance of the inner class?
A InsideOne ei=eo.new InsideOne();
B eo.InsideOne ei=eo.new InsideOne();
C InsideOne ei=EnclosingOne.new InsideOne();
D EnclosingOne.InsideOne ei=eo.new InsideOne();
答案 A D


11.裝箱章姓、拆箱操作發(fā)生在: ()

A 類與對(duì)象之間
B 對(duì)象與對(duì)象之間
C 引用類型與值類型之間
D 引用類型與引用類型之間
答案 C
通俗的講佳遣,就是基本數(shù)據(jù)類型和包裝類之間的轉(zhuǎn)換识埋。如: int 類型和 Integer 類的轉(zhuǎn)換
基本數(shù)據(jù)類型轉(zhuǎn)化成包裝類是裝箱 (如: int --> Integer)。
包裝類轉(zhuǎn)化成基本數(shù)據(jù)類型就是拆箱 (如:Integer --> int)零渐。
包裝類就是引用類型窒舟,基本數(shù)據(jù)類型就是值類型。所以選C

12.下列哪種異常是檢查型異常相恃,需要在編寫(xiě)程序時(shí)聲明辜纲?

A NullPointerException
B ClassCastException
C FileNotFoundException
D IndexOutOfBoundsException


13.假設(shè) a 是一個(gè)由線程 1 和線程 2 共享的初始值為 0 的全局變量,則線程 1 和線程 2 同時(shí)執(zhí)行下面的代碼拦耐,最終 a 的結(jié)果不可能是()
boolean isOdd = false;

for(int i=1;i<=2;++i)
{
if(i%2==1)isOdd = true耕腾;
else isOdd = false;
a+=i*(isOdd?1:-1)杀糯;
}

A -1
B -2
C 0
D 1
答案 D

首先,每個(gè)線程對(duì)a做的操作都是+1或者-2
其次,線程對(duì)a做的操作有可見(jiàn)不可見(jiàn)的問(wèn)題.

  1. 如果線程A 做了+1,-2,結(jié)果是-1,此時(shí)如果該結(jié)果對(duì)于線程B 可見(jiàn),那么再執(zhí)行+1,-2,結(jié)果是-2;
  2. 如果線程A做了+1,-2,結(jié)果是-1,但是該結(jié)果對(duì)線程B并沒(méi)有見(jiàn)到,那么線程B 最后依然以a==0開(kāi)始計(jì)算,結(jié)果是0+1-2=-1,之前線程A 的結(jié)果也是-1,此時(shí)無(wú)論A和B誰(shuí)的計(jì)算結(jié)果被最后刷新到公共內(nèi)存,最后a的值都是-1;
  3. 如果線程A做了+1,該結(jié)果立即被B看到,B開(kāi)始進(jìn)行+1,-2,結(jié)果是0,如果該結(jié)果被刷新到內(nèi)存的時(shí)機(jī)晚于線程A的計(jì)算結(jié)果,那么結(jié)果就是0.
14.線程安全的map在JDK 1.5及其更高版本環(huán)境 有哪幾種方法可以實(shí)現(xiàn)?

A Map map = new HashMap()
B Map map = new TreeMap()
C Map map = new ConcurrentHashMap();
D Map map = Collections.synchronizedMap(new HashMap());
答案 C D

15.以下哪些jvm的垃圾回收方式采用的是復(fù)制算法回收

A 新生代串行收集器
B 老年代串行收集器
C 并行收集器
D 新生代并行回收收集器
E 老年代并行回收收集器
F cms收集器

答案 A D
兩個(gè)最基本的java回收算法:復(fù)制算法和標(biāo)記清理算法
復(fù)制算法:兩個(gè)區(qū)域A和B扫俺,初始對(duì)象在A,繼續(xù)存活的對(duì)象被轉(zhuǎn)移到B固翰。此為新生代最常用的算法
標(biāo)記清理:一塊區(qū)域狼纬,標(biāo)記可達(dá)對(duì)象(可達(dá)性分析),然后回收不可達(dá)對(duì)象骂际,會(huì)出現(xiàn)碎片疗琉,那么引出
標(biāo)記-整理算法:多了碎片整理,整理出更大的內(nèi)存放更大的對(duì)象
兩個(gè)概念:新生代和年老代
新生代:初始對(duì)象歉铝,生命周期短的
永久代:長(zhǎng)時(shí)間存在的對(duì)象
整個(gè)java的垃圾回收是新生代和年老代的協(xié)作盈简,這種叫做分代回收。
P.S:Serial New收集器是針對(duì)新生代的收集器太示,采用的是復(fù)制算法
Parallel New(并行)收集器柠贤,新生代采用復(fù)制算法,老年代采用標(biāo)記整理
Parallel Scavenge(并行)收集器类缤,針對(duì)新生代臼勉,采用復(fù)制收集算法
Serial Old(串行)收集器,新生代采用復(fù)制餐弱,老年代采用標(biāo)記整理
Parallel Old(并行)收集器宴霸,針對(duì)老年代,標(biāo)記整理
CMS收集器膏蚓,基于標(biāo)記清理
G1收集器:整體上是基于標(biāo)記 整理 猖败,局部采用復(fù)制

綜上:新生代基本采用復(fù)制算法,老年代采用標(biāo)記整理算法降允。cms采用標(biāo)記清理。

16.下列有關(guān)Thread的描述艺糜,哪個(gè)是正確的剧董?

A 啟動(dòng)一個(gè)線程的方法是:thread. run()
B 結(jié)束一個(gè)線程的通常做法是:thread. stop()
C 將一個(gè)線程標(biāo)記成daemon線程幢尚,意味著當(dāng)主線程結(jié)束,并且沒(méi)有其它正在運(yùn)行的非daemon線程時(shí)翅楼,該daemon線程也會(huì)自動(dòng)結(jié)束尉剩。
D 讓一個(gè)線程等待另一個(gè)線程的通知的方法是:thread. sleep()
答案 C
1.啟動(dòng)一個(gè)線程的方法是 start()
2.結(jié)束線程用的是interrupt()方法,而stop()是強(qiáng)制結(jié)束線程毅臊,并不推薦使用理茎,同時(shí)stop()方法已被棄用
3.daemon線程是守護(hù)線程,當(dāng)主線程結(jié)束時(shí)管嬉,守護(hù)線程會(huì)自動(dòng)結(jié)束
4.一個(gè)線程等待另外一個(gè)線程的方法是wait()方法

17.以下哪項(xiàng)陳述是正確的皂林?

A 垃圾回收線程的優(yōu)先級(jí)很高,以保證不再 使用的內(nèi)存將被及時(shí)回收
B 垃圾收集允許程序開(kāi)發(fā)者明確指定釋放 哪一個(gè)對(duì)象
C 垃圾回收機(jī)制保證了JAVA程序不會(huì)出現(xiàn) 內(nèi)存溢出
D 進(jìn)入”Dead”狀態(tài)的線程將被垃圾回收器回收
E 以上都不對(duì)
答案 E

A: 垃圾回收在jvm中優(yōu)先級(jí)相當(dāng)相當(dāng)?shù)汀?br> B:垃圾收集器(GC)程序開(kāi)發(fā)者只能推薦JVM進(jìn)行回收蚯撩,但何時(shí)回收础倍,回收哪些,程序員不能控制胎挎。
C:垃圾回收機(jī)制只是回收不再使用的JVM內(nèi)存沟启,如果程序有嚴(yán)重BUG,照樣內(nèi)存溢出犹菇。
D:進(jìn)入DEAD的線程德迹,它還可以恢復(fù),GC不會(huì)回收

18.下列哪個(gè)說(shuō)法是正確的()

A ConcurrentHashMap使用synchronized關(guān)鍵字保證線程安全
B HashMap實(shí)現(xiàn)了Collction接口
C Array.asList方法返回java.util.ArrayList對(duì)象
D SimpleDateFormat是線程不安全的
答案 D
A揭芍、ConcurrentHashMap實(shí)際上時(shí) HashTable的升級(jí)版胳搞,使用segment來(lái)分段和管理鎖,并不是synchronized;
B沼沈、 HashMap實(shí)現(xiàn)的接口有:Serializable, Cloneable, Map<K,V> ,沒(méi)有實(shí)現(xiàn)Cllectio
C流酬、Arrays.asList()方法返回的列表是Arrays.ArrayList類型的,并不是java.util.ArrayList列另;
D芽腾、正確

19.以下代碼在編譯和運(yùn)行過(guò)程中會(huì)出現(xiàn)什么情況
public class TestDemo{
    private int count;
    public static void main(String[] args) {
        TestDemo test=new TestDemo(88);
        System.out.println(test.count);
    }
     TestDemo(int a) {
         count=a;
    }
}

A 編譯運(yùn)行通過(guò),輸出結(jié)果是88
B 編譯時(shí)錯(cuò)誤页衙,count變量定義的是私有變量
C 編譯時(shí)錯(cuò)誤摊滔,System.out.println方法被調(diào)用時(shí)test沒(méi)有被初始化
D 編譯和執(zhí)行時(shí)沒(méi)有輸出結(jié)果
答案 A
private是私有變量,只能用于當(dāng)前類中店乐,題目中的main方法也位于當(dāng)前類艰躺,所以可以正確輸出

20.下列方法中哪個(gè)是線程執(zhí)行的方法? ()

A run()
B start()
C sleep()
D suspend()
答案 A
run()方法用來(lái)執(zhí)行線程體中具體的內(nèi)容
start()方法用來(lái)啟動(dòng)線程對(duì)象眨八,使其進(jìn)入就緒狀態(tài)
sleep()方法用來(lái)使線程進(jìn)入睡眠狀態(tài)
suspend()方法用來(lái)使線程掛起腺兴,要通過(guò)resume()方法使其重新啟動(dòng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市廉侧,隨后出現(xiàn)的幾起案子页响,更是在濱河造成了極大的恐慌篓足,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闰蚕,死亡現(xiàn)場(chǎng)離奇詭異栈拖,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)没陡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)涩哟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人盼玄,你說(shuō)我怎么就攤上這事贴彼。” “怎么了强岸?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵锻弓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蝌箍,道長(zhǎng)青灼,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任妓盲,我火速辦了婚禮杂拨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘悯衬。我一直安慰自己弹沽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布筋粗。 她就那樣靜靜地躺著策橘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪娜亿。 梳的紋絲不亂的頭發(fā)上丽已,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音买决,去河邊找鬼沛婴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛督赤,可吹牛的內(nèi)容都是我干的嘁灯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼躲舌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼丑婿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤羹奉,失蹤者是張志新(化名)和其女友劉穎毅贮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體尘奏,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年病蛉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了炫加。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铺然,死狀恐怖俗孝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情魄健,我是刑警寧澤赋铝,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站沽瘦,受9級(jí)特大地震影響革骨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜析恋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一良哲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧助隧,春花似錦筑凫、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至哩牍,卻和暖如春棚潦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姐叁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工瓦盛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人外潜。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓原环,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親处窥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嘱吗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚(yú)閱讀 8,990評(píng)論 0 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法谒麦,繼承相關(guān)的語(yǔ)法俄讹,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,631評(píng)論 18 399
  • 鏈接:https://www.nowcoder.com/questionTerminal/d78556800794...
    香沙小熊閱讀 1,314評(píng)論 0 0
  • 昨天在這么多利空消息下,大盤(pán)早盤(pán)回調(diào)至2740點(diǎn)耻蛇,午后在創(chuàng)業(yè)板帶領(lǐng)下率先啟動(dòng)反彈踪蹬。昨天早盤(pán)分析認(rèn)為市場(chǎng)虛弱...
    陳偉sky_ccs閱讀 205評(píng)論 0 0
  • 關(guān)于熱愛(ài)[玫瑰][玫瑰][玫瑰] 下午在家沒(méi)事,聽(tīng)了樂(lè)嘉老師的一個(gè)演講視頻臣咖,講述他如何找到自己熱愛(ài)的事業(yè)跃捣?...
    耿小冬閱讀 208評(píng)論 0 0