Font size
WorksheetsOOP Fundamentals: Definitions and Characteristics
Total questions: 125
Worksheet time: 1hrs 3mins
Trong C#, array là gì?
Kiểu dữ liệu
Đối tượng
Lớp
Biến
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?
record
struct
class
object
Lập trình hướng đối tượng trong C# cho phép kế thừa từ
chỉ một Interface, nhiều lớp
nhiều Interface, nhiều lớp
chỉ một Interface, chỉ một lớp
nhiều Interface, chỉ một lớp
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
hàm, thủ tục
đối tượng, từ đó xây dựng các lớp đối tượng tương ứng
thông điệp
module
Phương án mô tả tính đa hình là
Lớp Điểm, Hình tròn cùng có hàm tạo, hàm hủy
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ẽ
Lớp Hình vuông kế thừa lớp Hình chữ nhật
Lớp Hình tròn kế thừa lớp Điểm
Thuộc tính của lớp là
liên quan tới những thứ mà đối tượng có thể làm
dữ liệu trình bày các đặc điểm của một đối tượng
hành vi của đối tượng
những chức năng của đối tượng
Hàm hủy là
hàm kết thúc chương trình
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
hàm dùng để giải phóng toàn bộ các biến của chương trình
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
Hàm tạo là
hàm dùng để khởi tạo bộ nhớ cho đối tượng của lớp
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
hàm nằm bên ngoài lớp dùng để khởi tạo bộ nhớ cho đối tượng
dùng để huỷ bộ nhớ cho đối tượng
Trong kế thừa, lớp cha có thuật ngữ tiếng Anh là
Inheritance Class
Derived Class
Object Class
Base Class
Trong kế thừa, lớp mới có thuật ngữ tiếng Anh là
Derived Class
Object Class
Inheritance Class
Base Class
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à
protected
Chương trình sẽ lỗi và yêu cầu phải khai báo
private
public
Tính đa hình là
Polymorphism
Inheritance
Encapsulation
Abstraction
Sự thừa kế là
Abstraction
Polymorphism
Encapsulation
Inheritance
Sự trừu tượng là
Abstraction
Encapsulation
Polymorphism
Inheritance
OOP là viết tắt của
Open Object Programming
Object Oriented Processing
Object Oriented Programming
Object Open Programming
Trong UML, người ta biểu diễn class bằng một hộp gồm
4 ngăn
3 ngăn
2 ngăn
1 ngăn
Trong một chương trình có thể xây dựng tối đa bao nhiêu lớp
1 lớp
2 lớp
nhiều lớp, tuỳ vào nhu cầu
10 lớp
Trong kế thừa có thể kế thừa tối đa
1 mức
3 mức
vô số mức
2 mức
Một lớp có thể có tối đa
3 phương thức ảo
1 phương thức ảo
vô số phương thức ảo
2 phương thức ảo
Trong đa kế thừa có thể kế thừa tối đa
vô số lớp
2 lớp
1 lớp
3 lớp
Trong một lớp có thể
chỉ có thể chứa 1 hàm huỷ
có thể chứa được ba hàm huỷ
tối đa hai hàm huỷ
có thể chứa vô số hàm huỷ tuỳ theo bộ nhớ
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
khái niệm và đối tượng của lớp
phương thức và đối tượng của lớp
dữ liệu và đối tượng của lớp
thuộc tính (dữ liệu) và phương thức (hành vi) của lớp
Hàm huỷ trong ngôn ngữ C# có cú pháp
Destructor Tên_hàm() { //nội dung }
Tên_lớp() { //nội dung }
~Tên_lớp()
Done() { //nội dung }
Đặc điểm cơ bản của lập trình hướng đối tượng thể hiện ở
Tính đóng gói, tính kế thừa, tính đa hình, tính trừu tượng
Tính đóng gói, tính kế thừa, tính đa hình, tính đặc biệt hoá
Tính chia nhỏ, tính kế thừa
Tính đóng gói, tính trừu tượng
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ì?
Không được phép xây dựng các hàm trùng tên nhau
Sự ghi đè (override) nhưng chỉ các hàm thông thường
Sự ghi đè (override)
Sự ghi đè (override) nhưng chỉ những hàm thành viên
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
chỉ có thể truy cập thông qua tên đối tượng của lớp
truy cập thông qua tên lớp hay tên đối tượng của lớp
không thể truy cập được
chỉ có thể truy cập thông qua tên lớp
Phương thức là
những chức năng của đối tượng
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 điểm của đối tượng
dữ liệu trình bày các đặc điểm của một đối tượng
Trừu tượng hoá là
phương pháp thay thế chi tiết chính bằng chi tiết tương tự
phương pháp thay thế 1 thuộc tính bằng 1 thuộc tính khá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
phương pháp quan tâm đến mọi chi tiết của đối tượng
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
override
virtual
abstract
new
Trong C#, ......... không được cài đặt phần thân của
phương thức
class
struct
phương thức trừu tượng (được khai báo với từ khoá abstract)
Trong C#, constructor là gì trong vòng đời của một đối tượng?
Thuộc tính mô tả giao diện lớp
Trường dữ liệu lưu cấu hình mặc định
Phương thức hủy giải phóng bộ nhớ tự động
Phương thức tạo đối tượng và khởi tạo trạng thái
Đặc điểm tên gọi của constructor trong C# là gì?
Trùng tên lớp và không có kiểu trả về
Khác tên lớp nhưng có kiểu trả về
Trùng tên lớp và trả về bool
Khác tên lớp và không có tham số
Destructor trong C# được dùng để làm gì?
Đổi phạm vi truy cập của thuộc tính
Nạp chồng phương thức với tham số
Khởi tạo trường dữ liệu mặc định
Giải phóng tài nguyên không quản lý
Cú pháp định nghĩa destructor trong C# là gì (với lớp Foo)?
~Foo() không tham số
public ~Foo() có trả về
~Foo() có từ khóa override
~Foo(int x) có tham số
Tuyên bố nào đúng về thời điểm gọi destructor trong C#?
Người lập trình tự gọi trực tiếp
Được gọi ngay khi ra khỏi scope
Do GC gọi không xác định thời điểm
Được gọi theo thứ tự FIFO cố định
Nạp chồng phương thức (method overloading) là gì?
Định nghĩa nhiều phương thức cùng tên khác chữ ký
Ghi đè phương thức ảo của lớp cha
Tạo phương thức tĩnh thay cho hàm toàn cục
Ẩn phương thức lớp cha bằng new
Chữ ký phương thức trong C# bao gồm thành phần nào?
Tên và kiểu trả về
Tên, thuộc tính và sự kiện
Tên, phạm vi truy cập
Tên, số và kiểu tham số
Tuyên bố nào là hợp lệ cho hai phương thức nạp chồng?
Khác kiểu trả về duy nhất
Khác phạm vi truy cập duy nhất
Khác từ khóa static duy nhất
Khác số lượng hoặc kiểu tham số
Constructor mặc định (parameterless) được cấp khi nào?
Khi có ít nhất một destructor
Khi không khai báo constructor nào
Khi lớp có phương thức ảo
Khi lớp có thuộc tính static
Đâu là cách gọi constructor khác nhau thông qua nạp chồng?
Tạo A.Constructor(), A.Build()
Tạo new A(), new A(int)
Gọi ~A(), gọi ~A(int)
Gọi A.init(), A.start()
Từ khóa this() trong constructor dùng để làm gì?
Truy cập trường tĩnh của lớp cha
Tạo một đối tượng mới tạm thời
Gọi một constructor khác của cùng lớp
Chỉ định tham chiếu đến đối tượng bất kỳ
Từ khóa base() trong constructor dùng để làm gì?
Đăng ký sự kiện kế thừa
Tạo thuộc tính tự động
Gọi destructor của lớp cơ sở
Gọi constructor của lớp cơ sở
Trong C#, có thể nạp chồng constructor không?
Chỉ với tham số mặc định
Chỉ với từ khóa override
Không, chỉ có một constructor
Có, theo số và kiểu tham số
Đâu là lý do hợp lý để nạp chồng phương thức?
Tăng quyền truy cập của phương thức
Cung cấp cách gọi linh hoạt cho dữ liệu khác nhau
Giảm kích thước tệp thực thi
Tránh sử dụng lớp trừu tượng
Câu nào sai về destructor trong C#?
Không có kiểu truy cập hiển thị
Được biên dịch thành Finalize
Có thể có tham số và nạp chồng
Không thể gọi tường minh từ mã người dùng
Khi nào nên định nghĩa destructor thủ công?
Khi chỉ dùng bộ nhớ quản lý
Khi chỉ có trường giá trị nhỏ
Khi quản lý tài nguyên không quản lý
Khi lớp chỉ chứa auto-properties
Đ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?
Tạo phương thức ẩn danh
Không tạo nạp chồng hợp lệ
Tạo nạp chồng hợp lệ
Tạo ghi đè phương thức
Trong thiết kế API C#, cách nào giúp tránh mơ hồ khi nạp chồng?
Dùng tham số mặc định có tên rõ ràng
Giảm số phương thức ảo không liên quan
Tăng số trường private bổ sung
Luôn khai báo tất cả phương thức static
Trong kế thừa đa cấp, lớp Derived2 kế thừa lớp nào khi chuỗi là Base -> Derived1 -> Derived2?
Không lớp nào
Chỉ Derived1
Chỉ Base
Base và Derived1
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ì?
Cho phép truy cập thuộc tính bảo mật
Cho phép nạp chồng tên phương thức
Cho phép ghi đè hành vi ở lớp con
Cho phép tạo đối tượng không cần khởi tạo
Từ khóa nào dùng để ghi đè một virtual method ở lớp dẫn xuất trong C#?
sealed
virtual
new
override
Khai báo nào tạo thành viên tĩnh hợp lệ trong lớp C#?
const static Count;
int static Count;
static property Count;
static int Count;
Ưu điểm của thành viên tĩnh so với thành viên thể hiện là gì?
Tự động đa hình không cần virtual
Tăng tốc mọi lời gọi phương thức
Tiết kiệm bộ nhớ chia sẻ trạng thái chung
Bỏ qua kiểm soát phạm vi truy cập
Đ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?
Ngẫu nhiên chọn phiên bản
Luôn gọi phiên bản của Derived
Gây lỗi biên dịch
Luôn gọi phiên bản của Base
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?
Bắt buộc khai báo sealed
Ràng buộc tĩnh theo kiểu tham chiếu
Tăng tính đóng gói của lớp
Ràng buộc động theo kiểu đối tượng
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ể?
Khi tránh mọi ghi đè phương thức
Khi chỉ muốn xác định giao diện chung
Khi muốn tạo thể hiện trực tiếp
Khi không cần kế thừa nữa
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?
Chỉ nạp chồng phương thức
Chỉ override thuộc tính
Không thể override nữa
Tiếp tục override bình thường
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?
public static int
private static int
protected int
internal readonly int
Trong C#, một property tĩnh (static property) dùng để làm gì?
Cung cấp trạng thái chung toàn lớp
Tạo đối tượng mới khi truy cập
Lưu trữ dữ liệu riêng từng đối tượng
Ngăn mọi kế thừa lớp
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?
Derived1.Print
Derived2.Print
Base.Print
Không in gì
Trong đa hình runtime, điều kiện tối thiểu để ghi đè hợp lệ ở C# là gì?
Tên giống nhau, tham số khác nhau
Khai báo static ở base, new ở derived
Tên khác nhau, trả về giống nhau
Khai báo virtual ở base, override ở derived
Static constructor có đặc điểm nào sau đây?
Thực thi trên từng đối tượng
Tự chạy một lần khi nạp lớp
Gọi thủ công nhiều lần
Có tham số tùy chọn
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?
Gọi base() trong constructor dẫn xuất
Đặt mọi trường là static
Ẩn toàn bộ phương thức
Sử dụng từ khóa sealed
Khi nào nên tránh dùng thành viên tĩnh?
Khi cần đếm số thể hiện
Khi cần cấu hình toàn cục
Khi cần kiểm thử song song độc lập
Khi cần trạng thái chung bất biến
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ì?
Ngăn mọi mở rộng về hành vi
Tách thay đổi theo nguyên tắc Liskov
Giảm chi phí tạo đối tượng
Ép ràng buộc kiểu tại biên dịch
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?
Mở toàn bộ thuộc tính để lớp khác sử dụng tự do
Ẩn chi tiết triển khai và phơi bày giao diện cần thiết
Chỉ định rõ kiểu dữ liệu cụ thể cho mọi thuộc tính
Gom các hàm công khai và giấu mọi dữ liệu và hàm
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?
SinhVien–LopHoc là kết hợp một-nhiều từ lớp sang sinh viên
SinhVien–LopHoc là kết hợp nhiều-nhiều giữa cả hai lớp
SinhVien kế thừa LopHoc vì chia sẻ cùng danh tính
SinhVien chứa LopHoc như một thành phần bắt buộc
Trong phân loại tổng quát–chuyên biệt (generalization–specialization), phát biểu nào đúng?
Lớp cha chỉ chứa các phương thức tĩnh duy nhất
Lớp con và lớp cha có quan hệ kết hợp bắt buộc
Lớp cha phụ thuộc vòng đời vào lớp con
Lớp con kế thừa thuộc tính chung từ lớp cha
Quan hệ toàn thể–thành phần (composition) khác aggregation ở điểm nào?
Cả hai đều cho phép tái sử dụng vòng đời giống nhau
Thành phần tồn tại độc lập hoàn toàn
Thành phần bị hủy khi toàn thể bị hủy
Toàn thể không kiểm soát vòng đời thành phần
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?
SoDu để kiểm soát cập nhật thông qua phương thức
LoaiTaiKhoan để người dùng ghi trực tiếp tùy ý
MaKhachHang để sửa trực tiếp từ lớp bên ngoài
NgayMoTaiKhoan để thay đổi tùy mọi đối tượng
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ì?
Tối ưu hóa hiệu năng truy vấn cơ sở dữ liệu
Xác định kiểu dữ liệu của thuộc tính lớp
Diễn tả ý nghĩa của mỗi đầu mối liên kết
Thay thế hoàn toàn sự cần thiết của ràng buộc
Bội số 0..* ở đầu quan hệ biểu thị điều gì?
Có thể có không hoặc nhiều thể hiện liên kết
Luôn có ít nhất một thể hiện liên kết
Chỉ có tối đa một thể hiện liên kết
Bắt buộc đúng hai thể hiện liên kết
Trường hợp nào sau đây phù hợp với quan hệ 'uses' (dependency) giữa lớp?
Lớp BanhXe thuộc thành phần bắt buộc của Xe
Lớp DongCo bị hủy khi XeBiHuy hủy
Lớp HoaDon nhận đối tượng GiamGia làm tham số tạm thời
Lớp Chim là kiểu con của DongVat
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ý?
PhanCungMayChu để mô tả server
SoDienThoai để lưu số người đọc
MauInGiay để trình bày biên nhận
MuonSach với các thao tác tạo phiếu mượn
Trong thiết kế, chọn thuộc tính nào nên là derived (tính toán)?
TongTien = sum(DongHang.soTien) của DonHang
MaDonHang được nhập thủ công từ người dùng
TrangThai được đặt thủ công từng bước
NgayTao do nhân viên điền bằng tay
Để 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?
Kéo hành vi chung lên lớp cha trừu tượng
Nhân bản phương thức giống nhau ở mọi lớp
Thêm thuộc tính tĩnh lưu mọi hành vi chung
Dùng quan hệ composition cho toàn bộ hành vi
Một lớp 'NguoiDung' có thuộc tính matKhau. Cách đóng gói an toàn nhất là gì?
Lưu hash và cung cấp phương thức xác thực
Công khai getter trả về chuỗi mật khẩu thô
Cho phép setter công khai không ràng buộc
Lưu mật khẩu ở thuộc tính tĩnh dùng chung
Khi nào nên mô hình hóa giao diện (interface) thay vì lớp cha cụ thể?
Khi muốn ngăn chặn đa kế thừa kiểu hành vi
Khi chỉ cần cam kết hành vi không có trạng thái
Khi cần chia sẻ thuộc tính dữ liệu chung cố định
Khi cần quản lý vòng đời thành phần bắt buộc
Chọn cặp minh họa đúng về tổng quát–chuyên biệt trong miền giao thông.
BanhXe là cha của XeMay và TauHoa
PhuongTien là cha của XeDap và OTo
LaiXe là cha của XeBuyt và XeTai
DongCo là cha của XeTai và XeDap
Trong mô hình hóa quan hệ giữa DonHang và KhachHang, phát biểu nào hợp lý?
Đơn hàng tồn tại độc lập không cần khách
Mỗi đơn hàng thuộc về nhiều khách hàng
Khách hàng bị hủy khi đơn hàng bị xóa
Một khách hàng có thể có nhiều đơn hàng
Trong C#, từ khóa nào dùng để ghi đè phương thức ảo của lớp cơ sở?
overload
override
sealed
virtual
Mục đích chính của interface trong C# là gì?
Định nghĩa hợp đồng hành vi
Cung cấp bộ nhớ dữ liệu
Thay thế kế thừa đa lớp
Tối ưu hóa bộ gom rác
Cặp từ khóa dùng để khai báo thuộc tính với bộ truy cập trong C# là gì?
get và set
read và write
in và out
open và close
Khối finally trong try-catch-finally đảm nhiệm vai trò nào?
Xác định kiểu dữ liệu động
Tối ưu hiệu năng vòng lặp
Bắt mọi ngoại lệ không rõ
Giải phóng tài nguyên luôn luôn
Ngoại lệ nào phát sinh khi chia một số cho 0 trong C#?
IndexOutOfRangeException
FormatException
OverflowException
DivideByZeroException
Khi nào nên dùng từ khóa sealed trên lớp hoặc phương thức?
Khi muốn ngăn kế thừa thêm
Khi muốn cho phép đa kế thừa
Khi muốn tự động ép kiểu
Khi muốn bật unsafe code
Trong C#, thuộc tính auto-implemented được khai báo như thế nào?
public int Age();
public int Age { get; set; }
int get Age();
property Age int;
Ý nghĩa chính xác của từ khóa virtual là gì?
Cho phép lớp dẫn xuất ghi đè
Tạo đối tượng không khởi tạo
Ngăn ghi đè ở dẫn xuất
Bắt buộc ghi đè ở dẫn xuất
Khối catch nên bắt kiểu nào để đảm bảo chuyên biệt và an toàn?
Kiểu ngoại lệ cụ thể
Mọi đối tượng object
Kiểu string thông báo
Kiểu dynamic bất kỳ
Trong interface C#, phần nào được phép xuất hiện?
Khối lệnh static phức tạp
Khai báo phương thức không thân
Trường dữ liệu khởi tạo sẵn
Hàm khởi tạo có tham số
Khi chuyển đổi chuỗi 'abc' sang int bằng int.Parse, ngoại lệ phù hợp là gì?
ArgumentNullException
OverflowException
InvalidCastException
FormatException
Lựa chọn mô tả đúng về try-catch-finally:
catch giải phóng, try biên dịch
try xử lý lỗi, catch dọn dẹp
catch xử lý lỗi, finally dọn dẹp
finally bắt lỗi, try chạy lại
Đoạn mã nào minh họa override hợp lệ?
public override string ToString()
public overload string ToString()
public sealed string ToString()
public static string ToString()
Với mảng có 3 phần tử, truy cập arr[5] gây ra ngoại lệ nào?
TimeoutException
ArgumentException
NullReferenceException
IndexOutOfRangeException
Khác biệt cốt lõi giữa abstract class và interface trong C# là gì?
Interface chứa trường riêng tư
Interface hỗ trợ kế thừa đa lớp
Abstract có thể chứa trạng thái
Abstract không thể có phương thức
Trong .NET, vai trò chính của Common Language Runtime (CLR) là gì?
Quản lý bộ nhớ và thực thi mã an toàn
Lưu trữ cơ sở dữ liệu quan hệ nội bộ
C biên dịch mã nguồn sang Java bytecode
Chỉ cung cấp thư viện giao diện đồ họa
Biến cục bộ trong C# có đặc điểm nào đúng nhất?
Phạm vi trong khối mã hiện tại
Tồn tại suốt vòng đời ứng dụng
Tự động lưu trong cơ sở dữ liệu
Truy cập từ mọi lớp khác nhau
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?
Báo lỗi biên dịch do chưa khởi tạo
Tự gán giá trị null mặc định
Chỉ cảnh báo và vẫn biên dịch
Tự gán giá trị 0 cho số nguyên
Kết quả của biểu thức chuỗi: "CLR" + " " + "Runtime" là gì?
"CLR Runtime"
"CLR+Runtime"
"Runtime CLR"
"CLR Runtime "
Trong C#, toán tử ba ngôi condition ? a : b được dùng để làm gì?
Khởi tạo mảng đa chiều nhanh
Ép kiểu đối tượng đa hình
Bắt ngoại lệ và ghi log
Rút gọn câu lệnh if-else đơn giản
Phương thức chuỗi nào trả về độ dài của chuỗi hiện tại?
Hàm Count() của System.String
Phương thức Size() của string
Thuộc tính Capacity của string
Thuộc tính Length của string
Trong điều khiển logic, vòng lặp for phù hợp nhất khi nào?
Cần chờ sự kiện hệ điều hành
Cần duyệt vô hạn không điều kiện
Biết rõ số lần lặp ngay từ đầu
Cần bảo toàn ngăn xếp cuộc gọi
Từ khóa nào cho phép thoát sớm khỏi vòng lặp trong C#?
exit
stop
skip
break
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ì?
y := (x == 0) ? 1 : 2;
y = (x == 0) ? 1 : 2;
y = x = 0 ? 1 : 2;
y == (x == 0) ? 1 : 2;
Trong C#, phương thức string.ToUpper() làm gì?
Trả về chuỗi in hoa mới
Sửa chuỗi gốc thành in hoa
Chuyển chuỗi thành số nguyên
Loại bỏ khoảng trắng hai đầu
Điều gì đúng về chuỗi trong .NET?
Luôn được lưu trong stack của thread
Bất biến, mọi chỉnh sửa tạo chuỗi mới
Biến đổi được, sửa tại chỗ tiết kiệm bộ nhớ
Chỉ hỗ trợ bảng mã ASCII 1 byte
Khi dùng try-catch trong môi trường CLR, mục đích chính là gì?
Tạo bộ gom rác thế hệ mới
Nạp thư viện không quản lý tự động
Tăng tốc trình biên dịch JIT tối đa
Xử lý ngoại lệ khi thực thi mã quản lý
Câu lệnh nào tạo biến cục bộ và khởi tạo ngay trong C#?
int n; n auto;
let n: int = 10;
int n = 10;
var int n = 10;
Giả sử int a = 3; int b = 5; string s = $"{a + b}"; Giá trị của s là gì?
"3+5"
"a + b"
"35"
"8"
Trong C#, từ khóa ref dùng để làm gì khi truyền tham số vào phương thức?
Chỉ cho phép truyền giá trị một chiều vào
Buộc tạo bản sao chỉ đọc của đối số
Chuyển đổi kiểu dữ liệu tự động khi gọi
Cho phép truyền tham chiếu đọc ghi của biến
Trong C#, từ khóa out khác ref ở điểm nào?
Bắt buộc gán lại trong phương thức gọi
Không thể trả dữ liệu về cho người gọi
Chỉ dùng cho kiểu tham chiếu phức tạp
Không cần khởi tạo biến trước khi truyền
Điều kiện bắt buộc khi dùng tham số ref là gì?
Biến phải là hằng số compile time
Biến phải được khởi tạo trước khi truyền
Biến phải là kiểu nullable đặc biệt
Biến không được thay đổi trong hàm
Trong C#, tham số out yêu cầu điều gì bên trong phương thức được gọi?
Phải gán giá trị trước khi trả về
Không được phép gán lại nhiều lần
Chỉ được đọc, không được ghi
Phải cùng tên với biến gọi
Đoạn mã: public override void A1(){ base.A1(); } trong lớp dẫn xuất thể hiện điều gì?
Gọi phương thức cơ sở đã được ghi đè
Gọi constructor mặc định của cơ sở
Ẩn phương thức cơ sở bằng new
Gọi tĩnh phương thức không kế thừa
Đoạn mã: public override void A1(){ Class1.A1(); } thể hiện điều nào sau đây?
Cách gọi sai thành viên cơ sở qua tên lớp
Cách gọi đúng thành viên cơ sở qua base
Cách gọi constructor cơ sở từ dẫn xuất
Cách gọi interface method qua đối tượng
Trong thừa kế C#, gọi constructor lớp cơ sở đúng cú pháp là gì?
public Derived(): base(args)
public Derived(): ClassBase(args)
public Derived(): this(args)
public Derived(): override(args)
Đoạn mã: public VUONG(double canh) : CHUNHAT(canh, canh) có vấn đề gì?
Không thể gọi base trong sealed
Sai số lượng tham số truyền vào
Sai cú pháp gọi constructor cơ sở
Gọi lặp lại constructor chính
Khi khai báo thuộc tính trong class, thêm public trước thuộc tính có ý nghĩa gì?
Chỉ cho phép truy cập bởi lớp dẫn xuất
Chỉ cho phép truy cập trong assembly
Chỉ cho phép truy cập trong lớp
Không giới hạn quyền truy cập từ ngoài
Từ khóa protected cho thuộc tính cho phép gì?
Chỉ truy cập trong chính phương thức
Truy cập trong lớp và lớp kế thừa
Truy cập từ mọi nơi mọi dự án
Chỉ truy cập trong cùng project
Từ khóa internal giới hạn truy cập như thế nào?
Từ bất kỳ module nào của hệ thống
Chỉ từ lớp kế thừa trực tiếp
Trong cùng project/assembly hiện hành
Chỉ trong cùng lớp hiện thời
Trong interface của C#, có thể dùng từ khóa public trước phương thức không?
Dùng public nếu interface nội bộ
Không cần và không được dùng public
Chỉ dùng public khi có thuộc tính
Phải dùng public cho mọi phương thức
Về tính phân biệt hoa thường (case sensitivity) của C#, nhận định nào đúng?
Chỉ tên lớp mới phân biệt chữ
Chỉ biến cục bộ phân biệt chữ hoa
Tên MethodA và methoda là như nhau
Tên MethodA khác methoda hoàn toàn
Ưu điểm nào thuộc về OOP trong thiết kế phần mềm?
Không cần thiết kế kiến trúc tổng thể
Bảo đảm hiệu năng cao cho mọi bài
Loại bỏ hoàn toàn lỗi thời gian chạy
Tái sử dụng thông qua kế thừa đa dạng
Khi truyền tham số kiểu giá trị không dùng ref/out, điều nào xảy ra?
Truyền theo giá trị, bản sao được tạo
Thay đổi trong hàm làm đổi biến gốc
Truyền theo tham chiếu giống con trỏ
Giá trị bị ép thành tham chiếu mới
Với delegate trong C#, phát biểu nào đúng nhất?
Là cấu trúc sao chép bộ nhớ vùng stack
Là từ khóa dùng để tạo namespace
Là thuộc tính lưu trữ hằng số biên dịch
Là kiểu tham chiếu đại diện cho phương thức
