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ủ đề

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

64/130 câuCòn 66
45Which of the following are Android components?4 lựa chọnDễ100% trả lời đúng
ADrawerLayoutAndroid
BTouchableNativeFeedback
CInputAccessoryView
DSafeAreaView
Lời giải
Các thành phần Android là những phần quan trọng trong ứng dụng Android. Trong câu hỏi này, chúng ta cần xác định những thành phần nào thuộc về Android. DrawerLayoutAndroid và TouchableNativeFeedback là hai thành phần được sử dụng trong ứng dụng Android để tạo giao diện người dùng. DrawerLayoutAndroid được sử dụng để tạo thanh kéo ra, trong khi TouchableNativeFeedback được sử dụng để tạo hiệu ứng nhấn vào các yếu tố giao diện người dùng. Cả hai thành phần này đều được hỗ trợ bởi Android và được sử dụng rộng rãi trong các ứng dụng Android.
Mở trang câu hỏi này →
Aitems
BdataSource
Cdata
Dsource
Lời giải
Trong React Native, khi sử dụng FlatList để hiển thị danh sách dữ liệu, bạn cần chỉ định nguồn dữ liệu cho danh sách. Prop được sử dụng để chỉ định nguồn dữ liệu này là 'data'. Prop này được sử dụng để truyền dữ liệu từ ứng dụng vào FlatList, giúp ứng dụng có thể hiển thị danh sách dữ liệu một cách hiệu quả. Ngoài ra, bạn cũng có thể sử dụng các prop khác như 'items', 'dataSource', 'source' để chỉ định nguồn dữ liệu, nhưng 'data' là lựa chọn phổ biến và được khuyến nghị sử dụng.
Mở trang câu hỏi này →
Awidth
Bflex
Cdimensions
Dsize
Lời giải

Trong React Native, thuộc tính được sử dụng để chỉ định chiều rộng của một thành phần có kích thước cố định là 'width'. Điều này có nghĩa là bạn có thể sử dụng thuộc tính này để đặt kích thước cố định cho một thành phần, chẳng hạn như một hình ảnh hoặc một văn bản. Ví dụ, nếu bạn muốn đặt chiều rộng của một hình ảnh là 300 đơn vị, bạn có thể sử dụng thuộc tính 'width' như sau:

Lời giải
<Image style={
  {
    width: 300
  }
}
source={
  ...
}
/>

. Điều này giúp bạn có thể kiểm soát kích thước của thành phần một cách chính xác và linh hoạt.

Mở trang câu hỏi này →
Aclass
Bstyle
CclassName
Did
Lời giải

Trong React Native, để áp dụng các kiểu dáng cho một thành phần, bạn cần sử dụng thuộc tính 'style'. Thuộc tính này cho phép bạn định nghĩa các thuộc tính CSS như màu sắc, kích thước, font,... cho thành phần của mình. Ví dụ, bạn có thể sử dụng thuộc tính 'style' để đặt màu sắc cho một button như sau:

Lời giải
<Button style={
  {
    backgroundColor: 'red'
  }
}
>Click me!</Button>

. Ngoài ra, bạn cũng có thể sử dụng thuộc tính 'style' để đặt kích thước cho một thành phần, ví dụ:

Lời giải
<View style={
  {
    width: 100, height: 100
  }
}
/>

. Thuộc tính 'style' là một đối tượng, vì vậy bạn có thể thêm nhiều thuộc tính vào nó để tạo ra các kiểu dáng phức tạp hơn.

Mở trang câu hỏi này →
AJSX
BCSS-in-JS
CTypeScript
DBabel
Lời giải
Tính năng của React Native cho phép viết mã UI thay thế cho HTML và CSS được gọi là JSX. JSX là một phần mở rộng của JavaScript cho phép bạn viết mã HTML và CSS trực tiếp vào mã JavaScript. Điều này giúp bạn có thể viết mã UI một cách dễ dàng và hiệu quả hơn. Với JSX, bạn có thể viết mã HTML và CSS như một phần của mã JavaScript, và React Native sẽ tự động chuyển đổi nó thành mã thực thi được. Điều này giúp bạn có thể tập trung vào việc viết mã UI mà không cần phải lo lắng về việc viết mã HTML và CSS riêng biệt.
Mở trang câu hỏi này →
50Which of the following are risks and drawbacks of React Native? (Choose 3 answers)4 lựa chọnTrung bình67% trả lời đúng
ALow security
BLong initialization time
CHard to learn
DLimited access to device features
Lời giải
React Native là một công nghệ cho phép xây dựng các ứng dụng di động trên nhiều nền tảng khác nhau. Tuy nhiên, cũng như bất kỳ công nghệ nào, React Native cũng có một số rủi ro và hạn chế. Dưới đây là 3 rủi ro và hạn chế chính của React Native: Rủi ro thứ nhất là bảo mật (Low security). Vì React Native sử dụng JavaScript và các thư viện mở nên có thể xảy ra các lỗ hổng bảo mật nếu không được kiểm tra và bảo trì đúng cách. Rủi ro thứ hai là thời gian khởi động dài (Long initialization time). Điều này có thể xảy ra khi ứng dụng của bạn cần tải một lượng lớn dữ liệu hoặc thực hiện các tác vụ phức tạp khi khởi động. Rủi ro thứ ba là hạn chế truy cập vào các tính năng của thiết bị (Limited access to device features). Vì React Native sử dụng các thư viện và công nghệ khác nhau để truy cập vào các tính năng của thiết bị, nên có thể xảy ra các hạn chế trong việc truy cập vào một số tính năng nhất định. Tóm lại, mặc dù React Native là một công nghệ mạnh mẽ và linh hoạt, nhưng cũng có một số rủi ro và hạn chế cần được xem xét và giải quyết.
Mở trang câu hỏi này →
51Which of the following is not advantage of React Native?4 lựa chọnDễ100% trả lời đúng
AReusable code and Advanced components
BLive and Hot reloads
CExternal Plugin Support
DEnhanced performance and efficiency
Lời giải
React Native không phải là một công nghệ mới và vẫn còn tồn tại một số hạn chế. Trong số các lựa chọn trên, có một điểm không phải là lợi thế của React Native. Đó là 'Enhanced performance and efficiency'. Thực tế, React Native có thể gặp khó khăn trong việc tối ưu hóa hiệu suất và hiệu suất so với các ứng dụng native. Điều này là do React Native sử dụng một lớp trung gian để chạy ứng dụng trên thiết bị di động, dẫn đến sự chậm trễ và tiêu tốn tài nguyên. Vì vậy, 'Enhanced performance and efficiency' không phải là một lợi thế của React Native.
Mở trang câu hỏi này →
52What is state?4 lựa chọnDễ75% trả lời đúng
AWhich stands for properties and is being used for passing data from one component to another
BAlign children within the main axis of our container
CA JavaScript object that contains data that influences how a component looks in a particular area at a time
DA method used for handling asynchronous tasks within the application
Lời giải
Trạng thái (state) trong React là một đối tượng JavaScript chứa dữ liệu ảnh hưởng đến cách một thành phần được trình bày trong một khu vực cụ thể tại một thời điểm. Nó được sử dụng để lưu trữ và cập nhật dữ liệu của thành phần, và có thể được sử dụng để điều khiển sự kiện và hành vi của thành phần. Trạng thái được sử dụng để lưu trữ dữ liệu tạm thời và không được lưu trữ trong bộ nhớ cache. Nó được sử dụng rộng rãi trong các ứng dụng React để quản lý dữ liệu và trạng thái của thành phần.
Mở trang câu hỏi này →
53Which of the following is FALSE about HMR (Hot Module Replacement)?4 lựa chọnKhó33% trả lời đúng
AUpdates the browser as soon as changes are made to the JS code
BMaintains application status
CSave time by updating only modified code
DRequires a full page reload after each change
Lời giải
HMR (Hot Module Replacement) là một tính năng của trình biên dịch Webpack, cho phép cập nhật mã nguồn JavaScript mà không cần phải reload trang web. Điều này giúp tiết kiệm thời gian và tăng hiệu suất phát triển. Khi sử dụng HMR, trình duyệt sẽ được cập nhật ngay lập tức khi có thay đổi trong mã nguồn JavaScript. Điều này giúp duy trì trạng thái ứng dụng và cho phép phát triển nhanh chóng. Ngoài ra, HMR chỉ cập nhật mã nguồn đã thay đổi, giúp tiết kiệm thời gian và tăng hiệu suất. Vì vậy, HMR không yêu cầu reload trang web toàn bộ sau mỗi lần thay đổi.
Mở trang câu hỏi này →
AComponent
BNative
CShadow
DYoga
Lời giải
Trong kiến trúc Bridge, framework đa nền tảng xử lý nhiệm vụ này với sự giúp đỡ của động cơ bố cục do Facebook sở hữu được gọi là Yoga. Yoga là một động cơ bố cục linh hoạt, có thể thích nghi với nhiều loại màn hình và thiết bị khác nhau. Nó cho phép các nhà phát triển tạo ra các ứng dụng có thể chạy trên nhiều nền tảng khác nhau mà không cần phải viết mã riêng biệt cho từng nền tảng. Với Yoga, các nhà phát triển có thể tập trung vào việc xây dựng ứng dụng mà không phải lo lắng về việc làm cho nó chạy trên nhiều nền tảng khác nhau.
Mở trang câu hỏi này →
AgetDerivedStateFromProps()
BcomponentWillReceiveProps()
CshouldComponentUpdate()
DcomponentUpdate()
Lời giải
Khi nào thì phương thức được sử dụng khi có bất kỳ thay đổi nào trong tình huống hoặc thuộc tính xảy ra? Phương thức này được sử dụng để cập nhật trạng thái của một thành phần khi props thay đổi. Nó được gọi trước khi thành phần nhận props mới. Phương thức này giúp đảm bảo rằng trạng thái của thành phần luôn được cập nhật chính xác dựa trên props.
Mở trang câu hỏi này →
56In which type of component can you not use lifecycle methods?4 lựa chọnDễ75% trả lời đúng
AClass Component
BFunction Component
CBoth of the above
DNone of the above
Lời giải
Trong lập trình React, có hai loại thành phần chính: thành phần lớp (Class Component) và thành phần hàm (Function Component). Thành phần lớp là loại thành phần được tạo ra từ lớp, trong khi thành phần hàm là loại thành phần được tạo ra từ hàm. Thành phần lớp có thể sử dụng các phương thức vòng đời (lifecycle methods), trong khi thành phần hàm không thể sử dụng các phương thức này. Các phương thức vòng đời được sử dụng để quản lý các hoạt động của thành phần, chẳng hạn như khi thành phần được tạo ra, cập nhật hoặc xóa. Vì vậy, trong các loại thành phần trên, bạn không thể sử dụng các phương thức vòng đời trong thành phần hàm.
Mở trang câu hỏi này →
AWelcome to the park! I am a dog!
BI am a dog! Welcome to the park!
CWelcome to the park!
DI am a cat! Welcome!
Lời giải

Để trả lời câu hỏi này, chúng ta cần hiểu về cách JSX và React hoạt động. JSX là một ngôn ngữ được sử dụng để viết mã React. Khi chúng ta viết JSX, nó được chuyển đổi thành JavaScript thực thi. Trong ví dụ này, chúng ta có một thành phần <Park> bao gồm hai thành phần con: <Text> và <Dog>. Thành phần <Text> sẽ in ra 'Welcome to the park!' và thành phần <Dog> sẽ in ra 'I am a dog!'. Khi chúng ta render thành phần <Park>, React sẽ lần lượt render các thành phần con và kết hợp chúng lại thành một thành phần duy nhất. Do đó, kết quả cuối cùng sẽ là 'Welcome to the park! I am a dog!'.

Mở trang câu hỏi này →
AJavaScript Thread
BNative Thread
CShadow Thread
DRender Thread
Lời giải
Trong kiến trúc Bridge, luồng Shadow Thread là nơi tính toán bố cục của ứng dụng. Điều này có nghĩa là khi bạn chạy ứng dụng, luồng Shadow Thread sẽ chịu trách nhiệm tính toán cách bố trí các thành phần của ứng dụng trên màn hình. Quá trình này bao gồm việc xác định vị trí, kích thước và sắp xếp các thành phần một cách hợp lý. Điều này giúp đảm bảo rằng ứng dụng của bạn có một bố cục đẹp mắt và dễ sử dụng. Ngoài ra, luồng Shadow Thread cũng chịu trách nhiệm cập nhật bố cục của ứng dụng khi có thay đổi, chẳng hạn như khi bạn thay đổi kích thước cửa sổ hoặc di chuyển ứng dụng sang một vị trí khác trên màn hình.
Mở trang câu hỏi này →
ADrawerLayoutAndroid
BTouchableNativeFeedback
CInputAccessoryView
DSafeAreaView
Lời giải
Trên iOS, InputAccessoryView là một thành phần quan trọng giúp người dùng tùy chỉnh giao diện bàn phím. Nó cho phép bạn thêm các nút hoặc các thành phần khác vào bàn phím, giúp người dùng dễ dàng sử dụng ứng dụng hơn. Để tùy chỉnh giao diện bàn phím, bạn cần sử dụng InputAccessoryView và thêm các thành phần cần thiết vào nó. Điều này giúp ứng dụng của bạn trở nên chuyên nghiệp và dễ sử dụng hơn.
Mở trang câu hỏi này →
60Which prop of the Switch component controls the initial state of the switch?4 lựa chọnDễ100% trả lời đúng
AinitialValue
Bvalue
Cchecked
DinitialChecked
Lời giải
Để kiểm soát trạng thái ban đầu của Switch component trong React, bạn cần sử dụng một trong các thuộc tính sau. Trong đó, 'value' là thuộc tính chính xác để kiểm soát trạng thái ban đầu của Switch component. 'initialValue' và 'initialChecked' cũng có thể được sử dụng nhưng không phải là thuộc tính chính thức của Switch component. 'checked' chỉ là thuộc tính để kiểm soát trạng thái hiện tại của Switch component, không phải là trạng thái ban đầu. Vì vậy, nếu bạn muốn kiểm soát trạng thái ban đầu của Switch component, bạn nên sử dụng thuộc tính 'value'.
Mở trang câu hỏi này →
AIt specifies the initial text value of the TextInput
BIt triggers a callback function whenever the text in the TextInput changes
CIt sets the placeholder text for the TextInput
DIt controls the styling of the TextInput
Lời giải
Prop onChangeText trong TextInput là một thuộc tính quan trọng trong React Native. Nó được sử dụng để xác định hành động xảy ra khi người dùng nhập hoặc thay đổi nội dung trong TextInput. Khi người dùng nhập hoặc thay đổi nội dung trong TextInput, onChangeText sẽ kích hoạt một hàm callback được chỉ định. Hàm callback này sẽ nhận vào giá trị mới của TextInput và có thể thực hiện các hành động khác nhau dựa trên giá trị đó. Ví dụ, bạn có thể sử dụng onChangeText để cập nhật trạng thái của ứng dụng khi người dùng nhập thông tin. Tóm lại, mục đích chính của onChangeText là kích hoạt một hàm callback khi nội dung trong TextInput thay đổi.
Mở trang câu hỏi này →
AEditText
BTextInput
CView
DText
Lời giải
Trong lập trình di động, có nhiều thành phần khác nhau được sử dụng để tương tác với người dùng. Để bắt đầu, chúng ta cần biết thành phần nào được sử dụng để bắt đầu nhập văn bản. Trong các lựa chọn trên, có ba thành phần chính: EditText, TextInput và View. Tuy nhiên, chỉ có một thành phần được sử dụng để bắt đầu nhập văn bản. EditText là một thành phần được sử dụng để nhập văn bản, nhưng nó đã bị thay thế bởi TextInput trong các phiên bản mới hơn của Android. TextInput là một thành phần được sử dụng để nhập văn bản và nó cung cấp nhiều tính năng hơn so với EditText. View là một thành phần cơ bản trong Android và không được sử dụng để nhập văn bản. Do đó, thành phần được sử dụng để bắt đầu nhập văn bản là TextInput.
Mở trang câu hỏi này →
63What is the purpose of the ScrollView component?4 lựa chọnDễ100% trả lời đúng
ATo display a single item at a time
BTo scroll through a list of items that may not fit on the screen
CTo create a carousel of images
DTo manage state within the component
Lời giải
ScrollView là một thành phần quan trọng trong thiết kế giao diện người dùng (UI) trên các ứng dụng di động. Mục đích chính của ScrollView là cho phép người dùng cuộn qua một danh sách các mục mà không thể hiển thị hết trên màn hình. Điều này đặc biệt hữu ích khi bạn cần hiển thị một lượng lớn dữ liệu, chẳng hạn như danh sách các sản phẩm, bài viết hoặc thông tin liên hệ. ScrollView giúp người dùng dễ dàng tìm kiếm và truy cập vào các mục cần thiết mà không cần phải cuộn qua toàn bộ màn hình.
Mở trang câu hỏi này →
Adirection
Blayout
Corientation
Dhorizontal
Lời giải
Trong React Native, khi sử dụng FlatList để hiển thị danh sách các item, bạn có thể tùy chỉnh hướng sắp xếp của các item này bằng cách sử dụng thuộc tính layout. Tuy nhiên, thuộc tính này không phải là một thuộc tính trực tiếp của FlatList mà là thuộc tính của một thành phần con được sử dụng trong FlatList. Để cụ thể hơn, bạn có thể sử dụng thuộc tính horizontal của thành phần FlatList để sắp xếp các item theo chiều ngang.
Mở trang câu hỏi này →