5つの毎日の筆記試験問題-2020-9-15
public` `interface` `IService {String NAME=``"default"``;}
同等のデフォルトタイプのアイテム:
正解:C正解:C(正解)
public String NAME="default";
public static String NAME="default";
public static final String NAME="default";
private String NAME="default";
- 次のコードセグメントを実行した後、変数s1によって参照される文字列値は()です。*
String s1 = "ABCD";
String s2 = "1234";
System.out.println(s1 + s2);
正解:A正解:A(正解)
ABCD
1234
ABCD1234
1234ABCD
分析:
ので文字列は不変タイプで、一定の文字領域に格納され、 答えはABCDです。
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;
str0、...、str4は読み取り専用の参照であると想定します。
Java 7では、上記のコードに基づいて、FullGCが発生した後、ヒープ領域(PermGenを含まない)で上記のコードによって予約された文字数は()です。
正しい答え:Cあなたの答え:A(間違っている)
5
10
15
20
分析1:
Cである必要があります
部分文字列は実際には新しい、5文字
str3と4も新しく、それぞれ5文字です。
それぞれが新しいオブジェクトを作成します
定数プールはPermGenです
合計15文字にする必要があります
分析2:
これは、Javaのガベージコレクションメカニズムに関する質問です。スタック領域のメモリはスレッドで解放されるため、ガベージコレクションは主にヒープ領域の回復のためです。ヒープは、若い世代(若い世代)、古い世代(古い世代)、および永続的な世代(永続的な世代、つまりメソッド領域)の3つの領域に分かれています。
若年世代:オブジェクトが作成されると(新規)、オブジェクトは通常、若年に配置されます(大量のメモリを占有する一部のオブジェクトを除く)。特定のマイナーGC(若年世代のメモリコレクション)の後、まだ生存しているオブジェクトは年に移動されます。古い世代(一部の特定のモバイルの詳細は省略)。
古い世代:これらは若い世代によって移動されたより大きなオブジェクトです。マイナーGC(FullGC)は、古い世代のコレクション用です
永続的な生成:最終定数、静的変数、および定数プールが格納されます。
str3とstr4はどちらも直接新しいオブジェクトであり、substringのソースコードは、次に示すように、実際には返される新しい文字列オブジェクトです。
fullgcの後、古い領域のメモリ回復は、PermGenを除いて、若い領域で15になります。だから答えはCです
Javaでは、HashMapクラスの記述に関して、以下が正しいです()
正确答案: A C D 你的答案: A D (错误)
HashMap使用键/值得形式保存数据
HashMap 能够保证其中元素的顺序
HashMap允许将null用作键
HashMap允许将null用作值
Map集合类 | key | value |
---|---|---|
HashMap | 允许为null | 允许为null |
TreeMap | 不允许为null | 允许为null |
ConcurrentMap | 不允许为null | 不允许为null |
HashTable | 不允许为null | 不允许为null |
JDK提供的用于并发编程的同步器有哪些?
正确答案: A B C 你的答案: B C (错误)
Semaphore
CyclicBarrier
CountDownLatch
Counter
解析:
答案:ABC
A,Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。
B,CyclicBarrier 主要的方法就是一个:await()。await() 方法没被调用一次,计数便会减少1,并阻塞住当前线程。当计数减至0时,阻塞解除,所有在此 CyclicBarrier 上面阻塞的线程开始运行。
C,直译过来就是倒计数(CountDown)门闩(Latch)。倒计数不用说,门闩的意思顾名思义就是阻止前进。在这里就是指 CountDownLatch.await() 方法在倒计数为0之前会阻塞当前线程。
D,Counter不是并发编程的同步器