300 Câu hỏi trắc nghiệm lập trình Java có đáp án - Phần 3
-
5492 lượt thi
-
50 câu hỏi
-
60 phút
Danh sách câu hỏi
Câu 1:
int s = 0;
for (int i = 0; i < 10; i++)
s += i;
System.out.println(s);
Chọn đáp án A
Câu 2:
int[] mang = new int[10];
int s = 0;
int j = 0;
for (int i: mang) {
i = ++j;
s += i;
}
System.out.println(“S = “ + s);
Chọn đáp án C
Câu 3:
Chọn đáp án B
Câu 4:
Chọn đáp án C.Vì: biểu thức array.length trả về số phần tử trong mảng.
Câu 5:
Chọn đáp án A.Vì:+ Bắt buộc phải xác định số dòng trong khai báo mảng hai chiều.
Câu 6:
chúng?
Câu 2: Chỉ số mảng bắt đầu từ 1
Chọn đáp án B.Vì: mảng truy xuất phần tử theo chỉ số của nó, nếu 2 phần tử có giá trị giống nhau thì cũng sẽ nằm ở vị trí khác nhau, do dó không thể thay đổi thứ tự của chúng được.
+ Chỉ số mảng bắt đầu từ 0.
Câu 7:
Chọn đáp án B.Vì: Mảng chỉ có thể lưu trữ các phần tử có cùng kiểu dữ liệu.
Câu 8:
final int ARRAY_SIZE = 5;
ARRAY_SIZE = 10;
System.out.println("size = " + ARRAY_SIZE);
Chọn đáp án D.Vì: + Không thể gán giá trị cho các biến kiểu final
Câu 9:
class A {
final public int method1(int a, int b) {
return 0;
}
}
class B extends A {
public int method1(int a, int b) {
return 1;
}
}
public class Test {
public static void main(Strings args[]) {
B b;
System.out.println("x = " + b.method1(0, 1));
}
}
Chọn đáp án C.Vì: Lớp A là lớp con của lớp B và phương thức method1() trong lớp cha đã khai báo là final do vậy không thể thực hiện ghi đè trong lớp con.
Câu 10:
class Student {
public int getAge() {
return 10;
}
}
public class Man extends Student {
public int getAge(int added) {
return super.getAge() + added;
}
public static void main(String[] args) {
Man s = new Man();
System.out.println(s.getAge());
System.out.println(s.getAge());
}
}
Chọn đáp án B. Vì:+ Lệnh đầu tiên trong hàm main() sẽ sinh ra đối tượng s từ lớp Man.
+ Lệnh thứ 2 của hàm main sẽ gọi phương thức getAge() của đối tượng s, tuy nhiên s kế thừa từ lớp Student do đó sẽ triệu gọi phương thức getAge của lớp Student => in ra 10
+ Lệnh thứ 3 của hàm main() sẽ gọi phương thức getAge() của đối tượng s => gọi đến phương thức getAge()
Câu 11:
class Student {
public String name;
}
public class Man extends Student {
private String name;
}
Chọn đáp án B. Vì: Thuộc tính không có ràng buộc về access modifier ở lớp con và lớp cha.Và thuộc tính ở mỗi lớp có thể nhận default, protected, private, public là access modified
Câu 12:
class Student {
protected String name;
}
public class Man extends Student {
public static void main(String[] args) {
Man m = new Man();
m.name = "John";
}
}
Chọn đáp án B.Vì: Thuộc tính name ở Student là protected, nên không lớp con Man được thừa kế.
Câu 13:
class Student {
private String name;
}
public class Man extends Student {
private String name;
public static void main(String[] args) {
Student m = new Student();
m.name = "Peter";
}
}
Chọn đáp án A. Vì:+ Không thể truy xuất vào thuộc tính private từ bên ngoài lớp Tham khảo: Giáo trình: [1] mục 5.2
Câu 14:
Chọn đáp án D.Vì:Tham số truyền cho hàm tạo của lớp Z chưa xác định tên nên sinh lỗi.Tham khảo: Giáo trình: [1] mục 5.2
Câu 15:
class Student {}
public class Man extends Student {
}
Chọn đáp án A.Vì:Chúng ta có thể khai báo các lớp không có thuộc tính và phương thức trống(empty). Nên đáp án A đúng và D, C, D sai.
Câu 16:
class Person {
protected String name;
public int age;
};
public class Main {
public static void main(String[] args) {
Person p = new Person();
p.name = "Tom";
}
}
Chọn đáp án B.Vì:+ name là thành phần protected do đó không thể truy xuất từ bên ngoài lớp (chỉ có thể truy xuất từ bên trong lớp và các lớp con).
Câu 17:
public class Person {
private String name;
protected int age;
public static void main(String[] args) {
Person p = new Person();
p.name = "Tom";
System.out.println(p.name);
}
}
Chọn đáp án A.Vì:Hàm main ở trong cùng lớp Person, nên có thể truy xuất tới tất cả các trường của Person.
Câu 18:
public class Person {
protected String name;
protected int age;
public static void main(String[] args) {
Person p = new Person();
p.name = "Tom";
System.out.println(p.name);
}
}
Chọn đáp án A.Vì:Hàm main ở trong cùng lớp Person, nên có thể truy xuất tới tất cả các trường của Person.
Câu 19:
package pac02;
public class ClassA {
protected int xA;
public String yA;
}
---------
package pac01;
import pac02.ClassA;
public class Test {
public static void main(String[] args) {
ClassA a = new ClassA();
a.xA = 12;
a.yA = "Hello";
System.out.println("a.xA = " + a.xA + "; a.yA = " + a.yA);
}
}
Chọn đáp án D.Vì: Thuộc tính xA của lớp ClassA được khai báo với từ khóa protected nên không được truy xuất từ ngoài gói pac02.
Câu 20:
package java.school;
public class Student {}
--
package java.test;
public class Main {
public static void main(String[] args) {
java.school.Student s = new java.school.Student();
}
}
Chọn đáp án A.Vì: Lớp Student không ở package java.test mà ở java.school, và bạn không import vào gói java.test, nhưng khi dùng bạn đã chỉ rõ lớp ở package java.school.Student. Nên trình biên dịch hiểu. Nên đáp án: Có lỗi biên dịch:can not find symbol test.Student Và Có lỗi biên dịch: Add import java.school.Student sai và đáp án: Không có lỗi biên dịch đúng. Khi bạn không khai báo một constructor nào thì trình biên dịch tự động tạo ra một constructor mặc định (không có tham số) cho lớp đó. Nên đáp án: Có lỗi biên dịch: can not find constructor Student() for Student sai.
Câu 21:
public class Person {
private String name;
private int age;
public static void main(String[] args) {
Person p = new Person();
p.name = "Tom";
System.out.println(p.name);
}
}
Chọn đáp án A
Câu 22:
package java.school;
public class Student {}
--
package java.test;
public class Main {
public static void main(String[] args) {
Student s = new Student();
}
}
Chọn đáp án A. Vì: -Lớp Student không ở package java.test mà ở java.school, mà bạn lại không import vào gói java.test, nên trình biên dịch tìm lớp Student ở cùng package java.test, nhưng không có.
-Add import java.school.Student là một gợi ý
Câu 23:
public class Main {
public static void main(String[] args) {
String names[] = {
"John",
"Anna",
"Peter",
"Victor",
"David"
};
names = new String[5];
System.out.println(names[2]);
}
}
Chọn đáp án D. Vì: + Lệnh 3 sẽ khai báo một mảng names và khởi tạo các giá trị cho mảng lần lượt là “John”, “Anna”,….
+ Tuy nhiên lệnh sau (4) lại tạo lại mảng names và không gán giá trị cho các phần tử mảng => các phần tử sẽ có giá trị null
Câu 24:
chúng?Câu 2: Chỉ số mảng bắt đầu từ 1 Chọn một câu trả lời
Chọn đáp án B. Vì: mảng truy xuất phần tử theo chỉ số của nó, nếu 2 phần tử có giá trị giống nhau thì cũng sẽ nằm ở vị trí khác nhau, do dó không thể thay đổi thứ tự của chúng được.
+ Chỉ số mảng bắt đầu từ 0.
Câu 25:
public class Delta {
static boolean foo(char c) {
System.out.print(c);
return true;
}
public static void main(String[] argv) {
int i = 0;
for (foo(‘A’);
foo(‘B’) && (i < 2); foo(‘C’)) {
i++;
foo(‘D’);
12.
}
}
}
Chọn đáp án A
Câu 26:
StringBuffer s = new StringBuffer("hello how are you how?");
int x = s.indexOf("ow");
System.out.println(x);
Chọn đáp án A.Vì: Hàm indexOf trả về vị trí đầu tiên xuất hiện của chuỗi ow trong chuỗi s( là ở vị trí thứ 7).
Câu 27:
Chọn đap án B.Vì: Mảng chỉ có thể lưu trữ các phần tử có cùng kiểu dữ liệu.
Câu 28:
final int ARRAY_SIZE = 5;
ARRAY_SIZE = 10;
System.out.println("size = " + ARRAY_SIZE);
Chọn đáp án D. Vì: + Không thể gán giá trị cho các biến kiểu final
Câu 29:
class Student {}
public class Man extends Student {
public boolean isMan() {
return true;
}
}
Chọn đáp án A. Vì: Chúng ta có thể khai báo các lớp không có thuộc tính và phương thức trống(empty). Khi một lớp không có constructor, trình biên dịch sẽ tự động thêm vào một constructor mặc định.Vậy đoạn mã đã cho không có lỗi biên dịch nào.
Câu 30:
kết quả nào?
class Student {
String sayHello() {
return "Student";
}
}
public class Man extends Student {
protected String sayHello() {
return "man";
}
public static void main(String[] args) {
Student s = new Man();
System.out.println(s.sayHello());
}
}
Chọn đáp án A. Vì: phương thức sayHello() có mức truy xuất ở lớp Student là default, nhưng ở lớp con(Man) lại có mức truy xuất yếu hơn(Không cho phép điều này).
Câu 31:
class Student {
public int getAge() {
return 10;
}
}
public class Man extends Student {
public int getAge(int added) {
return super.getAge() + added;
}
public static void main(String[] args) {
Man s = new Man();
System.out.println(s.getAge());
System.out.println(s.getAge());
}
}
Chọn đáp án B. Vì: + Lệnh đầu tiên trong hàm main() sẽ sinh ra đối tượng s từ lớp Man.
+ Lệnh thứ 2 của hàm main sẽ gọi phương thức getAge() của đối tượng s, tuy
nhiên s kế thừa từ lớp Student do đó sẽ triệu gọi phương thức getAge của lớp
Student => in ra 10
+ Lệnh thứ 3 của hàm main() sẽ gọi phương thức getAge() của đối tượng s =>
gọi đến phương thức getAge() của lớp Student => in ra 10
Câu 32:
con của Student?
Class Student
{
Public String name;
}
Chọn đáp án A. Vì:Theo cú pháp khai báo lớp kế thừa trong java, từ khóa extends được dùng để mô tả một lớp là lớp con của lớp khác.
Câu 33:
Chọn đáp án D. Vì: Tham số truyền cho hàm tạo của lớp Z chưa xác định tên nên sinh lỗi.
Câu 34:
class Super {
public float getNum() {
return 3.0f;
}
}
public class Sub extends Super {
}
Chọn đáp án A. Vì: Phương thức này chưa xác định kiểu dữ liệu trả về.
Câu 35:
Chọn đáp án D. vì: dấu phẩn(,) là dấu để cách ra các interface/class trong danh sách thừa kế hoặc triển khai. Một lớp triển khai interface thì từ khóa implements được dùng.
Câu 36:
String[][] str = {"lap", "trinh", "java"};
System.out.println(str[1][1]);
Chọn đáp án C.Vì: + Lỗi ở dòng lệnh 1, sai cú pháp khai báo mảng 2 chiều
Câu 37:
class Student {
public String sayHello() {
return "Student";
}
}
public class Man extends Student {
public String sayHello() {
return super.sayHello();
}
public static void main(String[] args) {
Student m = new Student();
System.out.println(m.sayHello());
}
}
Chọn đáp án B. Vì: s là đối tượng của Student, nên phương thức được gọi là của Student.
Câu 38:
class BreakDemo {
public static void main(String[] args) {
int[] arrayOfInts = {
32,
87,
3,
589,
12,
1076,
2000,
8,
622,
127
};
int searchFor = 12;
int i;
boolean fountIt = false;
for (i = 0; i < arrayOfInts.length; i++) {
if (arrayOfInts[i] == searchFor) {
fountIt = true;
break;
}
}
if (fountIt) {
System.out.println(“Found“ + searchFor + “at index“ + i);
} else System.out.println(searchFor + “not in the array”);
}
}
Chọn đáp án D
Câu 39:
class BreakDemo {
public static void main(String[] args) {
int[] arrayOfInts = {
32,
87,
3,
589,
12,
1076,
2000,
8,
622,
127
};
int searchFor = 12;
int i;
boolean fountIt = false;–Môn Java cơsở14
Trang 14
Ket - noi.com diễnđàn công nghệ,
giáo dục
for (i = 0; i < arrayOfInts.length; i++) {
if (arrayOfInts[i] == searchFor) {
fountIt = true;
break;
}
}
if (fountIt) {
System.out.println(“Found“ + searchFor + “at index“ + i);
} else System.out.println(searchFor + “not in the array”);
}
}
Chọn đáp án A
Câu 40:
class ContinueDemo {
public static void main(String[] args) {
String searchMe = “peter piper picked a peck of pickled peppers”;
int max = searchMe.length();
int numPs = 0;
for (int i = 0; i < max; i++) {
if (searchMe.charAt(i) != 'p') continue;
numPs++;
}
System.out.println(“Found“ + numPs + “p 's in the string.”);
}
}
Chọn đáp án A
Câu 41:
class ContinueDemo {
public static void main(String[] args) {
String searchMe = “peter piper picked a peck of pickled pepers”;
int max = searchMe.length();
int numPs = 0;
for (int i = 0; i < max; i++) {
if (searchMe.charAt(i) != 'p') continue;
numPs++;
}
System.out.println(“Found“ + numPs + “p 's in the string.”);
}
}
Chọn đáp án B
Câu 42:
Chọn đáp án C
Câu 43:
Chọn đáp án A
Câu 44:
Chọn đáp án B
Câu 46:
Chọn đáp án A
Câu 47:
StringBuffer s = new StringBuffer("hello how are you?");
int x = s.charAt(6);
System.out.println(x);
Chọn đáp án B. Vì: s.charAt(6) truy xuất phần tử thứ 7 là kí tự 0, trong mã asscii thì kí tự 0 là 104
Câu 48:
Chọn đáp án A. Vì: Trong đáp án B default là từ khóa dùng trong lệnh switch chứ không phải là một từ khóa truy xuất.
Trong đáp án C, D không thể mức truy xuất private hoặc protected cho thuộc tính cúng như phương thức. Trong khai báo interface có thể không khai báo gì.