wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

OOP Fundamentals: Definitions and Characteristics

Total questions: 125

Worksheet time: 1hrs 3mins

Name
Class
Date
1.

Trong C#, array là gì?

a)

Kiểu dữ liệu

b)

Đối tượng

c)

Lớp

d)

Biến

2.

Khi khai báo lớp trong ngôn ngữ lập trình hướng đối tượng phải sử dụng từ khóa nào?

a)

record

b)

struct

c)

class

d)

object

3.

Lập trình hướng đối tượng trong C# cho phép kế thừa từ

a)

chỉ một Interface, nhiều lớp

b)

nhiều Interface, nhiều lớp

c)

chỉ một Interface, chỉ một lớp

d)

nhiều Interface, chỉ một lớp

4.

Muốn lập trình hướng đối tượng, bạn cần phân tích chương trình thành

a)

hàm, thủ tục

b)

đối tượng, từ đó xây dựng các lớp đối tượng tương ứng

c)

thông điệp

d)

module

5.

Phương án mô tả tính đa hình là

a)

Lớp Điểm, Hình tròn cùng có hàm tạo, hàm hủy

b)

Các lớp Điểm, Hình tròn, Hình vuông, Hình chữ nhật đều có phương thức Vẽ

c)

Lớp Hình vuông kế thừa lớp Hình chữ nhật

d)

Lớp Hình tròn kế thừa lớp Điểm

6.

Thuộc tính của lớp là

a)

liên quan tới những thứ mà đối tượng có thể làm

b)

dữ liệu trình bày các đặc điểm của một đối tượng

c)

hành vi của đối tượng

d)

những chức năng của đối tượng

7.

Hàm hủy là

a)

hàm kết thúc chương trình

b)

hàm dùng để huỷ (giải phóng) bộ nhớ cho các thành phần thuộc tính bên trong lớp

c)

hàm dùng để giải phóng toàn bộ các biến của chương trình

d)

hàm dùng để khởi tạo giá trị ban đầu cho các thành phần thuộc tính bên trong lớp

8.

Hàm tạo là

a)

hàm dùng để khởi tạo bộ nhớ cho đối tượng của lớp

b)

hàm thành viên của lớp dùng để khởi tạo bộ nhớ và giá trị ban đầu cho các thuộc tính trong lớp

c)

hàm nằm bên ngoài lớp dùng để khởi tạo bộ nhớ cho đối tượng

d)

dùng để huỷ bộ nhớ cho đối tượng

9.

Trong kế thừa, lớp cha có thuật ngữ tiếng Anh là

a)

Inheritance Class

b)

Derived Class

c)

Object Class

d)

Base Class

10.

Trong kế thừa, lớp mới có thuật ngữ tiếng Anh là

a)

Derived Class

b)

Object Class

c)

Inheritance Class

d)

Base Class

11.

Khi khai báo thành phần thuộc tính và phương thức của lớp mà không ghi private, public hay protected thì mặc định là

a)

protected

b)

Chương trình sẽ lỗi và yêu cầu phải khai báo

c)

private

d)

public

12.

Tính đa hình là

a)

Polymorphism

b)

Inheritance

c)

Encapsulation

d)

Abstraction

13.

Sự thừa kế là

a)

Abstraction

b)

Polymorphism

c)

Encapsulation

d)

Inheritance

14.

Sự trừu tượng là

a)

Abstraction

b)

Encapsulation

c)

Polymorphism

d)

Inheritance

15.

OOP là viết tắt của

a)

Open Object Programming

b)

Object Oriented Processing

c)

Object Oriented Programming

d)

Object Open Programming

16.

Trong UML, người ta biểu diễn class bằng một hộp gồm

a)

4 ngăn

b)

3 ngăn

c)

2 ngăn

d)

1 ngăn

17.

Trong một chương trình có thể xây dựng tối đa bao nhiêu lớp

a)

1 lớp

b)

2 lớp

c)

nhiều lớp, tuỳ vào nhu cầu

d)

10 lớp

18.

Trong kế thừa có thể kế thừa tối đa

a)

1 mức

b)

3 mức

c)

vô số mức

d)

2 mức

19.

Một lớp có thể có tối đa

a)

3 phương thức ảo

b)

1 phương thức ảo

c)

vô số phương thức ảo

d)

2 phương thức ảo

20.

Trong đa kế thừa có thể kế thừa tối đa

a)

vô số lớp

b)

2 lớp

c)

1 lớp

d)

3 lớp

21.

Trong một lớp có thể

a)

chỉ có thể chứa 1 hàm huỷ

b)

có thể chứa được ba hàm huỷ

c)

tối đa hai hàm huỷ

d)

có thể chứa vô số hàm huỷ tuỳ theo bộ nhớ

22.

Khi khai báo và xây dựng một lớp ta cần phải xác định rõ thành phần

a)

khái niệm và đối tượng của lớp

b)

phương thức và đối tượng của lớp

c)

dữ liệu và đối tượng của lớp

d)

thuộc tính (dữ liệu) và phương thức (hành vi) của lớp

23.

Hàm huỷ trong ngôn ngữ C# có cú pháp

a)

Destructor Tên_hàm() { //nội dung }

b)

Tên_lớp() { //nội dung }

c)

~Tên_lớp()

d)

Done() { //nội dung }

24.

Đặc điểm cơ bản của lập trình hướng đối tượng thể hiện ở

a)

Tính đóng gói, tính kế thừa, tính đa hình, tính trừu tượng

b)

Tính đóng gói, tính kế thừa, tính đa hình, tính đặc biệt hoá

c)

Tính chia nhỏ, tính kế thừa

d)

Tính đóng gói, tính trừu tượng

25.

Trong lập trình hướng đối tượng khả năng các hàm có thể trùng tên nhau gọi là gì?

a)

Không được phép xây dựng các hàm trùng tên nhau

b)

Sự ghi đè (override) nhưng chỉ các hàm thông thường

c)

Sự ghi đè (override)

d)

Sự ghi đè (override) nhưng chỉ những hàm thành viên

26.

Khi khai báo và xây dựng thành công lớp đối tượng, để truy cập vào thành phần của lớp ta phải

a)

chỉ có thể truy cập thông qua tên đối tượng của lớp

b)

truy cập thông qua tên lớp hay tên đối tượng của lớp

c)

không thể truy cập được

d)

chỉ có thể truy cập thông qua tên lớp

27.

Phương thức là

a)

những chức năng của đối tượng

b)

hành vi mà đối tượng có thể làm, đáp ứng một chức năng tác động lên dữ liệu của đối tượng

c)

đặc điểm của đối tượng

d)

dữ liệu trình bày các đặc điểm của một đối tượng

28.

Trừu tượng hoá là

a)

phương pháp thay thế chi tiết chính bằng chi tiết tương tự

b)

phương pháp thay thế 1 thuộc tính bằng 1 thuộc tính khác

c)

phương pháp chỉ quan tâm đến những chi tiết cần thiết (chi tiết chính) và bỏ qua những chi tiết không cần thiết

d)

phương pháp quan tâm đến mọi chi tiết của đối tượng

29.

Từ khoá nào sau đây được dùng khi lớp con muốn cài lại phương thức được thừa kế từ lớp cha

a)

override

b)

virtual

c)

abstract

d)

new

30.

Trong C#, ......... không được cài đặt phần thân của

a)

phương thức

b)

class

c)

struct

d)

phương thức trừu tượng (được khai báo với từ khoá abstract)

31.

Trong C#, constructor là gì trong vòng đời của một đối tượng?

a)

Thuộc tính mô tả giao diện lớp

b)

Trường dữ liệu lưu cấu hình mặc định

c)

Phương thức hủy giải phóng bộ nhớ tự động

d)

Phương thức tạo đối tượng và khởi tạo trạng thái

32.

Đặc điểm tên gọi của constructor trong C# là gì?

a)

Trùng tên lớp và không có kiểu trả về

b)

Khác tên lớp nhưng có kiểu trả về

c)

Trùng tên lớp và trả về bool

d)

Khác tên lớp và không có tham số

33.

Destructor trong C# được dùng để làm gì?

a)

Đổi phạm vi truy cập của thuộc tính

b)

Nạp chồng phương thức với tham số

c)

Khởi tạo trường dữ liệu mặc định

d)

Giải phóng tài nguyên không quản lý

34.

Cú pháp định nghĩa destructor trong C# là gì (với lớp Foo)?

a)

~Foo() không tham số

b)

public ~Foo() có trả về

c)

~Foo() có từ khóa override

d)

~Foo(int x) có tham số

35.

Tuyên bố nào đúng về thời điểm gọi destructor trong C#?

a)

Người lập trình tự gọi trực tiếp

b)

Được gọi ngay khi ra khỏi scope

c)

Do GC gọi không xác định thời điểm

d)

Được gọi theo thứ tự FIFO cố định

36.

Nạp chồng phương thức (method overloading) là gì?

a)

Định nghĩa nhiều phương thức cùng tên khác chữ ký

b)

Ghi đè phương thức ảo của lớp cha

c)

Tạo phương thức tĩnh thay cho hàm toàn cục

d)

Ẩn phương thức lớp cha bằng new

37.

Chữ ký phương thức trong C# bao gồm thành phần nào?

a)

Tên và kiểu trả về

b)

Tên, thuộc tính và sự kiện

c)

Tên, phạm vi truy cập

d)

Tên, số và kiểu tham số

38.

Tuyên bố nào là hợp lệ cho hai phương thức nạp chồng?

a)

Khác kiểu trả về duy nhất

b)

Khác phạm vi truy cập duy nhất

c)

Khác từ khóa static duy nhất

d)

Khác số lượng hoặc kiểu tham số

39.

Constructor mặc định (parameterless) được cấp khi nào?

a)

Khi có ít nhất một destructor

b)

Khi không khai báo constructor nào

c)

Khi lớp có phương thức ảo

d)

Khi lớp có thuộc tính static

40.

Đâu là cách gọi constructor khác nhau thông qua nạp chồng?

a)

Tạo A.Constructor(), A.Build()

b)

Tạo new A(), new A(int)

c)

Gọi ~A(), gọi ~A(int)

d)

Gọi A.init(), A.start()

41.

Từ khóa this() trong constructor dùng để làm gì?

a)

Truy cập trường tĩnh của lớp cha

b)

Tạo một đối tượng mới tạm thời

c)

Gọi một constructor khác của cùng lớp

d)

Chỉ định tham chiếu đến đối tượng bất kỳ

42.

Từ khóa base() trong constructor dùng để làm gì?

a)

Đăng ký sự kiện kế thừa

b)

Tạo thuộc tính tự động

c)

Gọi destructor của lớp cơ sở

d)

Gọi constructor của lớp cơ sở

43.

Trong C#, có thể nạp chồng constructor không?

a)

Chỉ với tham số mặc định

b)

Chỉ với từ khóa override

c)

Không, chỉ có một constructor

d)

Có, theo số và kiểu tham số

44.

Đâu là lý do hợp lý để nạp chồng phương thức?

a)

Tăng quyền truy cập của phương thức

b)

Cung cấp cách gọi linh hoạt cho dữ liệu khác nhau

c)

Giảm kích thước tệp thực thi

d)

Tránh sử dụng lớp trừu tượng

45.

Câu nào sai về destructor trong C#?

a)

Không có kiểu truy cập hiển thị

b)

Được biên dịch thành Finalize

c)

Có thể có tham số và nạp chồng

d)

Không thể gọi tường minh từ mã người dùng

46.

Khi nào nên định nghĩa destructor thủ công?

a)

Khi chỉ dùng bộ nhớ quản lý

b)

Khi chỉ có trường giá trị nhỏ

c)

Khi quản lý tài nguyên không quản lý

d)

Khi lớp chỉ chứa auto-properties

47.

Điều gì xảy ra nếu chỉ thay đổi kiểu trả về khi khai báo trùng tên phương thức?

a)

Tạo phương thức ẩn danh

b)

Không tạo nạp chồng hợp lệ

c)

Tạo nạp chồng hợp lệ

d)

Tạo ghi đè phương thức

48.

Trong thiết kế API C#, cách nào giúp tránh mơ hồ khi nạp chồng?

a)

Dùng tham số mặc định có tên rõ ràng

b)

Giảm số phương thức ảo không liên quan

c)

Tăng số trường private bổ sung

d)

Luôn khai báo tất cả phương thức static

49.

Trong kế thừa đa cấp, lớp Derived2 kế thừa lớp nào khi chuỗi là Base -> Derived1 -> Derived2?

a)

Không lớp nào

b)

Chỉ Derived1

c)

Chỉ Base

d)

Base và Derived1

50.

Mục tiêu chính của phương thức ảo (virtual) trong lập trình hướng đối tượng là gì?

a)

Cho phép truy cập thuộc tính bảo mật

b)

Cho phép nạp chồng tên phương thức

c)

Cho phép ghi đè hành vi ở lớp con

d)

Cho phép tạo đối tượng không cần khởi tạo

51.

Từ khóa nào dùng để ghi đè một virtual method ở lớp dẫn xuất trong C#?

a)

sealed

b)

virtual

c)

new

d)

override

52.

Khai báo nào tạo thành viên tĩnh hợp lệ trong lớp C#?

a)

const static Count;

b)

int static Count;

c)

static property Count;

d)

static int Count;

53.

Ưu điểm của thành viên tĩnh so với thành viên thể hiện là gì?

a)

Tự động đa hình không cần virtual

b)

Tăng tốc mọi lời gọi phương thức

c)

Tiết kiệm bộ nhớ chia sẻ trạng thái chung

d)

Bỏ qua kiểm soát phạm vi truy cập

54.

Điều gì xảy ra khi gọi phương thức ảo thông qua biến kiểu Base trỏ tới đối tượng Derived?

a)

Ngẫu nhiên chọn phiên bản

b)

Luôn gọi phiên bản của Derived

c)

Gây lỗi biên dịch

d)

Luôn gọi phiên bản của Base

55.

Khái niệm “ẩn phương thức” trong lớp con dùng từ khóa new dẫn đến hệ quả nào?

a)

Bắt buộc khai báo sealed

b)

Ràng buộc tĩnh theo kiểu tham chiếu

c)

Tăng tính đóng gói của lớp

d)

Ràng buộc động theo kiểu đối tượng

56.

Trong thiết kế hệ thống, khi nào nên dùng lớp cơ sở trừu tượng thay vì lớp cơ sở cụ thể?

a)

Khi tránh mọi ghi đè phương thức

b)

Khi chỉ muốn xác định giao diện chung

c)

Khi muốn tạo thể hiện trực tiếp

d)

Khi không cần kế thừa nữa

57.

Trong sơ đồ nhiều cấp, phương thức được đánh dấu sealed override ở lớp trung gian cho phép điều gì ở lớp con cuối?

a)

Chỉ nạp chồng phương thức

b)

Chỉ override thuộc tính

c)

Không thể override nữa

d)

Tiếp tục override bình thường

58.

Biến đếm số đối tượng đã tạo thường nên khai báo thế nào để hiệu quả và an toàn?

a)

public static int

b)

private static int

c)

protected int

d)

internal readonly int

59.

Trong C#, một property tĩnh (static property) dùng để làm gì?

a)

Cung cấp trạng thái chung toàn lớp

b)

Tạo đối tượng mới khi truy cập

c)

Lưu trữ dữ liệu riêng từng đối tượng

d)

Ngăn mọi kế thừa lớp

60.

Giả sử Base có virtual Print(), Derived1 override Print(), Derived2 không override. Gọi Print() trên đối tượng Derived2 thông qua biến kiểu Base sẽ in phiên bản nào?

a)

Derived1.Print

b)

Derived2.Print

c)

Base.Print

d)

Không in gì

61.

Trong đa hình runtime, điều kiện tối thiểu để ghi đè hợp lệ ở C# là gì?

a)

Tên giống nhau, tham số khác nhau

b)

Khai báo static ở base, new ở derived

c)

Tên khác nhau, trả về giống nhau

d)

Khai báo virtual ở base, override ở derived

62.

Static constructor có đặc điểm nào sau đây?

a)

Thực thi trên từng đối tượng

b)

Tự chạy một lần khi nạp lớp

c)

Gọi thủ công nhiều lần

d)

Có tham số tùy chọn

63.

Trong mô hình đa cấp, cách nào đảm bảo lớp cơ sở luôn khởi tạo đúng trước lớp con?

a)

Gọi base() trong constructor dẫn xuất

b)

Đặt mọi trường là static

c)

Ẩn toàn bộ phương thức

d)

Sử dụng từ khóa sealed

64.

Khi nào nên tránh dùng thành viên tĩnh?

a)

Khi cần đếm số thể hiện

b)

Khi cần cấu hình toàn cục

c)

Khi cần kiểm thử song song độc lập

d)

Khi cần trạng thái chung bất biến

65.

Một hệ phân cấp có Base.Calculate() virtual, DerivedA và DerivedB override khác nhau. Mục tiêu thiết kế phù hợp nhất là gì?

a)

Ngăn mọi mở rộng về hành vi

b)

Tách thay đổi theo nguyên tắc Liskov

c)

Giảm chi phí tạo đối tượng

d)

Ép ràng buộc kiểu tại biên dịch

66.

Trong mô hình hóa lớp, đặc trưng nào mô tả đúng trừu tượng hóa dữ liệu?

a)

Mở toàn bộ thuộc tính để lớp khác sử dụng tự do

b)

Ẩn chi tiết triển khai và phơi bày giao diện cần thiết

c)

Chỉ định rõ kiểu dữ liệu cụ thể cho mọi thuộc tính

d)

Gom các hàm công khai và giấu mọi dữ liệu và hàm

67.

Khi mô hình hóa thực thể SinhVien và LopHoc, mối quan hệ nào phù hợp nhất nếu một sinh viên chỉ thuộc về một lớp chủ nhiệm?

a)

SinhVien–LopHoc là kết hợp một-nhiều từ lớp sang sinh viên

b)

SinhVien–LopHoc là kết hợp nhiều-nhiều giữa cả hai lớp

c)

SinhVien kế thừa LopHoc vì chia sẻ cùng danh tính

d)

SinhVien chứa LopHoc như một thành phần bắt buộc

68.

Trong phân loại tổng quát–chuyên biệt (generalization–specialization), phát biểu nào đúng?

a)

Lớp cha chỉ chứa các phương thức tĩnh duy nhất

b)

Lớp con và lớp cha có quan hệ kết hợp bắt buộc

c)

Lớp cha phụ thuộc vòng đời vào lớp con

d)

Lớp con kế thừa thuộc tính chung từ lớp cha

69.

Quan hệ toàn thể–thành phần (composition) khác aggregation ở điểm nào?

a)

Cả hai đều cho phép tái sử dụng vòng đời giống nhau

b)

Thành phần tồn tại độc lập hoàn toàn

c)

Thành phần bị hủy khi toàn thể bị hủy

d)

Toàn thể không kiểm soát vòng đời thành phần

70.

Khi thiết kế lớp TaiKhoanNganHang, thuộc tính nào nên được triển khai dưới dạng private với getter công khai?

a)

SoDu để kiểm soát cập nhật thông qua phương thức

b)

LoaiTaiKhoan để người dùng ghi trực tiếp tùy ý

c)

MaKhachHang để sửa trực tiếp từ lớp bên ngoài

d)

NgayMoTaiKhoan để thay đổi tùy mọi đối tượng

71.

Trong mô hình hóa, 'vai trò' của lớp trong một quan hệ kết hợp được dùng để làm gì?

a)

Tối ưu hóa hiệu năng truy vấn cơ sở dữ liệu

b)

Xác định kiểu dữ liệu của thuộc tính lớp

c)

Diễn tả ý nghĩa của mỗi đầu mối liên kết

d)

Thay thế hoàn toàn sự cần thiết của ràng buộc

72.

Bội số 0..* ở đầu quan hệ biểu thị điều gì?

a)

Có thể có không hoặc nhiều thể hiện liên kết

b)

Luôn có ít nhất một thể hiện liên kết

c)

Chỉ có tối đa một thể hiện liên kết

d)

Bắt buộc đúng hai thể hiện liên kết

73.

Trường hợp nào sau đây phù hợp với quan hệ 'uses' (dependency) giữa lớp?

a)

Lớp BanhXe thuộc thành phần bắt buộc của Xe

b)

Lớp DongCo bị hủy khi XeBiHuy hủy

c)

Lớp HoaDon nhận đối tượng GiamGia làm tham số tạm thời

d)

Lớp Chim là kiểu con của DongVat

74.

Khi trừu tượng hóa chức năng của hệ thống thư viện, đâu là lớp ứng viên hợp lý?

a)

PhanCungMayChu để mô tả server

b)

SoDienThoai để lưu số người đọc

c)

MauInGiay để trình bày biên nhận

d)

MuonSach với các thao tác tạo phiếu mượn

75.

Trong thiết kế, chọn thuộc tính nào nên là derived (tính toán)?

a)

TongTien = sum(DongHang.soTien) của DonHang

b)

MaDonHang được nhập thủ công từ người dùng

c)

TrangThai được đặt thủ công từng bước

d)

NgayTao do nhân viên điền bằng tay

76.

Để tránh trùng lặp khi nhiều lớp chia sẻ hành vi, kỹ thuật nào phù hợp nhất?

a)

Kéo hành vi chung lên lớp cha trừu tượng

b)

Nhân bản phương thức giống nhau ở mọi lớp

c)

Thêm thuộc tính tĩnh lưu mọi hành vi chung

d)

Dùng quan hệ composition cho toàn bộ hành vi

77.

Một lớp 'NguoiDung' có thuộc tính matKhau. Cách đóng gói an toàn nhất là gì?

a)

Lưu hash và cung cấp phương thức xác thực

b)

Công khai getter trả về chuỗi mật khẩu thô

c)

Cho phép setter công khai không ràng buộc

d)

Lưu mật khẩu ở thuộc tính tĩnh dùng chung

78.

Khi nào nên mô hình hóa giao diện (interface) thay vì lớp cha cụ thể?

a)

Khi muốn ngăn chặn đa kế thừa kiểu hành vi

b)

Khi chỉ cần cam kết hành vi không có trạng thái

c)

Khi cần chia sẻ thuộc tính dữ liệu chung cố định

d)

Khi cần quản lý vòng đời thành phần bắt buộc

79.

Chọn cặp minh họa đúng về tổng quát–chuyên biệt trong miền giao thông.

a)

BanhXe là cha của XeMay và TauHoa

b)

PhuongTien là cha của XeDap và OTo

c)

LaiXe là cha của XeBuyt và XeTai

d)

DongCo là cha của XeTai và XeDap

80.

Trong mô hình hóa quan hệ giữa DonHang và KhachHang, phát biểu nào hợp lý?

a)

Đơn hàng tồn tại độc lập không cần khách

b)

Mỗi đơn hàng thuộc về nhiều khách hàng

c)

Khách hàng bị hủy khi đơn hàng bị xóa

d)

Một khách hàng có thể có nhiều đơn hàng

81.

Trong C#, từ khóa nào dùng để ghi đè phương thức ảo của lớp cơ sở?

a)

overload

b)

override

c)

sealed

d)

virtual

82.

Mục đích chính của interface trong C# là gì?

a)

Định nghĩa hợp đồng hành vi

b)

Cung cấp bộ nhớ dữ liệu

c)

Thay thế kế thừa đa lớp

d)

Tối ưu hóa bộ gom rác

83.

Cặp từ khóa dùng để khai báo thuộc tính với bộ truy cập trong C# là gì?

a)

get và set

b)

read và write

c)

in và out

d)

open và close

84.

Khối finally trong try-catch-finally đảm nhiệm vai trò nào?

a)

Xác định kiểu dữ liệu động

b)

Tối ưu hiệu năng vòng lặp

c)

Bắt mọi ngoại lệ không rõ

d)

Giải phóng tài nguyên luôn luôn

85.

Ngoại lệ nào phát sinh khi chia một số cho 0 trong C#?

a)

IndexOutOfRangeException

b)

FormatException

c)

OverflowException

d)

DivideByZeroException

86.

Khi nào nên dùng từ khóa sealed trên lớp hoặc phương thức?

a)

Khi muốn ngăn kế thừa thêm

b)

Khi muốn cho phép đa kế thừa

c)

Khi muốn tự động ép kiểu

d)

Khi muốn bật unsafe code

87.

Trong C#, thuộc tính auto-implemented được khai báo như thế nào?

a)

public int Age();

b)

public int Age { get; set; }

c)

int get Age();

d)

property Age int;

88.

Ý nghĩa chính xác của từ khóa virtual là gì?

a)

Cho phép lớp dẫn xuất ghi đè

b)

Tạo đối tượng không khởi tạo

c)

Ngăn ghi đè ở dẫn xuất

d)

Bắt buộc ghi đè ở dẫn xuất

89.

Khối catch nên bắt kiểu nào để đảm bảo chuyên biệt và an toàn?

a)

Kiểu ngoại lệ cụ thể

b)

Mọi đối tượng object

c)

Kiểu string thông báo

d)

Kiểu dynamic bất kỳ

90.

Trong interface C#, phần nào được phép xuất hiện?

a)

Khối lệnh static phức tạp

b)

Khai báo phương thức không thân

c)

Trường dữ liệu khởi tạo sẵn

d)

Hàm khởi tạo có tham số

91.

Khi chuyển đổi chuỗi 'abc' sang int bằng int.Parse, ngoại lệ phù hợp là gì?

a)

ArgumentNullException

b)

OverflowException

c)

InvalidCastException

d)

FormatException

92.

Lựa chọn mô tả đúng về try-catch-finally:

a)

catch giải phóng, try biên dịch

b)

try xử lý lỗi, catch dọn dẹp

c)

catch xử lý lỗi, finally dọn dẹp

d)

finally bắt lỗi, try chạy lại

93.

Đoạn mã nào minh họa override hợp lệ?

a)

public override string ToString()

b)

public overload string ToString()

c)

public sealed string ToString()

d)

public static string ToString()

94.

Với mảng có 3 phần tử, truy cập arr[5] gây ra ngoại lệ nào?

a)

TimeoutException

b)

ArgumentException

c)

NullReferenceException

d)

IndexOutOfRangeException

95.

Khác biệt cốt lõi giữa abstract class và interface trong C# là gì?

a)

Interface chứa trường riêng tư

b)

Interface hỗ trợ kế thừa đa lớp

c)

Abstract có thể chứa trạng thái

d)

Abstract không thể có phương thức

96.

Trong .NET, vai trò chính của Common Language Runtime (CLR) là gì?

a)

Quản lý bộ nhớ và thực thi mã an toàn

b)

Lưu trữ cơ sở dữ liệu quan hệ nội bộ

c)

C biên dịch mã nguồn sang Java bytecode

d)

Chỉ cung cấp thư viện giao diện đồ họa

97.

Biến cục bộ trong C# có đặc điểm nào đúng nhất?

a)

Phạm vi trong khối mã hiện tại

b)

Tồn tại suốt vòng đời ứng dụng

c)

Tự động lưu trong cơ sở dữ liệu

d)

Truy cập từ mọi lớp khác nhau

98.

Khi một phương thức trong C# không gán giá trị cho biến cục bộ trước khi dùng, điều gì xảy ra?

a)

Báo lỗi biên dịch do chưa khởi tạo

b)

Tự gán giá trị null mặc định

c)

Chỉ cảnh báo và vẫn biên dịch

d)

Tự gán giá trị 0 cho số nguyên

99.

Kết quả của biểu thức chuỗi: "CLR" + " " + "Runtime" là gì?

a)

"CLR Runtime"

b)

"CLR+Runtime"

c)

"Runtime CLR"

d)

"CLR Runtime "

100.

Trong C#, toán tử ba ngôi condition ? a : b được dùng để làm gì?

a)

Khởi tạo mảng đa chiều nhanh

b)

Ép kiểu đối tượng đa hình

c)

Bắt ngoại lệ và ghi log

d)

Rút gọn câu lệnh if-else đơn giản

101.

Phương thức chuỗi nào trả về độ dài của chuỗi hiện tại?

a)

Hàm Count() của System.String

b)

Phương thức Size() của string

c)

Thuộc tính Capacity của string

d)

Thuộc tính Length của string

102.

Trong điều khiển logic, vòng lặp for phù hợp nhất khi nào?

a)

Cần chờ sự kiện hệ điều hành

b)

Cần duyệt vô hạn không điều kiện

c)

Biết rõ số lần lặp ngay từ đầu

d)

Cần bảo toàn ngăn xếp cuộc gọi

103.

Từ khóa nào cho phép thoát sớm khỏi vòng lặp trong C#?

a)

exit

b)

stop

c)

skip

d)

break

104.

Với câu lệnh if (x == 0) y = 1; else y = 2;, cách viết rút gọn hợp lệ là gì?

a)

y := (x == 0) ? 1 : 2;

b)

y = (x == 0) ? 1 : 2;

c)

y = x = 0 ? 1 : 2;

d)

y == (x == 0) ? 1 : 2;

105.

Trong C#, phương thức string.ToUpper() làm gì?

a)

Trả về chuỗi in hoa mới

b)

Sửa chuỗi gốc thành in hoa

c)

Chuyển chuỗi thành số nguyên

d)

Loại bỏ khoảng trắng hai đầu

106.

Điều gì đúng về chuỗi trong .NET?

a)

Luôn được lưu trong stack của thread

b)

Bất biến, mọi chỉnh sửa tạo chuỗi mới

c)

Biến đổi được, sửa tại chỗ tiết kiệm bộ nhớ

d)

Chỉ hỗ trợ bảng mã ASCII 1 byte

107.

Khi dùng try-catch trong môi trường CLR, mục đích chính là gì?

a)

Tạo bộ gom rác thế hệ mới

b)

Nạp thư viện không quản lý tự động

c)

Tăng tốc trình biên dịch JIT tối đa

d)

Xử lý ngoại lệ khi thực thi mã quản lý

108.

Câu lệnh nào tạo biến cục bộ và khởi tạo ngay trong C#?

a)

int n; n auto;

b)

let n: int = 10;

c)

int n = 10;

d)

var int n = 10;

109.

Giả sử int a = 3; int b = 5; string s = $"{a + b}"; Giá trị của s là gì?

a)

"3+5"

b)

"a + b"

c)

"35"

d)

"8"

110.

Trong C#, từ khóa ref dùng để làm gì khi truyền tham số vào phương thức?

a)

Chỉ cho phép truyền giá trị một chiều vào

b)

Buộc tạo bản sao chỉ đọc của đối số

c)

Chuyển đổi kiểu dữ liệu tự động khi gọi

d)

Cho phép truyền tham chiếu đọc ghi của biến

111.

Trong C#, từ khóa out khác ref ở điểm nào?

a)

Bắt buộc gán lại trong phương thức gọi

b)

Không thể trả dữ liệu về cho người gọi

c)

Chỉ dùng cho kiểu tham chiếu phức tạp

d)

Không cần khởi tạo biến trước khi truyền

112.

Điều kiện bắt buộc khi dùng tham số ref là gì?

a)

Biến phải là hằng số compile time

b)

Biến phải được khởi tạo trước khi truyền

c)

Biến phải là kiểu nullable đặc biệt

d)

Biến không được thay đổi trong hàm

113.

Trong C#, tham số out yêu cầu điều gì bên trong phương thức được gọi?

a)

Phải gán giá trị trước khi trả về

b)

Không được phép gán lại nhiều lần

c)

Chỉ được đọc, không được ghi

d)

Phải cùng tên với biến gọi

114.

Đoạn mã: public override void A1(){ base.A1(); } trong lớp dẫn xuất thể hiện điều gì?

a)

Gọi phương thức cơ sở đã được ghi đè

b)

Gọi constructor mặc định của cơ sở

c)

Ẩn phương thức cơ sở bằng new

d)

Gọi tĩnh phương thức không kế thừa

115.

Đoạn mã: public override void A1(){ Class1.A1(); } thể hiện điều nào sau đây?

a)

Cách gọi sai thành viên cơ sở qua tên lớp

b)

Cách gọi đúng thành viên cơ sở qua base

c)

Cách gọi constructor cơ sở từ dẫn xuất

d)

Cách gọi interface method qua đối tượng

116.

Trong thừa kế C#, gọi constructor lớp cơ sở đúng cú pháp là gì?

a)

public Derived(): base(args)

b)

public Derived(): ClassBase(args)

c)

public Derived(): this(args)

d)

public Derived(): override(args)

117.

Đoạn mã: public VUONG(double canh) : CHUNHAT(canh, canh) có vấn đề gì?

a)

Không thể gọi base trong sealed

b)

Sai số lượng tham số truyền vào

c)

Sai cú pháp gọi constructor cơ sở

d)

Gọi lặp lại constructor chính

118.

Khi khai báo thuộc tính trong class, thêm public trước thuộc tính có ý nghĩa gì?

a)

Chỉ cho phép truy cập bởi lớp dẫn xuất

b)

Chỉ cho phép truy cập trong assembly

c)

Chỉ cho phép truy cập trong lớp

d)

Không giới hạn quyền truy cập từ ngoài

119.

Từ khóa protected cho thuộc tính cho phép gì?

a)

Chỉ truy cập trong chính phương thức

b)

Truy cập trong lớp và lớp kế thừa

c)

Truy cập từ mọi nơi mọi dự án

d)

Chỉ truy cập trong cùng project

120.

Từ khóa internal giới hạn truy cập như thế nào?

a)

Từ bất kỳ module nào của hệ thống

b)

Chỉ từ lớp kế thừa trực tiếp

c)

Trong cùng project/assembly hiện hành

d)

Chỉ trong cùng lớp hiện thời

121.

Trong interface của C#, có thể dùng từ khóa public trước phương thức không?

a)

Dùng public nếu interface nội bộ

b)

Không cần và không được dùng public

c)

Chỉ dùng public khi có thuộc tính

d)

Phải dùng public cho mọi phương thức

122.

Về tính phân biệt hoa thường (case sensitivity) của C#, nhận định nào đúng?

a)

Chỉ tên lớp mới phân biệt chữ

b)

Chỉ biến cục bộ phân biệt chữ hoa

c)

Tên MethodA và methoda là như nhau

d)

Tên MethodA khác methoda hoàn toàn

123.

Ưu điểm nào thuộc về OOP trong thiết kế phần mềm?

a)

Không cần thiết kế kiến trúc tổng thể

b)

Bảo đảm hiệu năng cao cho mọi bài

c)

Loại bỏ hoàn toàn lỗi thời gian chạy

d)

Tái sử dụng thông qua kế thừa đa dạng

124.

Khi truyền tham số kiểu giá trị không dùng ref/out, điều nào xảy ra?

a)

Truyền theo giá trị, bản sao được tạo

b)

Thay đổi trong hàm làm đổi biến gốc

c)

Truyền theo tham chiếu giống con trỏ

d)

Giá trị bị ép thành tham chiếu mới

125.

Với delegate trong C#, phát biểu nào đúng nhất?

a)

Là cấu trúc sao chép bộ nhớ vùng stack

b)

Là từ khóa dùng để tạo namespace

c)

Là thuộc tính lưu trữ hằng số biên dịch

d)

Là kiểu tham chiếu đại diện cho phương thức