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.320/20.347 câuCòn 14.027
AMust inherit from Component imported from the react library.
BNeeds to use the render() method to return the interface.
CDoes not need to import Text from react-native.
DCan be declared using the same syntax as Function Components.
Lời giải
Đáp án đúng gồm hai ý: "Must inherit from Component imported from the react library." và "Needs to use the render() method to return the interface.". Class component được khai báo bằng class TenComponent extends Component, trong đó Component import từ gói react, và bắt buộc có phương thức render() trả về JSX mô tả giao diện; state nằm ở this.state và được cập nhật qua this.setState, props đọc qua this.props. "Does not need to import Text from react-native." sai: muốn hiển thị chữ thì vẫn phải import Text từ react-native, bất kể component viết bằng class hay bằng hàm, vì chữ trần không được đặt trực tiếp trong View. "Can be declared using the same syntax as Function Components." sai vì function component là một hàm nhận props và trả JSX, còn class component dùng cú pháp class với extends và render(), hai cách khai báo khác hẳn nhau.
Mở trang câu hỏi này →
Arow
Bcolumn
Crow-reverse
Dcolumn-reverse
Lời giải
Đáp án đúng: "column". Khác với CSS trên web, React Native đặt flexDirection mặc định là column vì màn hình điện thoại thường dọc và nội dung hay xếp từ trên xuống; mọi View là flex container nên các con tự xếp theo chiều dọc nếu không chỉnh gì. Vì trục chính là trục dọc, justifyContent căn theo chiều dọc còn alignItems căn theo chiều ngang. "row" sai vì đó là mặc định của CSS trên trình duyệt, trong React Native phải khai báo flexDirection: 'row' mới xếp ngang. "row-reverse" sai vì đây là xếp ngang theo chiều từ phải sang trái, chỉ có khi khai báo rõ. "column-reverse" sai vì đây là xếp dọc từ dưới lên, cũng phải khai báo rõ mới có, dù nó cùng trục dọc với giá trị mặc định.
Mở trang câu hỏi này →
ATo change the background color
BTo force re-render when needed
CTo reduce image size
DTo hide the list header
Lời giải
Đáp án đúng: "To force re-render when needed". FlatList là PureComponent: nó chỉ render lại khi props thay đổi theo phép so sánh nông (shallow), chủ yếu là data. Nếu renderItem đọc thêm một state bên ngoài data, chẳng hạn selectedId, thì khi state ấy đổi mà mảng data giữ nguyên tham chiếu, danh sách sẽ không cập nhật; truyền extraData={selectedId} báo cho FlatList biết cần render lại. "To change the background color" là việc của style hoặc contentContainerStyle. "To reduce image size" không liên quan, kích thước ảnh do component Image và nguồn ảnh quyết định. "To hide the list header" thực hiện bằng cách không truyền hoặc đổi ListHeaderComponent.
Mở trang câu hỏi này →
A@react-navigation/stack
Breact-native-stack-navigator
C@react-navigation/tabs
Dreact-navigation-stack
Lời giải
Đáp án đúng: "@react-navigation/stack". Để dùng Stack Navigator qua hàm createStackNavigator, cần cài gói @react-navigation/stack cùng @react-navigation/native và các phụ thuộc như react-native-gesture-handler, react-native-screens; navigator này xếp các màn hình thành ngăn xếp, đẩy (push) màn mới lên trên và gỡ (pop) khi quay lại. "react-native-stack-navigator" không phải gói chính thức của React Navigation. "@react-navigation/tabs" không tồn tại; điều hướng tab nằm ở @react-navigation/bottom-tabs hoặc @react-navigation/material-top-tabs và tạo tab chứ không phải ngăn xếp. "react-navigation-stack" là gói của React Navigation phiên bản 4 cũ, đã bị thay thế khi thư viện chuyển sang các gói mang tiền tố @react-navigation từ phiên bản 5.
Mở trang câu hỏi này →
AIt disables hot reloading.
BIt allows for near-instant feedback for code changes.
CIt enables network request monitoring.
DIt provides performance metrics.
Lời giải
Đáp án đúng: "It allows for near-instant feedback for code changes.". Fast Refresh là tính năng của React Native (bật mặc định từ bản 0.61): khi lưu tệp, nó chỉ nạp lại module vừa sửa và render lại các component liên quan, đồng thời cố giữ state của function component, nên kết quả hiện ra gần như ngay lập tức. "It disables hot reloading." sai vì Fast Refresh thay thế và hợp nhất Hot Reloading với Live Reloading cũ, bật nó không nhằm tắt tính năng nào. "It enables network request monitoring." là việc của công cụ gỡ lỗi như trình xem mạng của DevTools hay Flipper. "It provides performance metrics." là việc của Perf Monitor hoặc Profiler, không phải Fast Refresh.
Mở trang câu hỏi này →
AThe API platform's governance and security tools
BThe automated testing of APIs
CThe use of cloud infrastructure
DThe use of third-party libraries
Lời giải
Đáp án đúng: "The API platform's governance and security tools". Rủi ro trong quản lý API thường đến từ API thiếu chuẩn thống nhất, lộ dữ liệu hay truy cập trái phép; bộ công cụ governance (quản trị: quy tắc thiết kế, kiểm tra tuân thủ, quản lý phiên bản) cùng công cụ bảo mật (xác thực, phân quyền, quét lỗ hổng) của nền tảng API trực tiếp kiểm soát các rủi ro đó. "The automated testing of APIs" giúp bắt lỗi chức năng và hồi quy, có ích nhưng không quản lý chính sách hay quyền truy cập. "The use of cloud infrastructure" chỉ là nơi chạy hệ thống, tự nó không giảm rủi ro quản trị API. "The use of third-party libraries" còn có thể thêm rủi ro phụ thuộc và lỗ hổng từ bên ngoài.
Mở trang câu hỏi này →
ATo simplify the API development process
BTo foster collaboration, promote consistency, and reduce risk
CTo restrict API usage to a limited audience
DTo automate all API tasks
Lời giải
Đáp án đúng: "To foster collaboration, promote consistency, and reduce risk". API platform (nền tảng quản lý API) như Postman hay các API gateway thường kèm công cụ governance (quản trị: quy tắc đặt tên, chuẩn thiết kế, kiểm tra theo style guide) và security (bảo mật: xác thực, phân quyền, quét lỗ hổng). Mục đích là để nhiều nhóm cùng làm việc trên một bộ chuẩn chung, các API nhất quán với nhau và giảm rủi ro lộ dữ liệu hay lỗi thiết kế. "To simplify the API development process" là lợi ích chung của cả nền tảng, không phải lý do riêng cho công cụ quản trị và bảo mật, vốn đôi khi còn thêm bước kiểm tra. "To restrict API usage to a limited audience" sai vì kiểm soát truy cập chỉ là một phần nhỏ, mục tiêu không phải thu hẹp người dùng. "To automate all API tasks" sai vì quản trị và bảo mật không tự động hoá mọi việc; nhiều quyết định vẫn cần con người.
Mở trang câu hỏi này →
AWhen a component has flex: 1, it will try to fill all available space in its parent container, dividing this space equally with siblings that have an equivalent flex value.
BA component with a larger flex value will occupy a smaller proportion of space in the parent container.
CThe flex property is used to set a fixed height and width for a component.
DUsing flex allows a component to expand or shrink its size depending on the available space in the parent container.
Lời giải
Đáp án đúng gồm hai ý: "When a component has flex: 1, it will try to fill all available space in its parent container, dividing this space equally with siblings that have an equivalent flex value." và "Using flex allows a component to expand or shrink its size depending on the available space in the parent container." Trong React Native, flex là con số chỉ tỉ lệ chia khoảng trống dọc theo trục chính: các con cùng flex: 1 chia đều, còn con có flex: 2 đứng cạnh con flex: 1 nhận gấp đôi; vì thế kích thước component co giãn theo không gian của cha. Phát biểu "with a larger flex value will occupy a smaller proportion" đảo ngược quy tắc: flex càng lớn thì phần chiếm càng lớn. Phát biểu "The flex property is used to set a fixed height and width for a component." sai vì kích thước cố định đặt bằng width và height; flex chính là cách để kích thước không cố định.
Mở trang câu hỏi này →
AIt provides a store object to maintain application state and notify components of state changes
BIt manages CSS styles
CIt allows for server-side rendering
DIt provides a custom database for large datasets
Lời giải
Đáp án đúng: "It provides a store object to maintain application state and notify components of state changes". Redux giữ toàn bộ state chung của ứng dụng trong một store duy nhất; muốn đổi state phải dispatch một action, reducer là hàm thuần nhận state cũ cùng action rồi trả state mới, sau đó store thông báo cho các component đã đăng ký (qua useSelector hoặc connect của react-redux) để chúng render lại. "It manages CSS styles" sai vì style do StyleSheet hoặc thư viện styling đảm nhận. "It allows for server-side rendering" sai vì render phía máy chủ là việc của framework như Next.js, Redux chỉ quản lý state. "It provides a custom database for large datasets" sai vì store nằm trong bộ nhớ, không phải cơ sở dữ liệu; dữ liệu lớn cần lưu bền thì dùng SQLite hay Realm.
Mở trang câu hỏi này →
ASQLite
BAsyncStorage
CMongoDB
DFirebase
Lời giải
Đáp án đúng: "AsyncStorage". AsyncStorage (nay là gói @react-native-async-storage/async-storage) là kho lưu trữ khoá–giá trị bất đồng bộ, không mã hoá, lưu cục bộ và bền vững trên thiết bị; nó dành cho dữ liệu đơn giản như cài đặt người dùng, cờ đã xem hướng dẫn, thông qua setItem và getItem với giá trị dạng chuỗi. "SQLite" là cơ sở dữ liệu quan hệ cục bộ, phù hợp khi dữ liệu có cấu trúc, nhiều bảng và cần truy vấn, tức là vượt quá mức lưu trữ đơn giản. "MongoDB" là cơ sở dữ liệu NoSQL chạy phía máy chủ, không phải kho lưu trữ có sẵn trên thiết bị. "Firebase" là dịch vụ backend đám mây của Google như Firestore hay Realtime Database, cần mạng và thư viện ngoài, không phải hệ lưu trữ cục bộ cơ bản của React Native.
Mở trang câu hỏi này →
AonEndReached
Brefreshing
CextraData
DwindowSize
Lời giải
Đáp án đúng: "refreshing". Kéo để làm mới (pull-to-refresh) trong FlatList dùng cặp prop onRefresh và refreshing: khi người dùng kéo xuống, onRefresh được gọi để tải lại dữ liệu, còn refreshing là boolean quyết định vòng quay tải có hiện hay không; ta đặt true khi bắt đầu và false khi tải xong. "onEndReached" được gọi khi cuộn gần tới cuối danh sách, dùng để tải thêm (infinite scroll), không phải kéo làm mới ở đầu. "extraData" báo cho FlatList render lại khi một giá trị nằm ngoài data thay đổi, ví dụ id đang chọn. "windowSize" điều chỉnh số màn hình nội dung được giữ render quanh vùng nhìn thấy, phục vụ hiệu năng ảo hoá.
Mở trang câu hỏi này →
Anpm -v
Bnode -v
Cnpm --ver
Dnode --version
Lời giải
Đáp án đúng: "npm -v". npm là trình quản lý gói đi kèm Node.js; cờ -v (viết đầy đủ là --version) in số phiên bản npm đang cài, giúp kiểm tra môi trường trước khi tạo hay cài dự án React Native. "node -v" sai vì lệnh này in phiên bản của Node.js, không phải của npm; hai số này khác nhau vì npm có chu kỳ phát hành riêng. "npm --ver" sai vì npm không có cờ --ver; cờ đúng là --version hoặc -v. "node --version" cũng chỉ in phiên bản Node.js, nó là cách viết đầy đủ của node -v nên không trả lời được câu hỏi về npm. Khi chuẩn bị môi trường nên kiểm tra cả hai: Node.js đủ mới theo yêu cầu của React Native, và npm tương ứng để cài các gói.
Mở trang câu hỏi này →
AuseFocusEffect
BuseRoute
CuseIsFocused
DuseNavigationState
Lời giải
Đáp án đúng: "useFocusEffect". Trong React Navigation, thay vì tự đăng ký navigation.addListener với sự kiện focus bên trong useEffect rồi nhớ huỷ đăng ký, ta dùng useFocusEffect: nó chạy callback mỗi khi màn hình được focus và gọi hàm cleanup mà callback trả về khi màn hình mất focus; callback nên bọc trong useCallback để không chạy lại thừa. "useRoute" chỉ trả về đối tượng route hiện tại với name và params, không phản ứng với sự kiện focus. "useIsFocused" trả về giá trị boolean cho biết màn hình có đang được focus và làm component render lại khi giá trị đổi; nó hợp để hiển thị theo trạng thái nhưng không phải nơi chạy side effect thay cho listener. "useNavigationState" đọc một phần trạng thái của navigator, chẳng hạn số route trong ngăn xếp, không xử lý sự kiện focus.
Mở trang câu hỏi này →
Aconst MyComponent = () => <View><Text>Hello</Text></View>;
Bclass MyComponent extends React.Component { render() { return <Text>Hello</Text>; } }
Cconst MyComponent = () => { return <Text>Hello</Text>; };
Dfunction MyComponent() { return <View>Hello</View>; }
Lời giải

Đáp án đúng: "const MyComponent = () => <View><Text>Hello</Text></View>;". Function Component là hàm JavaScript trả về JSX; arrow function viết gọn có thể trả JSX trực tiếp mà không cần return. Trong React Native, chuỗi chữ phải nằm trong Text, còn View làm khung bố cục bọc ngoài, nên mẫu này vừa đúng cú pháp vừa có đủ View và Text như yêu cầu. "

Lời giải
class MyComponent extends React.Component {
  render() {
    return <Text>Hello</Text>;
  }
}

" sai vì đây là Class Component chứ không phải Function Component, lại chỉ có Text mà không có View. "const MyComponent = () => { return <Text>Hello</Text>; };" là Function Component hợp lệ nhưng chỉ trả về Text, thiếu View nên không đạt yêu cầu bố cục có cả hai. "function MyComponent() { return <View>Hello</View>; }" sai vì đặt chuỗi Hello trực tiếp trong View; React Native báo lỗi "Text strings must be rendered within a <Text> component".

Mở trang câu hỏi này →
AApp.js
Bpackage.json
Cbabel.config.js
Dnode_modules
Lời giải
Đáp án đúng: "App.js". Trong dự án tạo bằng React Native CLI hoặc Expo, App.js (hoặc App.tsx) chứa component gốc của ứng dụng; index.js gọi AppRegistry.registerComponent để đăng ký component này, và từ đó toàn bộ cây màn hình, điều hướng, state được dựng lên. "package.json" sai vì tệp này khai báo tên dự án, các script và danh sách phụ thuộc cho npm, không chứa logic ứng dụng. "babel.config.js" sai vì đây là cấu hình Babel để biên dịch JSX và cú pháp JavaScript mới, chỉ ảnh hưởng quá trình build. "node_modules" sai vì đây là thư mục chứa mã của các thư viện đã cài, không phải mã của ứng dụng và không nên sửa tay.
Mở trang câu hỏi này →
Aconst Button = styled.TouchableOpacity` background-color: ${props => props.primary ? 'blue' : 'red'};
Bconst Button = styled.TouchableOpacity` background-color: props.primary ? 'blue' : 'red';
C<Button style={{ backgroundColor: primary ? 'blue' : 'red' }} />
D<Button primaryColor />
Lời giải

Đáp án đúng: "const Button = styled.TouchableOpacity` background-color: ${props => props.primary ? 'blue' : 'red'};". Trong styled-components, template literal có thể chứa nội suy (interpolation) đặt trong cặp dấu đô la và ngoặc nhọn; nếu thứ được nội suy là một hàm thì thư viện gọi hàm đó với props hiện tại mỗi lần render, nên props.primary bằng true cho 'blue', bằng false cho 'red', và giá trị được chèn vào thuộc tính background-color. "const Button = styled.TouchableOpacity` background-color: props.primary ? 'blue' : 'red';" sai vì biểu thức nằm trần trong chuỗi CSS, không được bọc nội suy, nên JavaScript không đánh giá nó và CSS nhận về một giá trị vô nghĩa. "

Lời giải
<Button style={
  {
    backgroundColor: primary ? 'blue' : 'red'
  }
}
/>

" là inline style thông thường chứ không phải cú pháp styled-components, và biến primary ở đó cũng không lấy từ props. "<Button primaryColor /> " chỉ truyền một prop boolean tên primaryColor, không định nghĩa màu nào cho nút.

Mở trang câu hỏi này →
AArray
BJSON string
CObject literal
DNumber
Lời giải
Đáp án đúng: "JSON string". AsyncStorage là kho lưu khoá–giá trị bất đồng bộ chỉ chứa chuỗi, nên đối tượng phải được chuyển bằng JSON.stringify trước khi gọi setItem và đọc lại bằng JSON.parse sau khi gọi getItem. "Array" không lưu trực tiếp được; mảng cũng phải stringify thành chuỗi JSON rồi mới lưu. "Object literal" chính là thứ ta muốn lưu, nhưng truyền thẳng vào setItem sẽ không giữ được cấu trúc vì giá trị không phải chuỗi. "Number" cũng không phải kiểu được chấp nhận; số phải đổi sang chuỗi bằng String hoặc JSON.stringify rồi parse lại khi đọc ra.
Mở trang câu hỏi này →
ArenderItem
Bdata
CkeyExtractor
DListHeaderComponent
Lời giải
Đáp án đúng: "keyExtractor". FlatList dùng key của từng phần tử để React đối chiếu danh sách cũ với mới, biết phần tử nào thêm, xoá hay đổi chỗ, nhờ đó chỉ vẽ lại phần cần thiết và giữ state ô đúng chỗ khi cuộn ảo hoá (virtualization, chỉ dựng các ô gần vùng nhìn thấy). keyExtractor là hàm nhận item và index, trả về chuỗi duy nhất; nếu không có, FlatList thử item.key rồi mới rơi về index. "renderItem" sai vì đây là hàm vẽ giao diện cho từng phần tử, nó không định danh phần tử. "data" sai vì đây là mảng dữ liệu nguồn, bản thân nó không cung cấp key. "ListHeaderComponent" sai vì đây là component hiển thị ở đầu danh sách, không liên quan tới định danh phần tử. Chữ "required" ở đây hiểu là prop chịu trách nhiệm định danh, dù FlatList vẫn chạy khi bỏ trống nhờ giá trị mặc định.
Mở trang câu hỏi này →
AgetLocation()
BcurrentPosition()
CfetchPosition()
DgetCurrentPosition()
Lời giải
Đáp án đúng: "getCurrentPosition()". Geolocation API (dùng qua navigator.geolocation hoặc thư viện @react-native-community/geolocation) có phương thức getCurrentPosition nhận callback thành công, callback lỗi và tuỳ chọn, để lấy vị trí hiện tại một lần; kết quả là đối tượng position chứa coords.latitude, coords.longitude và accuracy. Muốn theo dõi liên tục thì dùng watchPosition rồi dừng bằng clearWatch. "getLocation()" không phải phương thức của Geolocation API, chỉ là một tên đoán theo nghĩa. "currentPosition()" cũng không tồn tại; tên thật có động từ get ở đầu. "fetchPosition()" gợi cảm giác gọi mạng nhưng không có trong API; vị trí được lấy từ GPS hoặc mạng của thiết bị thông qua getCurrentPosition.
Mở trang câu hỏi này →
AflexWrap
BalignItems
CjustifyContent
DflexDirection
Lời giải
Đáp án đúng: "flexDirection". flexDirection xác định trục chính (main axis): 'column' (mặc định trong React Native) xếp con từ trên xuống, 'row' xếp từ trái sang phải, cùng các biến thể đảo chiều 'row-reverse' và 'column-reverse'. "flexWrap" chỉ quyết định các con có được xuống dòng khi tràn trục chính hay không, không đổi hướng xếp. "alignItems" căn các con theo trục phụ (cross axis), ví dụ căn giữa theo chiều ngang khi trục chính là cột. "justifyContent" phân bố các con dọc theo trục chính (flex-start, center, space-between…), nhưng hướng của trục đó vẫn do flexDirection quyết định.
Mở trang câu hỏi này →