Bạn muốn ứng tuyển vào vị trí Front End? Vậy hãy bỏ túi ngay những câu hỏi phỏng vấn Front End phổ biến nhất được JobsGO tổng hợp và chia sẻ trong bài viết dưới đây nhé!
Xem nhanh nội dung
- 1. Các câu hỏi phỏng vấn Front End phổ biến
- 1.1. Sự khác biệt giữa Display:None và Visibility:Hidden trong CSS là gì?
- 1.2. Doctype trong HTML có vai trò như thế nào??
- 1.3. Mô hình hộp (Box Model) trong CSS có những thành phần gì?
- 1.4. Cách thức hoạt động của Event Delegation trong JavaScript là gì?
- 1.5. Nêu sự khác biệt giữa Var, Let và Const trong JavaScript?
- 1.6. Callback trong JavaScript là gì?
- 1.7. Promises có vai trò gì trong JavaScript?
- 1.8. Virtual DOM trong ReactJS là gì?
- 1.9. Vai trò của Redux trong ReactJS là gì?
- 1.10. Hãy nêu khái niệm API và cách sử dụng Fetch API trong JavaScript?
- 1.11. Trình duyệt hiển thị (render) một trang web như thế nào?
- 1.12. Critical Rendering Path là gì?
- 1.13. Reflow và Repaint khác nhau như thế nào?
- 1.14. Event Loop trong JavaScript là gì?
- 1.15. Call Stack, Web APIs và Task Queue là gì?
- 1.16. Async và defer khác nhau như thế nào?
- 1.17. Lazy loading là gì?
- 1.18. Code splitting là gì?
- 1.19. Tree shaking là gì?
- 1.20. CORS là gì?
- 1.21. Same-Origin Policy là gì?
- 1.22. XSS và CSRF là gì? Cách phòng tránh?
- 1.23. Content Security Policy (CSP) là gì?
- 2. Các câu hỏi phỏng vấn Front End Reactjs
- 2.1. React Hooks bao gồm những lệnh nào?
- 2.2. Hãy nêu vai trò của React Router trong ứng dụng ReactJS?
- 2.3. Higher-Order Components (HOC) trong ReactJS là gì?
- 2.4. Sự khác biệt giữa Props và State trong ReactJS là gì?
- 2.5. Cách thức hoạt động của Lifecycle Methods trong ReactJS như thế nào?
- 2.6. Vai trò của Context trong ReactJS là gì?
- 2.7. Khái niệm Performance Optimization trong ReactJS là gì?
- 2.8. Cách thức hoạt động của Webpack trong ReactJS như thế nào?
- 2.9. CSS-In-JS có vai trò gì trong ReactJS?
- 2.10. Controlled và Uncontrolled component là gì?
- 2.11. Khi nào React component bị re-render?
- 2.12. Key trong React list dùng để làm gì?
- 2.13. Lifting State Up là gì?
- 2.14. React.memo là gì?
- 2.15. useMemo và useCallback khác nhau như thế nào?
- 2.16. Khi nào nên dùng useEffect cleanup?
- 2.17. Custom Hook dùng để giải quyết vấn đề gì?
- 2.18. Code splitting trong React thực hiện như thế nào?
- 2.19. So sánh Redux và Context API
- 3. Câu hỏi phỏng vấn Front End Fresher
- 3.1. Ngôn ngữ HTML có vai trò gì trong lập trình web?
- 3.2. Cấu trúc cơ bản của một trang HTML gồm những thành phần nào?
- 3.3. Hãy kể tên 3 thẻ HTML phổ biến và chức năng chính của từng loại?
- 3.4. Những kiểu dữ liệu cơ bản trong JavaScript là gì?
- 3.5. Trong JavaScript, có những lệnh điều kiện nào?
- 3.6. 2 nguyên tắc cơ bản trong bảo mật web là gì?
- 3.7. Git và Github là gì?
- 3.8. Sử dụng thẻ HTML <Script> để nhúng mã JavaScript vào trang HTML như thế nào?
- 3.9. Sự khác biệt giữa các thẻ HTML <Table>, <Tr> Và <Td> là gì?
- 3.10. Trình duyệt là gì? Vai trò của trình duyệt trong web?
- 3.11. HTML, CSS và JavaScript phối hợp với nhau như thế nào?
- 3.12. DOM là gì?
- 3.13. Inline CSS, Internal CSS và External CSS khác nhau ra sao?
- 3.14. Var, let và const khác nhau như thế nào?
- 3.15. Null và undefined khác nhau thế nào?
- 3.16. == và === khác nhau ra sao?
- 3.17. Git dùng để làm gì?
- 3.18. HTTP và HTTPS khác nhau như thế nào?
- 4. Những câu hỏi phỏng vấn CSS Front End
- 4.1. Có những phương pháp Responsive Web Design phổ biến nào?
- 4.2. Sử dụng Css Animations và Transitions như thế nào?
- 4.3. Preprocessors CSS có những tính năng gì?
- 4.4. Có những loại CSS Selectors nào?
- 4.5. Những ưu điểm khi sử dụng CSS Grid Layout là gì?
- 4.6. Có những loại CSS Positioning nào?
- 4.7. Sự khác nhau giữa Display:Block và Display:Inline trong CSS là gì?
- 4.8. Z-index trong CSS hoạt động như thế nào?
- 4.9. Giải thích về cách thức hoạt động của CSS Variables và Mixins có chức năng gì?
- 4.10. CSS Specificity là gì? Thứ tự ưu tiên ra sao?
- 4.11. Khi nào nên dùng Flexbox, khi nào nên dùng Grid?
- 4.12. Display: none khác opacity: 0 như thế nào?
- 4.13. Position: fixed khác position: sticky thế nào?
- 4.14. Em, rem, px khác nhau ra sao?
- 4.15. Khi nào nên dùng transform thay vì top/left?
- 4.16. Critical CSS là gì?
- 4.17. BEM là gì? Lợi ích khi dùng BEM?
- 5. Các câu hỏi phỏng vấn Front End JavaScript
- 5.1. Các kiểu dữ liệu cơ bản trong JavaScript có ý nghĩa gì?
- 5.2. Hãy giải thích về các hàm (Functions) trong JavaScript?
- 5.3. Nêu cách sử dụng phương thức (Methods) trong JavaScript?
- 5.4. Cấu trúc của đối tượng (Objects) trong JavaScript là gì?
- 5.5. Sự khác biệt giữa == Và === trong JavaScript là gì?
- 5.6. Mảng (Arrays) trong JavaScript là gì?
- 5.7. Lập trình hướng đối tượng (OOP) trong JavaScript là gì?
- 5.8. Sử dụng thư viện JavaScript như thế nào?
- 5.9. Có mấy cách chính để xử lý dữ kiện trong JavaScript?
- 5.10. Scope trong JavaScript là gì?
- 5.11. Hoisting hoạt động như thế nào?
- 5.12. Tham trị và tham chiếu khác nhau ra sao?
- 5.13. Closure là gì? Ví dụ thực tế?
- 5.14. Arrow function khác function thường như thế nào?
- 5.15. This trong JavaScript được xác định ra sao?
- 5.16. Promise.all, Promise.race, Promise.allSettled dùng khi nào?
- 5.17. Debounce và Throttle là gì?
- 5.18. Async/Await xử lý lỗi như thế nào?
- 6. Câu hỏi phỏng vấn HTML
- 6.1. HTML là gì và vai trò của HTML?
- 6.2. Nêu sự khác nhau giữa Id và Class trong HTML?
- 6.3. Hãy giải thích về cấu trúc và cú pháp HTML?
- 6.4. Phân biệt các loại thẻ HTML
- 6.5. Hãy nêu sự khác biệt giữa Doctype HTML 4.01 và HTML5?
- 6.6. Nêu các cách kiểm tra tính hợp lệ của Code HTML?
- 6.7. Microdata là gì và tầm quan trọng của nó?
- 6.8. Sử dụng các thẻ Heading (H1, H2, H3,…) để làm gì?
- 6.9. Để tối ưu hóa hiệu suất hình ảnh trong HTML nên làm gì?
- 6.10. Semantic HTML là gì? Vì sao quan trọng?
- 6.11. SEO On-page là gì?
- 6.12. Những thẻ meta quan trọng cho SEO?
- 6.13. Core Web Vitals là gì?
- 6.14. Thuộc tính alt của thẻ img dùng để làm gì?
- 6.15. Accessibility (a11y) là gì?
- 6.16. ARIA attributes là gì?
- 6.17. Microdata, Schema markup dùng khi nào?
1. Các câu hỏi phỏng vấn Front End phổ biến
1.1. Sự khác biệt giữa Display:None và Visibility:Hidden trong CSS là gì?
Gợi ý trả lời: Sự khác biệt giữa display:none và visibility:hidden trong css là:
- Display:none là loại bỏ hoàn toàn phần tử khỏi bố cục trang, không chiếm không gian và không tương tác với các phần tử khác. Nó giống như việc ẩn phần tử hoàn toàn khỏi người dùng.
- Visibility:hidden là ẩn phần tử nhưng vẫn giữ nguyên vị trí và kích thước trong bố cục trang. Phần tử vẫn chiếm không gian và có thể tương tác với các phần tử khác bằng JavaScript. Ví dụ, bạn có thể sử dụng visibility: hidden để ẩn một phần tử tạm thời mà không làm thay đổi bố cục trang.

Các câu hỏi khi phỏng vấn Frontend
>>> Có thể bạn quan tâm: Lập trình Frontend là gì? Mô tả công việc của nhân viên Frontend
1.2. Doctype trong HTML có vai trò như thế nào??
Gợi ý trả lời: Doctype khai báo phiên bản HTML đang sử dụng cho trình duyệt. Điều này giúp trình duyệt hiển thị trang web chính xác và hiểu được cấu trúc của tài liệu HTML.
1.3. Mô hình hộp (Box Model) trong CSS có những thành phần gì?
Gợi ý trả lời: Mô hình hộp bao gồm các thành phần: content, padding, border, margin. Trong đó:
- Content: Nội dung văn bản hoặc HTML bên trong phần tử.
- Padding: Khoảng trống giữa nội dung và viền.
- Border: Viền bao quanh phần tử.
- Margin: Khoảng trống giữa phần tử và các phần tử khác.
1.4. Cách thức hoạt động của Event Delegation trong JavaScript là gì?
Gợi ý trả lời: Event delegation được dùng gán sự kiện cho một phần tử cha thay vì từng phần tử con. Điều này giúp tối ưu hóa hiệu suất JavaScript, đặc biệt khi có nhiều phần tử con cần xử lý sự kiện tương tự. Ví dụ, có thể sử dụng event delegation để gán sự kiện click cho một danh sách, thay vì gán sự kiện click cho từng item trong danh sách.
1.5. Nêu sự khác biệt giữa Var, Let và Const trong JavaScript?
Gợi ý trả lời: Sự khác biệt giữa var, let và const trong JavaScript là:
- Var: có phạm vi toàn cục (global scope) và phạm vi khối chức năng (function scope). Biến được khai báo bằng var có thể truy cập được từ bất kỳ đâu trong chương trình.
- Let: có phạm vi khối (block scope). Biến được khai báo bằng let chỉ truy cập được trong khối lệnh nơi nó được khai báo.
- Const: là biến không thay đổi giá trị (constant). Biến được khai báo bằng const phải được khởi tạo giá trị ban đầu và không thể thay đổi giá trị sau khi khai báo.
1.6. Callback trong JavaScript là gì?
Gợi ý trả lời: Callback là hàm được truyền vào hàm khác như một đối số. Hàm này được gọi sau khi hàm đầu tiên hoàn thành. Callback giúp thực hiện các tác vụ tuần tự hoặc xử lý kết quả trả về từ hàm đầu tiên.
1.7. Promises có vai trò gì trong JavaScript?
Gợi ý trả lời: Promises giúp xử lý các tác vụ bất đồng bộ (asynchronous) trong JavaScript một cách hiệu quả. Bên cạnh đó Promises cũng cung cấp các phương thức để theo dõi trạng thái (pending, fulfilled, rejected) và thực thi các hành động tương ứng. Ví dụ, có thể sử dụng promises để tải dữ liệu từ server hoặc thực hiện các thao tác I/O bất đồng bộ.
1.8. Virtual DOM trong ReactJS là gì?
Gợi ý trả lời: Virtual DOM là một mô hình biểu diễn cây DOM (Document Object Model) ảo. ReactJS sử dụng virtual DOM để tối ưu hóa hiệu suất khi cập nhật giao diện người dùng. Khi có thay đổi trong dữ liệu, ReactJS sẽ so sánh virtual DOM cũ với virtual DOM mới và chỉ cập nhật các phần tử DOM thực sự thay đổi trên giao diện. Điều này giúp giảm thiểu số lần cập nhật DOM, tăng hiệu suất rendering và mang lại trải nghiệm người dùng mượt mà hơn.
1.9. Vai trò của Redux trong ReactJS là gì?
Gợi ý trả lời: Redux là một thư viện quản lý trạng thái (state management) cho ứng dụng ReactJS. Redux giúp lưu trữ trạng thái tập trung, đồng bộ hóa trạng thái giữa các component và theo dõi thay đổi trạng thái một cách hiệu quả. Sử dụng Redux giúp xây dựng các ứng dụng ReactJS phức tạp và dễ dàng quản lý hơn.

Câu hỏi phỏng vấn về vai trò của Redux trong ReactJS
1.10. Hãy nêu khái niệm API và cách sử dụng Fetch API trong JavaScript?
Gợi ý trả lời: API (Application Programming Interface) là giao diện lập trình ứng dụng, cho phép các phần mềm khác nhau tương tác và trao đổi dữ liệu với nhau. fetch API là một phương thức JavaScript được sử dụng để truy cập và lấy dữ liệu từ các nguồn bên ngoài như server, REST API.
1.11. Trình duyệt hiển thị (render) một trang web như thế nào?
Gợi ý trả lời: Khi người dùng truy cập một trang web, trình duyệt sẽ tải file HTML và phân tích cú pháp để tạo ra DOM. Đồng thời, trình duyệt tải và phân tích các file CSS để tạo CSSOM. Sau đó, DOM và CSSOM được kết hợp thành Render Tree, từ đó trình duyệt tính toán bố cục (layout) và vẽ giao diện lên màn hình người dùng.
1.12. Critical Rendering Path là gì?
Gợi ý trả lời: Critical Rendering Path là chuỗi các bước mà trình duyệt phải thực hiện để hiển thị nội dung đầu tiên của trang web. Việc tối ưu Critical Rendering Path giúp trang web hiển thị nhanh hơn, cải thiện trải nghiệm người dùng và hiệu suất tổng thể.
1.13. Reflow và Repaint khác nhau như thế nào?
Gợi ý trả lời: Reflow là quá trình trình duyệt tính toán lại vị trí và kích thước của các phần tử khi layout thay đổi. Repaint là quá trình vẽ lại giao diện khi chỉ thay đổi về màu sắc hoặc hiển thị. Trong đó, Reflow tiêu tốn nhiều tài nguyên hơn Repaint và nên được hạn chế.
1.14. Event Loop trong JavaScript là gì?
Gợi ý trả lời: Event Loop là cơ chế giúp JavaScript xử lý các tác vụ bất đồng bộ. Nó liên tục kiểm tra Call Stack và Task Queue để đưa các callback vào Call Stack khi JavaScript rảnh, từ đó đảm bảo chương trình không bị chặn.
1.15. Call Stack, Web APIs và Task Queue là gì?
Gợi ý trả lời: Call Stack là nơi JavaScript thực thi các đoạn mã đồng bộ. Web APIs do trình duyệt cung cấp để xử lý các tác vụ bất đồng bộ như setTimeout hoặc fetch. Task Queue là nơi chứa các callback chờ được đưa vào Call Stack khi stack trống.
1.16. Async và defer khác nhau như thế nào?
Gợi ý trả lời: Thuộc tính async cho phép script tải song song và thực thi ngay khi tải xong, có thể gây sai thứ tự thực thi. Thuộc tính defer cũng tải song song nhưng chỉ thực thi sau khi HTML được phân tích xong và giữ đúng thứ tự script.
1.17. Lazy loading là gì?
Gợi ý trả lời: Lazy loading là kỹ thuật chỉ tải tài nguyên khi thật sự cần thiết, chẳng hạn như hình ảnh hoặc component chỉ được tải khi người dùng cuộn đến. Kỹ thuật này giúp giảm thời gian tải ban đầu của trang web.
1.18. Code splitting là gì?
Gợi ý trả lời: Code splitting là kỹ thuật chia nhỏ mã nguồn thành nhiều phần và chỉ tải phần cần thiết khi sử dụng. Điều này giúp giảm kích thước bundle ban đầu và cải thiện hiệu suất tải trang.
1.19. Tree shaking là gì?
Gợi ý trả lời: Tree shaking là kỹ thuật loại bỏ các đoạn mã không được sử dụng trong quá trình build, thường áp dụng với ES Modules. Mục tiêu của tree shaking là giảm dung lượng file JavaScript.
1.20. CORS là gì?
Gợi ý trả lời: CORS (Cross-Origin Resource Sharing) là cơ chế bảo mật cho phép hoặc chặn các request từ domain khác. Máy chủ sẽ quyết định cho phép truy cập thông qua các HTTP header.
1.21. Same-Origin Policy là gì?
Gợi ý trả lời: Same-Origin Policy là chính sách bảo mật của trình duyệt, chỉ cho phép truy cập tài nguyên khi các request có cùng protocol, domain và port.
1.22. XSS và CSRF là gì? Cách phòng tránh?
Gợi ý trả lời: XSS là lỗ hổng cho phép chèn mã JavaScript độc hại vào website, có thể phòng tránh bằng cách escape dữ liệu và sử dụng CSP. CSRF là hình thức giả mạo request người dùng, có thể phòng tránh bằng CSRF token và SameSite cookie.
1.23. Content Security Policy (CSP) là gì?
Gợi ý trả lời: Content Security Policy là một lớp bảo mật cho phép kiểm soát nguồn tài nguyên được tải trên trang web, từ đó giúp hạn chế các cuộc tấn công XSS.

Câu hỏi phỏng vấn về Content Security Policy
2. Các câu hỏi phỏng vấn Front End Reactjs
Dưới đây là những câu hỏi ReactJS thường gặp giúp bạn đánh giá mức độ hiểu và kinh nghiệm làm việc thực tế với React.
2.1. React Hooks bao gồm những lệnh nào?
Gợi ý trả lời: React Hooks là các hàm đặc biệt cho phép bạn “hook” (kết nối) trạng thái và các tính năng vòng đời của React vào các component function component mà không cần sử dụng class component.
Một số React Hooks phổ biến bao gồm:
- UseState: Quản lý trạng thái cục bộ của component.
- UseEffect: Thực hiện các tác vụ phụ thuộc vào vòng đời của component (ví dụ: fetch dữ liệu, đăng ký/hủy đăng ký sự kiện).
- UseContext: Chia sẻ dữ liệu giữa các component không có mối quan hệ cha – con trực tiếp.
- UseReducer: Quản lý trạng thái phức tạp hơn với logic reducer.
- UseRef: Tham chiếu đến các phần tử DOM hoặc lưu trữ giá trị không thay đổi.
2.2. Hãy nêu vai trò của React Router trong ứng dụng ReactJS?
Gợi ý trả lời: React Router là thư viện quản lý routing (định tuyến) cho ứng dụng ReactJS. React Router giúp tạo ra các URL, điều hướng giữa các trang và quản lý trạng thái routing trong ứng dụng. Một số tính năng chính của React Router bao gồm:
- Tạo URL động và tĩnh.
- Xử lý nested routing (định tuyến lồng nhau).
- Cung cấp các component routing như Link, Switch, Route.
- Hỗ trợ lazy loading .
2.3. Higher-Order Components (HOC) trong ReactJS là gì?
Gợi ý trả lời: Higher-order components (HOC) là một kỹ thuật tái sử dụng code trong ReactJS bằng cách bọc một component trong một component khác để bổ sung chức năng hoặc thay đổi hành vi. HOC giúp bạn tạo ra các component linh hoạt và dễ dàng chia sẻ. Một số ví dụ phổ biến về HOC bao gồm:
- WithRouter: Truyền props routing vào component.
- WithAuthentication: Kiểm tra xác thực người dùng trước khi hiển thị component.
- WithData: Fetch dữ liệu và truyền vào component.
>>> Có thể bạn quan tâm: Web Developers – Xu hướng việc làm thời công nghệ 4.0
2.4. Sự khác biệt giữa Props và State trong ReactJS là gì?
Gợi ý trả lời: Sự khác biệt giữa props và state trong ReactJS là:
- Props là dữ liệu được truyền từ component cha sang component con, chỉ đọc (read-only) và không thể thay đổi trực tiếp.
- State là trạng thái nội bộ của component, có thể thay đổi bằng cách sử dụng setState và ảnh hưởng đến việc render giao diện.
2.5. Cách thức hoạt động của Lifecycle Methods trong ReactJS như thế nào?
Gợi ý trả lời: Lifecycle methods là các phương thức đặc biệt được gọi trong các giai đoạn khác nhau của vòng đời component ReactJS. Một số lifecycle methods phổ biến bao gồm:
- ComponentDidMount: Được gọi sau khi component được render lần đầu tiên.
- ComponentWillUnmount: Được gọi trước khi component bị hủy.
- ShouldComponentUpdate: Xác định xem component có cần được render lại hay không khi props hoặc state thay đổi.
- GetDerivedStateFromProps: Cập nhật state của component dựa trên props mới.
- GetSnapshotBeforeUpdate: Lưu trữ snapshot của DOM trước khi component được update.
2.6. Vai trò của Context trong ReactJS là gì?
Gợi ý trả lời: Context là một cách để chia sẻ dữ liệu giữa các component ReactJS không có mối quan hệ cha – con trực tiếp. Context giúp bạn tránh phải truyền props qua nhiều tầng component. Ví dụ, có thể sử dụng context để chia sẻ theme, ngôn ngữ hoặc thông tin đăng nhập người dùng trong toàn bộ ứng dụng.
2.7. Khái niệm Performance Optimization trong ReactJS là gì?
Gợi ý trả lời: Performance optimization là việc tối ưu hóa hiệu suất cho ứng dụng ReactJS để tăng tốc độ tải trang, giảm thiểu thời gian render và mang lại trải nghiệm người dùng mượt mà. Một số kỹ thuật performance optimization phổ biến bao gồm:
- Sử dụng React Hooks hiệu quả.
- Tối ưu hóa component.
- Sử dụng memoization.
- Sử dụng lazy loading.
- Tối ưu hóa bundle size.
2.8. Cách thức hoạt động của Webpack trong ReactJS như thế nào?
Gợi ý trả lời: Webpack là một bundler (công cụ đóng gói) JavaScript giúp bạn kết hợp nhiều module, file JavaScript và các tài nguyên khác thành một file duy nhất để tối ưu hóa hiệu suất và triển khai ứng dụng ReactJS. Webpack cung cấp nhiều tính năng như:
- Pre-processing: Xử lý các file JavaScript trước khi bundling, ví dụ như compiling TypeScript sang JavaScript, minifying code.
- Code splitting: Tách code thành các bundle riêng biệt để tối ưu hóa việc tải trang.
- Lazy loading: Tải các component chỉ khi cần thiết để giảm thiểu bundle size.
- Tree shaking: Loại bỏ các phần code không sử dụng khỏi bundle.
- Source maps: Tạo source maps để dễ dàng debug code.
2.9. CSS-In-JS có vai trò gì trong ReactJS?
Gợi ý trả lời: CSS-in-JS là phương pháp quản lý CSS trực tiếp trong các component ReactJS bằng cách sử dụng thư viện như styled-components, emotion, css-modules, v.v. CSS-in-JS giúp tạo ra CSS linh hoạt, dễ quản lý và đảm bảo tính nhất quán trong ứng dụng.
2.10. Controlled và Uncontrolled component là gì?
Gợi ý trả lời: Controlled component là component mà dữ liệu form được quản lý thông qua state của React. Ngược lại, Uncontrolled component sử dụng DOM trực tiếp để lấy dữ liệu thông qua ref.

Câu hỏi về Controlled và Uncontrolled component
2.11. Khi nào React component bị re-render?
Gợi ý trả lời: React component sẽ bị re-render khi state thay đổi, props thay đổi hoặc khi component cha bị re-render.
2.12. Key trong React list dùng để làm gì?
Gợi ý trả lời: Key giúp React xác định chính xác phần tử nào đã thay đổi trong danh sách, từ đó tối ưu quá trình render và tránh lỗi không mong muốn.
2.13. Lifting State Up là gì?
Gợi ý trả lời: Lifting State Up là kỹ thuật đưa state lên component cha để chia sẻ dữ liệu cho nhiều component con cùng sử dụng.
2.14. React.memo là gì?
Gợi ý trả lời: React.memo là Higher-Order Component giúp ghi nhớ component và ngăn re-render không cần thiết khi props không thay đổi.
2.15. useMemo và useCallback khác nhau như thế nào?
Gợi ý trả lời: useMemo dùng để ghi nhớ giá trị được tính toán, trong khi useCallback dùng để ghi nhớ một function nhằm tránh việc tạo lại function khi component re-render.
2.16. Khi nào nên dùng useEffect cleanup?
Gợi ý trả lời: useEffect cleanup được sử dụng khi cần dọn dẹp tài nguyên như event listener, timer hoặc subscription để tránh memory leak.
2.17. Custom Hook dùng để giải quyết vấn đề gì?
Gợi ý trả lời: Custom Hook giúp tái sử dụng logic giữa nhiều component, giúp code gọn gàng và dễ bảo trì hơn.
2.18. Code splitting trong React thực hiện như thế nào?
Gợi ý trả lời: Trong React, code splitting thường được thực hiện bằng React.lazy kết hợp với Suspense để tải component theo nhu cầu.
2.19. So sánh Redux và Context API
Gợi ý trả lời: Context API phù hợp với việc chia sẻ state đơn giản, trong khi Redux phù hợp với ứng dụng có state lớn, phức tạp và cần quản lý chặt chẽ.

Các câu hỏi phỏng vấn Front End Reactjs
3. Câu hỏi phỏng vấn Front End Fresher
Đối với vị trí Front End Fresher, nhà tuyển dụng thường tập trung đánh giá kiến thức nền tảng về HTML, CSS, JavaScript và mức độ hiểu bản chất của lập trình web. Những câu hỏi dưới đây giúp kiểm tra khả năng nắm vững kiến thức cơ bản, tư duy logic và sự sẵn sàng học hỏi của ứng viên mới vào nghề.
3.1. Ngôn ngữ HTML có vai trò gì trong lập trình web?
Gợi ý trả lời: HTML (HyperText Markup Language) là ngôn ngữ đánh dấu được sử dụng để tạo cấu trúc và nội dung cho trang web. Nó đóng vai trò nền tảng cho mọi trang web, xác định các phần tử khác nhau của trang như tiêu đề, đoạn văn, hình ảnh, liên kết, v.v. HTML cung cấp cho trình duyệt web thông tin cần thiết để hiển thị nội dung trang web một cách chính xác và dễ hiểu.
3.2. Cấu trúc cơ bản của một trang HTML gồm những thành phần nào?
Gợi ý trả lời: Cấu trúc cơ bản của một trang HTML bao gồm:
- <!DOCTYPE html>: Khai báo loại tài liệu là HTML5.
- <html>: Thẻ gốc bao gồm toàn bộ nội dung của trang web.
- <head>: Chứa thông tin meta về trang web như tiêu đề, charset, liên kết đến CSS, v.v.
- <body>: Chứa nội dung chính của trang web mà người dùng nhìn thấy.
3.3. Hãy kể tên 3 thẻ HTML phổ biến và chức năng chính của từng loại?
Gợi ý trả lời: 3 thẻ HTML phổ biến là thẻ <1> đến <6>, thẻ <p>, thẻ <img>. Trong đó:
- <h1> đến <h6>: Tạo tiêu đề cho các phần khác nhau trong trang web, với <h1> là tiêu đề lớn nhất và <h6> là tiêu đề nhỏ nhất.
- <p>: Tạo đoạn văn bản.
- <img>: Hiển thị hình ảnh trên trang web.
3.4. Những kiểu dữ liệu cơ bản trong JavaScript là gì?
Gợi ý trả lời: Có 3 kiểu dữ liệu cơ bản trong JavaScript là:
- Number: Lưu trữ các giá trị số.
- String: Lưu trữ các chuỗi ký tự.
- Boolean: Lưu trữ các giá trị true hoặc false.
3.5. Trong JavaScript, có những lệnh điều kiện nào?
Gợi ý trả lời: Trong JavaScript, có 3 loại lệnh điều kiện chính được sử dụng để kiểm tra điều kiện và thực thi mã dựa trên kết quả là: <if>, <else if > và <switch>.
3.6. 2 nguyên tắc cơ bản trong bảo mật web là gì?
Gợi ý trả lời: 2 nguyên tắc cơ bản trong bảo mật web là:
- Sử dụng HTTPS: HTTPS mã hóa dữ liệu truyền tải giữa máy chủ và trình duyệt, giúp bảo vệ thông tin khỏi bị đánh cắp hoặc thay đổi.
- Thực thi xác thực và ủy quyền người dùng: Yêu cầu người dùng đăng nhập và cung cấp thông tin tài khoản để truy cập vào các khu vực nhạy cảm của trang web.
3.7. Git và Github là gì?
Gợi ý trả lời:
- Git: Hệ thống quản lý phiên bản mã nguồn, giúp theo dõi các thay đổi trong mã code, cộng tác với người khác và quay lại các phiên bản trước.
- GitHub: Nền tảng lưu trữ kho mã Git trực tuyến, cho phép chia sẻ mã code, cộng tác với người khác và theo dõi dự án.

Câu hỏi phỏng vấn về Git và Github
3.8. Sử dụng thẻ HTML <Script> để nhúng mã JavaScript vào trang HTML như thế nào?
Gợi ý trả lời: Thẻ HTML <script> được sử dụng để nhúng mã JavaScript vào trang HTML. Mã JavaScript được đặt trong nội dung của thẻ <script>. Khi trình duyệt web gặp thẻ <script>, nó sẽ thực thi mã JavaScript bên trong thẻ.
3.9. Sự khác biệt giữa các thẻ HTML <Table>, <Tr> Và <Td> là gì?
Gợi ý trả lời: Sự khác biệt giữa các thẻ <table>, <tr> Và <td> là:
- Thẻ <table>: Dùng để tạo bảng trong trang web và có thể chứa các thẻ <tr> và <td>.
- Thẻ <tr>: Dùng để tạo một hàng trong bảng và có thể chứa các thẻ <td>.
- Thẻ <td>: Dùng để tạo một ô trong bảng và có thể chứa văn bản, hình ảnh, hoặc các phần tử HTML khác.
3.10. Trình duyệt là gì? Vai trò của trình duyệt trong web?
Gợi ý trả lời: Trình duyệt là phần mềm giúp người dùng truy cập, hiển thị và tương tác với các trang web trên Internet.
3.11. HTML, CSS và JavaScript phối hợp với nhau như thế nào?
Gợi ý trả lời: HTML xây dựng cấu trúc nội dung, CSS định dạng giao diện và JavaScript xử lý logic cũng như tương tác người dùng.
3.12. DOM là gì?
Gợi ý trả lời: DOM là mô hình dạng cây đại diện cho cấu trúc HTML, cho phép JavaScript thao tác và thay đổi nội dung trang web.
3.13. Inline CSS, Internal CSS và External CSS khác nhau ra sao?
Gợi ý trả lời: Inline CSS được viết trực tiếp trong thẻ HTML, Internal CSS được viết trong thẻ <style>, còn External CSS được viết trong file riêng và liên kết vào HTML.
3.14. Var, let và const khác nhau như thế nào?
Gợi ý trả lời: Var có phạm vi function, trong khi let và const có phạm vi block. const không cho phép gán lại giá trị.
3.15. Null và undefined khác nhau thế nào?
Gợi ý trả lời: Undefined biểu thị biến chưa được gán giá trị, còn null biểu thị giá trị rỗng được gán một cách chủ động.
3.16. == và === khác nhau ra sao?
Gợi ý trả lời: Toán tử == so sánh giá trị, trong khi === so sánh cả giá trị và kiểu dữ liệu.
3.17. Git dùng để làm gì?
Gợi ý trả lời: Git là công cụ quản lý phiên bản giúp theo dõi lịch sử thay đổi mã nguồn và hỗ trợ làm việc nhóm.
3.18. HTTP và HTTPS khác nhau như thế nào?
Gợi ý trả lời: HTTPS là phiên bản bảo mật của HTTP, có mã hóa dữ liệu bằng SSL/TLS để bảo vệ thông tin người dùng.

Câu hỏi phỏng vấn intern front end
4. Những câu hỏi phỏng vấn CSS Front End
Trong phỏng vấn Front End, CSS không chỉ dừng lại ở việc “viết cho đúng” mà còn đánh giá khả năng xây dựng giao diện linh hoạt, dễ bảo trì và tối ưu trải nghiệm người dùng. Bạn hãy tham khảo các câu hỏi CSS Front End dưới đây:
4.1. Có những phương pháp Responsive Web Design phổ biến nào?
Gợi ý trả lời: Responsive web design là kỹ thuật thiết kế trang web để hiển thị tốt trên mọi thiết bị, từ máy tính bàn đến điện thoại thông minh. Một số phương pháp responsive web design phổ biến bao gồm:
- Fluid layouts: Sử dụng tỷ lệ phần trăm thay cho giá trị pixel để định dạng kích thước và vị trí của các phần tử.
- Media queries: Thay đổi bố cục trang web dựa trên kích thước màn hình của thiết bị.
- Flexbox: Hệ thống bố cục linh hoạt cho phép bạn sắp xếp các phần tử theo nhiều cách khác nhau.
- Grid layout: Hệ thống bố cục dạng lưới giúp bạn tạo ra các bố cục có cấu trúc và tổ chức.
4.2. Sử dụng Css Animations và Transitions như thế nào?
Gợi ý trả lời: CSS animations và transitions cho phép bạn tạo ra các hiệu ứng động cho các phần tử HTML.
- Animations: Thay đổi thuộc tính CSS của một phần tử theo thời gian, tạo ra chuyển động mượt mà.
- Transitions: Thay đổi thuộc tính CSS của một phần tử một cách mượt mà khi người dùng tương tác với nó, như khi di chuột qua hoặc nhấp chuột.

Câu hỏi về sử dụng Css Animations và Transitions
4.3. Preprocessors CSS có những tính năng gì?
Gợi ý trả lời: Preprocessors CSS là các công cụ giúp viết mã CSS dễ dàng và hiệu quả hơn. Preprocessors CSS cung cấp các tính năng như:
- Biến: Sử dụng các biến để lưu trữ giá trị và sử dụng lại trong mã CSS.
- Mixin: Tạo các khối mã CSS có thể tái sử dụng được.
- Nesting: Viết mã CSS theo dạng thụt lề để dễ đọc và tổ chức hơn.
- Functions: Tạo các hàm để thực hiện các thao tác CSS phức tạp.
4.4. Có những loại CSS Selectors nào?
Gợi ý trả lời: CSS selectors được sử dụng để chọn các phần tử HTML mà bạn muốn định dạng bằng CSS. Có nhiều loại CSS selectors khác nhau, bao gồm:
- Element selectors: Chọn các phần tử dựa trên thẻ HTML của chúng.
- Id selectors: Chọn các phần tử dựa trên thuộc tính id của chúng.
- Class selectors: Chọn các phần tử dựa trên thuộc tính class của chúng.
- Attribute selectors: Chọn các phần tử dựa trên các thuộc tính HTML của chúng.
- Descendant selectors: Chọn các phần tử con của một phần tử khác.
- Sibling selectors: Chọn các phần tử anh em của một phần tử khác.
4.5. Những ưu điểm khi sử dụng CSS Grid Layout là gì?
Gợi ý trả lời: CSS Grid Layout là một hệ thống bố cục linh hoạt cho phép bạn tạo ra các bố cục phức tạp một cách dễ dàng. Một số ưu điểm của việc sử dụng CSS Grid Layout bao gồm:
- Dễ sử dụng: Grid Layout dễ học và sử dụng hơn các hệ thống bố cục khác như float hoặc tables.
- Linh hoạt: Grid Layout cho phép bạn tạo ra nhiều loại bố cục khác nhau, từ đơn giản đến phức tạp.
- Có khả năng đáp ứng: Grid Layout tự động điều chỉnh bố cục của nó để phù hợp với kích thước màn hình khác nhau.
- Hỗ trợ tốt: Grid Layout được hỗ trợ tốt bởi các trình duyệt web hiện đại.
4.6. Có những loại CSS Positioning nào?
Gợi ý trả lời: CSS positioning cho phép bạn định vị các phần tử HTML một cách chính xác trên trang web. Có bốn loại CSS positioning chính:
- Static: Vị trí mặc định của các phần tử HTML.
- Relative: Định vị phần tử so với vị trí ban đầu của nó.
- Absolute: Định vị phần tử so với viewport (cửa sổ trình duyệt).
- Fixed: Định vị phần tử so với viewport, nhưng nó sẽ giữ nguyên vị trí khi người dùng cuộn trang.
4.7. Sự khác nhau giữa Display:Block và Display:Inline trong CSS là gì?
Gợi ý trả lời: Sự khác nhau giữa display:block và display:inline trong CSS là:
- Display:block: Khi một phần tử có display:block, nó sẽ bắt đầu một dòng mới và chiếm toàn bộ chiều rộng có sẵn của bố cục cha. Các phần tử lân cận sẽ được xếp chồng lên trên nó.
- Display:inline: Khi một phần tử có display: inline, nó sẽ chiếm không gian tối thiểu cần thiết để hiển thị nội dung của nó. Các phần tử lân cận sẽ được xếp cạnh nhau trên cùng một dòng.
4.8. Z-index trong CSS hoạt động như thế nào?
Gợi ý trả lời: Thuộc tính z-index được sử dụng để xác định thứ tự xếp chồng của các phần tử HTML. Phần tử có giá trị z-index cao hơn sẽ hiển thị ở trên các phần tử có giá trị z-index thấp hơn. z-index hữu ích khi bạn có nhiều phần tử chồng lên nhau và bạn muốn kiểm soát phần tử nào hiển thị ở trên cùng.
4.9. Giải thích về cách thức hoạt động của CSS Variables và Mixins có chức năng gì?
Gợi ý trả lời: CSS variables cho phép lưu trữ giá trị và sử dụng lại giá trị đó trong mã CSS. Ngoài ra, CSS variables được sử dụng để viết mã CSS dễ đọc, dễ bảo trì và dễ quản lý hơn.
4.10. CSS Specificity là gì? Thứ tự ưu tiên ra sao?
Gợi ý trả lời: CSS Specificity là cơ chế giúp trình duyệt xác định quy tắc CSS nào sẽ được áp dụng khi có nhiều quy tắc cùng tác động lên một phần tử. Độ ưu tiên được tính theo thứ tự: inline style > ID selector > class/attribute/pseudo-class > tag selector. Hiểu rõ Specificity giúp tránh việc lạm dụng !important.
4.11. Khi nào nên dùng Flexbox, khi nào nên dùng Grid?
Gợi ý trả lời: Flexbox phù hợp để xây dựng layout theo một chiều (row hoặc column), đặc biệt hiệu quả với các thành phần UI nhỏ như navbar, card, button group. Trong khi đó, CSS Grid thích hợp cho layout hai chiều, giúp kiểm soát hàng và cột tốt hơn khi xây dựng bố cục tổng thể của trang web.
4.12. Display: none khác opacity: 0 như thế nào?
Gợi ý trả lời: Display: none sẽ loại bỏ hoàn toàn phần tử khỏi DOM flow, khiến phần tử không chiếm không gian và không thể tương tác. Ngược lại, opacity: 0 chỉ làm phần tử trong suốt nhưng vẫn tồn tại trong layout và vẫn có thể nhận sự kiện người dùng.
4.13. Position: fixed khác position: sticky thế nào?
Gợi ý trả lời: Position: fixed giúp phần tử cố định theo viewport và không bị ảnh hưởng bởi thao tác cuộn trang. Trong khi đó, position: sticky hoạt động như relative cho đến khi đạt một ngưỡng scroll nhất định, sau đó mới “dính” lại, rất phù hợp cho header hoặc sidebar.
4.14. Em, rem, px khác nhau ra sao?
Gợi ý trả lời: px là đơn vị tuyệt đối, luôn có kích thước cố định và không phụ thuộc vào ngữ cảnh. em phụ thuộc vào font-size của phần tử cha, trong khi rem phụ thuộc vào font-size của thẻ html, giúp quản lý kích thước toàn cục và hỗ trợ responsive tốt hơn.
4.15. Khi nào nên dùng transform thay vì top/left?
Gợi ý trả lời: Nên sử dụng transform khi cần tạo animation hoặc di chuyển phần tử vì nó không gây reflow layout và được GPU hỗ trợ tốt hơn. Ngược lại, top/left thường gây reflow và repaint, dẫn đến giảm hiệu năng, đặc biệt trong các animation phức tạp.
4.16. Critical CSS là gì?
Gợi ý trả lời: Critical CSS là phần CSS tối thiểu cần thiết để render nội dung hiển thị đầu tiên (above-the-fold). Việc tách và inline Critical CSS giúp trình duyệt hiển thị trang nhanh hơn, từ đó cải thiện trải nghiệm người dùng và các chỉ số hiệu năng như Core Web Vitals.
4.17. BEM là gì? Lợi ích khi dùng BEM?
Gợi ý trả lời: BEM (Block – Element – Modifier) là một phương pháp đặt tên class CSS giúp code rõ ràng và dễ bảo trì. BEM giúp giảm xung đột CSS, tăng khả năng tái sử dụng component và đặc biệt phù hợp khi làm việc trong team hoặc dự án lớn.

Những câu hỏi phỏng vấn CSS Front End
5. Các câu hỏi phỏng vấn Front End JavaScript
JavaScript là nền tảng cốt lõi của Front End, vì vậy các câu hỏi phỏng vấn JavaScript thường tập trung kiểm tra mức độ hiểu bản chất ngôn ngữ và khả năng vận dụng vào thực tế. Tham khảo ngay danh sách câu hỏi dưới đây.
5.1. Các kiểu dữ liệu cơ bản trong JavaScript có ý nghĩa gì?
Gợi ý trả lời: Ý nghĩa của những kiểu dữ liệu trong JavaScript là:
- Số (Number): Biểu diễn các giá trị số, bao gồm cả số nguyên và số thực.
- Chuỗi (String): Biểu diễn các chuỗi ký tự.
- Boolean (Boolean): Biểu diễn giá trị true hoặc false.
- Null (Null): Biểu diễn giá trị null.
- Undefined (Undefined): Biểu diễn giá trị undefined.
- Object (Object): Biểu diễn các tập hợp các cặp khóa-giá trị.
>>> Có thể bạn quan tâm: Câu hỏi phỏng vấn Java kèm gợi ý trả lời
5.2. Hãy giải thích về các hàm (Functions) trong JavaScript?
Gợi ý trả lời: Hàm (function) là một khối mã được sử dụng để thực hiện một nhiệm vụ cụ thể. Hàm có thể nhận tham số (parameters) và trả về giá trị (return value).
5.3. Nêu cách sử dụng phương thức (Methods) trong JavaScript?
Gợi ý trả lời: Phương thức là một hàm thuộc về một đối tượng (object). Phương thức được gọi bằng cách sử dụng toán tử chấm (.) sau tên đối tượng, tiếp theo là tên phương thức và ngoặc đơn chứa tham số (nếu có).
5.4. Cấu trúc của đối tượng (Objects) trong JavaScript là gì?
Gợi ý trả lời: Một đối tượng được biểu diễn bằng cặp ngoặc nhọn, bên trong chứa các thuộc tính được phân cách bởi dấu phẩy. Mỗi thuộc tính bao gồm một khóa (key) – thường là chuỗi – và một giá trị (value) – có thể là bất kỳ kiểu dữ liệu nào trong JavaScript.
5.5. Sự khác biệt giữa == Và === trong JavaScript là gì?
Gợi ý trả lời: Sự khác biệt giữa == và === trong JavaScript là:
- == (Equality operator): So sánh giá trị của hai biểu thức, nhưng không so sánh kiểu dữ liệu của chúng.
- === (Strict equality operator): So sánh cả giá trị và kiểu dữ liệu của hai biểu thức.
5.6. Mảng (Arrays) trong JavaScript là gì?
Gợi ý trả lời: Mảng (array) là một kiểu dữ liệu cơ bản trong JavaScript dùng để lưu trữ một tập hợp có thứ tự các giá trị, có thể là bất kỳ kiểu dữ liệu nào trong JavaScript như số, chuỗi, boolean, object, v.v. Mỗi giá trị trong mảng được gọi là một phần tử (element) và có vị trí (index) riêng biệt bắt đầu từ 0.
5.7. Lập trình hướng đối tượng (OOP) trong JavaScript là gì?
Gợi ý trả lời: Lập trình hướng đối tượng (OOP) là một phương pháp lập trình sử dụng các đối tượng và lớp (classes) để tổ chức mã. JavaScript là một ngôn ngữ lập trình hướng đối tượng linh hoạt, cho phép bạn tạo các đối tượng, lớp và sử dụng các khái niệm OOP như kế thừa (inheritance) và đa hình (polymorphism).
5.8. Sử dụng thư viện JavaScript như thế nào?
Gợi ý trả lời: Để sử dụng một thư viện JavaScript, bạn cần thực hiện các bước sau:
- Tải xuống thư viện: Bạn có thể tải xuống thư viện từ trang web chính thức của nó hoặc sử dụng trình quản lý gói như npm hoặc yarn.
- Nạp thư viện vào trang web của bạn: Bạn có thể nạp thư viện vào trang web của bạn bằng cách sử dụng thẻ <script> hoặc sử dụng trình quản lý gói.
- Sử dụng thư viện trong mã JavaScript của bạn: Tham khảo tài liệu của thư viện để tìm hiểu cách sử dụng các tính năng và API của nó
5.9. Có mấy cách chính để xử lý dữ kiện trong JavaScript?
Gợi ý trả lời: Để xử lý sự kiện trong JavaScript người ta thường áp dụng hai cách sau: Event Listeners (Người lắng nghe sự kiện) và Event Handlers (Bộ xử lý sự kiện).
5.10. Scope trong JavaScript là gì?
Gợi ý trả lời: Scope là phạm vi truy cập của biến trong JavaScript, quyết định biến đó có thể được sử dụng ở đâu trong chương trình. JavaScript có ba loại scope chính là global scope, function scope và block scope (với let, const), ảnh hưởng trực tiếp đến cách tổ chức và quản lý code.
5.11. Hoisting hoạt động như thế nào?
Gợi ý trả lời: Hoisting là cơ chế JavaScript đưa phần khai báo biến và hàm lên đầu phạm vi thực thi trước khi code được chạy. Tuy nhiên, chỉ phần khai báo được hoisted, còn giá trị thì không, dẫn đến sự khác biệt trong cách hoạt động giữa var, let, const và function declaration.
5.12. Tham trị và tham chiếu khác nhau ra sao?
Gợi ý trả lời: Tham trị áp dụng cho các kiểu dữ liệu nguyên thủy như number, string, boolean, khi gán sẽ tạo ra một bản sao độc lập. Tham chiếu áp dụng cho object và array, khi gán sẽ trỏ đến cùng một vùng nhớ, nên thay đổi ở một nơi sẽ ảnh hưởng đến nơi khác.
5.13. Closure là gì? Ví dụ thực tế?
Gợi ý trả lời: Closure là khả năng của một hàm ghi nhớ và truy cập biến ở scope bên ngoài ngay cả khi scope đó đã kết thúc. Closure thường được dùng trong các trường hợp như tạo hàm private, debounce/throttle hoặc quản lý state trong JavaScript thuần.

Câu hỏi phỏng vấn về Closure
5.14. Arrow function khác function thường như thế nào?
Gợi ý trả lời: Arrow function có cú pháp ngắn gọn hơn và không có this riêng, mà kế thừa this từ scope bên ngoài. Điều này giúp tránh nhiều lỗi phổ biến khi làm việc với callback, nhưng cũng khiến arrow function không phù hợp cho constructor hoặc object method.
5.15. This trong JavaScript được xác định ra sao?
Gợi ý trả lời: Giá trị của this trong JavaScript phụ thuộc vào ngữ cảnh gọi hàm chứ không phải nơi hàm được khai báo. this có thể trỏ đến object gọi hàm, global object, hoặc undefined (strict mode), và có thể bị thay đổi bằng call, apply, bind.
5.16. Promise.all, Promise.race, Promise.allSettled dùng khi nào?
Gợi ý trả lời: Promise.all dùng khi cần tất cả promise thành công mới tiếp tục xử lý. Promise.race trả về kết quả của promise hoàn thành đầu tiên, thường dùng cho timeout. Promise.allSettled phù hợp khi cần biết trạng thái của tất cả promise, kể cả thành công hay thất bại.
5.17. Debounce và Throttle là gì?
Gợi ý trả lời: Debounce giúp trì hoãn việc thực thi hàm cho đến khi người dùng ngừng thao tác, thường dùng cho search input. Throttle giới hạn số lần thực thi hàm trong một khoảng thời gian nhất định, phù hợp với scroll hoặc resize để tối ưu hiệu năng.
5.18. Async/Await xử lý lỗi như thế nào?
Gợi ý trả lời: Async/Await xử lý lỗi thông qua try…catch, giúp code bất đồng bộ trông giống code đồng bộ và dễ đọc hơn. Khi promise bị reject, lỗi sẽ được bắt trong khối catch, giúp quản lý luồng xử lý lỗi rõ ràng và hiệu quả.

Các câu hỏi phỏng vấn Front End JavaScript
6. Câu hỏi phỏng vấn HTML
Phần câu hỏi dưới đây giúp đánh giá mức độ hiểu bản chất HTML và khả năng xây dựng nội dung web đúng chuẩn, dễ bảo trì.
6.1. HTML là gì và vai trò của HTML?
Gợi ý trả lời: HTML (HyperText Markup Language) là ngôn ngữ đánh dấu được sử dụng để tạo cấu trúc và nội dung cho trang web. HTML là nền tảng cơ bản cho mọi trang web giúp cung cấp các thẻ và thuộc tính để định dạng văn bản, chèn hình ảnh, tạo liên kết,…
6.2. Nêu sự khác nhau giữa Id và Class trong HTML?
Gợi ý trả lời: Sự khác nhau giữa id và class trong HTML là:
- Id là một thuộc tính duy nhất để xác định một phần tử HTML cụ thể, thường được sử dụng để thao tác với các phần tử HTML bằng JavaScript hoặc CSS.
- Class là một thuộc tính có thể được sử dụng để gán một hoặc nhiều lớp cho nhiều phần tử HTML, thường được sử dụng để định dạng nhóm các phần tử HTML có cùng kiểu dáng hoặc hành vi.
6.3. Hãy giải thích về cấu trúc và cú pháp HTML?
Gợi ý trả lời:
- Cấu trúc HTML cơ bản bao gồm:
- DOCTYPE: Khai báo loại tài liệu HTML.
- <html>: Khai báo bắt đầu tài liệu HTML.
- <head>: Chứa thông tin meta về trang web.
- <body>: Chứa nội dung chính của trang web.
- Cú pháp HTML sử dụng các thẻ và thuộc tính để định dạng và cấu trúc nội dung.
- HTML phải tuân theo các quy tắc W3C (World Wide Web Consortium) để đảm bảo tính hợp lệ và tương thích.
6.4. Phân biệt các loại thẻ HTML
Gợi ý trả lời: Thẻ HTML được phân biệt như sau:
- Thẻ block-level: Tạo một khối riêng biệt trên trang web, bắt đầu từ dòng mới và có thể bao gồm các thẻ khác bên trong. Ví dụ: <h1>, <div>, <p>.
- Thẻ inline-level: Chỉ chiếm một phần không gian trên dòng hiện tại và không thể bao gồm các thẻ khác bên trong. Ví dụ: <span>, <strong>, <a>.
- Thẻ self-closing: Không cần thẻ đóng, thường được sử dụng cho các thẻ inline-level. Ví dụ: <img>, <br>, <input>.

Câu hỏi phân biệt các loại thẻ HTML
6.5. Hãy nêu sự khác biệt giữa Doctype HTML 4.01 và HTML5?
Gợi ý trả lời: Sự khác biệt giữa doctype HTML 4.01 và HTML5 là:
- Doctype HTML 4.01 sử dụng cú pháp <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>.
- Doctype HTML5 sử dụng cú pháp đơn giản hơn <!DOCTYPE html>.
HTML5 có nhiều tính năng mới so với HTML 4.01, như: các thẻ semantic, audio/video, canvas, geolocation, v.v.
6.6. Nêu các cách kiểm tra tính hợp lệ của Code HTML?
Gợi ý trả lời: Để kiểm tra tính hợp lệ của code HTML có thể sử dụng một trong các cách sau:
- Sử dụng công cụ validation trực tuyến
- Sử dụng trình duyệt web với tính năng developer tools (kiểm tra lỗi HTML).
- Sử dụng các công cụ kiểm tra linting/formatting code như ESLint, Prettier.
6.7. Microdata là gì và tầm quan trọng của nó?
Gợi ý trả lời: Microdata là một tập hợp các thuộc tính HTML được sử dụng để nhúng dữ liệu có cấu trúc vào trang web. Microdata giúp các công cụ tìm kiếm và các ứng dụng khác hiểu rõ hơn về nội dung trang web, cải thiện SEO và khả năng sử dụng.
6.8. Sử dụng các thẻ Heading (H1, H2, H3,…) để làm gì?
Sử dụng thẻ heading để tạo cấu trúc logic cho nội dung trang web, đồng thời cung cấp cho người dùng và công cụ tìm kiếm thông tin về thứ bậc và tầm quan trọng của các phần nội dung.
6.9. Để tối ưu hóa hiệu suất hình ảnh trong HTML nên làm gì?
Gợi ý trả lời: Để tối ưu hóa hiệu suất hình ảnh trong HTML nên:
- Sử dụng định dạng hình ảnh phù hợp (JPEG, PNG, SVG).
- Chọn kích thước hình ảnh phù hợp với nội dung.
- Sử dụng thuộc tính alt để cung cấp văn bản thay thế cho hình ảnh.
- Sử dụng kỹ thuật lazy loading để tải hình ảnh khi người dùng cuộn xuống trang.
6.10. Semantic HTML là gì? Vì sao quan trọng?
Gợi ý trả lời: Semantic HTML là việc sử dụng các thẻ HTML mang ý nghĩa rõ ràng như header, main, article, section. Việc này giúp trình duyệt, công cụ tìm kiếm và công nghệ hỗ trợ hiểu đúng cấu trúc nội dung, từ đó cải thiện SEO và accessibility.
6.11. SEO On-page là gì?
Gợi ý trả lời: SEO On-page là tập hợp các kỹ thuật tối ưu ngay trên website như nội dung, thẻ meta, heading, internal link và tốc độ tải trang. Việc tối ưu tốt SEO On-page giúp công cụ tìm kiếm dễ crawl, hiểu nội dung và xếp hạng trang cao hơn.
6.12. Những thẻ meta quan trọng cho SEO?
Gợi ý trả lời: Các thẻ meta quan trọng bao gồm meta title, meta description, meta viewport và meta robots. Những thẻ này giúp công cụ tìm kiếm hiểu nội dung trang, đồng thời ảnh hưởng trực tiếp đến tỷ lệ click (CTR) trên kết quả tìm kiếm.
6.13. Core Web Vitals là gì?
Gợi ý trả lời: Core Web Vitals là bộ chỉ số đo trải nghiệm người dùng, bao gồm LCP (tốc độ tải nội dung chính), FID/INP (độ phản hồi) và CLS (độ ổn định layout). Đây là yếu tố quan trọng trong đánh giá hiệu năng và xếp hạng SEO của Google.
6.14. Thuộc tính alt của thẻ img dùng để làm gì?
Gợi ý trả lời: Thuộc tính alt cung cấp mô tả thay thế cho hình ảnh khi ảnh không hiển thị hoặc khi sử dụng trình đọc màn hình. alt giúp cải thiện accessibility cho người khiếm thị và hỗ trợ SEO hình ảnh hiệu quả hơn.
6.15. Accessibility (a11y) là gì?
Gợi ý trả lời: Accessibility là việc thiết kế và phát triển website để mọi người, bao gồm người khuyết tật, đều có thể sử dụng. Việc chú trọng a11y giúp website thân thiện hơn, tuân thủ tiêu chuẩn quốc tế và mở rộng phạm vi người dùng.
6.16. ARIA attributes là gì?
Gợi ý trả lời: ARIA attributes là các thuộc tính giúp bổ sung ngữ nghĩa cho các thành phần HTML khi semantic HTML chưa đủ. ARIA hỗ trợ công nghệ đọc màn hình hiểu rõ vai trò, trạng thái và hành vi của các thành phần UI phức tạp.
6.17. Microdata, Schema markup dùng khi nào?
Gợi ý trả lời: Microdata và Schema markup được dùng để cung cấp dữ liệu có cấu trúc cho công cụ tìm kiếm. Việc sử dụng Schema giúp website hiển thị rich snippet như đánh giá sao, giá sản phẩm, FAQ, từ đó tăng khả năng hiển thị và tỷ lệ click.

Câu hỏi phỏng vấn HTML
Như vậy, bài viết trên của JobsGO đã tổng hợp và gửi đến bạn đọc bộ các câu hỏi phỏng vấn Front End thông dụng nhất dành cho thực tập sinh. Hy vọng nó sẽ là kinh nghiệm giúp các bạn vượt qua vòng phỏng vấn thành công.
Câu hỏi thường gặp
1. Nếu không trả lời được câu hỏi chuyên môn lúc phỏng vấn thì nên làm gì?
Đừng nên im lặng hoặc trả lời bừa. Hãy thành thật chia sẻ những gì bạn biết về vấn đề đó, sau đó trình bày hướng tư duy hoặc cách bạn sẽ tìm kiếm tài liệu để giải quyết. Nhà tuyển dụng đánh giá cao sự trung thực và phương pháp tìm kiếm giải pháp hơn là việc thuộc lòng kiến thức.
2. Nhà tuyển dụng Front End đánh giá ứng viên dựa trên tiêu chí nào?
Nhà tuyển dụng thường đánh giá dựa trên kiến thức nền tảng, khả năng làm việc với dự án thực tế, tư duy logic và thái độ học hỏi. Ngoài ra, kỹ năng giao tiếp và khả năng làm việc nhóm cũng là yếu tố quan trọng.
3. Dự án Front End như thế nào thì được đánh giá cao?
Một dự án Front End được đánh giá cao khi có giao diện rõ ràng, code dễ đọc, có tính ứng dụng thực tế và thể hiện được tư duy tổ chức cấu trúc. Việc giải thích được ý tưởng và cách triển khai dự án cũng là điểm cộng lớn.
4. Phỏng vấn Front End thường có bao nhiêu vòng?
Thông thường, phỏng vấn Front End gồm từ 2–3 vòng, bao gồm vòng lọc CV, phỏng vấn chuyên môn và phỏng vấn trao đổi trực tiếp. Một số công ty có thể bổ sung vòng test hoặc phỏng vấn văn hóa.
5. Phỏng vấn Front End có cần test live code không?
Tùy vào công ty và vị trí, phỏng vấn Front End có thể yêu cầu live code hoặc làm bài test nhỏ. Mục đích chính là đánh giá cách tư duy và giải quyết vấn đề, không chỉ đơn thuần là viết code đúng.
(Theo JobsGO - Nền tảng tìm việc làm, tuyển dụng, tạo CV xin việc)



