jobBox
Cẩm nang nghề nghiệp

Câu hỏi phỏng vấn JavaScript cùng hướng dẫn trả lời

Article Image

1. So Sánh Trong JavaScript

Strict Comparison (===): So sánh cả giá trị và kiểu dữ liệu, không cho phép ép kiểu.

10 === '10'; // false

Abstract Comparison (==): So sánh chỉ giá trị, thực hiện chuyển đổi kiểu dữ liệu nếu cần.

10 == '10'; // true

2. Callback Function

Là hàm được truyền dưới dạng đối số và thực thi khi hàm gọi nó hoàn thành công việc.

function doTask(task, callback) {

console.log(`Bắt đầu ${task}`);

callback();

}

doTask('lập trình', () => console.log('Hoàn thành!'));

3. Kiểu Dữ Liệu Nguyên Thủy (Primitive)

Các kiểu dữ liệu nguyên thủy trong JavaScript bao gồm:

Boolean, Null, Undefined, Number, String, Symbol.

typeof 10; // "number"

typeof null; // "object"

4. Toán Tử Logic

&&: Trả về giá trị falsy đầu tiên, hoặc giá trị cuối cùng nếu không có giá trị falsy.

||: Trả về giá trị truthy đầu tiên, hoặc giá trị cuối cùng nếu không có giá trị truthy.

console.log(null && 'hello'); // null

console.log(undefined || 'mặc định'); // "mặc định"

5. Falsy và Truthy Values

Falsy values: 0, null, undefined, NaN, false, '' (chuỗi rỗng).

Truthy values: Mọi giá trị khác ngoài falsy.

6. Sự Khác Biệt Giữa undefined và null

undefined: Biến đã khai báo nhưng chưa có giá trị.

null: Đại diện cho giá trị "rỗng", có thể được gán.

let a;

console.log(a); // undefined

let b = null;

console.log(b); // null

7. IIFE (Immediately Invoked Function Expression)

Là hàm tự động được gọi ngay sau khi khai báo.

(function () {

console.log('IIFE được thực thi!');

})();

8. Promise và Trạng Thái

Promise có 3 trạng thái chính:

Pending: Chưa được xử lý.

Fulfilled: Đã thành công.

Rejected: Thất bại.

const promise = new Promise((resolve, reject) => {

resolve('Thành công');

});

promise.then(console.log); // "Thành công"

9. Higher-Order Functions

Là hàm nhận hoặc trả về một hàm khác. Ví dụ như các hàm map(), filter(), reduce().

const numbers = [1, 2, 3];

const squares = numbers.map(n => n * n); // [1, 4, 9]

10. Hoisting

JavaScript "kéo lên" các khai báo biến và hàm lên đầu phạm vi. Biến khai báo với var sẽ bị hoisted, nhưng không phải let và const.

console.log(x); // undefined

var x = 5;

11. Event Delegation

Phương pháp gắn sự kiện vào phần tử cha để xử lý sự kiện của các phần tử con.

document.querySelector('#parent').addEventListener('click', (event) => {

if (event.target.tagName === 'BUTTON') {

console.log('Nút bấm đã được nhấn!');

}

});

12. Class trong JavaScript

Class là khuôn mẫu để tạo đối tượng và bao gồm các phương thức.

class Car {

constructor(brand) {

this.brand = brand;

}

display() {

return `Xe này là ${this.brand}`;

}

}

const myCar = new Car('Toyota');

console.log(myCar.display()); // "Xe này là Toyota"

13. Currying

Là kỹ thuật biến một hàm nhận nhiều tham số thành một chuỗi các hàm nhận từng tham số một.

function add(a) {

return function (b) {

return a + b;

};

}

console.log(add(2)(3)); // 5

14. AJAX

AJAX (Asynchronous JavaScript and XML) cho phép gửi và nhận dữ liệu từ máy chủ mà không cần tải lại trang.

fetch('https://api.example.com/data')

.then(response => response.json())

.then(data => console.log(data));

15. LocalStorage và SessionStorage

LocalStorage: Lưu trữ dữ liệu lâu dài (không có thời gian hết hạn).

SessionStorage: Dữ liệu tồn tại trong phiên duyệt web hiện tại.

localStorage.setItem('key', 'value');

console.log(localStorage.getItem('key')); // "value"

Lưu ý bổ sung

Arrow Functions: Cách viết ngắn gọn cho các hàm trong JavaScript, đặc biệt là khi sử dụng trong các hàm callback.

const add = (a, b) => a + b;

Destructuring: Cách tiện lợi để trích xuất giá trị từ mảng hoặc đối tượng.

const [a, b] = [1, 2];

console.log(a, b); // 1, 2

const person = { name: 'John', age: 30 };

const { name, age } = person;

console.log(name, age); // John, 30

Bình luận

Chưa có bình luận nào

Từ khóa nổi bật

joxBox

Luôn nhận thông tin mới nhất
Từ chúng tôi

joxBox