F-Learning

Tổng hợp đề thi final hay nhất by Trần Trung

Câu 1

Thành phần máy tính

Giải thích:
Lớp Test kế thừa từ lớp Base. Lớp Test có hai hàm khởi tạo với các tham số khác nhau. Hàm khởi tạo đầu tiên trên dòng 2 có một tham số là int. Hàm khởi tạo thứ hai trên dòng 4 có hai tham số là int và gọi constructor của superclass Base với hai tham số int bằng cách sử dụng từ khóa super trên dòng 5.
Với đề bài này, chúng ta cần tìm các cuộc gọi hợp lệ để tạo một đối tượng của lớp Test. Các cuộc gọi sau đây là hợp lệ:
C. `Test t = new Test(1);
- Cuộc gọi này gọi constructor trên dòng 2 với một tham số int. cuộc gọi sau đây không hợp lệ:
A. `Test t = new Test(1, 2, 3);`
- Cuộc gọi này truyền tham số vào constructor của lớp Test, nhưng chỉ có hai constructor được định nghĩa trong lớp Test. Do đó, cuộc gọi này không hợp lệ.
B. `Test t = new Test; Cuộc gọi này không chứa tham số nào cho constructor của lớp Test. Vì vậy, nó không hợp lệ. Nếu bạn muốn gọi constructor mà không có tham số, bạn ph sửụng dấu ngoặc đơn: `Test t = new Test();`

2. Which of the following is the correct syntax for suggesting that the JVM performs garbage collection?

Dưới đây là cú pháp chính xác để gợi ý JVM thực hiện thu gom rác:
System.gc();
Cú pháp "System.gc()" được sử dụng để yêu cầu hoặc gợi ý cho Java Virtual Machine (JVM) thực hiện thu gom rác. Phương thức "gc()" được định nghĩa trong lớp "System" và sẽ gọi đến trình quản lý bộ nhớ của JVM để xóa bỏ các đối tượng không sử dụng nữa trong bộ nhớ.

3. if(check4Biz(storeNum) != null) {}
Referring to the above, what data type could be returned by method check4Biz()? (Select two)

Trong đoạn mã trên, phương thức "check4Biz()" có thể trả về hai kiểu dữ liệu là String và Boolean, tùy thuộc vào cách định nghĩa của phương thức này. Kiểu char, byte và int không thể được trả về trong trường hợp này.

Câu 4

Thành phần máy tính

Đáp án: B. Dòng 15 tạo một thư mục có tên là "dir" và một tập tin có tên là "fi.txt" bên trong nó.
Trong đoạn mã trên, dòng 14 tạo một đối tượng File để tham chiếu đến thư mục "dir". Dòng 15 tạo một đối tượng File khác để tham chiếu đến tập tin "fi.txt" trong thưục "dir" đã được tạo trước đó. Chú ý rằng phương thức exists() được sử dụng để kiểm tra xem tập tin đã tồn tại hay chưa, và nếu tập tin không tồn tại, dòng 17 sẽ tạo một tập tin mới có tên là "fi.txt" trong thư mục "dir" đã được tạo trước đó. Vì vậy, đáp án là B.

5. Which of the following is INCORRECT?

char c=\u1234;
B. char c = 0x1234;
C. String x = "ABC" +2;
D. char c = '\u1234";
Câu trả lời là: D. char c = '\u1234"; (Sai vì thiếu dấu nháy đơn ở cuối).

6. Select a correct statement

A void f(double d. int...x, int y){}
B. void f(int x, int... y) {}
C. void f(int... x, int y) {}
void f(int x, int... y) {}
Chọn một câu đúng:
B. void f(int x, int... y) {}
Các câu A, C và D đều sai vì kiểu hàm void không chấp nhận số lượng tham số không xác định trong danh sách tham số, nhưng chỉ chấp nhận một danh sách các tham số xác định với kiểu và số lượng cho trước. Các câu trên đều chứa sai sót về cú pháp cụ thể của kiểu hàm và danh sách tham số.

Câu 7

Thành phần máy tính

Giá trị được in ra tại dòng 6 là 101.
Ở dòng 4, đoạn mã tạo một đối tượng Holder mới được gán cho biến h.
Ở dòng 5, giá trị của held trong đối tượng h đã được gán bằng 100.
Ở dòng 6, phương thức bump() được gọi bằng cách truyền vào đối tượng h. Phương thức bump() cộng giá trị held trong đối tượng được truyền vào lên 1.
Khi phương thức bump() được gọi, đối tượng được truyền vào là h, do đó held trong đối tượng sẽ tăng lên 1 và giá tr mới là 101.
Ở dòng 7, giá trị held của đối tượng h được in màn hình và giá trị này là 101.

8. Given:

11. public interface Status {
12 /*insert code here */ int MY_VALUE = 10.
13.}
Which three are valid on line 12? (Select three)
C. static
D. final
E. public

Các từ khóa hợp lệ trên dòng 12 là "static", "final" và "public". "static" biểu thị rằng biến "MY_VALUE" được liên kết với giao diện và không yêu cầu thể hiện của lớp được tạo trước. "final" biểu thị rằng giá trị của biến "MY_VALUE" không thể thay đổi sau khi được gán. "public" biểu thị rằng biến "MY_VALUE" có thể truy cập từ bên ngoài giao diện.

Câu 9

Thành phần máy tính

Đáp án là A. Khi biên dịch, trình biên dịch sẽ tìm thấy lớp Abs kế thừa lớp Base và triển khai phương thức amethod(). Trong phương thức này, Abs cũng gọi phương thức myfunc() trong lớp cùng tên của mình, và in ra chuỗi "My Func" ở đó.
Vì vậy, khi bạn khởi tạo một đối tượng Abs và gọi phương thức amethod(), chuỗi sẽ được in ra màn hình mà không gặp lỗi.

Câu 10:

Trong đoạn mã này, có thể chèn vào chỗ comment "//Method Here" hai phương thức sau:
A. void amethod(long i) throws Exception {}
B. public void amethod(int i) throws Exception {}
Cả hai phương thức này đều có thể được sử dụng vì chúng có cùng tên với phương thức của lớp cha và đều không phải là các phương thức tĩnh. Tuy nhiên, chỉ có phương thức "public void amethod(int i) throws Exception {}" có từ khóa "throws" để ném ra ngoại lệ.
C và D là sai vì chúng không có từ khóa "throws Exception" trong khai báo phương thức. Vì vậy, khi một ngoại lệ xảy ra trong phương thức, chúng ta không thể xử lý nó bên trong phương thức, mà sẽ phải xử lý nó ở một nơi khác trong chương trình. Nếu ta cố gắng để thêm từ khóa "throws Exception" vào phương thức C, như trong "void amethod(int i) throws Exception {}", mà không có sự xử lý chính thức của ngoại lệ, chương trình sẽ bị lỗi tại thời điểm biên dịch.

Câu 11

Which one statement is true about the following code fragment?
1. import java.lang.Math;
2. Math myMath = new Math();
3. System.out.println("cosine of 0.123="+ myMath.cos(0.123));
Câu lệnh trên sẽ không biên dịch thành công do dòng thứ hai sử dụng cú pháp tạo đối tượng mới cho lớp Math, trong khi Math là một lớp tĩnh (static class) và không yêu cầu được khởi tạo đối tượng mới.

Câu 12

class Base
public class MyCast extends Base{
static boolean b1=false;
static int i = -1;
static double d = 10.1;
public static void main(String argv[]){
MyCast m = new MyCast();
Base b = new Base();
//Here
}
}
A. b=m;
B. m=b;
C. d=i;
D. b1=i;

Câu lệnh ở chỗ trống để gán đối tượng m vào biến b là: b = m (đáp án A).
Các đáp án khác là sai:- m = b (đáp án B) là phép gán đối tượng của lớp cha vào biến của lớp con, điều này không khả thi vì đối tượng của lớp cha không thể chứa được các thành phần của lớp con.
- d = i (đáp án C) trộn lẫn giữa các kiểu dữ liệu khác nhau, điều này không thể thực hiện được.
- b1 = i (đáp án D) trộn lẫn giữa kiểu boolean và kiểu số nguyên, tương tự như đáp án C, không thể thực hiện được.

Câu 13

1. Dog rover, fido;
2. Animal anim; ;
3. ;
4. rover = new Dog();;
5. anim = rover, ;
6. fido (Dog)anim; ;
Where: ;
Mammal extends Animal Dog extends Mammal;
Which of the following statements is true? ;

A. Line 5 will not compile. ;
B. Line 6 will not compile. ;
C. The code will compile but will throw an exception at line 6. ;
D. The code will compile and run. ;
Đáp án: D. Mã sẽ biên dịch và chạy mà không có lỗi nào xảy ra. ;
Mã sẽ biên dịch được vì không có lỗi cú pháp. Tại dòng 4, đối tượng Dog mới sẽ được tạo và gán vào biến rover. Tại dòng 5, biến rover đã được gán cho anim, biến kiểu Animal. Điều này hoàn toàn hợp lệ, vì tất cả các lớp con (subclasses) của Animal đều được coi là Animal. Cuối cùng, tại dòng 6, fido sẽ được gán với một thể hiện (instance) của lớp Dog, dựa trên thể hiện của Animal đã được ép kiểu lên lớp Dog. Vì vậy, mã sẽ biên dịch và chạy mà không có lỗi nào xảy ra.

Câu 14

Given the following method definition in a class that otherwise compiles correctly:
1. public boolean testAns(String ans,int n){
2 boolean rslt;
3. if(ans.equalsIgnoreCase("YES") && n> 5 ) rsit = true; 4. return rslt; 5.}
What will be the result of trying to compile the class and execute the testAns() method wit 5?
A. A runtime exception will be thrown in the testAns method.
B. A result of false will be returned.
C. A compiler error will prevent compilation.
D. A result of true will be returned
Kết quả khi biên dịch lớp và thực thi phương thức testAns() với đầu vào là 5 sẽ là một biên dịch lỗi do biến rslt chưa được khởi tạo trước khi sử dụng. Vì vậy, đáp án là C.

Câu 15:Given the following method definition in a class that otherwise compiles correctly:

1. public boolean testAns(String ans,int n){
2 boolean rslt;
3. if(ans.equalsIgnoreCase("YES") && n> 5 ) rsit = true; 4. return rslt; 5.}
What will be the result of trying to compile the class and execute the testAns() method wit 5?
A. A runtime exception will be thrown in the testAns method.
B. A result of false will be returned.
C. A compiler error will prevent compilation.
D. A result of true will be returned

Đáp án: B. Một kết quả sai sẽ được trả về. Việc so sánh chuỗi "YES" với `ans` là không phân biệt chữ hoa và thấp, và `n` cần phải lớn hơn 5 cho kết quả là true. Trong trường hợp này, giá trị của `n` là 5, do đó điều kiện trong if sẽ không được thỏa mãn và giá trị false sẽ được trả về. Tuy nhiên, có một lỗi chính tả trong câu lệnh gán giá trị cho result (rsit thay vì rslt) mà làm cho chương trình không hoạt động đúng.

Câu 16

33. try {
34. // some code here
35. }catch (NullPointerException +1){
36. System.out.print("a");
37. }catch (RuntimeException e2) {
38. System.out.print("b"); 39.} finally {
40. System.out.print("c");
41.}
What is the result if a NullPointerException occurs on line 34?
A. c
B. a
C. ab
D. ac

Nếu một NullPointerException xảy ra trên dòng 34, kết quả sẽ là: B. a (chỉ in ra ký tự "a" vì đã được xử lý trong khối catch chứ không tiếp tục vào khối catch tiếp theo). Sau đó, khối finally được thực hiện và in ra "c". Vì vậy, kết quả cuối cùng là "ac".

17. Select correct code snippet:

A. double a = \{3, 2, 8, 4\} for(double x: a) System.out.printin(x);
B. double] a = \{3, 2, 8, 4\} double x; for(x: a) System.out.println(x);
C. double a = \{3, 2, 8, 4\} for(int i: a) System.out.println(a[i]);
D. double a = \{3, 2, 8, 4\} for(int i: a) System.out.println(i);

Đoạn mã đúng là A: double a = {3, 2, 8, 4};
for(double x : a) {
.printin(x);
}

Giải thích:
- Đầu tiên, đoạn mã khai báo mảng một chiều "a" gồm các phần tử số thực.

- Sau đó, vòng lặp for-each được sử dụng để duyệt qua các phần tử của mảng "a". Biến "x" đại diện cho từng phần tử được truy cập trong mỗi lần lặp.
- Trong thân vòng lặp, phương thức "System.out.printin()" được sử dụng để in giá trị của biến "x" ra màn hình.

18. What is the output when you try to compile and run the following program?


public class Main {
public static void main(String argv[]){ String s = "Hi there";
int pos = s.indexOf(" ");
String rs.substring(0, pos);
String s2 = new String(new char[] {'H','T});
if(r.equals(s2))
System.out.println("EQUAL");
else
System.out.println("NOT EQUAL"); System.out.println();
}
A. EQUAL
B. NOT EQUAL
C. EQUAL NOT EQUAL
Sau khi chương trình chạy, nó sẽ in ra "NOT EQUAL". Lý do là vì có lỗi cú pháp trong chương trình. Chính xác hơn, do dòng lệnh `String rs.substring(0, pos)` không được gán giá trị cho một biến nên sẽ gây ra lỗi biên dịch. Chương trình sẽ không biên dịch thành công và sẽ không thực thi dòng lệnh if/else để in ra thông báo "EQUAL" hoặc "NOT EQUAL".

19. Study the following Java statements:

String s1= "Hello";
String s2= "Hello";
String s3= "Hello";
String s4= new String("Hello");
How many strings, specified by the above code, are stored in the memory of the program?
A. 2
B. 1
C. 4
D. None of the others

Trong đoạn mã trên, có tổng cộng 4 chuỗi được lưu trữ trong bộ nhớ của chương trình: s1, s2, s3 là những chuỗi giống nhau được lưu trữ tại cùng một địa chỉ bộ nhớ, trong khi s4 là một chuỗi khác được lưu trữ tại một địa chỉ bộ nhớ khác. Vì vậy, đáp án là C.

20. Given:

20. Given: 11. public static void main(String[] args) {
12. Object obj =new int[] {1,2,3};
13. int] someArray = (int[])obj;
14. for (int i: someArray) System.out.print(i +" ");
15.}
What is the result?
A. 123
B. Compilation fails because of an error in line 12.
C. Compilation fails because of an error in line 13.
D. Compilation fails because of an error in line 14.
E. A ClassCastException is thrown at runtime

Kết quả là A. 123. Chương trình chạy mà không có lỗi và thực hiện vòngp for để in ra các phần tử của mảng someArray.

Có thể bạn sẽ thích