MMA301DễKỳ 7Chuyên ngành Cập nhật 24/07/2026

Multiplatform Mobile App Development - Phát triển ứng dụng di động đa nền tảng

Ôn luyện MMA301 – Phát triển ứng dụng di động đa nền tảng với React Native: ngân hàng câu hỏi trắc nghiệm có giải thích chi tiết, luyện thi cuối kỳ hiệu quả. Nội dung bao quát React Native, Expo, component & navigation, styling Flexbox, quản lý state bằng hooks/Redux/Context API, FlatList/SectionList, thông báo đẩy, lưu trữ AsyncStorage/SQLite/Firebase, tích hợp Gemini AI và xuất bản ứng dụng iOS/Android. Môn 3 tín chỉ tại FPT University, tiên quyết FER202.

130Câu hỏi
7Chủ đề
Thử sức tại chỗ

Trả lời ngay tại đây

Chưa trả lời câu nào
1MMA301 - Chương 5: Điều hướng với React NavigationKhó

Consider the following component using useIsFocused and useEffect. What will be the behavior

Đề bài
if the component is initially unfocused and then gets focused? import React, {
  useEffect
}

from 'react'; import { Text } from 'react-native'; import { useIsFocused } from '@react-navigation/native'; function ProfileScreen() { const isFocused = useIsFocused(); useEffect(() => {

Đề bài
if (isFocused) {
  console.log('ProfileScreen is now focused');
}

}, [isFocused]); return <Text>Profile Screen</Text>; }

2MMA301 - Chương 2: Component cơ bản và vòng đờiDễ
A View component can be nested inside other views. Select the correct option.
3MMA301 - Chương 1: Giới thiệu React Native, kiến trúc Bridge và Native ModuleTrung bình
Ordering steps in the process of how React Native works in Bridge architecture: 1.The main cable starts working and starts loading JavaScript loads 2.Produces a new DOM (structure) and sends changes to Shadow cable 3.If the JavaScript code is successfully uploaded, the main thread sends it to another JavaScript thread 4.Main thread is able to render something on the screen 5.The shadow string calculates the structure and sends the parameters/properties of the structure to the main sequence
Còn 3 câu nữa ở trên

Trả lời hết các câu trên để xem tổng kết, hoặc vào phiên học ngay.

Học từ ngân hàng câu hỏi

Bắt đầu một phiên học theo môn

Tiến độ của bạn luôn được tính và đồng bộ trực tiếp theo tổng số lượng câu hỏi mới nhất của môn học này.

130Ngân hàng hiện tại--Tiến độ môn

Câu hỏi của môn

24/130 câuCòn 106
Đề bài
switch (action.type) {
  case 'INCREMENT': return {
    ...state, count: state.count + 1
  }
  ;
  default: return state;
}

}; // Action const increment = () => ({ type: 'INCREMENT' });

A{ count: 0 }
B{ count: 1 }
C{ count: 2 }
D{ count: -1 }
Lời giải
Khi chúng ta sử dụng Redux trong ứng dụng React Native, chúng ta cần hiểu cách hoạt động của các reducer và hành động. Trong trường hợp này, chúng ta có một reducer tên là counterReducer và một hành động tên là increment. Khi chúng ta gọi hành động increment, nó sẽ gửi một yêu cầu đến reducer để cập nhật trạng thái ứng dụng. Trong reducer, chúng ta sử dụng một switch để kiểm tra loại hành động được gửi đến. Nếu hành động là 'INCREMENT', chúng ta sẽ cập nhật giá trị của count bằng cách thêm 1 vào giá trị hiện tại. Nếu hành động không phải là 'INCREMENT', chúng ta sẽ giữ nguyên trạng thái hiện tại. Vì vậy, khi chúng ta gọi hành động increment, trạng thái ứng dụng sẽ được cập nhật thành { count: 1 }.
Mở trang câu hỏi này →
AalignContent
BjustifyContent
CalignItems
DalignSelf
Lời giải
Flexbox là một kỹ thuật sắp xếp các yếu tố trong giao diện người dùng. Trong đó, có một thuộc tính quan trọng giúp bạn kiểm soát cách sắp xếp các yếu tố theo trục chính (main axis). Trục chính có thể là chiều ngang hoặc chiều dọc tùy thuộc vào hướng của flexbox. Để kiểm soát cách sắp xếp các yếu tố này, bạn có thể sử dụng thuộc tính justifyContent. Thuộc tính này cho phép bạn sắp xếp các yếu tố theo trục chính một cách đều đặn hoặc theo một cách khác tùy thuộc vào giá trị bạn đặt cho nó. Ví dụ, nếu bạn đặt justifyContent là 'flex-start', các yếu tố sẽ được sắp xếp từ trái sang phải. Nếu bạn đặt justifyContent là 'flex-end', các yếu tố sẽ được sắp xếp từ phải sang trái. Ngoài ra, bạn cũng có thể sử dụng các giá trị khác như 'center', 'space-between', 'space-around' để có được hiệu ứng sắp xếp mong muốn.
Mở trang câu hỏi này →
7How does React Native differ from React.js in terms of rendering components?4 lựa chọnDễ100% trả lời đúng
AReact Native renders components using HTML markup
BReact Native renders components using platform-specific native components
CReact Native renders components using virtual DOM
DReact Native renders components using Canvas API
Lời giải
React Native khác React.js ở cách render các thành phần. Trong React.js, các thành phần được render bằng cách sử dụng DOM ảo (Virtual DOM), giúp tăng tốc độ render và giảm thiểu việc tương tác với DOM thực sự. Tuy nhiên, React Native lại sử dụng các thành phần bản địa (platform-specific native components) để render các thành phần. Điều này cho phép ứng dụng di động được xây dựng trên React Native có thể tận dụng được các tính năng và khả năng của hệ điều hành di động cụ thể. Ví dụ, trên Android, React Native có thể sử dụng các thành phần UI được cung cấp bởi Android SDK, trong khi trên iOS, nó có thể sử dụng các thành phần UI được cung cấp bởi iOS SDK. Điều này giúp tạo ra ứng dụng di động có hiệu suất cao và tương tác mượt mà.
Mở trang câu hỏi này →
8How would you apply the FlatList component to render a list of items efficiently?4 lựa chọnTrung bình67% trả lời đúng
ABy using a ScrollView component with a map function to render each item
BBy defining a custom renderItem function and passing it to the FlatList component
CBy manually iterating over the list of items and rendering each item individually
DBy using a ListView component provided by third-party libraries
Lời giải
Để áp dụng thành công FlatList vào việc hiển thị danh sách các mục một cách hiệu quả, bạn cần hiểu rõ về cách sử dụng nó. FlatList là một thành phần được thiết kế để hiển thị danh sách các mục một cách hiệu quả, đặc biệt là khi danh sách có số lượng lớn các mục. Để sử dụng FlatList, bạn cần định nghĩa một hàm renderItem tùy chỉnh và truyền nó vào FlatList. Hàm renderItem này sẽ chịu trách nhiệm hiển thị mỗi mục trong danh sách một cách độc lập. Điều này cho phép bạn có thể tùy chỉnh cách hiển thị mỗi mục một cách linh hoạt.
Mở trang câu hỏi này →
AImage
BText
CScrollView
DView
Lời giải
Trong React Native, View là thành phần cơ bản và là nền tảng cho tất cả các thành phần khác. Nó cung cấp chức năng cơ bản để rendering các yếu tố lên màn hình. View có thể được sử dụng để chứa các thành phần khác và giúp sắp xếp chúng theo một cách có trật tự. Ngoài ra, View cũng có thể được sử dụng để tạo ra các layout phức tạp và linh hoạt. Vì vậy, View là thành phần quan trọng và cơ bản trong React Native.
Mở trang câu hỏi này →
Arow
Bcolumn
Ccolumn-reverse
Drow-reverse
Lời giải
Để sắp xếp các con trỏ từ dưới lên trên, bạn cần sử dụng thuộc tính 'flex-direction' với giá trị 'column-reverse'. Điều này có nghĩa là các con trỏ sẽ được sắp xếp theo chiều dọc và ngược lại, bắt đầu từ dưới lên trên. Ví dụ, nếu bạn có một div chứa nhiều div nhỏ hơn, và bạn muốn các div nhỏ hơn được sắp xếp theo chiều dọc và ngược lại, bắt đầu từ dưới lên trên, thì bạn có thể sử dụng thuộc tính 'flex-direction' với giá trị 'column-reverse'. Điều này sẽ giúp bạn có được thiết kế mong muốn.
Mở trang câu hỏi này →
Aextends
Binherits
Cinclude
Dimport
Lời giải
Để mở rộng một thành phần từ một thành phần cơ sở trong Vue.js, chúng ta sử dụng từ khóa 'extends'. Từ khóa này cho phép chúng ta tạo ra một thành phần mới dựa trên một thành phần đã tồn tại. Ví dụ, nếu chúng ta có một thành phần cơ sở tên là 'BaseComponent', chúng ta có thể tạo ra một thành phần mới tên là 'ExtendedComponent' bằng cách sử dụng 'extends'. Điều này giúp chúng ta tránh phải lặp lại mã và tạo ra một thành phần mới với các tính năng và thuộc tính đã được định nghĩa trong thành phần cơ sở.
Mở trang câu hỏi này →
12What is the purpose of the FlatList component?4 lựa chọnTrung bình
ATo display a list of items in a grid layout
BTo display large quantities of scrollable content
CTo create a carousel of images
DTo manage state within the component
Lời giải
FlatList là một thành phần trong React Native được sử dụng để hiển thị một danh sách lớn các mục có thể cuộn. Mục đích chính của FlatList là để hiển thị một lượng lớn nội dung có thể cuộn, giúp người dùng dễ dàng xem và tương tác với các mục trong danh sách. FlatList được thiết kế để hiệu suất cao và có thể xử lý lượng dữ liệu lớn mà không gặp sự cố. Nó cũng cung cấp các tính năng như khả năng cuộn tự động, khả năng tải thêm dữ liệu khi người dùng cuộn đến cuối danh sách, v.v. Tóm lại, FlatList là một thành phần quan trọng trong React Native giúp người dùng dễ dàng xem và tương tác với các mục trong danh sách.
Mở trang câu hỏi này →
AIt updates the component's state
BIt renders the component's UI
CIt handles user input events
DIt performs data fetching operations
Lời giải
Mục đích của phương thức render() trong một thành phần React Native là tạo ra giao diện người dùng (UI) của thành phần đó. Khi một thành phần React Native được tạo ra, phương thức render() sẽ được gọi để tạo ra một phần tử DOM (Document Object Model) đại diện cho thành phần đó. Phần tử DOM này sẽ được sử dụng để hiển thị giao diện người dùng của thành phần trên màn hình. Phương thức render() cũng có thể được sử dụng để cập nhật giao diện người dùng của thành phần khi dữ liệu thay đổi. Điều này giúp đảm bảo rằng giao diện người dùng luôn phản ánh trạng thái hiện tại của dữ liệu.
Mở trang câu hỏi này →
Aflex-start
Bcenter
Cflex-end
Dstretch
Eflex-center
Lời giải
Tính chất alignItems được sử dụng để xác định cách sắp xếp các mục trong một hàng flex. Các lựa chọn có sẵn cho alignItems bao gồm: flex-start, center, flex-end, stretch. Tuy nhiên, 'flex-center' không phải là một trong những lựa chọn chính thức của alignItems. 'flex-center' thường được sử dụng như một cách viết tắt của 'center', nhưng nó không phải là một giá trị được công nhận trong CSS. Vì vậy, trong các lựa chọn trên, 'flex-center' không phải là một tùy chọn hợp lệ của alignItems.
Mở trang câu hỏi này →
AcomponentShouldMount()
BcomponentWillUpdate()
CshouldComponentUpdate()
DcomponentUpdate()
Lời giải
Khi xây dựng hoặc cập nhật các tòa nhà hoặc mạch điện mới, phương pháp nào được sử dụng trước khi khánh thành? Trong React, khi nhận được các thuộc tính hoặc trạng thái mới, phương pháp nào được gọi trước khi render lại thành phần? Câu trả lời đúng là phương pháp được sử dụng để kiểm tra xem thành phần có cần được cập nhật hay không. Phương pháp này được gọi là shouldComponentUpdate(). Nó được sử dụng để kiểm tra xem thành phần có cần được cập nhật lại hay không dựa trên các thuộc tính hoặc trạng thái mới. Nếu thành phần không cần được cập nhật, phương pháp này sẽ trả về false và thành phần sẽ không được cập nhật lại. Nếu thành phần cần được cập nhật, phương pháp này sẽ trả về true và thành phần sẽ được cập nhật lại.
Mở trang câu hỏi này →
AAlign children from right to left. If wrapping is enabled, then the next line will start under the first item on the right of the container
BAlign children from top to bottom. If wrapping is enabled, then the next line will start to the right of the first item on the top of the container
CAlign children from left to right. If wrapping is enabled, then the next line will start under the first item on the left of the container
DAlign children from bottom to top. If wrapping is enabled, then the next line will start to the right of the first item on the bottom of the container
Lời giải
Tính chất của giá trị row-reverse của thuộc tính Flex Direction là sắp xếp các con trỏ từ phải sang trái. Nếu wrapping được bật, thì dòng tiếp theo sẽ bắt đầu dưới item đầu tiên ở bên phải của hộp chứa.
Mở trang câu hỏi này →
ATo define the layout of user interface components
BTo handle asynchronous JavaScript tasks
CTo interact with platform-specific APIs and functionalities
DTo manage state and data flow within the application
Lời giải
Mô-đun Native trong React Native là một phần quan trọng của ứng dụng di động. Mục đích chính của nó là tương tác với các API và tính năng đặc trưng của từng nền tảng (ví dụ: iOS và Android). Điều này cho phép các nhà phát triển xây dựng ứng dụng có thể tận dụng được các tính năng và khả năng của từng nền tảng, từ đó tạo ra trải nghiệm người dùng tốt hơn. Ví dụ, một ứng dụng có thể sử dụng tính năng camera của điện thoại để chụp ảnh, hoặc sử dụng GPS để theo dõi vị trí của người dùng. Mô-đun Native giúp các nhà phát triển tương tác với các tính năng này một cách dễ dàng và hiệu quả.
Mở trang câu hỏi này →
Astyle
Bprovider
CmapType
Dregion
EmapLocation
Lời giải
Khi sử dụng Geolocation API, bạn cần biết các thuộc tính của MapView. Các thuộc tính phổ biến bao gồm style, provider, mapType, region. Tuy nhiên, trong số các lựa chọn trên, 'mapLocation' không phải là thuộc tính của MapView. Thay vào đó, 'mapLocation' thường được sử dụng để chỉ định vị trí trên bản đồ. Vì vậy, khi sử dụng Geolocation API, bạn cần chọn đúng thuộc tính cho MapView để đảm bảo tính chính xác và hiệu quả.
Mở trang câu hỏi này →
19Which component is used to display a block of text?4 lựa chọnTrung bình67% trả lời đúng
AText
BTextView
CTextComponent
DTextInput
Lời giải
Trong lập trình Android, có nhiều thành phần được sử dụng để hiển thị văn bản. Tuy nhiên, để hiển thị một khối văn bản, chúng ta thường sử dụng thành phần TextView. TextView cho phép chúng ta hiển thị văn bản với nhiều định dạng khác nhau, bao gồm font, kích thước, màu sắc và hơn thế nữa. Ngoài ra, TextView cũng cho phép chúng ta thêm các tính năng như khả năng nhấp nháy, khả năng chọn văn bản và khả năng nhập văn bản. Vì vậy, trong trường hợp này, thành phần được sử dụng để hiển thị một khối văn bản là TextView.
Mở trang câu hỏi này →
AThe effect will run only once when the component mounts
BThe effect will run every time the component is focused and not unfocused
CThe effect will not run at all because it needs dependencies to function
DThe effect will run every time the component is rendered, regardless of focus
Lời giải
Khi sử dụng hook `useFocusEffect` trong React Navigation, nếu bạn gọi nó bên trong một thành phần chức năng nhưng cung cấp một mảng phụ thuộc rỗng, điều gì sẽ xảy ra? Câu trả lời chính xác là: hiệu ứng sẽ chạy mỗi khi thành phần được tập trung vào và không bị mất tập trung. Điều này xảy ra vì `useFocusEffect` được thiết kế để chạy khi thành phần được tập trung vào và không bị mất tập trung, và nếu không có phụ thuộc nào được cung cấp, nó sẽ chạy mỗi khi thành phần được tập trung vào và không bị mất tập trung.
Mở trang câu hỏi này →
Abackground-color
Bbg-color
CbackgroundColor
Dbg
Lời giải

Để đặt màu nền cho một thành phần trong ứng dụng React Native, bạn cần sử dụng thuộc tính 'backgroundColor'. Đây là thuộc tính được sử dụng rộng rãi trong thiết kế giao diện người dùng và được hỗ trợ bởi hầu hết các thành phần trong React Native. Ví dụ, bạn có thể sử dụng thuộc tính này để đặt màu nền cho một View, Text hoặc thậm chí là một Image. Để sử dụng thuộc tính 'backgroundColor', bạn cần thêm nó vào đối tượng style của thành phần và gán giá trị màu mong muốn. Ví dụ: const styles =

Lời giải
StyleSheet.create({
  container: {
    backgroundColor: '#f2f2f2',
  }
}

);

Mở trang câu hỏi này →
AAndroid SDK and Android Virtual Device (AVD)
BXcode and iOS Simulator
CCocoaPods
DNone of the above
Lời giải
Để xây dựng và chạy một ứng dụng React Native trên thiết bị Android hoặc máy ảo, bạn cần có một số công cụ đặc biệt. Trước hết, bạn cần cài đặt Android SDK và Android Virtual Device (AVD). Android SDK là bộ công cụ cần thiết để xây dựng và chạy ứng dụng Android, trong khi AVD là một phần mềm mô phỏng thiết bị Android để bạn có thể thử nghiệm ứng dụng của mình mà không cần phải có thiết bị thực tế. Ngoài ra, bạn cũng cần có một trình biên dịch như Gradle để xây dựng ứng dụng của mình. Vì vậy, đáp án đúng là Android SDK và Android Virtual Device (AVD).
Mở trang câu hỏi này →
23Which method can be used for conditional rendering based on the platform?4 lựa chọnTrung bình67% trả lời đúng
APlatform.select
BPlatform.OS
CPlatform.Version
DPlatform.isIOS
Lời giải
Để thực hiện việc render điều kiện dựa trên nền tảng, chúng ta có thể sử dụng phương thức Platform.select. Phương thức này cho phép chúng ta chọn một trong nhiều mã nguồn dựa trên nền tảng mà ứng dụng đang chạy. Ví dụ, nếu chúng ta muốn hiển thị một biểu tượng khác nhau trên Android và iOS, chúng ta có thể sử dụng Platform.select để chọn biểu tượng phù hợp cho nền tảng hiện tại. Ngoài ra, chúng ta cũng có thể sử dụng Platform.select để điều chỉnh giao diện ứng dụng dựa trên nền tảng, chẳng hạn như thay đổi màu sắc hoặc font chữ.
Mở trang câu hỏi này →
APlatform module
BDevice module
CPlatformDetect module
DOS module
Lời giải
Module phát hiện nền tảng mà ứng dụng hoạt động. Trong lập trình, nền tảng có thể là hệ điều hành, thiết bị di động, v.v. Để xác định nền tảng mà ứng dụng đang hoạt động, chúng ta cần sử dụng một module chuyên dụng. Trong các lựa chọn trên, module phát hiện nền tảng được gọi là "Platform module". Nó giúp ứng dụng xác định được nền tảng mà nó đang chạy trên, từ đó có thể thực hiện các hành động phù hợp.
Mở trang câu hỏi này →