Ngân hàng câu hỏi của chương

Câu hỏi: PRM393 - Dart nâng cao: OOP, thư viện, cấu trúc điều khiển

54 câu trắc nghiệm kèm lời giải của môn Lập trình di động (Flutter) - Mobile Programming, xếp theo thứ tự nhập vào ngân hàng.

Danh sách câu hỏi

20/54 câuCòn 34
AReduce UI work
BEnsure changes don't break functionality
CImprove animations
DChange layout
Lời giải
Các bài kiểm tra đóng vai trò quan trọng trong quá trình refactor code. Điều này là vì chúng giúp đảm bảo rằng các thay đổi không làm hỏng tính năng hiện có. Khi bạn refactor code, bạn có thể dễ dàng làm hỏng các chức năng quan trọng nếu không kiểm tra kỹ lưỡng. Các bài kiểm tra giúp bạn xác minh rằng các thay đổi không ảnh hưởng đến các chức năng đã được kiểm tra trước đó. Điều này giúp bạn tiết kiệm thời gian và công sức trong quá trình phát triển phần mềm.
Mở trang câu hỏi này →
2Why is immutability important in BLoC states?4 lựa chọnTrung bình67% trả lời đúng
AUI speed
BPredictable state changes
CMemory usage
DTheme control
Lời giải
Immutability trong các trạng thái BLoC là một tính chất quan trọng vì nó đảm bảo rằng trạng thái của ứng dụng luôn được dự đoán được. Khi một trạng thái được thay đổi, nó sẽ tạo ra một bản sao mới của trạng thái đó, thay vì thay đổi trực tiếp trạng thái hiện tại. Điều này giúp ngăn chặn các vấn đề liên quan đến trạng thái không được cập nhật một cách đồng bộ, từ đó cải thiện tốc độ và độ ổn định của ứng dụng. Ngoài ra, tính immutability còn giúp giảm thiểu các vấn đề liên quan đến đồng bộ hóa trạng thái giữa các phần tử trong ứng dụng, giúp ứng dụng trở nên dễ dàng hơn trong việc quản lý và bảo trì.
Mở trang câu hỏi này →
AA UI widget only
BA blueprint for creating objects
CA database table
DA network request
Lời giải
Một lớp Dart (class) chủ yếu đại diện cho một bản thiết kế chung (blueprint) để tạo ra các đối tượng (objects). Nó cung cấp một mô hình cơ bản cho việc tạo ra các đối tượng có tính chất và hành vi nhất định. Lớp Dart có thể được sử dụng để tạo ra các đối tượng có thể được sử dụng trong ứng dụng, chẳng hạn như các đối tượng UI, dữ liệu, v.v. Khi bạn tạo một lớp Dart, bạn có thể định nghĩa các thuộc tính (properties) và phương thức (methods) của lớp đó, giúp bạn có thể tạo ra các đối tượng có tính chất và hành vi mong muốn. Điều này giúp cho việc lập trình trở nên dễ dàng và hiệu quả hơn.
Mở trang câu hỏi này →
4Why is Dart considered suitable for Flutter development?4 lựa chọnDễ100% trả lời đúng
AIt is only used for backend systems
BIt supports both UI and application logic efficiently
CIt replaces native languages
DIt does not support asynchronous programming
Lời giải
Dart được coi là một ngôn ngữ phù hợp cho phát triển Flutter vì nó hỗ trợ cả logic ứng dụng và giao diện người dùng một cách hiệu quả. Dart cung cấp các tính năng như lập trình hướng đối tượng, lập trình hàm và hỗ trợ đa luồng, giúp các nhà phát triển có thể xây dựng các ứng dụng đa nền tảng một cách dễ dàng. Ngoài ra, Dart cũng hỗ trợ các tính năng như mã hóa và giải mã dữ liệu, giúp các ứng dụng Flutter có thể tương tác với các dịch vụ mạng và cơ sở dữ liệu một cách hiệu quả.
Mở trang câu hỏi này →
5What is pagination used for?4 lựa chọn
AUI animation
BHandling large datasets efficiently
CTheme management
DAuthentication
Lời giải
Trang trí là một kỹ thuật được sử dụng để quản lý và phân trang dữ liệu lớn trong các ứng dụng web. Nó giúp người dùng dễ dàng duyệt qua các trang dữ liệu khác nhau, giảm thiểu thời gian tải dữ liệu và cải thiện hiệu suất của ứng dụng. Khi dữ liệu lớn, việc hiển thị tất cả dữ liệu trên một trang sẽ gây ra sự chậm chạp và khó sử dụng. Trang trí giúp giải quyết vấn đề này bằng cách phân chia dữ liệu thành các trang nhỏ, mỗi trang chỉ hiển thị một lượng dữ liệu nhất định. Điều này cho phép người dùng dễ dàng chuyển đổi giữa các trang và tìm kiếm thông tin mong muốn.
Mở trang câu hỏi này →
6Why is BLoC suitable for large teams?4 lựa chọnDễ100% trả lời đúng
ALess code
BStandardized architecture
CFaster builds
DUI reuse
Lời giải
BLoC (Business Logic Component) là một mô hình kiến trúc phổ biến trong lập trình ứng dụng di động. Nó được thiết kế để giúp các đội ngũ phát triển lớn hóa giải quyết các vấn đề phức tạp trong việc quản lý logic kinh doanh. Một trong những lý do khiến BLoC phù hợp cho các đội ngũ lớn là kiến trúc được tiêu chuẩn hóa. Điều này giúp các thành viên trong đội ngũ dễ dàng hiểu và làm việc với nhau, giảm thiểu sự phức tạp và tăng cường hiệu suất. Khi sử dụng BLoC, các thành viên trong đội ngũ có thể tập trung vào việc phát triển các phần tử ứng dụng riêng lẻ mà không cần lo lắng về việc quản lý logic kinh doanh chung. Điều này giúp tăng cường hiệu suất và giảm thiểu thời gian phát triển.
Mở trang câu hỏi này →
ASVN
BGit
CFTP
DZIP
Lời giải
Các công cụ quản lý phiên bản là một phần quan trọng trong quy trình phát triển phần mềm. Git là một trong những công cụ quản lý phiên bản phổ biến nhất hiện nay. Nó cho phép các nhà phát triển theo dõi và quản lý các thay đổi trong mã nguồn của họ một cách hiệu quả. Git cung cấp các tính năng như kiểm soát phiên bản, quản lý thay đổi, và hợp tác giữa các nhà phát triển. Nó cũng cho phép các nhà phát triển tạo ra các phiên bản mới của mã nguồn và quay lại các phiên bản trước đó nếu cần thiết. SVN cũng là một công cụ quản lý phiên bản, nhưng nó không phổ biến như Git. FTP và ZIP không phải là công cụ quản lý phiên bản, mà là các công cụ khác phục vụ cho các mục đích khác.
Mở trang câu hỏi này →
AClass
BMethod
CObject
DNone of the above
Lời giải
Một biểu diễn thời gian thực của bất kỳ thực thể nào là một đối tượng. Đối tượng là một khái niệm cơ bản trong lập trình hướng đối tượng, mô tả một thực thể trong thế giới thực hoặc ảo. Nó có thể là một người, một vật thể, một sự kiện, v.v. Đối tượng có các tính chất và hành vi được xác định bởi các thuộc tính và phương thức. Biểu diễn thời gian thực của đối tượng cho phép chúng ta theo dõi và cập nhật trạng thái của đối tượng trong thời gian thực.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Hàm 'identical(a, b)' trả về giá trị True nếu cả hai biến tham chiếu đến cùng một đối tượng cụ thể trong bộ nhớ. Điều này có nghĩa là cả hai biến đều đang trỏ đến cùng một địa chỉ nhớ, và thay đổi giá trị của một biến sẽ ảnh hưởng đến cả hai biến. Ví dụ, nếu chúng ta có một biến 'x' và một biến 'y', và cả hai biến đều trỏ đến cùng một đối tượng, thì việc thay đổi giá trị của 'x' sẽ làm thay đổi giá trị của 'y'. Hàm 'identical(a, b)' thường được sử dụng để kiểm tra xem hai biến có tham chiếu đến cùng một đối tượng hay không.
Mở trang câu hỏi này →
ACatches a specific type before falling through to a general `catch`
BOnly for Flutter UI
CCatches everything including syntax errors
DInvalid in Dart
Lời giải
Trong Dart, lệnh `try { } on SpecificException catch (e) { }` được sử dụng để bắt một loại ngoại lệ cụ thể trước khi rơi xuống một `catch` chung. Lệnh `on` cho phép chúng ta bắt một loại ngoại lệ cụ thể mà không cần phải bắt tất cả các loại ngoại lệ. Điều này giúp chúng ta có thể xử lý ngoại lệ cụ thể một cách hiệu quả hơn. Ví dụ, nếu chúng ta muốn bắt ngoại lệ `SpecificException` mà không cần phải bắt tất cả các loại ngoại lệ khác, chúng ta có thể sử dụng lệnh `try { } on SpecificException catch (e) { }`. Khi ngoại lệ `SpecificException` xảy ra, lệnh `catch` sẽ được thực thi và chúng ta có thể xử lý ngoại lệ đó theo cách riêng biệt.
Mở trang câu hỏi này →
11A constructor is used to?4 lựa chọn
ADestroy object
BCreate object
CCall function
DImport library
Lời giải
Một constructor trong lập trình là một hàm đặc biệt được sử dụng để tạo ra một đối tượng mới. Nó được gọi khi một đối tượng mới được tạo ra và được sử dụng để khởi tạo các thuộc tính và phương thức của đối tượng. Constructor giúp tạo ra một đối tượng có trạng thái ban đầu và giúp lập trình viên có thể sử dụng các thuộc tính và phương thức của đối tượng một cách dễ dàng. Ví dụ, khi bạn tạo ra một đối tượng Vehicle, constructor sẽ giúp khởi tạo các thuộc tính như màu sắc, số chỗ ngồi, tốc độ,... và giúp bạn có thể sử dụng các phương thức như di chuyển, dừng xe,...
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Trong Dart, một Factory Constructor là một phương thức đặc biệt trong một lớp, được sử dụng để tạo ra một đối tượng mới. Nó khác với các phương thức constructor khác vì nó không phải luôn luôn tạo ra một đối tượng mới. Ví dụ, một Factory Constructor có thể được sử dụng để tạo ra một đối tượng từ một đối tượng khác. Tuy nhiên, một Factory Constructor trong một lớp abstract hoặc một lớp abstract final phải luôn luôn trả về một đối tượng mới. Điều này là do một lớp abstract hoặc một lớp abstract final không thể được tạo ra trực tiếp, và Factory Constructor được sử dụng để tạo ra một lớp con cụ thể. Vì vậy, trong trường hợp này, câu trả lời đúng là True.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
CRUD là viết tắt của các từ tiếng Anh Create, Read, Update và Design. Tuy nhiên, trong thực tế, Design không phải là một phần của CRUD. CRUD thường được sử dụng để mô tả các hoạt động cơ bản của quản lý dữ liệu, bao gồm tạo mới dữ liệu (Create), đọc dữ liệu (Read), cập nhật dữ liệu (Update) và xóa dữ liệu (Delete). Vì vậy, câu trả lời đúng cho câu hỏi này là False, vì Design không phải là một phần của CRUD.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Dart có một câu lệnh switch cho phép thực hiện các khối mã khác nhau dựa trên giá trị của một biến. Câu lệnh switch được sử dụng để kiểm tra giá trị của một biến và thực hiện các hành động khác nhau dựa trên giá trị đó. Điều này giúp làm cho mã của bạn ngắn gọn và dễ đọc hơn. Ví dụ, nếu bạn có một biến với các giá trị khác nhau và bạn muốn thực hiện các hành động khác nhau dựa trên giá trị của biến đó, thì câu lệnh switch là một lựa chọn tốt.
Mở trang câu hỏi này →
Aimport 'dart:math' as math;
Balias 'dart:math';
Cuse dart:math -> math;
Dimport as 'dart:math' math;
Lời giải
Để nhập thư viện với bút danh, bạn cần sử dụng từ khóa 'as' sau từ khóa 'import'. Ví dụ, nếu bạn muốn nhập thư viện 'dart:math' với bút danh 'math', bạn sẽ nhập như sau: 'import 'dart:math' as math;'. Điều này cho phép bạn sử dụng các hàm và biến của thư viện 'dart:math' mà không cần phải nhập đầy đủ tên thư viện. Điều này giúp cho mã nguồn của bạn trở nên ngắn gọn và dễ đọc hơn.
Mở trang câu hỏi này →
16How do you create an object in Dart?4 lựa chọn
APerson = new();
BPerson p = new Person();
CPerson();
Dobject Person();
Lời giải

Để tạo một đối tượng trong Dart, bạn cần sử dụng từ khóa 'new' và gọi đến hàm constructor của lớp đó. Ví dụ, nếu bạn muốn tạo một đối tượng của lớp 'Person', bạn cần sử dụng phương thức constructor 'Person()'. Tuy nhiên, trong Dart, bạn không thể chỉ gọi đến phương thức constructor mà không gán nó vào một biến. Vì vậy, cách tạo đối tượng trong Dart là gán phương thức constructor vào một biến. Ví dụ: 'Person p = new Person(); '. Đây là cách tạo đối tượng trong Dart.

Mở trang câu hỏi này →
AIdentical
B`implements` is only for enum
C`extends` disallows @override
D`implements` requires you to reimplement the public API with no inherited implementation; `extends` inherits code
Lời giải
Tính từ khóa `implements` và `extends` trong lập trình hướng đối tượng (OOP) có chức năng khác nhau. Khóa từ `extends` cho phép một lớp con kế thừa các thuộc tính và phương thức từ lớp cha. Trong khi đó, `implements` chỉ cho phép lớp con thực hiện các phương thức đã được định nghĩa trong một giao diện (interface). Điều này có nghĩa là khi sử dụng `implements`, lớp con phải định nghĩa lại toàn bộ giao diện mà không được kế thừa bất kỳ phương thức nào từ lớp cha. Ngược lại, khi sử dụng `extends`, lớp con có thể kế thừa các phương thức và thuộc tính từ lớp cha và bổ sung thêm các phương thức mới hoặc thay thế các phương thức đã có. Ví dụ, nếu một lớp cha có phương thức `public void eat()`, lớp con sử dụng `extends` có thể kế thừa phương thức này và bổ sung thêm phương thức `public void sleep()`. Trong khi đó, lớp con sử dụng `implements` phải định nghĩa lại toàn bộ giao diện và không được kế thừa bất kỳ phương thức nào từ lớp cha.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Trong Dart, một constructor được đặt tên cho phép một lớp có nhiều constructor khác nhau với mục đích khác nhau. Điều này cho phép bạn tạo ra nhiều phương thức khởi tạo khác nhau cho một lớp, mỗi phương thức khởi tạo có thể có các tham số và hành vi khác nhau. Ví dụ, bạn có thể có một constructor được đặt tên để tạo ra một đối tượng mới từ một ID, và một constructor khác để tạo ra một đối tượng mới từ một tập hợp dữ liệu. Điều này giúp tăng cường tính linh hoạt và dễ sử dụng của lớp.
Mở trang câu hỏi này →
A`div`
B`~/`
C`%`
D`/` (always yields double)
Lời giải
Trong Dart, để thực hiện phép chia số nguyên (integer division) cho hai giá trị `int`, bạn cần sử dụng toán tử `~/`. Ví dụ, nếu bạn muốn chia 10 cho 3, kết quả sẽ là 3.333333333333333, nhưng nếu bạn sử dụng toán tử `~/`, kết quả sẽ là 3. Điều này là vì toán tử `~/` thực hiện phép chia số nguyên, bỏ qua phần thập phân. Trong khi đó, toán tử `/` luôn trả về kết quả là một số thực (double), và toán tử `%` được sử dụng để tìm phần dư của phép chia. Toán tử `div` không phải là một toán tử hợp lệ trong Dart.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Hàm ?? trong Dart được sử dụng để cung cấp giá trị mặc định nếu biểu thức được đánh giá là null. Nó giúp tránh lỗi Null Pointer khi làm việc với các đối tượng có thể là null.
Mở trang câu hỏi này →