wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Câu hỏi về Driver trong hệ thống nhúng

Total questions: 91

Worksheet time: 46mins

Name
Class
Date
1.

Driver trong hệ thống nhúng là gì?

a)

Chương trình được thực thi trên thiết bị nhúng

b)

Hệ điều hành nhúng

c)

Giúp các ứng dụng hoặc hệ điều hành giao tiếp được với phần cứng cụ thể

d)

Phần cứng giúp kết nối các thiết bị ngoại vi

2.

Character driver là loại driver nào?

a)

Driver cho các thiết bị lưu trữ khối

b)

Driver cho các thiết bị truyền dữ liệu theo ký tự

c)

Driver để quản lý tệp

d)

Driver để điều khiển giao diện đồ họa

3.

Lệnh nào hiển thị danh sách các thiết bị trong /dev?

a)

ls -la /dev

b)

lsmod

c)

cat /dev

d)

ls -l

4.

Số hiệu major trong device file đại diện cho thông tin gì?

a)

Loại thiết bị

b)

Tốc độ của thiết bị

c)

Kiểu dữ liệu của thiết bị

d)

Số hiệu phiên bản của kernel

5.

Minor number trong device file là gì?

a)

Xác định kích thước của thiết bị

b)

Xác định loại thiết bị chính

c)

Phân biệt các thiết bị cùng loại

d)

Xác định quyền truy cập vào thiết bị

6.

Lệnh unregister_chrdev_region có tác dụng gì?

a)

Đăng ký thiết bị

b)

Viết dữ liệu vào thiết bị

c)

Hủy đăng ký vùng thiết bị

d)

Khởi tạo thiết bị

7.

file trong Linux kernel đại diện cho gì?

a)

Tệp đại diện cho quá trình đọc/ghi vào thiết bị

b)

Tên thiết bị

c)

Cấu trúc lưu trữ tệp thông thường

d)

Thông tin về thiết bị

8.

Khi khởi tạo một character driver trong hàm __init, bạn cần gọi hàm nào để kernel tự động cấp phát một major number phù hợp nếu chưa xác định trước?

a)

alloc_chrdev_region với major =0

b)

request_chrdev_region();

c)

register_chrdev_region();

d)

device_register()

9.

Khi một module driver có nhiều thiết bị, chúng thường dùng kiểu số hiệu nào?

a)

Không dùng số hiệu

b)

Khác cả major và minor

c)

Số hiệu major khác nhau

d)

Cùng major, khác minor

10.

Lợi ích của việc sử dụng alloc_chrdev_region() trong hàm __init là gì?

a)

Yêu cầu kernel tự cấp phát major number phù hợp

b)

Đảm bảo rằng minor number là cố định

c)

Tăng tốc độ truy cập vào device

d)

Tăng bộ nhớ cho driver

11.

static struct file_operations fops = {

.open = dev_open,

.release = dev_close,

.read = dev_read,

.write = dev_write,

};

Cấu trúc file_operations trong đoạn mã trên có vai trò gì?

a)

Định nghĩa các thao tác kernel thực hiện cho thiết bị

b)

Định nghĩa các thao tác đọc ghi vào file hệ thống

c)

Định nghĩa các thao tác nạp và gỡ module driver

d)

Định nghĩa các thao tác file mà character driver hỗ trợ

12.

Cho tệp character.c chứa mã đoạn nguồn chương trình C như sau:

static struct file_operations fops = {

.open = dev_open,

.release = dev_close,

.read = dev_read,

.write = dev_write,

};

Để xử lý việc giải phóng tài nguyên sau khi hoàn tất thao tác với thiết bị, hàm nào sẽ được gọi dựa vào đoạn code trên?

a)

dev_write

b)

dev_open

c)

dev_read

d)

dev_close

13.

Câu lệnh nào dưới đây phù hợp nhất để điền vào phần trống để đăng ký số hiệu thiết bị cho character driver?

static int __init exam_init(void)

{

int ret;

..........

if(ret)

{

printk("can not register major no\n");

return ret;

}

printk(KERN_INFO "register successfully major now is: %d\n", MAJOR(dev));

my_cdev = cdev_alloc();

my_cdev->owner = THIS_MODULE;

my_cdev->ops = &fops;

my_cdev->dev = dev;

cdev_add(my_cdev, dev, 0);

return 0;

}

Câu lệnh nào dưới đây phù hợp nhất để điền vào phần trống để đăng ký số hiệu thiết bị cho character driver?

a)

ret = alloc_chrdev_region(&dev, NULL);

b)

ret = register_character_driver(&dev, 0, 1, "example");

c)

ret = unregister_chrdev_region(&dev, 0, 1, "example");

d)

ret = alloc_chrdev_region(&dev, 0, 1, "example_driver");

14.

Trong hàm exam_exit, dòng lệnh unregister_chrdev_region(dev, 1); có vai trò gì?

static void __exit exam_exit(void)

{

printk("goodbye, unregister major\n");

unregister_chrdev_region(dev, 1);

cdev_del(my_cdev);

}

a)

Giải phóng số hiệu thiết bị đã đăng ký cho driver

b)

Giải phóng bộ nhớ đã cấp phát cho các hàm file_operations

c)

Hủy cấu trúc cdev đã được tạo trước đó

d)

Đăng ký lại số hiệu thiết bị với kernel

15.

Câu lệnh iowrite32((1 << LED), (io + GPIO_SETDATAOUT)) có tác dụng gì trong đoạn code hàm dev_write?

a)

Đọc dữ liệu từ chân GPIO

b)

Ghi một giá trị để tắt LED trên chân GPIO

c)

Đặt chế độ cho chân GPIO ở chế độ đầu vào

d)

Ghi một giá trị để bật LED trên chân GPIO

16.

Câu 16: Đâu là định dạng lệnh đúng để nạp một module driver?

a)

echo

b)

modprobe

c)

rmmod

d)

mount

17.

Câu 17: Lệnh mknod được sử dụng để làm gì trong hệ thống Linux?

a)

Tạo một thiết bị mạng

b)

Tạo một thiết bị ảo

c)

Tạo một thiết bị USB

d)

Tạo một tệp trong thư mục /dev

18.

Câu 18: Câu nào sau đây là đúng về struct file_operations?

a)

Được dùng để xác định các hàm thao tác của driver

b)

Chỉ tồn tại trong user space

c)

Không thể tùy chỉnh

d)

Chỉ có trong kernel mode

19.

Câu 19: Cho tệp character.c chứa mã nguồn chương trình C như sau: static int dev_open(struct inode *inodep, struct file *filep) { printk("open\n"); return 0; } Trong hàm dev_open, lệnh printk("open\n") có chức năng gì?

a)

Ghi thông điệp vào bộ đệm kernel để kiểm tra bằng lệnh dmesg

b)

Ghi thông điệp vào file log của user space

c)

Ghi thông báo lỗi khi không thể mở thiết bị

d)

In thông báo trên màn hình console người dùng

20.

Cho tệp character.c chứa mã nguồn chương trình C như sau:

static ssize_t dev_read(struct file* filep, char __user buf, size_t len, loff_t offset)

{

    printk("read\n");

    return 0;

}

Tham số char __user *buf trong hàm dev_read có vai trò gì?

a)

Lưu kích thước của dữ liệu đọc

b)

Lưu dữ liệu đọc từ thiết bị và chuyển đến không gian người dùng

c)

Chứa dữ liệu để ghi vào thiết bị

d)

Trỏ tới địa chỉ bộ đệm trong kernel

21.

Cho tệp character_driver.c chứa mã nguồn chương trình C như sau:

#define P8_7_MODE_OFFSET      0x890

#define P8_8_MODE_OFFSET      0x894

Địa chỉ 0x890 và 0x894 tương ứng là gì trên board nhúng?

a)

Địa chỉ vật lý của các cổng P8_7 và P8_8

b)

Địa chỉ bộ nhớ dùng để lưu dữ liệu từ các cổng P8_7 và P8_8

c)

Địa chỉ offset trong bộ nhớ để thiết lập chế độ của các cổng P8_7 và P8_8

d)

Địa chỉ điều khiển mức điện áp của các cổng

22.

Cấu trúc file_operations được sử dụng để làm gì trong character driver?

a)

Lưu trữ dữ liệu của driver

b)

Xác định các biến toàn cục của driver

c)

Cấu hình quyền truy cập driver

d)

Định nghĩa các hàm vận hành của driver

23.

Hàm ioctl() trong character driver có chức năng gì?

a)

Đọc dữ liệu từ thiết bị

b)

Viết dữ liệu vào thiết bị

c)

Đóng thiết bị

d)

Giao tiếp điều khiển với thiết bị

24.

Danh sách thiết bị nằm trong thư mục nào của hệ thống?

a)

/dev

b)

/opt

c)

/etc

d)

/usr

25.

Device file đại diện cho đối tượng nào trong hệ thống Linux?

a)

Một liên kết đến tập tin cấu hình

b)

Một tập tin thông thường

c)

Một thư mục ảo

d)

Một thiết bị phần cứng cụ thể

26.

Biến struct module *owner trong file_operations dùng để làm gì?

a)

Cấu hình quyền truy cập file

b)

Xác định quyền sở hữu của driver

c)

Tránh việc giải phóng module khi driver đang được sử dụng

d)

Xác định loại file driver

27.

Cho tệp character.c chứa mã nguồn chương trình C như sau:

static void __exit exam_exit(void)

{

    printk("goodbye, unregister major\n");

    unregister_chrdev_region(dev, 1);

    cdev_del(my_cdev);

}

Trong hàm exam_exit, dòng lệnh nào sau đây chịu trách nhiệm gỡ bỏ cấu trúc cdev đã được tạo trong hàm init?

a)

cdev_remove(dev);

b)

cdev_del(my_cdev);

c)

unregister_chrdev_region(dev, 1);

28.

Cho tệp character_driver.c chứa mã nguồn chương trình C như sau:

static ssize_t dev_write(struct file* filep, const char __user buf, size_t len, loff_t offset)

{

    unsigned int temp = 0;

    iowrite32((1 << LED), (io + GPIO_SETDATAOUT));

    temp = ioread32(io + GPIO_SETDATAOUT);

    char *kernel_buf = kmalloc(len, GFP_USER);

    unsigned int temp = 0;

}

Trong hàm dev_write, mục đích của lệnh ioread32(io + GPIO_SETDATAOUT) là gì?

a)

Ghi giá trị vào chân GPIO

b)

Cấp phát bộ nhớ cho chân GPIO

c)

Đọc trạng thái hiện tại của chân GPIO

d)

Xóa dữ liệu tại chân GPIO

29.

Device tree trong Linux là gì?

a)

Một tập lệnh chạy trong kernel

b)

Một ngôn ngữ lập trình phần cứng

c)

Một file cấu hình hệ điều hành

d)

Một chuẩn mô tả phần cứng

30.

File device tree thường được lưu với phần mở rộng nào?

a)

.dev

b)

.dtb hoặc .dts

c)

.txt

d)

.cfg

31.

Định dạng nhị phân của device tree được sử dụng trong Linux có phần mở rộng là gì?

a)

.xml

b)

.dtb

c)

.cfg

d)

.dts

32.

Trong lập trình device tree trên Linux, hàm probe được sử dụng làm gì khi được gọi?

a)

Để kiểm tra trạng thái của thiết bị

b)

Nhận thông tin từ device tree và thực hiện các thao tác khởi tạo cho thiết bị

c)

Để xóa bỏ thiết bị khỏi kernel

d)

Để khởi động lại thiết bị

33.

Trong device tree, "compatible" là gì?

a)

Chỉ định địa chỉ của thiết bị

b)

Thuộc tính mô tả thiết bị phần cứng có tương thích với hệ điều hành hay không

c)

Giá trị cấu hình cho driver

d)

Tên của device tree

34.

Khi nào các thuộc tính trong device tree thường được khai báo là "disabled"?

a)

Khi thiết bị không sử dụng

b)

Khi driver chưa được cài đặt

c)

Khi thiết bị gặp lỗi phần cứng

d)

Khi kernel khởi động lại

35.

Khi khởi động, kernel đọc được thông tin cổng USB trong device tree sau đó kernel sẽ xử lý thế nào?

a)

Xác định loại hệ điều hành đang chạy có tương thích với loại USB đó hay không

b)

Kiểm tra tốc độ xử lý của USB

c)

Xác định thiết bị có cổng USB và gọi driver USB tương ứng

d)

Kiểm tra dung lượng bộ nhớ USB

36.

Quá trình khởi động của các hệ điều hành hiện đại sử dụng device tree khác gì so với hệ điều hành phiên bản cũ?

a)

Hệ điều hành hiện đại không cần quét phần cứng mà chỉ đọc thông tin phần cứng từ device tree

b)

Hệ điều hành cũ tự động sinh device tree

c)

Hệ điều hành cũ có tốc độ xử lý device tree nhanh hơn

d)

Hệ điều hành hiện đại không cần device tree

37.

Khi cấu trúc device tree cần thêm phần cứng mới, người dùng cần làm gì?

a)

Thay đổi file .dtb

b)

Cập nhật BIOS

c)

Sửa file .dts và nạp lại các file .dtsi

d)

Sửa file kernel

38.

Khi nào kernel sẽ gọi driver tương ứng cho thiết bị trong device tree?

a)

Khi thiết bị được xác định là tương thích thông qua thuộc tính "compatible"

b)

Khi file device tree được tải lên hệ thống

c)

Khi cấu hình thiết bị được lưu trong thư mục /etc/

d)

Khi thiết bị có mã nguồn mở

39.

Câu lệnh nào dùng để chuyển đổi từ file .dts sang .dtb?

a)

gcc

b)

make

c)

compile

d)

dtc

40.

Nếu muốn thay đổi thông số phần cứng của một thiết bị trong device tree cần thực hiện điều gì?

a)

Sửa trực tiếp file .dtb đang chạy

b)

Sử dụng trình điều khiển driver để cập nhật thông số

c)

Khởi động lại thiết bị và quét lại phần cứng

d)

Sửa file .dts tương ứng và biên dịch lại thành file .dtb

41.

Cho một file my_device.dts trong Linux, lệnh nào sau đây được sử dụng để biên dịch file my_device.dts thành file nhị phân my_device.dtb?

a)

dtc -I dts -O dtb -o my_device.dtb my_device.dts

b)

gcc -I dts -O dtb -o my_device.dtb my_device.dts

c)

compile -c -I dts -O dtb my_device.dts

d)

make -I dts -O dtb -o my_device.dtb my_device.dts

42.

Trong đoạn code dưới đây: /dts-v1/; / { compatible = "myboard"; my_device: my_device@0 { compatible = "mycompany,my_device"; reg = <0x00>; status = "okay"; }; }; Địa chỉ của thiết bị my_device được xác định tham số nào và có giá trị bằng bao nhiêu?

a)

Địa chỉ của thiết bị my_device được xác định bởi tham số status, và giá trị là "okay".

b)

Địa chỉ của thiết bị my_device được xác định bởi tham số compatible, và giá trị là "myboard".

c)

C. Địa chỉ của thiết bị my_device được xác định bởi tham số compatible, và giá trị là "mycompany,my_device".

d)

D. Địa chỉ của thiết bị my_device được xác định bởi tham số reg, và giá trị là 0x00.

43.

Trong cấu trúc platform_driver như sau:

static struct platform_driver my_device_driver = {

    .driver = {

        .name = DRIVER_NAME,

        .of_match_table = my_device_of_match,

    },

    .probe = my_device_probe,

    .remove = my_device_remove,

};

Thuộc tính .driver có vai trò gì?

a)

Để quản lý các hành động khi gỡ bỏ driver.

b)

Để xác định các thông tin liên quan đến driver, bao gồm tên driver và bảng so khớp với device tree.

c)

Để lưu trữ các thông số phần cứng của thiết bị.

d)

Để chỉ định tên của thiết bị và các tài nguyên phần cứng cần thiết.

44.

Lợi ích chính của việc dùng device tree trong Linux là gì?

a)

Hỗ trợ bảo mật cho hệ thống

b)

Tăng hiệu suất chạy chương trình

c)

Cung cấp thông tin phần cứng chi tiết và dễ chỉnh sửa.

d)

Tạo ra mã nhị phân dễ dàng

45.

Hàm remove() trong device tree có nhiệm vụ gì?

a)

Giải phóng tài nguyên và dọn dẹp khi thiết bị bị tháo.

b)

Đặt tên cho thiết bị trong device tree

c)

Nạp các thông tin cần thiết khi thiết bị được phát hiện

d)

Khởi tạo cấu trúc dữ liệu cho driver

46.

Cách thức để tích hợp device tree vào trong kernel là gì?

a)

Compile trực tiếp thành mã nhị phân

b)

Include trong mã nguồn kernel

c)

Thêm vào tập tin cấu hình module

d)

Biên dịch dưới dạng file .dtb.

47.

Cấu trúc của một node trong device tree thường bao gồm các thành phần nào?

a)

Chỉ có các thuộc tính

b)

Tên node và các thuộc tính.

c)

Chỉ có tên device

d)

Định nghĩa hàm và tên node

48.

Trong file device tree dưới đây:

/dts-v1/;

/ {

    compatible = "myboard";

 

    my_device: my_device@0 {

        compatible = "mycompany,my_device";

        reg = <0x00>;

        status = "okay";

    };

};

Thuộc tính "status" dùng để làm gì?

a)

Chỉ ra loại driver tương thích với thiết bị

b)

Xác định trạng thái của thiết bị có hoạt động bình thường không.

c)

Chỉ ra thời gian hoạt động của thiết bị theo thời gian thực

d)

Chỉ ra model của thiết bị

49.

Khi driver có chứa hàm probe, điều gì sẽ xảy ra khi kernel phát hiện thiết bị phù hợp trong device tree?

a)

Kernel sẽ gọi hàm probe để khởi tạo thiết bị và tài nguyên

b)

Kernel sẽ yêu cầu người dùng xác nhận thiết bị trước khi gọi hàm probe

c)

Kernel sẽ gọi hàm remove

d)

Kernel sẽ nạp driver mà không gọi hàm probe

50.

Thuộc tính compatible trong device tree có ý nghĩa gì đối với hàm probe?

a)

Giúp hệ điều hành liên kết driver với thiết bị phù hợp

b)

Xác định địa chỉ bộ nhớ của thiết bị

c)

Thông báo trạng thái thiết bị

d)

Đặt tên cho thiết bị trong hệ điều hành

51.

Trong đoạn mã dưới đây:

static int my_device_probe(struct platform_device *pdev)

{

    pr_info("my_device: probe function called\n");

    struct resource *res;

    res = platform_get_resource(pdev, IORESOURCE_MEM, 0);

    pr_info("my_device: resource start = 0x%lx, end = 0x%lx\n",

           (unsigned long)res->start, (unsigned long)res->end);

    return 0;

}Hàm platform_get_resource được sử dụng để làm gì?

a)

Xác định phiên bản của thiết bị xác định thông số cấu hình cần của thiết bị

b)

Lấy thông tin về trạng thái của thiết bị là đang hoạt động hay không

c)

Lấy tên của thiết bị từ kernel ghi thông tin vào file log của kernel

d)

Lấy thông tin về các tài nguyên của thiết bị đã được định nghĩa trong device tree

52.

Cho cấu trúc of_device_id trong device tree như sau:

static const struct of_device_id my_device_of_match[] = {

    { .compatible = "KTMT,my_device" },

    {},

};

Đoạn mã trên được sử dụng để làm gì?

a)

Đoạn mã khai báo cấu trúc of_device_id để tìm kiếm các thiết bị tương thích với driver có compatible là "KTMT,my_device" trong device tree

b)

Đoạn mã khai báo cấu trúc of_device_id để tạo driver cho các thiết bị không được mô tả trong device tree

c)

Đoạn mã khai báo cấu trúc of_device_id để đăng ký driver cho các thiết bị không có thuộc tính compatible

d)

Đoạn mã khai báo cấu trúc of_device_id để kết nối driver với hệ điều hành

53.

Khi nào thì hệ điều hành đọc device tree?

a)

Khi khởi động hệ thống

b)

Khi biên dịch kernel

c)

Khi tải module

d)

Khi cài đặt phần mề

54.

Khi tạo một file device tree .dts trong Linux, bạn muốn mô tả một thiết bị với tên my_device và địa chỉ bộ nhớ là 0x1000. Câu lệnh nào sau đây là chính xác để mô tả thiết bị này trong file .dts?

a)

/dts-v1/; { my_device: my_device@0x1000 { type = "mycompany,my_device"; reg = <0x1000>; active = "yes"; }; };

b)

/dts-v1/; { my_device: my_device@0x1000 { compatible = "mycompany,my_device"; reg = <0x1000>; status = "okay"; }; };

c)

/dts-v1/; { my_device: my_device@0x1000 { compatible = "mycompany,my_device"; addr = <0x1000>; status = "active"; }; };

d)

/dts-v1/; { my_device: my_device@0x1000 { compatible = "mycompany,my_device"; address = <0x1000>; status = "enabled"; }; };

55.

Trong file device tree dưới đây:

/dts-v1/;

/ {

    compatible = "myboard";

 

    my_device: my_device@0 {

        compatible = "KTMT,my_device";

        reg = <0x00>;

        status = "okay";

    };

};

Thuộc tính compatible của thiết bị my_device có ý nghĩa gì?

a)

compatible chỉ định tên của thiết bị và giúp hệ điều hành nhận diện thiết bị để tải driver tương ứng.

b)

compatible chỉ ra rằng thiết bị này không thể sử dụng bất kỳ driver nào và cần một driver tùy chỉnh.

c)

compatible dùng để chỉ định loại bộ xử lý mà hệ điều hành sẽ sử dụng cho thiết bị này.

d)

compatible xác định phiên bản của kernel mà thiết bị này hỗ trợ.

56.

Sự khác nhau về cách lập trình driver giữa Device tree và character driver như thế nào?

a)

Sử dụng file mô tả phần cứng thay cho các macro define trong code

b)

Sử dụng ngôn ngữ Assembly nhúng vào code của ngôn ngữ C

c)

Sử dụng script Python để mô tả các thông số thiết bị phần cứng

d)

Sử dụng JSON để mô tả cách thiết bị kết nối với hệ điều hành

57.

Trong code driver, hàm API nào thường được sử dụng để đọc thuộc tính từ device tree?

a)

ioremap()

b)

module_init()

c)

of_property_read()

d)

alloc_chrdev_region()

58.

Qt Creator là gì?

a)

Một ngôn ngữ lập trình.

b)

Một IDE tích hợp dành cho phát triển ứng dụng với Qt.

c)

Một module xử lý file XML.

d)

Một thư viện chính của Qt.

59.

Device và Kits trong Qt dùng để làm gì?

a)

Thiết kế giao diện đồ họa.

b)

Quản lý file nhị phân.

c)

Cấu hình mạng trong ứng dụng.

d)

Biên dịch mã nguồn cho các thiết bị cụ thể.

60.

Phương thức nào được sử dụng để thay đổi giá trị của thuộc tính?

a)

Phương thức thay đổi có tên bắt đầu bằng "set."

b)

Phương thức const.

c)

Phương thức private.

d)

Phương thức hằng.

61.

Qt Creator được sử dụng để làm gì?

a)

Biên dịch mã nguồn Python.

b)

Là IDE phát triển giao diện đồ họa và chương trình console.

c)

Quản lý cơ sở dữ liệu trong Qt.

d)

Chỉnh sửa hình ảnh trong các ứng dụng Qt.

62.

Tại sao cần biên dịch lại chương trình khi chạy trên các hệ điều hành khác nhau khi sử dụng Qt?

a)

Để tránh lỗi biên dịch.

b)

Để tạo file nhị phân phù hợp với hệ điều hành.

c)

Để tối ưu mã nguồn.

d)

Vì Qt không hỗ trợ cross-platform.

63.

"Device" trong Qt có nghĩa là gì?

a)

Thiết bị phần cứng mà ứng dụng sẽ chạy.

b)

Tên ứng dụng Qt.

c)

Một file nhị phân.

d)

Một module đặc biệt của Qt.

64.

Widget trong Qt thường được sử dụng với mục đích nào?

a)

Quản lý mã nguồn của ứng dụng.

b)

Hiển thị thông báo lỗi khi chương trình gặp sự cố.

c)

Cung cấp các thành phần giao diện người dùng như nút bấm, ô chọn.

d)

Quản lý kết nối mạng trong chương trình.

65.

Câu lệnh nào sau đây được sử dụng để cài đặt Qt Creator trên hệ điều hành Linux dựa trên Debian/Ubuntu?

a)

install qtcreator sudo

b)

sudo install qt-creator

c)

sudo apt-get install qtcreator

d)

apt-get qtcreator install

66.

Cho tệp main.cpp chứa mã đoạn nguồn như sau: #include int main(int argc, char *argv[]) { QApplication app(argc, argv); return app.exec(); } Lớp QApplication trong Qt có vai trò gì trong chương trình?

a)

Cung cấp các hàm toán học để tính toán trên giao diện.

b)

Quản lý các kết nối mạng trong ứng dụng.

c)

Tạo các widget cơ bản như cửa sổ và nút bấm.

d)

Khởi tạo một đối tượng của lớp QApplication để quản lý toàn bộ ứng dụng Qt.

67.

Điều gì xảy ra nếu không gọi phương thức show() khi tạo một nút bấm (QPushButton) trong Qt?

a)

Nút bấm sẽ không phản hồi sự kiện nhấn.

b)

Nút bấm sẽ không được hiển thị trên giao diện.

c)

Nút bấm sẽ tự động hiển thị khi ứng dụng chạy.

d)

Nút bấm sẽ hiển thị nhưng không thể thay đổi kích thước.

68.

Các thành phần của cửa sổ trong Qt được gọi là gì?

a)

GUI

b)

widget

c)

button

d)

module

69.

Nút bấm trong Qt thường được sử dụng để làm gì?

a)

Kích hoạt một hành động hoặc sự kiện.

b)

Lưu trữ dữ liệu.

c)

Hiển thị thông báo lỗi.

d)

Kết nối cơ sở dữ liệu.

70.

Cho tệp main.cpp chứa mã đoạn nguồn như sau: #include int main(int argc, char *argv[]) { QApplication app(argc, argv); return app.exec(); } Vai trò của dòng lệnh QApplication app(argc, argv); là gì?

a)

Tạo ra một đối tượng của lớp QApplication có tên là app, nhận hai tham số từ hàm main() là argc và argv.

b)

Tạo một đối tượng của lớp QApplication để quản lý các widget trong ứng dụng mà không cần dùng tham số.

c)

Khởi tạo cửa sổ chính và thiết lập tham số argc và argv làm tham số mặc định.

d)

Thiết lập giao diện đồ họa cơ bản cho ứng dụng Qt mà không cần tham số.

71.

Đoạn mã sau sẽ tạo ra giao diện như thế nào? #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label("Xin chào Qt!"); label.show(); return app.exec(); }

a)

Một cửa sổ ứng dụng Qt không hiển thị bất kỳ widget nào.

b)

Một cửa sổ với nhãn (label) "Xin chào Qt!" và một nút bấm với nhãn "Ok" mặc định.

c)

Một cửa sổ hiển thị một nhãn với nội dung "Xin chào Qt!".

d)

Một cửa sổ hiển thị nút bấm có nhãn "Xin chào Qt!".

72.

Câu 16: Ưu điểm chính của Qt là gì?

a)

Chạy nhanh hơn tất cả framework khác.

b)

Chỉ cần biên dịch 1 lần và chạy được trên mọi nền tảng.

c)

Hỗ trợ đa nền tảng với giao diện đồng nhất.

d)

Không hỗ trợ lập trình mạng.

73.

Câu 17: Trong lập trình Qt thì Signal và Slot có vai trò chính của là gì?

a)

Signal là phương thức để thay đổi trạng thái của widget.

b)

Signal là thuộc tính chứa giá trị của widget.

c)

Signal phát ra khi có sự kiện, thông báo cho các Slot đã kết nối với nó.

d)

Signal được dùng để xử lý logic khi có sự kiện xảy ra.

74.
a)

A.#include <QApplication>

#include <QPushButton>

int main(int argc, char *argv[]) {

    QApplication app(argc, argv);

    QPushButton button = new QPushButton();

    button->setText("Xin chào");

    return app.exec();

}

b)

B.#include <QApplication>

#include <QPushButton>

int main(int argc, char *argv[]) {

    QApplication app(argc, argv);

    QPushButton button;

    button.setLabel("Xin chào");

    button.show();

    return app.exec();

}

c)

C. #include <QApplication>

#include <QPushButton>

int main(int argc, char *argv[]) {

    QApplication app(argc, argv);

    QPushButton button("Xin chào");

    button.show();

    return app.exec();

}

d)

D.#include <QApplication>

#include <QPushButton>

 

int main(int argc, char *argv[]) {

    QApplication app(argc, argv);

 

    QPushButton button;

    button.setText("Xin chào");

    button.setGeometry(50, 50, 100, 30);

    button.show();

    return app.exec();

}

 

75.

Câu 18: Cho đoạn code sau: #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton button("Hello, Qt!"); button.resize(200, 100); button.show(); return app.exec(); } Phương thức show() của một nút bấm (QPushButton) trong Qt được sử dụng để làm gì?

a)

Hiển thị nút bấm trên giao diện.

b)

Tạo một nút bấm mới.

c)

Kích hoạt sự kiện nhấn nút.

d)

Thay đổi văn bản trên nút bấm.

76.

Câu 19: Cho đoạn code sau: #include int main(int argc, char *argv[]){ QApplication app(argc, argv); return app.exec(); } Khi khởi tạo một ứng dụng Qt, phương thức exec() của lớp QApplication được gọi để làm gì?

a)

Hiển thị một thông báo chào mừng người dùng.

b)

Tạo cửa sổ chính cho ứng dụng.

c)

Khởi động giao diện đồ họa và bắt đầu vòng lặp sự kiện.

d)

Cài đặt cấu hình cho các widget trong ứng dụng.

77.

Câu 20: Cho đoạn code tạo cửa sổ giao diện trong Qt: #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow mainWindow; mainWindow.resize(400, 300); mainWindow.show(); return app.exec(); } Lớp QMainWindow được sử dụng để làm gì?

a)

A. Tạo cửa sổ giao diện chính với các chức năng như menu, thanh công cụ.

b)

B. Tạo một cửa sổ con không có thanh công cụ.

c)

C. Tạo cửa sổ hiển thị thông báo cho người dùng.

d)

D. Tạo một cửa sổ chỉ chứa các widget mà không có thanh tiêu đề.

78.

Cách gọi phương thức setText() để thay đổi văn bản hiển thị của một QPushButton?

a)

button.setText("OK")

b)

button.setText = "OK";

c)

button.changeText("OK");

d)

button.text("OK");

79.

Cho tệp main.cpp chứa mã đoạn nguồn như sau:

#include <QApplication> 

int main(int argc, char *argv[]){ 

    QApplication app(argc, argv); 

}

Điều gì sẽ xảy ra nếu chương trình không có lệnh return app.exec();?

a)

Chương trình không thể biên dịch báo lỗi do thiếu vòng lặp sự kiện chính.

b)

Chương trình vẫn khởi động bình thường nhưng không hiển thị bất kỳ cửa sổ giao diện đồ họa nào.

c)

Chương trình không thực hiện gì.

d)

Chương trình hiển thị giao diện nhưng không phản hồi bất kỳ sự kiện nào từ người dùng.

80.

Module nào được sử dụng để lập trình giao diện trong Qt?

a)

Module SQL

b)

Module SVG

c)

Module OpenGL

d)

Module GUI

81.

Cho tệp main.cpp chứa mã đoạn nguồn như sau:

#include <QApplication>

int main (int argc, char *argv[]) {

QApplication app(argc, argv);

return app.exec();

}

Vai trò của dòng lệnh return app.exec(); là gì?

a)

Gọi phương thức exec() của đối tượng app để tạo cửa sổ chính mà không cần vòng lặp sự kiện.

b)

Gọi phương thức exec() của đối tượng app để khởi động chương trình và hiển thị cửa sổ, đồng thời trả về kết quả để thông báo chương trình có diễn ra bình thường không.

c)

Dừng vòng lặp sự kiện của ứng dụng và trả về giá trị thông báo lỗi nếu có.

d)

Kết thúc chương trình và trả về giá trị mặc định cho hệ điều hành.

82.

Cho đoạn mã sau:

#include <QApplication>

#include <QPushButton>

int main(int argc, char *argv[]) {

QApplication app(argc, argv);

QPushButton nutBam("Chào mừng bạn đến với Qt!");

nutBam.resize(400, 200);

 

nutBam.show();

return app.exec();

}

Khi chạy chương trình kết quả hiển thị giao diện như thế nào?

Khi chạy chương trình kết quả hiển thị giao diện như thế nào?

a)

Đoạn mã này sẽ tạo ra một cửa sổ với một nút bấm có nhãn "Chào mừng bạn đến với Qt!" và kích thước 400x200 pixels.

b)

Đoạn mã này sẽ tạo ra một cửa sổ có tiêu đề "Chào mừng bạn đến với Qt!".

c)

Đoạn mã này sẽ tạo ra một cửa sổ với một textbox hiển thị "Chào mừng bạn đến với Qt!" và kích thước 400x200 pixels.

d)

Đoạn mã này sẽ tạo ra một cửa sổ với một nhãn "Chào mừng bạn đến với Qt!".

83.

Cho tệp main.cpp chứa mã đoạn nguồn như sau:

#include <QApplication>

#include <QPushButton>

int main(int argc, char *argv[]) {

    QApplication app(argc, argv);

    QPushButton button("Nhấn tôi!");

    button.setGeometry(100, 100, 200, 50);

    QObject::connect(&button, &QPushButton::clicked, [&]() {

        button.setText("Đã nhấn!");

    });

    button.show();

    return app.exec();

}

Trong đoạn mã trên, câu lệnh nào chịu trách nhiệm hiển thị giao diện chính của ứng dụng?

a)

QApplication app(argc, argv);

b)

QPushButton button("Nhấn tôi!");

c)

return app.exec();

d)

button.show();

84.

Trong quá trình cài đặt Qt trên hệ điều hành nhúng, tại sao cần cài đặt Device và Kits?

a)

Để biên dịch chương trình phù hợp với kiến trúc của thiết bị.

b)

Để thêm tính năng kết nối mạng.

c)

Để tối ưu hóa bộ nhớ trong.

d)

Để hỗ trợ giao diện người dùng (UI).

85.

Module SVG trong Qt có chức năng gì?

a)

Tạo các hiệu ứng hoạt hình cho widget.

b)

Tăng tốc hiệu năng xử lý hình ảnh.

c)

Biên dịch mã SVG sang mã C++ trực tiếp.

d)

Hiển thị đồ họa vector mở rộng trong giao diện ứng dụng.

86.

Cho đoạn code sau:

MyWindow() {

    QPushButton *button = new QPushButton("Click me", this);

    button->resize(200, 100);

    button->move(100, 100);

    connect(button, &QPushButton::clicked, this, &MyWindow::........);

}

Điền vào chỗ trống sự kiện thích hợp được kích hoạt khi nhấn vào nút bấm trong Qt?

a)

onClick().

b)

onPress().

c)

onActivate().

d)

onSelect().

87.

Sau khi biên dịch kernel, bước tiếp theo trong quy trình phát triển hệ điều hành nhúng?

a)

Tạo partition trên bộ nhớ

b)

Cài đặt bootloader

c)

Biên dịch ứng dụng người dùng

d)

Tạo hệ thống file

88.

Board nhúng thường được sử dụng trong các ứng dụng nào?

a)

Điều khiển hệ thống nhúng và IoT

b)

Xử lý văn bản

c)

Thiết kế đồ họa

d)

Phát triển ứng dụng di động

89.

Trình biên dịch nào được sử dụng để biên dịch kernel trong quy trình phát triển hệ điều hành nhúng?

a)

Clang

b)

Javac

c)

Visual Studio

d)

GCC

90.

Trước khi tạo uImage bằng mkimage, bạn cần cài đặt công cụ hỗ trợ. Trên hệ điều hành Ubuntu, lệnh nào sau đây là đúng để cài đặt công cụ cần thiết?

a)

sudo install mkimage

b)

sudo apt install uboot-tools

c)

apt-get uboot-image

d)

apt-get install mkimage-tools

91.

Cho tệp character.c chứa mã nguồn chương trình C như sau: c Sao chép mã static void __exit exam_exit(void) { printk("goodbye, unregister major\n"); unregister_chrdev_region(dev, 1); cdev_del(my_cdev); } Trong hàm exam_exit, dòng lệnh nào sau đây chịu trách nhiệm gỡ bỏ cấu trúc cdev đã được tạo trong hàm init?

a)

cdev_unregister(my_cdev);

b)

unregister_chrdev_region(dev, 1);

c)

cdev_remove(dev);

d)

cdev_del(my_cdev);