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.

4.340/20.347 câuCòn 16.007
ATwo-way data binding
BVirtual DOM
CDirect SQL queries
DAutomatic server deployment
Lời giải
Đáp án đúng: "Virtual DOM". Virtual DOM là bản mô tả cây giao diện dưới dạng object JavaScript mà React giữ trong bộ nhớ: mỗi khi state hoặc props đổi, React dựng lại cây ảo, so sánh với cây trước (quá trình reconciliation) rồi chỉ áp những thay đổi cần thiết lên DOM thật, giúp lập trình viên viết giao diện theo kiểu khai báo mà vẫn cập nhật hiệu quả. "Two-way data binding" sai vì React dùng luồng dữ liệu một chiều: dữ liệu đi từ cha xuống con qua props, còn ô nhập muốn đồng bộ phải tự gắn value với state và cập nhật qua onChange; ràng buộc hai chiều là đặc trưng của Angular hay v-model của Vue. "Direct SQL queries" sai vì React là thư viện giao diện chạy trong trình duyệt, không truy vấn cơ sở dữ liệu. "Automatic server deployment" sai vì React không có cơ chế triển khai máy chủ; việc đó thuộc về nền tảng hosting hoặc quy trình CI/CD.
Mở trang câu hỏi này →
AUsing the lazy function from the React library
BWrapping the component in the LazyComponent higher-order component
CImporting the component with the lazy keyword
DUsing the createLazyComponent method from the React package
Lời giải
Đáp án đúng: "Using the lazy function from the React library". React cung cấp hàm lazy, nhận một hàm trả về lời gọi import() động, ví dụ const About = lazy(() => import('./About')); kết quả là một component chỉ được tải mã khi được render lần đầu, và phải đặt trong Suspense để có fallback lúc chờ; lazy nên khai báo ở ngoài thân component để không bị tạo lại mỗi lần render. "Wrapping the component in the LazyComponent higher-order component" sai vì React không có component bậc cao (HOC) nào tên LazyComponent. "Importing the component with the lazy keyword" sai vì JavaScript không có từ khoá lazy trong câu lệnh import; lazy là một hàm bình thường được import từ react. "Using the createLazyComponent method from the React package" sai vì React không có phương thức này, tên đúng chỉ là lazy, gọi qua React.lazy hoặc import trực tiếp.
Mở trang câu hỏi này →
A<Button className="btn btn-primary">Click Me</Button>
B<button class="btn btn-primary">Click Me</button>
C<Button variant="primary">Click Me</Button>
D<PrimaryButton>Click Me</PrimaryButton>
Lời giải

Đáp án đúng: "<Button variant="primary">Click Me</Button> ". React-Bootstrap cung cấp component Button, kiểu dáng được chọn qua prop variant với các giá trị như primary, secondary, success, danger, outline-primary; component tự sinh lớp btn btn-primary ở bên dưới. "

Lời giải
<Button className="btn btn-primary">Click Me</Button>

" vẫn ra màu primary vì Button mặc định đã có variant primary, nhưng viết lớp tay như vậy là cách của Bootstrap thuần, bỏ qua API của React-Bootstrap và lặp lớp. "

Lời giải
<button class="btn btn-primary">Click Me</button>

" là thẻ HTML thường, lại dùng class thay cho className nên React cảnh báo, không phải component React-Bootstrap. "<PrimaryButton>Click Me</PrimaryButton> " sai vì React-Bootstrap không có component nào tên PrimaryButton.

Mở trang câu hỏi này →
4324A React component is mainly used to:4 lựa chọn
AStore data in a database
BManage the back-end server logic
CRender a part of the user interface
DHandle network security
Lời giải
Đáp án đúng: "Render a part of the user interface". React là thư viện xây dựng giao diện người dùng, và component là đơn vị cơ bản của nó: một hàm hoặc lớp nhận props, giữ state nếu cần, rồi trả về JSX mô tả một phần giao diện như nút bấm, thẻ sản phẩm hay cả một trang. Nhiều component lồng nhau tạo nên toàn bộ ứng dụng. "Store data in a database" sai vì React chạy ở trình duyệt, việc lưu vào cơ sở dữ liệu thuộc về backend. "Manage the back-end server logic" sai vì logic server viết bằng Node.js, Express hay ngôn ngữ backend khác, không phải bằng component React. "Handle network security" sai vì bảo mật mạng như HTTPS, tường lửa hay xác thực phía server không phải nhiệm vụ của component giao diện.
Mở trang câu hỏi này →
ATo declare variables in the global scope.
BTo accept an indefinite number of arguments as an array.
CTo handle asynchronous tasks.
DTo destructure arrays.
Lời giải
Đáp án đúng: "To accept an indefinite number of arguments as an array.". Rest parameter viết bằng ba dấu chấm đặt trước tham số cuối, ví dụ function sum(...nums), gom mọi đối số còn lại thành một mảng thật, nhờ đó hàm nhận số lượng đối số tuỳ ý và dùng được map, reduce trên mảng đó, khác với đối tượng arguments kiểu cũ. "To declare variables in the global scope." sai vì phạm vi biến do let, const, var quyết định, không liên quan rest. "To handle asynchronous tasks." nhầm: tác vụ bất đồng bộ được xử lý bằng Promise hay async/await. "To destructure arrays." dễ nhầm vì dấu ba chấm cũng xuất hiện trong phân rã mảng như const [first, ...others] = arr, nhưng đó là rest element trong destructuring; rest parameter là ở danh sách tham số hàm và mục đích là nhận nhiều đối số.
Mở trang câu hỏi này →
AUsing props directly in the element prop
BBy manually passing props via useParams
CBy using component prop
DProps are passed automatically in React Router
Lời giải

Đáp án đúng: "Using props directly in the element prop". Trong React Router v6, Route nhận prop element là một phần tử JSX dựng sẵn, nên muốn truyền props cho component được route render thì viết thẳng chúng vào phần tử đó, ví dụ element={

Lời giải
<Profile user={
  currentUser
}
/>

}, giống hệt khi dùng component ở bất kỳ đâu. Phương án "By manually passing props via useParams" sai vì useParams chỉ đọc tham số động trên URL như id trong /users/:id, không phải kênh truyền props tùy ý. Phương án "By using component prop" là cách của React Router v5, cách này không cho truyền props trực tiếp và đã bị bỏ ở v6. Phương án "Props are passed automatically in React Router" sai vì ở v6 router không tự bơm props như history, match vào component nữa; các thông tin đó lấy bằng hook như useNavigate, useLocation, useParams.

Mở trang câu hỏi này →
ATo connect React components directly to the Redux store without the need for action creators or reducers.
BTo provide a way to store and manage the application's state on the server-side, separate from the client-side state.
CTo enable creating action creators that return functions (for asynchronous operations like API calls) instead of plain action objects.
DTo automatically generate the code for action creators and reducers based on the application's data structure.
Lời giải
Đáp án đúng: "To enable creating action creators that return functions (for asynchronous operations like API calls) instead of plain action objects.". Theo mặc định Redux chỉ nhận action là object thuần và reducer phải là hàm thuần, nên không có chỗ cho việc gọi API; Redux Thunk là middleware cho phép dispatch một hàm, gọi là thunk, hàm này nhận dispatch và getState để chạy thao tác bất đồng bộ rồi dispatch các action thật như đang tải, thành công, thất bại; Redux Toolkit dựng sẵn middleware này và createAsyncThunk được xây trên nó. Phát biểu "connect React components directly to the Redux store without the need for action creators" sai vì kết nối component với store là việc của react-redux qua Provider, useSelector, useDispatch hoặc connect. Phát biểu "store and manage the application's state on the server-side" sai vì Redux Thunk chạy trên client, không quản lý state phía máy chủ. Phát biểu "automatically generate the code for action creators and reducers" sai vì Thunk không sinh mã; việc tự tạo action creator từ reducer là tính năng createSlice của Redux Toolkit.
Mở trang câu hỏi này →
ATo handle database operations
BTo manage user authentication
CTo handle navigation between different pages
DTo style the user interface
Lời giải
Đáp án đúng: "To handle navigation between different pages". Router (bộ định tuyến) theo dõi URL và quyết định nội dung nào được hiển thị cho mỗi đường dẫn, nhờ đó người dùng chuyển qua lại giữa các trang, dùng được nút quay lại của trình duyệt và có thể chia sẻ đường link tới một trang cụ thể; trong ứng dụng một trang (SPA) như React, React Router đổi component hiển thị mà không tải lại cả trang. "To handle database operations" sai vì đọc ghi cơ sở dữ liệu là việc của máy chủ và tầng truy cập dữ liệu, router không chạm tới dữ liệu. "To manage user authentication" sai vì xác thực người dùng do hệ thống đăng nhập lo; router có thể dùng để chặn một tuyến khi chưa đăng nhập nhưng không tự xác thực ai. "To style the user interface" sai vì trang trí giao diện thuộc về CSS và các thư viện như Bootstrap, router không tác động tới kiểu dáng.
Mở trang câu hỏi này →
A200 OK
B404 Not Found
C500 Internal Server Error
D302 Found
Lời giải
Đáp án đúng: "200 OK". Mã trạng thái HTTP nhóm 2xx báo yêu cầu đã được xử lý thành công, trong đó 200 OK là phản hồi thành công tiêu chuẩn, thường kèm dữ liệu trả về; khi gọi API bằng fetch, thuộc tính response.ok là true với mọi mã từ 200 tới 299, còn Axios coi đó là thành công và không ném lỗi. "404 Not Found" thuộc nhóm 4xx lỗi phía máy khách, nghĩa là không tìm thấy tài nguyên ở đường dẫn yêu cầu. "500 Internal Server Error" thuộc nhóm 5xx, máy chủ gặp lỗi bên trong khi xử lý. "302 Found" thuộc nhóm 3xx chuyển hướng, báo tài nguyên tạm thời nằm ở địa chỉ khác ghi trong header Location, trình duyệt sẽ đi tiếp sang đó nên chưa phải phản hồi thành công cuối cùng.
Mở trang câu hỏi này →
AUse .container-fluid for the entire layout
BCombine .container with .col-fluid
CUse a fixed-width class with a media query
DUse .container-md to apply a responsive container at the md breakpoint
Lời giải
Đáp án đúng: "Use .container-md to apply a responsive container at the md breakpoint". Container responsive của Bootstrap 5 như .container-md kết hợp hai kiểu độ rộng: dưới breakpoint md (768px) nó rộng 100% như container fluid, từ md trở lên nó chuyển sang max-width cố định tính bằng pixel, lần lượt 720px, 960px, 1140px, 1320px theo từng mốc. Đó chính là cách gộp hành vi fluid và pixel trong cùng một container mà không cần tự viết CSS. "Use .container-fluid for the entire layout" chỉ cho hành vi fluid ở mọi kích thước, không có phần pixel. "Combine .container with .col-fluid" sai vì Bootstrap không có lớp .col-fluid. "Use a fixed-width class with a media query" là tự viết CSS thủ công, chạy được nhưng không phải thứ Bootstrap 5 cung cấp sẵn và bỏ qua hệ container responsive.
Mở trang câu hỏi này →
Aconst Child = (props) => { const { name, age } = props; return <div>{name}, {age}</div>; };
Bconst Child = (props) => { const name = props.name; const age = props.age; return <div>{name}, {age}</div>; };
Cconst Child = ({ props }) => { const { name, age } = props; return <div>{name}, {age}</div>; };
Dconst Child = ({ name, age }) => { return <div>{name}, {age}</div>; };
Lời giải

Đáp án đúng: "const Child = ({ name, age }) => {

Lời giải
return <div>{
  name
}

, {age}</div>; };". Function component nhận props là một đối tượng, nên có thể phân rã (destructure) ngay trong danh sách tham số: hàm nhận thẳng hai biến name và age, thân hàm chỉ còn trả về JSX hiển thị chúng. Phương án chứa "(props) => { const { name, age } = props;" cũng là destructuring hợp lệ và chạy đúng, nhưng làm thành một bước riêng trong thân hàm qua biến props trung gian, không phải cách phân rã props tại tham số mà câu hỏi nhắm tới. Phương án chứa "const name = props.name; const age = props.age;" chỉ gán từng thuộc tính bằng dấu chấm, hoàn toàn không dùng destructuring. Phương án chứa "({ props }) => {" phân rã lấy khoá tên props từ đối tượng props, mà đối tượng đó không có khoá này nên biến props là undefined và câu lệnh phân rã kế tiếp ném TypeError.

Mở trang câu hỏi này →
ABy running "npm create-react-app my-app"
BBy downloading a ZIP file from the official website
CBy using an online code editor
DBy cloning a Git repository
Lời giải
Đáp án đúng: "By running "npm create-react-app my-app"". Create React App là công cụ dòng lệnh dựng sẵn một dự án React với cấu hình webpack, Babel, máy chủ phát triển và các script start, build, test; cách dùng là chạy lệnh tạo dự án trong terminal kèm tên thư mục my-app, dạng chuẩn theo tài liệu là npx create-react-app my-app (hoặc npm create react-app my-app), nên phương án chạy lệnh create-react-app là phương án duy nhất mô tả đúng cách tạo dự án, dù cách viết chuẩn dùng npx. Ngày nay công cụ này đã ngừng được khuyến nghị, dự án mới thường dùng Vite hoặc framework như Next.js, nhưng câu hỏi hỏi riêng về Create React App. Phương án "By downloading a ZIP file from the official website" sai vì công cụ không phát hành dự án mẫu dạng tệp nén để tải về. Phương án "By using an online code editor" như CodeSandbox chỉ giúp thử React trên trình duyệt, không phải cách dùng Create React App. Phương án "By cloning a Git repository" là sao chép một dự án có sẵn, không phải khởi tạo ứng dụng mới bằng công cụ.
Mở trang câu hỏi này →
ATo define functions with a shorter syntax
BTo create self-executing functions
CTo declare asynchronous functions
DTo bind the value of this inside a function
Lời giải

Đáp án đúng: "To define functions with a shorter syntax". Arrow function (hàm mũi tên) của ES6 ra đời trước hết để viết hàm gọn hơn: bỏ từ khoá function, có thể bỏ ngoặc khi chỉ có một tham số và bỏ return khi thân là một biểu thức, rất tiện cho callback như map, filter hay hàm xử lý sự kiện trong React. "To create self-executing functions" sai vì hàm tự gọi (IIFE) viết được bằng cả function thường lẫn hàm mũi tên, đó không phải mục đích của cú pháp này. "To declare asynchronous functions" sai vì hàm bất đồng bộ được khai báo bằng từ khoá async từ ES2017, áp dụng cho cả hai kiểu hàm. "To bind the value of this inside a function" là điểm dễ gây tranh cãi: hàm mũi tên đúng là không có this riêng mà dùng this của phạm vi bao ngoài, nhờ vậy tránh phải gọi bind trong class component; nhưng đó là đặc điểm đi kèm, không phải ràng buộc this, vì bind, call hay apply đều không đổi được this của nó, và câu hỏi hỏi mục đích chung nên cú pháp ngắn gọn là đáp án được chọn.

Mở trang câu hỏi này →
ATo manage state within a component
BTo respond to user interactions like clicking, hovering, and focusing
CTo handle server-side logic
DTo manage routing in a React application
Lời giải
Đáp án đúng: "To respond to user interactions like clicking, hovering, and focusing". Event handler (hàm xử lý sự kiện) là hàm ta truyền vào các prop như onClick, onMouseEnter, onFocus hay onChange; React gọi hàm đó khi người dùng nhấp, rê chuột, đưa con trỏ vào ô nhập hay gõ phím, và bên trong hàm ta làm việc cần làm như cập nhật state hay gửi biểu mẫu. Lưu ý phải truyền chính hàm, ví dụ onClick={handleClick}, chứ không gọi nó ngay. "To manage state within a component" sai vì giữ state là việc của useState hay useReducer; hàm xử lý sự kiện có thể gọi hàm set để đổi state, nhưng mục đích của nó là phản hồi thao tác người dùng. "To handle server-side logic" sai vì event handler chạy trong trình duyệt, logic máy chủ thuộc về backend. "To manage routing in a React application" sai vì định tuyến do React Router đảm nhận qua Routes, Route và Link.
Mở trang câu hỏi này →
ATo combine multiple code files into a single bundle
BTo improve web performance by loading only necessary code
CTo obfuscate code for security purposes
DTo enhance cross-browser compatibility
Lời giải
Đáp án đúng: "To improve web performance by loading only necessary code". Code splitting (tách mã) chia mã ứng dụng thành nhiều gói nhỏ (chunk) mà trình duyệt chỉ tải khi cần, ví dụ mỗi route một chunk qua import() động, React.lazy hoặc cấu hình của Webpack, Vite; lượng JavaScript phải tải, phân tích và chạy ở lần đầu giảm xuống nên trang hiển thị nhanh hơn. "To combine multiple code files into a single bundle" là việc gộp gói (bundling), chính là thứ code splitting chia nhỏ lại. "To obfuscate code for security purposes" là làm rối mã, không liên quan tới tách mã và cũng không phải biện pháp bảo mật thật vì mã phía trình duyệt vẫn đọc được. "To enhance cross-browser compatibility" thuộc về việc biên dịch bằng Babel và polyfill, không phải tách mã.
Mở trang câu hỏi này →
ACan be reused across different parts of the application.
BManage their own state.
CUse JSX syntax.
DDirectly manage routing.
Lời giải
Đáp án đúng gồm ba ý: "Can be reused across different parts of the application.", "Manage their own state." và "Use JSX syntax.". Component là khối giao diện độc lập, khai báo một lần rồi dùng lại ở nhiều nơi với props khác nhau. Component có thể tự giữ state riêng bằng useState hay useReducer, hoặc this.state ở class component, và mỗi thể hiện có bản state riêng; không phải component nào cũng cần state, nhưng khả năng tự quản lý state là đặc trưng của component. Component thường mô tả giao diện bằng JSX, cú pháp giống HTML được biên dịch thành lời gọi tạo phần tử React; về lý thuyết có thể viết không dùng JSX nhưng JSX là cách viết chuẩn. "Directly manage routing." không phải đặc trưng của component: định tuyến do thư viện riêng như React Router đảm nhận, React lõi không có khái niệm route.
Mở trang câu hỏi này →
AThey only work with static content
BThey allow building dynamic, responsive, and efficient web applications
CThey focus on database management
DThey are used exclusively for creating server-side logic
Lời giải
Đáp án đúng: "They allow building dynamic, responsive, and efficient web applications". React, Angular và Vue cho phép chia giao diện thành component tái sử dụng, cập nhật giao diện tự động khi dữ liệu thay đổi và chỉ vẽ lại phần cần đổi, nhờ đó dựng được ứng dụng web động, phản hồi nhanh và hiệu quả như ứng dụng một trang (SPA). "They only work with static content" sai vì thế mạnh của chúng chính là nội dung động; trang tĩnh thì HTML thuần đã đủ. "They focus on database management" nhầm: quản lý cơ sở dữ liệu là việc của hệ quản trị như PostgreSQL hay MongoDB ở phía máy chủ. "They are used exclusively for creating server-side logic" sai vì đây là công cụ chủ yếu cho phía giao diện (front-end); có thể render ở máy chủ nhưng không chỉ dùng cho logic phía máy chủ.
Mở trang câu hỏi này →
ATo handle UI rendering and user interactions
BTo fetch the data and passing to child component
CTo provide a visual representation of data
DTo encapsulate reusable UI components
Lời giải
Đáp án đúng: "To fetch the data and passing to child component". Mẫu container và presentational chia component theo vai trò: container component lo phần dữ liệu và logic, như gọi API, giữ state, kết nối store, rồi truyền dữ liệu cùng các hàm xử lý xuống component con qua props; component con (presentational) chỉ lo hiển thị. Nhờ tách như vậy, phần giao diện dễ dùng lại và dễ kiểm thử. Phương án "To handle UI rendering and user interactions" là việc của presentational component, nơi vẽ giao diện và nhận thao tác rồi gọi hàm được truyền xuống. Phương án "To provide a visual representation of data" cũng là vai trò hiển thị của presentational component. Phương án "To encapsulate reusable UI components" nói về việc đóng gói các thành phần giao diện dùng lại như nút hay thẻ, không phải nhiệm vụ đặc trưng của container là lấy dữ liệu và chuyền xuống.
Mở trang câu hỏi này →
4339What is React-Bootstrap?4 lựa chọn
AIt combines the flexibility and power of the Bootstrap framework with the dynamic nature of React
BIt is a programming language used for back-end development.
CIt is a database management system for React applications.
DIt is a version control system for React projects.
Lời giải
Đáp án đúng: "It combines the flexibility and power of the Bootstrap framework with the dynamic nature of React". React-Bootstrap là thư viện viết lại các component của Bootstrap thành component React thực thụ như Button, Modal, Navbar, Container, Row, Col: vẫn dùng CSS và hệ lưới của Bootstrap, nhưng hành vi như đóng mở modal được điều khiển bằng props và state của React thay vì jQuery thao tác DOM trực tiếp. "It is a programming language used for back-end development." sai vì React-Bootstrap là thư viện JavaScript chạy phía giao diện, không phải ngôn ngữ lập trình và không dùng cho back-end. "It is a database management system for React applications." sai vì nó không lưu trữ hay truy vấn dữ liệu; đó là việc của hệ quản trị cơ sở dữ liệu như MySQL hoặc MongoDB. "It is a version control system for React projects." sai vì quản lý phiên bản mã nguồn là việc của công cụ như Git, không phải thư viện giao diện.
Mở trang câu hỏi này →
ABy adding js: before it
BBy wrapping it in {}
CBy using () only
DBy using {{}}
Lời giải

Đáp án đúng: "By wrapping it in {}". Trong JSX, cặp ngoặc nhọn là cửa sổ để quay về JavaScript: bất kỳ biểu thức nào đặt trong đó, như một biến, phép tính, lời gọi hàm hay toán tử ba ngôi, đều được tính và chèn kết quả vào giao diện, ví dụ {user.name} hay {count + 1}; ngoặc nhọn dùng được cả trong nội dung thẻ lẫn làm giá trị thuộc tính. "By adding js: before it" sai vì JSX không có tiền tố js nào, viết vậy chỉ ra chữ thường trên màn hình. "By using () only" sai vì ngoặc tròn trong JSX chỉ dùng để nhóm, chẳng hạn bọc khối JSX nhiều dòng sau return, chúng không biến chữ bên trong thành biểu thức JavaScript. "By

Lời giải
using {
  {
  }
}

" sai vì cặp ngoặc đôi không phải cú pháp riêng: ngoặc ngoài là ngoặc nhúng biểu thức, ngoặc trong là một đối tượng JavaScript, như khi viết style={{ color: 'red' }}, nên nó chỉ là một trường hợp của cách dùng {}.

Mở trang câu hỏi này →