Tất cả câu hỏi

Ngân hàng câu hỏi trắc nghiệm có giải thích chi tiết.

6.340/20.347 câuCòn 14.007
AVia HTML and CSS only
BBy using native Swift and Kotlin separately
CThrough web views in mobile browsers
DBy leveraging JavaScript and React
Lời giải
Đáp án đúng: "By leveraging JavaScript and React". React Native cho phép viết một codebase bằng JavaScript (hoặc TypeScript) theo mô hình component của React; lúc chạy, các component như View, Text, Image được ánh xạ thành thành phần giao diện native thật của từng nền tảng, còn logic chạy trên engine JavaScript như Hermes. Nhờ vậy cùng một mã nguồn sinh ra ứng dụng cho cả iOS lẫn Android. "Via HTML and CSS only" sai vì React Native không dùng HTML; giao diện dựng bằng component riêng, style viết bằng đối tượng JavaScript giống CSS chứ không phải CSS thật. "By using native Swift and Kotlin separately" sai vì viết riêng Swift và Kotlin là hai codebase, đúng điều React Native muốn tránh. "Through web views in mobile browsers" sai vì đó là cách của ứng dụng lai như Cordova hay Ionic; React Native không vẽ giao diện trong web view.
Mở trang câu hỏi này →
Aflex-start
Bflex-end
Cstretch
Dcenter
Lời giải
Đáp án đúng: "stretch". alignItems căn các phần tử con dọc theo trục phụ (cross axis) của container; giá trị stretch, cũng là mặc định trong React Native, kéo giãn mỗi phần tử cho phủ hết chiều trục phụ, với điều kiện phần tử không đặt cố định kích thước theo trục đó (ví dụ width khi flexDirection là 'column'). "flex-start" dồn các phần tử về đầu trục phụ và giữ kích thước tự nhiên của chúng. "flex-end" dồn về cuối trục phụ, cũng không kéo giãn. "center" đặt các phần tử vào giữa trục phụ, kích thước giữ nguyên theo nội dung. Muốn một phần tử riêng lẻ khác đi thì dùng alignSelf.
Mở trang câu hỏi này →
AWhen there are differences in the user interface between platforms.
BWhen needing to optimize code reuse between platforms.
CWhen needing to use different UI components between Android and iOS.
DWhen the business logic changes completely between Android and iOS.
Lời giải
Đáp án đúng gồm hai ý: "When there are differences in the user interface between platforms." và "When needing to use different UI components between Android and iOS.". React Native khuyến khích dùng chung tối đa mã, nhưng khi giao diện hai nền tảng phải khác nhau (theo Material Design trên Android và Human Interface Guidelines trên iOS) hoặc cần component chỉ có ở một bên như DrawerLayoutAndroid, thì nên tách mã bằng Platform.OS, Platform.select hay tệp đuôi .ios.js và .android.js. "When needing to optimize code reuse between platforms." đi ngược lại: muốn tối ưu tái sử dụng thì càng phải viết mã chung, không tách. "When the business logic changes completely between Android and iOS." không phải tình huống điển hình: logic nghiệp vụ của cùng một ứng dụng thường giống nhau trên hai nền tảng và nên đặt trong phần mã dùng chung; việc viết mã riêng theo nền tảng trong React Native chủ yếu để xử lý khác biệt về giao diện và API native.
Mở trang câu hỏi này →
AAllows direct and easy interaction between API producers (those who create APIs) and API consumers (those who use APIs).
BAutomatically writes API code without human intervention.
CCompletely replaces existing CI/CD (Continuous Integration/Continuous Deployment) tools.
DHelps manage the entire API lifecycle, from the design, development, deployment, to management and maintenance phases.
Lời giải
Đáp án đúng gồm hai ý: "Allows direct and easy interaction between API producers (those who create APIs) and API consumers (those who use APIs)." và "Helps manage the entire API lifecycle, from the design, development, deployment, to management and maintenance phases." API platform (nền tảng API, ví dụ Postman) gom công cụ cho cả vòng đời API: thiết kế, viết tài liệu, kiểm thử, triển khai, giám sát và bảo trì, đồng thời là nơi bên tạo API chia sẻ đặc tả và tài liệu với bên dùng API để hai bên cộng tác trực tiếp. "Automatically writes API code without human intervention." sai vì nền tảng chỉ hỗ trợ việc như sinh mã mẫu từ đặc tả, logic nghiệp vụ vẫn do lập trình viên viết. Phát biểu "Completely replaces existing CI/CD" sai vì nền tảng API thường tích hợp vào quy trình CI/CD (chạy bộ kiểm thử API trong pipeline) chứ không thay thế các công cụ đó.
Mở trang câu hỏi này →
ASafeAreaView only applies and works on iOS devices from version 11 and above.
BYou can use SafeAreaView on both iOS and Android, but it will not automatically add padding on Android. Instead, you may need to use other solutions or third-party libraries to handle safe areas on Android.
CYou should not use SafeAreaView on iPhone 13 because it is not compatible with sensor housing.
DSafeAreaView automatically handles both the notch and status bar on all iOS versions.
Lời giải
Đáp án đúng gồm hai ý: "SafeAreaView only applies and works on iOS devices from version 11 and above." và "You can use SafeAreaView on both iOS and Android, but it will not automatically add padding on Android. Instead, you may need to use other solutions or third-party libraries to handle safe areas on Android.". SafeAreaView có sẵn trong React Native tự thêm padding để nội dung không bị tai thỏ, thanh trạng thái hay thanh home indicator che, nhưng nó dựa trên vùng an toàn (safe area insets) mà iOS chỉ cung cấp từ iOS 11; trên Android nó hiển thị như một View thường, nên người ta dùng thư viện react-native-safe-area-context hoặc tự cộng chiều cao StatusBar. "You should not use SafeAreaView on iPhone 13 because it is not compatible with sensor housing." sai vì iPhone 13 có tai thỏ chứa cụm cảm biến, chính là trường hợp SafeAreaView được làm ra để xử lý. "SafeAreaView automatically handles both the notch and status bar on all iOS versions." sai vì trên iOS trước 11 không có API vùng an toàn, component không tính được phần lề này, nên cụm "all iOS versions" làm phát biểu sai.
Mở trang câu hỏi này →
Acenter
Bflex-start
Cstretch
Dflex-end
Lời giải
Đáp án đúng: "flex-start". alignContent quyết định cách phân bố các hàng phần tử dọc theo trục phụ khi container cho phép xuống dòng với flexWrap: 'wrap'; trên web CSS giá trị mặc định tương đương stretch, còn React Native dùng engine Yoga với mặc định flex-start, tức các hàng dồn về đầu trục phụ. "stretch" chính là mặc định của CSS mà câu hỏi đem ra so sánh, kéo giãn các hàng cho lấp đầy trục phụ, không phải mặc định của React Native. "center" gom các hàng vào giữa trục phụ, chỉ có khi đặt tường minh. "flex-end" dồn các hàng về cuối trục phụ, cũng phải đặt tường minh chứ không phải mặc định. Lưu ý alignContent chỉ có tác dụng khi có nhiều hàng.
Mở trang câu hỏi này →
AMobX
BuseReducer
CRedux
DRealm
Lời giải
Đáp án đúng: "MobX". MobX quản lý state theo mô hình lập trình phản ứng hàm (functional reactive programming): dữ liệu được đánh dấu observable, giá trị computed và component observer tự theo dõi phần dữ liệu chúng đọc, nên khi dữ liệu đổi thì chỉ những phần phụ thuộc tự động tính lại và render lại, không cần tự phát action. "useReducer" là hook có sẵn của React, quản lý state cục bộ theo mẫu reducer nhận state cũ và action rồi trả state mới, không có cơ chế theo dõi phụ thuộc tự động. "Redux" dùng một store tập trung với action và reducer thuần, luồng dữ liệu một chiều rõ ràng nhưng cập nhật bằng dispatch tường minh chứ không phản ứng tự động. "Realm" là cơ sở dữ liệu cục bộ trên thiết bị để lưu trữ bền vững, không phải thư viện quản lý state theo mô hình này.
Mở trang câu hỏi này →
AEvery core component in React Native can receive the style prop to apply styling.
BReact Native does not have its own mechanism for managing styles and only uses inline styles (styles written directly in the style attribute of the component).
CCore components in React Native do not support the style prop.
DReact Native allows you to define styles directly in JavaScript instead of using traditional CSS.
Lời giải
Đáp án đúng gồm hai ý: "Every core component in React Native can receive the style prop to apply styling." và "React Native allows you to define styles directly in JavaScript instead of using traditional CSS." Trong React Native, các component lõi như View, Text, Image nhận prop style, và style được viết bằng đối tượng JavaScript với tên thuộc tính dạng camelCase (backgroundColor thay cho background-color), không có tệp CSS. Phát biểu "does not have its own mechanism for managing styles and only uses inline styles" sai vì React Native có StyleSheet.create để khai báo, gom và tái dùng style bên ngoài JSX, không chỉ viết inline. Phát biểu "Core components in React Native do not support the style prop." mâu thuẫn trực tiếp với cách các component lõi được tạo kiểu thông qua prop style.
Mở trang câu hỏi này →
AUnlimited
B1MB
C10MB
D6MB
Lời giải
Đáp án đúng: "6MB". AsyncStorage là kho khoá giá trị (key-value) bất đồng bộ, lưu chuỗi không mã hoá trên thiết bị. Trên Android, bản cài đặt mặc định dựa trên SQLite và giới hạn tổng dung lượng cơ sở dữ liệu khoảng 6MB, mỗi mục nên nhỏ hơn khoảng 2MB; con số tổng này có thể nới bằng cấu hình AsyncStorage_db_size_in_MB trong gradle.properties. Trên iOS dữ liệu lưu thành tệp nên không bị chặn chặt như vậy, nhưng mốc 6MB thường được nêu như giới hạn chung cần tính tới. "Unlimited" sai vì ít nhất trên Android có trần mặc định, và AsyncStorage vốn không được thiết kế cho dữ liệu lớn. "1MB" sai vì thấp hơn nhiều so với trần mặc định. "10MB" sai vì vượt trần mặc định; muốn tới mức đó phải chủ động tăng cấu hình.
Mở trang câu hỏi này →
AUse keyExtractor to provide stable keys.
BReplace FlatList with ScrollView.
CWrap item components with React.memo.
DUse extraData when items depend on external state.
Lời giải
Đáp án đúng: "Replace FlatList with ScrollView.". Câu hỏi tìm cách KHÔNG cải thiện hiệu năng. ScrollView render toàn bộ phần tử con ngay một lúc, với hàng nghìn mục sẽ ngốn bộ nhớ và làm chậm; FlatList thì ảo hoá danh sách (virtualization), chỉ render các mục gần vùng nhìn thấy, nên đổi sang ScrollView chỉ khiến app lag hơn. "Use keyExtractor to provide stable keys." đúng là có ích: key ổn định giúp React nhận diện từng mục, tránh gỡ đi dựng lại không cần thiết. "Wrap item components with React.memo." cũng có ích vì component mục chỉ render lại khi props của nó thay đổi. "Use extraData when items depend on external state." là cách dùng đúng được khuyến nghị: báo cho FlatList biết khi nào cần cập nhật theo state bên ngoài, giữ danh sách chính xác mà không phải render lại toàn bộ; vì đều là biện pháp hợp lệ nên chúng không được chọn.
Mở trang câu hỏi này →
AUsing a static variable in the component
BPassing parameters through navigation.navigate('Details', { paramName: value })
CUsing context API
DUsing global state management (e.g., Redux)
Lời giải

Đáp án đúng: "Passing parameters through

Lời giải
navigation.navigate('Details', {
  paramName: value
}

)". Trong Stack Navigator của React Navigation, cách chuẩn để gửi dữ liệu sang màn hình kế tiếp là truyền đối tượng params làm đối số thứ hai của navigation.navigate; màn hình Details đọc lại qua route.params.paramName. Dữ liệu gắn với đúng lần điều hướng đó nên dễ theo dõi và không bị lẫn khi mở màn hình nhiều lần. "Using a static variable in the component" sai vì biến tĩnh dùng chung cho mọi lần hiển thị, không kích hoạt render lại và dễ giữ giá trị cũ. "Using context API" phù hợp cho dữ liệu dùng chung toàn cây như theme hay người dùng đăng nhập, quá nặng nếu chỉ để chuyển một tham số giữa hai màn hình. "Using global state management (e.g., Redux)" dành cho trạng thái toàn cục lâu dài; dùng nó để truyền tham số một lần là thừa và làm rối luồng dữ liệu.

Mở trang câu hỏi này →
ANative Modules directly convert JavaScript code into C++.
BNative Modules only support Android and not iOS.
CNative Modules act as a bridge between the interface layer and the database.
DNative Modules provide the ability to execute native code (Java/Objective-C/Swift) from within JavaScript.
Lời giải
Đáp án đúng: "Native Modules provide the ability to execute native code (Java/Objective-C/Swift) from within JavaScript.". Mỗi Native Module phơi ra một tập phương thức (đánh dấu @ReactMethod trên Android hoặc RCT_EXPORT_METHOD trên iOS); JavaScript lấy module qua NativeModules hoặc TurboModule rồi gọi, lời gọi được chuyển qua bridge (hoặc JSI ở kiến trúc mới) sang mã native, kết quả trả về bằng callback hoặc Promise. "Native Modules directly convert JavaScript code into C++." sai vì không có bước dịch JavaScript sang C++; mã JavaScript vẫn chạy trên engine như Hermes, Native Module chỉ là đích của lời gọi. "Native Modules only support Android and not iOS." sai vì cơ chế này có trên cả hai nền tảng, mỗi bên viết bằng ngôn ngữ riêng. "Native Modules act as a bridge between the interface layer and the database." sai vì nó là cầu nối giữa JavaScript và mã native nói chung, không chuyên cho cơ sở dữ liệu; dùng nó để truy cập SQLite chỉ là một trường hợp cụ thể.
Mở trang câu hỏi này →
AThey slow down compilation
BThey lack type safety
CThey complicate style reuse
DThey are deprecated
Lời giải
Đáp án đúng: "They complicate style reuse". Platform.OS trả về 'ios' hoặc 'android'; rải các phép kiểm Platform.OS khắp nơi trong hệ thống style lớn khiến mỗi style bị gắn chặt với nền tảng, phải lặp nhánh điều kiện ở nhiều component, khó gom vào một bộ token hay theme dùng chung, nên tái sử dụng style trở nên rắc rối; cách gọn hơn là Platform.select hoặc tệp đuôi .ios.js và .android.js đặt ở một chỗ. "They slow down compilation" sai vì phép so sánh chuỗi này chạy lúc thực thi, gần như không tốn chi phí và không ảnh hưởng thời gian biên dịch. "They lack type safety" sai vì với TypeScript, Platform.OS có kiểu union rõ ràng. "They are deprecated" sai vì Platform.OS vẫn là API chính thức đang được dùng.
Mở trang câu hỏi này →
AReplacing all manual testing in the development process
BSupporting API design, deployment, and monitoring
CManaging cloud infrastructure exclusively
DDeveloping front-end applications
Lời giải
Đáp án đúng: "Supporting API design, deployment, and monitoring". API platform (nền tảng API) là bộ công cụ quản lý cả vòng đời của API: thiết kế đặc tả, giả lập (mock), kiểm thử, triển khai, quản lý phiên bản, tài liệu, rồi giám sát lưu lượng, lỗi và độ trễ; Postman hay các API gateway là ví dụ quen thuộc. "Replacing all manual testing in the development process" sai vì nền tảng API giúp tự động hoá kiểm thử API nhưng không thay được mọi kiểm thử thủ công như kiểm tra giao diện hay trải nghiệm người dùng. "Managing cloud infrastructure exclusively" là việc của nền tảng hạ tầng đám mây, và chữ exclusively (chỉ duy nhất) làm phát biểu càng lệch. "Developing front-end applications" là việc của framework giao diện như React Native, còn nền tảng API phục vụ lớp giao tiếp giữa client và server.
Mở trang câu hỏi này →
ATo access real-time or updated information
BTo change the app’s language settings
CTo modify the device's operating system
DTo improve the app’s visual design
Lời giải
Đáp án đúng: "To access real-time or updated information". Ứng dụng gọi API từ xa (remote API) qua fetch hoặc axios để lấy dữ liệu nằm trên máy chủ như tin tức, giá cả, tin nhắn, vốn thay đổi liên tục, nhờ vậy người dùng luôn thấy thông tin mới mà không phải cập nhật bản ứng dụng. "To change the app’s language settings" không cần dữ liệu từ xa: ngôn ngữ là cấu hình cục bộ, chuyển bằng thư viện i18n và lưu ngay trong máy. "To modify the device's operating system" sai vì ứng dụng chạy trong sandbox, không thể sửa hệ điều hành, còn API từ xa chỉ trả dữ liệu. "To improve the app’s visual design" là việc của component và StyleSheet, không phải mục đích của việc lấy dữ liệu từ máy chủ.
Mở trang câu hỏi này →
ATo access native (operating system) APIs that JavaScript does not support by default.
BTo completely replace JavaScript with native code.
CTo write more maintainable user interface code.
DTo use available native libraries already written in Java (for Android) or Objective-C/Swift (for iOS).
Lời giải
Đáp án đúng gồm hai ý: "To access native (operating system) APIs that JavaScript does not support by default." và "To use available native libraries already written in Java (for Android) or Objective-C/Swift (for iOS).". Native Module (mô-đun gốc) là lớp mã Java/Kotlin hoặc Objective-C/Swift được đăng ký với React Native để JavaScript gọi tới; nó cần thiết vì JavaScript chỉ thấy những gì framework đã phơi ra, còn các API hệ điều hành khác như Bluetooth, cảm biến đặc thù hay SDK thanh toán phải được bọc lại mới dùng được, và đó cũng là cách tái sử dụng thư viện native có sẵn thay vì viết lại. "To completely replace JavaScript with native code." sai vì Native Module chỉ bổ sung từng chức năng, phần lớn logic và giao diện vẫn viết bằng JavaScript; thay hẳn thì không còn là React Native. "To write more maintainable user interface code." sai vì mã native thường khó bảo trì hơn, phải giữ hai bản cho hai nền tảng; giao diện dễ bảo trì là nhờ component React, không phải nhờ Native Module.
Mở trang câu hỏi này →
ATo display network requests
BTo inspect component hierarchies
CTo manage application state
DTo show errors and warnings during development
Lời giải
Đáp án đúng: "To show errors and warnings during development". LogBox là cơ chế hiển thị lỗi và cảnh báo có sẵn trong React Native từ bản 0.63: ở chế độ phát triển, cảnh báo (console.warn) hiện thành thông báo nhỏ ở cuối màn hình, lỗi nghiêm trọng hoặc lỗi cú pháp hiện toàn màn hình kèm stack trace, và có thể ẩn bớt bằng LogBox.ignoreLogs; nó không chạy trong bản production. "To display network requests" là việc của công cụ như Flipper hay Reactotron. "To inspect component hierarchies" là việc của React DevTools hoặc Element Inspector. "To manage application state" là vai trò của useState, Context hay Redux, không liên quan LogBox.
Mở trang câu hỏi này →
ALimiting third-party plugins.
BLive Reload feature.
CModular architecture.
DUtilizing separate APIs for iOS and Android.
Lời giải
Đáp án đúng: "Modular architecture.". Kiến trúc mô-đun (modular architecture) chia ứng dụng thành các component và module độc lập, mỗi phần có ranh giới và giao diện rõ ràng, nên nhiều lập trình viên làm song song trên những phần khác nhau mà ít giẫm chân nhau, đồng thời dễ tái sử dụng và chia sẻ module giữa các dự án qua npm hay thư mục dùng chung. "Limiting third-party plugins." không giúp cộng tác, chỉ thu hẹp lựa chọn công cụ của cả nhóm. "Live Reload feature." giúp từng người thấy thay đổi ngay khi lưu mã, tăng tốc vòng phát triển cá nhân, nhưng không tổ chức việc chia sẻ dự án. "Utilizing separate APIs for iOS and Android." đi ngược mục tiêu đa nền tảng, buộc tách mã theo nền tảng nên việc phối hợp và chia sẻ lại khó hơn.
Mở trang câu hỏi này →
AFlatList automatically groups data based on the key if you do not provide the keyExtractor prop. Handling
BFlatList only renders the items currently visible on the screen, improving performance by reducing the number of components rendered at the same time.
CFlatList requires you to pass a children prop to display the items.
DFlatList will render each item in the data array using the renderItem prop, allowing you to customize how each item is displayed.
Lời giải
Đáp án đúng gồm hai ý: "FlatList only renders the items currently visible on the screen, improving performance by reducing the number of components rendered at the same time." và "FlatList will render each item in the data array using the renderItem prop, allowing you to customize how each item is displayed." FlatList là danh sách ảo hoá: nó chỉ dựng các phần tử trong và gần vùng nhìn thấy rồi dựng tiếp khi cuộn, nên số component tồn tại cùng lúc nhỏ; mỗi phần tử của mảng data được truyền vào hàm renderItem (nhận item và index) để ta quyết định giao diện từng dòng. Phát biểu "automatically groups data based on the key if you do not provide the keyExtractor prop" sai vì FlatList không gom nhóm dữ liệu (chia nhóm là việc của SectionList); thiếu keyExtractor nó chỉ lấy item.key, rồi tới index, làm khoá. Phát biểu "FlatList requires you to pass a children prop to display the items." sai vì FlatList không dùng children mà dùng cặp data và renderItem.
Mở trang câu hỏi này →
Adata
BrenderItem
Ckey
DkeyExtractor
Lời giải
Đáp án đúng: "keyExtractor". keyExtractor là hàm nhận item và index rồi trả về chuỗi key duy nhất mà FlatList gọi cho từng phần tử, giúp React biết phần tử nào được thêm, xoá hay di chuyển khi danh sách đổi, nhờ đó tái sử dụng ô và giữ state đúng chỗ. "data" sai vì đây là mảng dữ liệu nguồn mà FlatList hiển thị, nó không ánh xạ ra key. "renderItem" sai vì đây là hàm vẽ giao diện cho từng phần tử, trả về JSX chứ không trả về key. "key" là prop đặc biệt của React đặt trên từng phần tử khi tự map một mảng, nhưng FlatList tự sinh các phần tử con nên ta không đặt key trực tiếp lên chúng được; với FlatList cách đúng là cung cấp keyExtractor hoặc để mỗi item có sẵn trường key.
Mở trang câu hỏi này →