Энэ буландаа SCJP шалгалтанд бэлдэх KB-н номны дасгалуудыг тэдгээрийн хариулт, тайлбартай нь
цуврал болгон хүргэх болно.
Chapter 2. Object Orientation
Chapter 3. Assignments
-------------------------
Chapter 4. Operators
1. Given:
class Hexy {
public static void main(String[] args) {
Integer i = 42;
String s = (i<40)?"life":(i>50)?"universe":"everything";
System.out.println(s);
}
}
What is the result?
A. null
B. life
C. universe
D. everything
E. Compilation fails
F. An exception is thrown at runtime
---
Зөв хариулт: D
( ? : ) энэ операторыг мэддэг бол, энэ их амархан асуулт байна. Эхний шалгуур нь (42 < 40) false учир
дараагийнхаа шалгуур руу орно. Дараагийнх нь (42 > 50) бас false учир, "everything"-г s-т онооно.
2. Given:
1. class Comp2 {
2. public static void main(String[] args) {
3. float f1 = 2.3f;
4. float[][] f2 = {{42.0f}, {1.7f, 2.3f}, {2.6f, 2.7f}};
5. float[] f3 = {2.7f};
6. Long x = 42L;
7. // insert code here
8. System.out.println("true");
9. }
10. }
And the following five code fragments:
F1. if(f1 == f2)
F2. if(f1 == f2[2][1])
F3. if(x == f2[0][0])
F4. if(f1 == f2[1,1])
F5. if(f3 == f2[2])
What is true?
A. One of them will compile, only one will be true
B. Two of them will compile, only one will be true
C. Two of them will compile, two will be true
D. Three of them will compile, only one will be true
E. Three of them will compile, exactly two will be true
F. Three of them will compile, exactly three will be true
---
Зөв хариулт: D
F1 compile хийгдэхгүй учир нь primitive array 2ыг харьцуулж болохгүй.
F2 compile хийгдэнэ. Гэвч f1 = 2.3f, f2[2][1] = 2.7f учир тэнцэхгүй.
F3 compile хийгдэнэ. Хэдий өөр төрөлтэй ч, утга нь ижил учир true гарна.
F4 compile хийгдэхгүй. Учир нь, жавад олон хэмжээст массив руу ингэж ханддаггүй.
F5 compile хийгдэнэ. Гэвч 2 өөр обьектыг зааж буй референс учир тэнцэхгүй.
3. Given:
class Fork {
public static void main(String[] args) {
if(args.length == 1 | args[1].equals("test")) {
System.out.println("test case");
} else {
System.out.println("production " + args[0]);
}
}
}
And the command-line invocation:
java Fork live2
What is the result?
A. test case
B. production live2
C. test case live2
D. Compilation fails
E. An exception is thrown at runtime
---
Зөв хариулт: E
Жава-д програм аргумент нь program-нхаа нэрийг агуулдаггүй бөгөөд, 0-с эхэлж индекслэгдэнэ. Тиймээс args[1]
гэж хандах үед, ArrayIndexOutOfBounds гэдэг exception үүснэ.
Мөн дээрх кодонд | ашигласан учир, 1 аргументтай юм уу эсвэл огт аргументгүй үед үргэлж runtime алдаа заана.
4. Given:
class Feline {
public static void main(String[] args) {
Long x = 42L;
Long y = 44L;
System.out.print(" " + 7 + 2 + " ");
System.out.print(foo() + x + 5 + " ");
System.out.println(x + y + foo());
}
static String foo() { return "foo"; }
}
What is the result?
A. 9 foo47 86foo
B. 9 foo47 4244foo
C. 9 foo425 86foo
D. 9 foo425 4244foo
E. 72 foo47 86foo
F. 72 foo47 4244foo
G. 72 foo425 86foo
H. 72 foo425 4244foo
I. Compilation fails
---
Зөв хариулт: G
ямар нэг хаалт хэрэглээгүй үед, хамгийн эхнээсээ эхлээд нэмэх үйлдэл үү string concat хийх үйлдэл үү гэдгээ
шийдээд явна. Эхний удаад, хоосон зайн дээр 7-г залгана, араас нь 2-г залгана гээд явна. Дараагийнх дээр ч
foo()-с string ирэх учир, залгах үйлдэл хйигдээд явна. Харин сүүлийнх дээр, эхлээд нэмэх үйлдэл хийгдээд,
дараа нь залгана.
5. Place the fragments into the code to produce the output 33. Note, you must use each fragment exactly once.
CODE:
class Incr {
public static void main(String[] args) {
Integer x = 7;
int y = 2;
x ___ ___;
___ ___ ___;
___ ___ ___;
___ ___ ___;
System.out.println(x);
}
}
FRAGMENTS:
---------------------
| y | y | y | y |
|----|----|----|----|
| y | x | x | |
|----|----|----|----|
| -= | *= | *= | *= |
---------------------
----
Энэ нь хуучин шалгалтанд байдаг, "drag and drop" төрлийн асуулт байна. Энд хариулт сонгохгүй, өөрөө доорх
fragment-үүдээс дээд талын хоосон зайд тохируул тавина гэсэн үг. Ингээд зөв байрлал нь,
x *= x; // х = 7 * 7 = 49 болно
y *= y; // y = 2 * 2 = 4 болно
y *= y; // y = 4 * 4 = 16 болно
x -= y; // x = 49 - 16 = 33 болно
6. Given:
3. public class Twisty {
4. { index = 1; }
5. int index;
6. public static void main(String[] args) {
7. new Twisty().go();
8. }
9. void go() {
10. int [][] dd = {{9,8,7}, {6,5,4}, {3,2,1,0}};
11. System.out.println(dd[index++][index++]);
12. }
13. }
What is the result? (Choose all that apply.)
A. 1
B. 2
C. 4
D. 6
E. 8
F. Compilation fails
G. An exception is thrown at runtime
---
Зөв хариулт: C
Initializer-с нь харахад шинэ Twisty обьект үүсэх үед, index нь 1 болцон байна. 11-р мөрөнд харин, эхний
index-н утгыг авахад, эхлээд 1 гэж утгаа өгөөд дараа нь 2 болгоно, дараагийнх дээр нь ирэхэд, 2 байгаа утгаа
өгөөд 3 болно. Тэгэхээр, dd[1][2] нь 4 гэж хэвлэгдэнэ.
7. Given:
3. public class McGee {
4. public static void main(String[] args) {
5. Days d1 = Days.TH;
6. Days d2 = Days.M;
7. for(Days d: Days.values()) {
8. if(d.equals(Days.F)) break;
9. d2 = d;
10. }
11. System.out.println((d1 == d2)?"same old" : "newly new");
12. }
13. enum Days {M, T, W, TH, F, SA, SU};
14. }
What is the result?
A. same old
B. newly new
C. Compilation fails due to multiple errors
D. Compilation fails due only to an error on line 7
E. Compilation fails due only to an error on line 8
F. Compilation fails due only to an error on line 11
G. Compilation fails due only to an error on line 13
---
Зөв хариулт: A
Ямар нэг буруу зүйл байхгүй бөгөөд, for loop дотор M-с F хүртэл бүх утгаа нэг нэгээр нь d2-т өгч байгаад,
F-г оноохын өмнө гарчихаж байна. d1, d2 2уул ижил обьект зааж буй учир == тэмдэг нь true буцаана.
8. Given:
4. public class SpecialOps {
5. public static void main(String[] args) {
6. String s = "";
7. Boolean b1 = true;
8. boolean b2 = false;
9. if((b2 = false) | (21%5) > 2) s += "x";
10. if(b1 || (b2 == true)) s += "y";
11. if(b2 == true) s += "z";
12. System.out.println(s);
13. }
14. }
Which are true? (Choose all that apply.)
A. Compilation fails
B. x will be included in the output
C. y will be included in the output
D. z will be included in the output
E. An exception is thrown at runtime
---
Зөв хариулт: C
Эхний if дээр b2 нь false болчихно. дараагийн нөхцөл нь биелэхгүй учир, s дээр х-г нэмж чадахгүй. b1 нь
un-boxing хийгдээд true гэдэг утгаараа, s -д y-г залгана. b2 нь false учир 3дахь if рүү орохгүй. Ингээд
s нь "y" л гэсэн утгатай болно.
9. Given:
3. public class Spock {
4. public static void main(String[] args) {
5. int mask = 0;
6. int count = 0;
7. if( ((5<7) || (++count < 10)) | mask++ < 10 ) mask = mask + 1;
8. if( (6 > 8) ^ false) mask = mask + 10;
9. if( !(mask > 1) && ++count > 1) mask = mask + 100;
10. System.out.println(mask + " " + count);
11. }
12. }
Which two are true about the value of mask and the value of count at line 10? (Choose two.)
A. mask is 0
B. mask is 1
C. mask is 2
D. mask is 10
E. mask is greater than 10
F. count is 0
G. count is greater than 0
---
Зөв хариулт: C, F
Эхний if-г авч үзье, хаалтнаас нь харвал, |-р тусгаарлагдсан 2 илэрхийлэл байна. Зүүн талын илэрхийлэл нь
бас || оператор-р тусгаарлагдсан 2 илэрхийллээс тогтоно. 5<7 нь үнэн учир, шууд count-г ихэсгэж, 10-тай
харьцуулахгүй, хэдий true гэж гарч ирсэн | оператороос болоод, mask-г заавал нэгээр нэмж 10-тай харьцуулна.
if-н нөхцөл биелэсэн учир, дахиад mask дээр нэгийг нэмээд, 2 болгоно.
Дараагийн if дээр, false-г false-тай xor-дох учир, нөхцөл биелэхгүй
Сүүлийн if дээр, mask нь 2 учир, !(mask > 1) нь false болно, тиймээс ++count > 1 -г хэрэгжүүлэхгүй, нөхцөл
нь false гарна.
Ингээд л mask=2, count=0
10. Given:
3. interface Vessel { }
4. interface Toy { }
5. class Boat implements Vessel { }
6. class Speedboat extends Boat implements Toy { }
7. public class Tree {
8. public static void main(String[] args) {
9. String s = "0";
10. Boat b = new Boat();
11. Boat b2 = new Speedboat();
12. Speedboat s2 = new Speedboat();
13. if((b instanceof Vessel) && (b2 instanceof Toy)) s += "1";
14. if((s2 instanceof Vessel) && (s2 instanceof Toy)) s += "2";
15. System.out.println(s);
16. }
17. }
What is the result?
A. 0
B. 01
C. 02
D. 012
E. Compilation fails
F. An exception is thrown at runtime
---
Зөв хариулт: D
instanceof нь runtime үед, тухайн референс-н зааж байгаа обьект дээр харьцуулалт хийдэг учир, мөн b нь
Vessel, b2 нь Toy, s2 нь Vessel мөн Toy учир, бүх instanceof-с true гарна.
SCJP RQ : Chapter 4
Subscribe to:
Posts (Atom)
No comments:
Post a Comment