Tất  tần tật phỏng vấn JavaScipt

Tất tần tật phỏng vấn JavaScipt

·

3 min read

🔔
Bài viết này sẽ được cập nhật liên tục

Câu 1:

Câu hỏi:

Viết một hàm khi ta truyền một số nếu là chẳn thì trả về even, nếu là số lẻ thì trả về odd, hàm không cần dùng if else? Để viết hàm này, ta sử dụng Bitwise OperatorConditional (Ternary) Operator.

Bitwise Operator

Là toán tử cho phép ta thực thi phép toán thao tác dạng bit. Trong JS khi ta thực hiện toán tử Bitwise lên hai số thì nó chuyển hai số về dạng nhị phân và thực thi phép toán thao tác bit. Ví dụ 3 | 1 => 0011 | 0001 => 0011 => 3. Toán tử Bitwise bao gồm: AND (&), OR (|), XOR (^), NOR (~) . Vậy tại sao ta lại đề cập Bitwise Operator ở đây? Vì ta có thể sử dụng Bitwise AND (&) cho việc kiểm tra số chẳn lẻ:

  • Số chẳn thực thi Bitwise AND (&) với 1 trả về 0

  • Số lẻ thực thi Bitwise AND (&) với 1 trả về 1

Ví dụ:

0 & 1 => 0000 & 0001 => 0
1 & 1 => 0001 & 0001 => 1
2 & 1 => 0010 & 0001 => 0
3 & 1 => 0011 & 0001 => 1
4 & 1 => 0100 & 0001 => 0
5 & 1 => 0101 & 0001 => 1

Tiếp theo kiểm tra nếu 1 thì trả về odd, nếu 0 thì trả về even

Conditional (Ternary) Operator

Ta sử dụng Ternary Operator vì đề không cho dùng if else. Ternary Operator là cách viết rút gọn của if, nó chứa 3 phần tử trong một cú pháp: condition ? exprIfTrue : exprIfFalse. Nếu condition đúng thì giá trị exprIfTrue được trả về, còn sai thì là exprIfFalse. Ví dụ:

const age = 26;
const beverage = age >= 21 ? "Beer" : "Juice";
console.log(beverage); // "Beer"

Đáp án

Hàm kiểm tra chẳn lẻ:

function isEvenOrOdd(number) {
  return number & 1 ? 'odd' : 'even' 
}

isEvenOrOdd(0) // even
isEvenOrOdd(1) // odd
isEvenOrOdd(2) // even
isEvenOrOdd(3) // odd

Đáp án khác

Nếu bạn gặp trường hợp nhà phỏng vấn nói về Ternary Operator bản chất cũng là if else thì bạn có thể sửa thành cách sau đây. Hàm kiểm tra chẳn lẻ:

function isEvenOrOdd(number) {
  return ["even", "odd"][numer % 2]
}

isEvenOrOdd(0) // even
isEvenOrOdd(1) // odd
isEvenOrOdd(2) // even
isEvenOrOdd(3) // odd

Câu 2:

Câu hỏi

Làm thế nào để swap biến mà không dùng biến tạm? Ví dụ ta có biến a = 3b = 5, hoán đổi thành a = 5b = 3. Để làm bài này, ta sử dụng Destructuring Assignment.

Destructuring Assignment

Destructuring Assignment là cú pháp giúp ta unpack giá trị phần tử của một array hoặc thuộc tính của một object và gán nó vào biến. Ví dụ:

let one, two;
[one, two] = [1, 2]

console.log(one) // 1

console.log(two) // 2

Đáp án

Để swap biến đầu tiên ta khai báo biến a và b sau đó để nó trong một array. Dùng Destructuring Assignment để gán giá trị ngược lại cho hai biến:

let a = 3;
let b = 5;

[b, a] = [a, b]

console.log(a) // 5

console.log(b) // 3

Cập nhật lần cuối: 23:04:32 08/31/2023