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.300/20.347 câuCòn 16.047
AModal
BCheckbox
CButton
DCard
Lời giải
Đáp án đúng: "Modal". Modal của React-Bootstrap là hộp thoại nổi lên trên trang kèm lớp phủ nền, bật tắt bằng prop show và đóng qua onHide, nội dung tuỳ biến được nhờ các phần con Modal.Header, Modal.Title, Modal.Body, Modal.Footer, nên đúng là thành phần hiển thị popup dialog. "Checkbox" không phải component riêng của React-Bootstrap; ô đánh dấu được tạo bằng Form.Check với type checkbox, và nó là ô nhập chứ không phải hộp thoại. "Button" chỉ là nút bấm, thường dùng để mở Modal nhưng bản thân không phải hộp thoại. "Card" là hộp nội dung nằm trong luồng trang, không nổi lên che trang và không có cơ chế đóng mở như hộp thoại.
Mở trang câu hỏi này →
A<Child props={{ name: "John", age: 30 }} />
B<Child name="John" age={30} />
C<Child name="John" age="30" />
D<Child name="John" age=30 />
Lời giải

Đáp án đúng: "

Lời giải
<Child name="John" age={
  30
}
/>

". Mỗi prop là một thuộc tính riêng trên thẻ JSX, cách nhau bằng dấu cách; chuỗi đặt trong nháy kép, còn giá trị JavaScript khác như số, boolean hay object đặt trong ngoặc nhọn, nên Child nhận props.name là chuỗi John và props.age là số 30. "<Child name="John" age="30" /> " cũng truyền được hai prop nhưng age thành chuỗi ký tự chứ không phải số, nên phép cộng hay so sánh số trong Child dễ ra kết quả sai. "<Child name="John" age=30 /> " sai cú pháp JSX vì giá trị thuộc tính không phải chuỗi thì bắt buộc nằm trong ngoặc nhọn. "

Lời giải
<Child props={
  {
    name: "John", age: 30
  }
}
/>

" chỉ truyền một prop tên props chứa object, Child phải đọc props.props.name; muốn trải object thành nhiều prop thì dùng cú pháp spread với ba dấu chấm trong ngoặc nhọn.

Mở trang câu hỏi này →
AIt is called before the component is updated.
BIt is called after the component is updated.
CIt is used to update the component's state.
DIt is used to handle events.
Lời giải
Đáp án đúng: "It is called before the component is updated.". getSnapshotBeforeUpdate là phương thức vòng đời của class component, được React gọi ngay trước khi thay đổi của lần cập nhật được ghi vào DOM thật, tức sau render nhưng trước khi màn hình đổi; giá trị nó trả về (ví dụ vị trí cuộn của một khung chat) được chuyển làm đối số thứ ba cho componentDidUpdate để khôi phục sau cập nhật. "It is called after the component is updated." là thời điểm của componentDidUpdate. "It is used to update the component's state." sai vì cập nhật state làm bằng setState; phương thức này chỉ đọc thông tin từ DOM rồi trả về một giá trị. "It is used to handle events." không liên quan, vì sự kiện được xử lý bằng các hàm gắn vào prop như onClick.
Mở trang câu hỏi này →
ATo enhance the performance of a React application by optimizing component rendering
BTo manage state globally across all components in a React application
CTo manage data flow between components within a React application
DTo manage navigation and routing between components within a React application
Lời giải
Đáp án đúng: "To manage navigation and routing between components within a React application". React Router ánh xạ URL trên thanh địa chỉ với component cần hiện: khi người dùng bấm Link hoặc mã gọi navigate, nó đổi URL qua History API mà không tải lại trang, rồi Routes chọn Route khớp và render element tương ứng, nhờ vậy ứng dụng một trang vẫn có nhiều màn hình, có nút quay lại và đường dẫn chia sẻ được. Phương án "To enhance the performance of a React application by optimizing component rendering" là việc của memo, useMemo hay tách mã, không phải mục đích của router. Phương án "To manage state globally across all components in a React application" là việc của Redux hay Context. Phương án "To manage data flow between components within a React application" nói về props, Context hay store; router có truyền tham số URL nhưng nhiệm vụ chính là điều hướng.
Mở trang câu hỏi này →
Afetch(url).then(response => response.json())
Bfetch(url).catch(response => response.json())
Cfetch(url).then(response => response.text())
Dfetch(url).then(response => response.get())
Lời giải
Đáp án đúng: "fetch(url).then(response => response.json())". Gọi fetch chỉ với url sẽ gửi request GET mặc định và trả về Promise cho object Response; then nhận response đó khi request hoàn tất, và gọi json() để đọc thân phản hồi rồi parse thành object JavaScript, cũng trả về Promise để nối tiếp then kế tiếp xử lý dữ liệu, đây là mẫu chuẩn khi gọi API trả JSON. "fetch(url).catch(response => response.json())" sai vì catch chỉ chạy khi Promise bị từ chối, như lỗi mạng, và nhận đối tượng lỗi chứ không nhận response, nên dữ liệu thành công không bao giờ được đọc. "fetch(url).then(response => response.text())" về cú pháp vẫn là một request GET hợp lệ, nhưng text() trả về chuỗi thô và phải tự parse thêm, nên không phải dạng chuẩn để lấy dữ liệu từ API như câu hỏi muốn. "fetch(url).then(response => response.get())" sai vì Response không có phương thức get; các phương thức đọc thân là json, text, blob, arrayBuffer, formData.
Mở trang câu hỏi này →
Anavigate('');
Bnavigate('home');
Cnavigate('/');
Dnavigate('root');
Lời giải
Đáp án đúng: "navigate('/');". useNavigate trả về hàm navigate, gọi với một đường dẫn để chuyển trang bằng mã; đường dẫn bắt đầu bằng dấu gạch chéo là đường dẫn tuyệt đối, và riêng dấu gạch chéo chính là trang gốc của ứng dụng, nên navigate('/') luôn đưa về tuyến gốc dù đang ở đâu. "navigate('');" sai vì chuỗi rỗng là đường dẫn tương đối trỏ về chính tuyến hiện tại, nên trang gần như đứng yên. "navigate('home');" sai vì không có dấu gạch chéo ở đầu nên đây là đường dẫn tương đối, nó đi tới tuyến home nằm dưới tuyến hiện tại, kể cả khi đang ở gốc thì cũng ra /home chứ không phải /. "navigate('root');" sai vì root chỉ là một chữ thường bị hiểu là đoạn đường dẫn tương đối tên root, React Router không có tên đặc biệt nào như vậy cho trang gốc.
Mở trang câu hỏi này →
A<Route path="/users/:id" component={UserDetail} />
B<Link to="/users">Users</Link>
Cimport { BrowserRouter as Router, Route } from "react-router-dom";
Dimport { Link, Route } from "react-router-dom";
Lời giải

Đáp án đúng: "

Lời giải
<Route path="/users/:id" component={
  UserDetail
}
/>

". Tham số route được khai báo bằng một đoạn động có dấu hai chấm trong path: /users/:id khớp với /users/5, /users/42 và giá trị sau dấu gạch chéo được gán vào tham số id, component đích đọc lại bằng useParams. Cần nói rõ prop component là cách viết của React Router v5, sang v6 phải viết element kèm thẻ UserDetail, nhưng ý khai báo tham số :id vẫn y nguyên và đây là đoạn mã duy nhất xử lý tham số route. "<Link to="/users">Users</Link> " chỉ tạo liên kết tới đường dẫn tĩnh /users, không có tham số nào. "import { BrowserRouter as Router, Route } from "react-router-dom";" chỉ là lệnh nhập BrowserRouter và Route, chưa khai báo route hay tham số. "import { Link, Route } from "react-router-dom";" cũng chỉ nhập Link và Route, không định nghĩa đường dẫn nào.

Mở trang câu hỏi này →
AThe repository has a new branch called new-feature with new-file.js added.
BThe main branch has new-file.js added.
CThe new-feature branch is merged into main without new-file.js.
DThe repository remains unchanged.
Lời giải

Đáp án đúng: "The main branch has new-file.js added.". Lần theo từng lệnh: git init tạo kho rỗng, nhánh mặc định ở đây được hiểu là main (Git cũ mặc định tên master); git add . rồi commit tạo commit đầu tiên; git branch new-feature tạo nhánh mới tại commit đó và git checkout new-feature chuyển sang nhánh này; git add new-file.js rồi commit thêm một commit chứa new-file.js chỉ trên new-feature; git checkout main quay về main, lúc này chưa có tệp đó; git merge new-feature thấy main không có commit riêng nào nên tiến thẳng (fast-forward) main lên commit của new-feature. Kết quả cuối là main chứa new-file.js. "The repository has a new branch called new-feature with new-file.js added." đúng ở bước giữa và nhánh đó vẫn còn, nhưng không mô tả kết quả cuối của lệnh merge. "The new-feature branch is merged into main without new-file.js." tự mâu thuẫn vì merge đưa đúng commit thêm tệp vào main. "The repository remains unchanged." sai vì đã có hai commit và một nhánh mới.

Mở trang câu hỏi này →
AonClick=“handleClick()”
BonClick={handleClick}
Cevent=“handleClick”
DhandleClick()
Lời giải
Đáp án đúng: "onClick={handleClick}". Trong JSX, sự kiện viết theo camelCase và nhận một hàm đặt trong ngoặc nhọn; React lưu tham chiếu tới handleClick và chỉ gọi nó khi người dùng bấm. "onClick=“handleClick()”" viết như thuộc tính HTML bằng một chuỗi chứa lời gọi hàm; React yêu cầu giá trị của onClick là hàm nên chuỗi không được thực thi khi bấm. "event=“handleClick”" sai vì event không phải tên prop sự kiện nào của React, gắn vào chỉ là thuộc tính vô nghĩa. "handleClick()" chỉ là lời gọi hàm trần: nó chạy ngay mỗi lần render chứ không gắn với cú bấm nào; kể cả đặt vào onClick thì cũng truyền kết quả trả về thay vì truyền hàm.
Mở trang câu hỏi này →
Đề bài
const [count, setCount] = useState(0);

function increment() {
  setCount(count + 1);
}
AReplace setCount with dispatch in the existing code.
BMove all state update logic into a reducer function.
CDefine the reducer function and use dispatch to replace setCount.
DImport useReducer without changing any code.
Lời giải
Đáp án đúng: "Replace setCount with dispatch in the existing code.". Tài liệu React, ở phần chuyển logic state vào reducer, chia việc đổi useState sang useReducer thành ba bước: bước một là chuyển từ việc đặt state sang việc dispatch action, tức trong increment thay lời gọi setCount(count + 1) bằng một lời gọi dispatch với action có type là increment, mô tả điều người dùng vừa làm; bước hai là viết hàm reducer chứa logic tính state mới; bước ba là dùng reducer trong component bằng useReducer. Cần nói thẳng có nguồn chấm "Move all state update logic into a reducer function." là đáp án, vì nghe rất hợp lý, nhưng theo trình tự trong tài liệu đó là bước hai, làm sau khi đã đổi các chỗ đặt state thành dispatch. Phương án "Define the reducer function and use dispatch to replace setCount." gộp bước hai với bước một và đặt việc viết reducer lên trước, nên không còn là một bước đầu tiên. Phương án "Import useReducer without changing any code." chỉ thêm lệnh import, không chuyển được chút logic nào nên không phải bước chuyển đổi có ý nghĩa.
Mở trang câu hỏi này →
AHTTP
BFTP
CSMTP
DSSH
Lời giải
Đáp án đúng: "HTTP". HTTP (HyperText Transfer Protocol, giao thức truyền siêu văn bản) là giao thức theo mô hình yêu cầu và phản hồi giữa client như trình duyệt và máy chủ web: client gửi request với phương thức như GET, POST kèm header, máy chủ trả response có mã trạng thái và nội dung như HTML hoặc JSON; bản HTTPS bổ sung mã hoá TLS, và fetch hay axios trong React đều giao tiếp qua giao thức này. "FTP" sai vì File Transfer Protocol dùng để truyền tệp giữa hai máy, thường để tải tệp lên máy chủ, không phải giao tiếp chính của ứng dụng web. "SMTP" sai vì Simple Mail Transfer Protocol dùng để gửi thư điện tử giữa các máy chủ mail. "SSH" sai vì Secure Shell dùng để đăng nhập và điều khiển máy từ xa qua kênh mã hoá, phục vụ quản trị máy chủ chứ không phục vụ trang web.
Mở trang câu hỏi này →
AOK
BCreated
CNot Found
DInternal Server Error
Lời giải
Đáp án đúng: "Not Found". Mã trạng thái HTTP 404 thuộc nhóm 4xx, nhóm lỗi phía client, và có nghĩa là máy chủ không tìm thấy tài nguyên tại URL được yêu cầu, chẳng hạn gõ sai đường dẫn hay gọi API tới bản ghi đã bị xoá. Khi dùng fetch, phản hồi 404 vẫn làm Promise hoàn thành bình thường nhưng response.ok bằng false, còn axios sẽ ném lỗi. "OK" sai vì đó là ý nghĩa của mã 200, yêu cầu thành công. "Created" sai vì đó là mã 201, thường trả về sau POST khi máy chủ tạo được tài nguyên mới. "Internal Server Error" sai vì đó là mã 500 thuộc nhóm 5xx, lỗi xảy ra bên trong máy chủ chứ không phải do không tìm thấy tài nguyên. Nhớ theo nhóm: 2xx thành công, 3xx chuyển hướng, 4xx lỗi từ phía yêu cầu, 5xx lỗi phía máy chủ.
Mở trang câu hỏi này →
Đề bài
<button onClick={
  ______
}
>Click</button>
Aconsole.log('Clicked')
Bevent: console.log('Clicked')
C() => console.log('Clicked')
DhandleClick = console.log('Clicked')
Lời giải
Đáp án đúng: "() => console.log('Clicked')". Prop onClick cần nhận một HÀM để React gọi khi người dùng bấm; arrow function bọc lệnh log lại nên lệnh chỉ chạy lúc click. "console.log('Clicked')" là lời gọi hàm, chạy ngay khi component render nên chữ Clicked in ra lúc render, còn onClick nhận giá trị trả về undefined nên bấm nút không in gì. "event: console.log('Clicked')" không phải biểu thức hợp lệ, trong chỗ chèn biểu thức của JSX cú pháp nhãn kiểu này gây lỗi biên dịch. "handleClick = console.log('Clicked')" là phép gán: console.log vẫn chạy ngay lúc render, onClick nhận undefined, và gán vào biến chưa khai báo trong module ES (chế độ strict) còn ném ReferenceError.
Mở trang câu hỏi này →
AcomponentDidMount
BcomponentWillUnmount
CcomponentDidUpdate
DshouldComponentUpdate
Lời giải
Đáp án đúng: "componentDidMount". Ở class component, componentDidMount được gọi đúng một lần ngay sau khi component render lần đầu và được gắn vào DOM, nên là chỗ để gọi API, đăng ký sự kiện hay đọc kích thước phần tử; ở function component, tương đương là useEffect với mảng phụ thuộc rỗng. "componentWillUnmount" chạy ngay trước khi component bị gỡ khỏi DOM, dùng để dọn dẹp như huỷ hẹn giờ hay huỷ đăng ký. "componentDidUpdate" chạy sau mỗi lần cập nhật, tức các lần render sau lần đầu, không chạy ở lần mount. "shouldComponentUpdate" chạy trước khi render lại, trả về true hoặc false để quyết định có render lại hay không, và không được gọi ở lần render đầu tiên.
Mở trang câu hỏi này →
A<MyContext value={someValue}> <Component /> </MyContext>
B<MyContext.Provider value={someValue}> <Component /> </MyContext.Provider>
C<MyContext.Consumer value={someValue}> <Component /> </MyContext.Consumer>
D<MyContext.Provider> <Component value={someValue} /> </MyContext.Provider>
Lời giải

Đáp án đúng: "

Lời giải
<MyContext.Provider value={
  someValue
}
> <Component /> </MyContext.Provider>

". Provider của context nhận giá trị qua prop value, và mọi component nằm bên trong nó đọc được giá trị đó bằng useContext(MyContext) hoặc Consumer. "

Lời giải
<MyContext value={
  someValue
}
> <Component /> </MyContext>

" chỉ chạy được từ React 19, khi bản thân đối tượng context được phép dùng làm Provider; với React 18 trở về trước, cách viết chuẩn và chắc chắn vẫn là MyContext.Provider. Phương án chứa "

Lời giải
<MyContext.Consumer value={
  someValue
}
>

" dùng Consumer, vốn để đọc giá trị qua một hàm con, không nhận prop value nên không cung cấp được gì. Phương án chứa "

Lời giải
<Component value={
  someValue
}
/>

" để Provider thiếu value nên các component con đọc ra undefined, còn someValue chỉ thành một prop thường của Component, không đi vào context.

Mở trang câu hỏi này →
Acase 'increment': return { count + 1 };
Bcase 'increment': return { count: state.count + 1 };
Ccase 'increment': return { count= count + 1 };
Dcase 'increment': return { state.count + 1 };
Lời giải

Đáp án đúng: "case 'increment':

Lời giải
return {
  count: state.count + 1
}

;". Reducer là hàm thuần nhận state hiện tại cùng action và trả về state mới; trong khối switch theo action.type, mỗi case trả về một đối tượng mới chứ không sửa state cũ, nên với state dạng đối tượng có khóa count, cách viết đúng là tạo đối tượng có thuộc tính count bằng state.count cộng 1. Phương án "case 'increment':

Lời giải
return {
  count + 1
}

;" có ngoặc nhọn nhưng thiếu tên khóa, count + 1 không phải cặp khóa và giá trị nên là lỗi cú pháp, đồng thời count chưa được khai báo trong reducer. Phương án "case 'increment':

Lời giải
return {
  count= count + 1
}

;" dùng dấu bằng trong đối tượng, sai cú pháp vì cặp khóa và giá trị phải dùng dấu hai chấm, và ý đồ là gán thay vì trả về giá trị mới. Phương án "case 'increment':

Lời giải
return {
  state.count + 1
}

;" cũng thiếu tên khóa, biểu thức state.count + 1 không thể đứng một mình trong đối tượng nên lỗi cú pháp.

Mở trang câu hỏi này →
AServer-side logic
BStyling and responsive design
CDatabase connections
DData manipulation
Lời giải
Đáp án đúng: "Styling and responsive design". Bootstrap là framework front-end tập trung vào phần nhìn: nó cung cấp CSS định kiểu sẵn cho chữ, nút, biểu mẫu, bảng, các component như thanh điều hướng, modal, carousel, cùng hệ lưới 12 cột với các điểm ngắt giúp trang tự sắp lại trên điện thoại, máy tính bảng và máy tính, tức thiết kế đáp ứng (responsive design). "Server-side logic" sai vì logic phía máy chủ như xác thực hay xử lý nghiệp vụ được viết ở back-end, Bootstrap chỉ chạy trong trình duyệt. "Database connections" sai vì kết nối cơ sở dữ liệu là việc của tầng máy chủ thông qua driver hoặc ORM, nằm hoàn toàn ngoài phạm vi framework giao diện. "Data manipulation" sai vì biến đổi, lọc hay tính toán dữ liệu là việc của mã JavaScript ứng dụng hoặc back-end; Bootstrap chỉ quyết định dữ liệu đó được trình bày trông ra sao.
Mở trang câu hỏi này →
AOnly strings
BOnly numbers
CAny JavaScript value, including objects, arrays, and functions
DOnly other React components
Lời giải
Đáp án đúng: "Any JavaScript value, including objects, arrays, and functions". Prop là cách component cha truyền dữ liệu xuống component con, viết như thuộc tính trên thẻ; mọi biểu thức JavaScript đặt trong ngoặc nhọn đều truyền được, từ chuỗi, số, boolean tới đối tượng, mảng, hàm callback như onClick, và cả phần tử JSX, chẳng hạn children. Component con nhận tất cả trong đối tượng props và chỉ được đọc, không được sửa. "Only strings" sai vì chuỗi chỉ là trường hợp viết gọn bằng nháy kép, ví dụ title="Xin chào", ngoài ra mọi giá trị khác đều truyền qua ngoặc nhọn. "Only numbers" sai vì số cũng chỉ là một loại giá trị, phải viết như age={30}. "Only other React components" sai vì truyền component hay phần tử JSX làm prop là được, nhưng đó chỉ là một khả năng trong rất nhiều loại giá trị.
Mở trang câu hỏi này →
A<h1> {{ greeting }} </h1>
B<h1> <greeting /> </h1>
C<h1> {greeting} </h1>
D<h1> ${greeting} </h1>
Lời giải

Đáp án đúng: "

Lời giải
<h1> {
  greeting
}
</h1>

". Trong JSX, một cặp ngoặc nhọn đơn mở chỗ chèn biểu thức JavaScript; khi render, React tính giá trị của greeting và đặt kết quả làm nội dung chữ của thẻ h1. "

Lời giải
<h1> {
  {
    greeting
  }
}
</h1>

" dùng ngoặc nhọn kép: lớp trong là đối tượng viết tắt chứa thuộc tính greeting, React không render được đối tượng làm nội dung con nên báo lỗi; ngoặc kép chỉ gặp khi truyền đối tượng, ví dụ prop style. "<h1> <greeting /> </h1> " bị hiểu là một phần tử tên greeting, thẻ viết thường được coi là thẻ HTML chứ không phải biến, nên không hiện giá trị. "

Lời giải
<h1> ${
  greeting
}
</h1>

" là cú pháp chèn biến của template literal; trong JSX dấu đô la chỉ là chữ thường, nên màn hình hiện thêm ký tự $ đứng trước giá trị.

Mở trang câu hỏi này →
ATo provide a standard way for systems to communicate over the network.
BTo store large amounts of data in a database.
CTo create real-time interactive applications.
DTo compile and execute server-side code.
Lời giải
Đáp án đúng: "To provide a standard way for systems to communicate over the network.". REST là kiểu kiến trúc cho API qua HTTP: tài nguyên được định danh bằng URL, thao tác bằng các phương thức chuẩn GET, POST, PUT, PATCH, DELETE, dữ liệu thường trao đổi dạng JSON và mỗi yêu cầu không phụ thuộc trạng thái phiên lưu trên server (stateless). Nhờ quy ước thống nhất này, ứng dụng React, ứng dụng di động hay một dịch vụ khác đều nói chuyện được với cùng một server. "To store large amounts of data in a database." là việc của hệ quản trị cơ sở dữ liệu; API chỉ là cửa ngõ để truy cập dữ liệu đó. "To create real-time interactive applications." không phải thế mạnh của REST vì mô hình hỏi đáp không chủ động đẩy dữ liệu; ứng dụng thời gian thực thường dùng WebSocket hay Server-Sent Events. "To compile and execute server-side code." là việc của trình biên dịch và môi trường chạy như Node.js.
Mở trang câu hỏi này →