HTML là gì? Semantic HTML có ý nghĩa gì?
HTML (HyperText Markup Language) là ngôn ngữ đánh dấu để tạo cấu trúc trang web.
Semantic HTML là sử dụng các thẻ có ý nghĩa mô tả nội dung như
<header>, <nav>, <main>,
<article>, <footer> thay vì chỉ dùng <div>.
Lợi ích: SEO tốt hơn, Accessibility tốt hơn, code dễ đọc hơn.
Box Model trong CSS là gì?
Box Model mô tả cách các elements được render trên trang web, gồm 4 phần từ trong ra ngoài:
- Content: Nội dung thực tế
- Padding: Khoảng cách giữa content và border
- Border: Viền bao quanh
- Margin: Khoảng cách với elements khác
.box {
width: 200px;
padding: 20px;
border: 2px solid #333;
margin: 10px;
box-sizing: border-box; /* Total width = 200px */
}
Flexbox và Grid khác nhau như thế nào?
Flexbox: Layout 1 chiều (row hoặc column). Phù hợp cho navigation, buttons, nhỏ.
Grid: Layout 2 chiều (rows và columns cùng lúc). Phù hợp cho page layout, complex layouts.
/* Flexbox */
.flex-container {
display: flex;
justify-content: space-between;
align-items: center;
}
/* Grid */
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
var, let, const khác nhau như thế nào?
| Keyword | Scope | Re-declare | Re-assign | Hoisting |
|---|---|---|---|---|
var |
Function | ✅ | ✅ | ✅ (undefined) |
let |
Block | ❌ | ✅ | ❌ (TDZ) |
const |
Block | ❌ | ❌ | ❌ (TDZ) |
Event bubbling và capturing là gì?
Capturing (bắt): Event đi từ root xuống target element.
Bubbling (nổi bọt): Event đi từ target element lên root.
Mặc định JavaScript sử dụng bubbling.
// Bubbling (default)
element.addEventListener('click', handler);
// Capturing
element.addEventListener('click', handler, true);
// Stop propagation
event.stopPropagation();
Closures trong JavaScript là gì?
Closure là khi một function "nhớ" được biến ở scope bên ngoài ngay cả khi function đã thực thi xong.
function counter() {
let count = 0;
return function() {
count++;
return count;
};
}
const increment = counter();
console.log(increment()); // 1
console.log(increment()); // 2
console.log(increment()); // 3
Responsive Design là gì? Làm thế nào để implement?
Responsive Design là thiết kế web hiển thị tốt trên mọi kích thước màn hình.
Cách implement:
- Sử dụng
viewportmeta tag - Media queries
- Flexible grids (%, vw, vh, fr)
- Fluid images (
max-width: 100%)
/* Mobile first approach */
.container { padding: 10px; }
@media (min-width: 768px) {
.container { padding: 20px; }
}
@media (min-width: 1024px) {
.container { padding: 40px; }
}