- vừa được xem lúc

20 Khái niệm JavaScript quan trọng cần biết khi đi phỏng vấn

0 0 4

Người đăng: Vũ Tuấn

Theo Viblo Asia

Khi nói đến các buổi phỏng vấn JavaScript, nhà tuyển dụng tìm kiếm cả kiến thức thực tế lẫn lý thuyết. Vì vậy, dưới đây là danh sách 20 khái niệm JavaScript cốt lõi được giải thích bằng các ví dụ ngắn gọn để giúp bạn luôn sẵn sàng cho các cuộc phỏng vấn.

1. Closures

Closure là một hàm ghi nhớ các biến bên ngoài của nó ngay cả sau khi hàm bên ngoài đã hoàn thành việc thực thi.

function outer() { let count = 0; return function inner() { count++; return count; };
} const counter = outer();
console.log(counter()); // 1
console.log(counter()); // 2

2. Hoisting

Trong Hoisting, các khai báo biến và hàm trong JavaScript được "nâng" lên đầu phạm vi của chúng.

console.log(greet()); // Hello! function greet() { return "Hello!";
} console.log(num); // undefined
var num = 5;

3. Event Loop & Callbacks

JavaScript là đơn luồng và vòng lặp sự kiện (Event Loop) cho phép các hoạt động không đồng bộ sử dụng các hàm gọi lại (Callbacks).

console.log("Start");
setTimeout(() => console.log("Async operation"), 1000);
console.log("End"); // Output: Start, End, Async operation

4. Promises

Promises xử lý các hoạt động không đồng bộ, với các trạng thái: pending, fulfilled và rejected.

let fetchData = new Promise((resolve, reject) => { setTimeout(() => resolve("Data received!"), 1000);
}); fetchData.then(data => console.log(data)); // Data received!

5. Async/Await

Async/Await đơn giản hóa việc xử lý promise.

async function fetchData() { let data = await new Promise(resolve => setTimeout(() => resolve("Data"), 1000)); console.log(data);
} fetchData(); // Data

6. Arrow Functions

Arrow Functions cung cấp một cú pháp ngắn gọn và không có this của riêng chúng.

const add = (a, b) => a + b;
console.log(add(2, 3)); // 5

7. Destructuring

Destructuring cho phép bạn giải nén các giá trị từ mảng hoặc các thuộc tính từ đối tượng.

const person = { name: "Alice", age: 25 };
const { name, age } = person; console.log(name); // Alice
console.log(age); // 25

8. Spread & Rest Operators

Spread ... mở rộng các phần tử và Rest thu thập chúng vào một mảng.

const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // Spread function sum(...nums) { // Rest return nums.reduce((a, b) => a + b);
}
console.log(sum(1, 2, 3, 4)); // 10

9. Prototypes

Prototypes cho phép các đối tượng kế thừa các thuộc tính và phương thức.

function Car(name) { this.name = name;
} Car.prototype.getName = function() { return this.name;
}; const myCar = new Car("Tesla");
console.log(myCar.getName()); // Tesla

10. This

this đề cập đến ngữ cảnh mà một hàm được gọi.

const person = { name: "John", sayName() { console.log(this.name); },
}; person.sayName(); // John

11. Classes

Các lớp ES6 cung cấp một cú pháp rõ ràng hơn cho lập trình hướng đối tượng.

class Animal { constructor(name) { this.name = name; } speak() { return `${this.name} makes a sound.`; }
} const dog = new Animal("Dog");
console.log(dog.speak()); // Dog makes a sound.

12. Modules

Modules cho phép bạn chia nhỏ mã của mình trên nhiều tệp.

// add.js
export const add = (a, b) => a + b; // main.js
import { add } from "./add.js";
console.log(add(2, 3)); // 5

13. Map và Filter

mapfilter là các phương thức mảng để biến đổi và lọc mảng.

const numbers = [1, 2, 3, 4];
const doubled = numbers.map(n => n * 2); // [2, 4, 6, 8]
const evens = numbers.filter(n => n % 2 === 0); // [2, 4]

14. Reduce

reduce tích lũy các giá trị từ một mảng.

const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, n) => acc + n, 0);
console.log(sum); // 10

15. SetTimeout và SetInterval

setTimeout trì hoãn việc thực thi, trong khi setInterval lặp lại nó.

setTimeout(() => console.log("After 1 second"), 1000); let count = 0;
const intervalId = setInterval(() => { console.log("Count:", ++count); if (count === 3) clearInterval(intervalId);
}, 1000);

16. Template Literals

Template literals cho phép các chuỗi nhiều dòng và nội suy.

const name = "World";
console.log(`Hello, ${name}!`); // Hello, World!

17. Type Coercion

Type Coercion là việc JavaScript có thể chuyển đổi kiểu dữ liệu ngầm định, đôi khi không thể đoán trước.

console.log("5" + 5); // 55 (string)
console.log("5" - 2); // 3 (number)

18. Truthy và Falsy Values

Các giá trị như 0, "", null, undefined, NaN là falsy.

if ("") { console.log("This won't run");
} else { console.log("Falsy value");
}

19. Debouncing & Throttling

Debouncing và throttling là các kỹ thuật để kiểm soát tần suất thực thi hàm, thường để phản hồi các sự kiện.

Trong đó, Debounce (trì hoãn thực hiện):

function debounce(func, delay) { let timeout; return function (...args) { clearTimeout(timeout); timeout = setTimeout(() => func.apply(this, args), delay); };
} window.addEventListener("resize", debounce(() => console.log("Resized!"), 500));

Và Throttle (giới hạn thực hiện):

function throttle(func, limit) { let inThrottle; return function (...args) { if (!inThrottle) { func.apply(this, args); inThrottle = true; setTimeout(() => (inThrottle = false), limit); } };
} window.addEventListener("scroll", throttle(() => console.log("Scrolling!"), 200));

20. Currying

Currying biến đổi một hàm với nhiều đối số thành một chuỗi các hàm với một đối số duy nhất.

function multiply(a) { return function (b) { return a * b; };
} const double = multiply(2);
console.log(double(5)); // 10

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 528

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 436

- vừa được xem lúc

Một số phương thức với object trong Javascript

Trong Javascript có hỗ trợ các loại dữ liệu cơ bản là giống với hầu hết những ngôn ngữ lập trình khác. Bài viết này mình sẽ giới thiệu về Object và một số phương thức thường dùng với nó.

0 0 158

- vừa được xem lúc

Tìm hiểu về thư viện axios

Giới thiệu. Axios là gì? Axios là một thư viện HTTP Client dựa trên Promise.

0 0 149

- vừa được xem lúc

Imports và Exports trong JavaScript ES6

. Giới thiệu. ES6 cung cấp cho chúng ta import (nhập), export (xuất) các functions, biến từ module này sang module khác và sử dụng nó trong các file khác.

0 0 113

- vừa được xem lúc

Bài toán đọc số thành chữ (phần 2) - Hoàn chỉnh chương trình dưới 100 dòng code

Tiếp tục bài viết còn dang dở ở phần trước Phân tích bài toán đọc số thành chữ (phần 1) - Phân tích đề và những mảnh ghép đầu tiên. Bạn nào chưa đọc thì có thể xem ở link trên trước nhé.

0 0 249