Câu hỏi phỏng vấn JavaScript (Phần 1)

Câu hỏi phỏng vấn JavaScript (Phần 1)

JavaScript là một trong những ngôn ngữ lập trình rất phổ biến. JavaScript cùng với HTML, CSS là bộ ba huyền thoại của lập trình web. Ngôn ngữ lập trình JavaScript vô cùng linh hoạt và chính vì sự linh hoạt của JavaScript mà chúng ta rất dễ gặp khó khăn trong buổi phỏng vấn.

Dưới đây là một số câu hỏi phỏng vấn JavaScript thường gặp (Phần 1).

Câu hỏi phỏng vấn JavaScript (Phần 1)

Một số câu hỏi phỏng vấn JavaScript thường gặp (Phần 1)

1. Kể tên 3 loại dữ liệu cơ bản của JavaScript

Trả lời:

  • “number”
  • “string”
  • “boolean”

2. Cho biết output của 2 dòng lệnh dưới?

Trả lời:

  • Console.log(1<2<3) -> true
  • Console.log(3>2>1) -> false

3. Khác nhau giữa null và undefined?

Trả lời:

  • Undefined có nghĩa là không xác định. Trong JavaScript, khi bạn khai báo một biến nhưng chưa gán giá trị cho nó, giá trị của biến đó sẽ là undefined.
  • Null là một loại object, tương tự như các loại object khác như ‘string’, ‘number’,…

4. Khác nhau giữa 2 hàm document.ready và body.onload?

Trả lời:

  • Body.onload chỉ được gọi khi DOM và các resources kèm theo như images được load xong. Còn document.ready được khi DOM được load xong.
  • Có thể có nhiều document.ready nhưng chỉ có 1 body.onload.
Câu hỏi phỏng vấn JavaScript (Phần 1)

5. Cho biết output của lệnh: console.log(typeof undefined == typeof NULL)

Trả lời:

True

6. Cho biết output của lệnh dưới đây: console.log(typeof typeof 1)

Trả lời:

String

7. Sự khác nhau giữa call và apply?

Trả lời:

Trong JavaScript, mọi thứ đều là Object. Number, String hay Function đều là Object, và .call và .apply là các method của object Function.

  • call và apply thường được để assign từ khóa ‘this’ trong function đó to 1 object khác.
  • Điểm khác nhau nằm ở tham số truyền vào: Call: _function.call(object, “arg one”, “arg two”,..). Apply: _function.apply(object, [“arg one”, “arg two”,…])

8. Strict mode trong JavaScript là gì?

Trả lời:

Use strict dịch sang tiếng việt thì có nghĩa là sử dụng sự nghiêm ngặt. Khi một đoạn lệnh được khai báo use strict thì tất cả các dòng code ở phía dưới dòng khai báo use strict sẽ được quản lý một cách nghiêm ngặt hơn về cú pháp.

Khi sử dụng strict mode bạn sẽ không thể làm được những điều sau nữa:

Gán giá trị cho biến chưa được khai báo

"use strict"
variable = "hellopeople";
console.log(variable);

//Uncaught ReferenceError: variable is not definedCode language: JavaScript (javascript)

Báo lỗi khi sử dụng delete

"use strict"
function getName (name)
{
    alert(name)
}
delete getName;
//Uncaught SyntaxError: Delete of an unqualified 
//identifier in strict mode.Code language: JavaScript (javascript)

Các tham số của hàm không được trùng nhau

"use strict"
function getName (name, name, age)
{
    //code
}
//Uncaught SyntaxError: Duplicate parameter name not allowed in this contextCode language: JavaScript (javascript)

Không cho phép khai báo biến dưới dạng hệ nhị phân

var num = 01010;
//Uncaught SyntaxError: Octal literals are not allowed in strict mode.Code language: JavaScript (javascript)

Không được phép ghi đè lên thuộc tính chỉ được phép đọc

"use strict"
var obj = {};
Object.defineProperty(obj, 'ver', {value: 1, writable: false});
obj.ver = 10;Code language: JavaScript (javascript)

Không sử dụng được with

"use strict"
var bar = 1;
var foo = 2;
with (bar){
    console.log(foo);
}
//Uncaught SyntaxError: Strict mode code may not include a with statementCode language: JavaScript (javascript)

Không cho phép khai báo biến trong eval

"use strict"
eval ("var x = 4");
alert(x);
//Uncaught ReferenceError: x is not definedCode language: JavaScript (javascript)

Không chấp nhận khai báo các keyword

Ở chế độ strict mode thì các bạn sẽ không sử dụng được các từ khóa sau để khai báo làm tên biến, hằng,…

  • implements
  • interface
  • let
  • package
  • private
  • protected
  • public
  • static
  • yield
  • arguments
Câu hỏi phỏng vấn JavaScript (Phần 1)

9. Hàm anonymous là gì và khi nào nên sử dụng nó?

Trả lời:

Anonymous functions hay còn gọi là hàm ẩn danh, là một hàm được sinh ra đúng vào thời điểm chạy của chương trình.

Thông thường khi bạn khai báo một hàm thì trình biên dịch sẽ lưu lại trong bộ nhớ nên bạn có thể gọi ở trên hay dưới vị trí khai báo hàm đều được, nhưng với anonymous functions thì nó sẽ được sinh ra khi trình biên dịch xử lý tới vị trí của nó.

Ví dụ:

var anonyFunc = function() {
        console.log("Hello, Học JavaScript");
}
anonyFunc();Code language: JavaScript (javascript)

10. Lập trình bất đồng bộ trong JavaScript là gì?

Trả lời:

Lập trình bất đồng bộ (async) là 1 phần quan trọng trong JavaScript. Cách tiếp cận phổ biến là sử dụng các callback

Ví dụ như 1 lệnh ajax gửi request lên server và sau khi nhận được thành công data trả về từ server thì callback sẽ được thực hiện. Thời điểm mà callback được thực hiện không phải là ngay lập tức sau khi có request ajax mà có thể là 1 vài giây sau đó tùy thuộc vào tốc độ xử lí của server.

Ví dụ khác:

console.log('A');
console.log('B');
console.log('C');Code language: JavaScript (javascript)

thực hiện đoạn code trên cho ra kết quả:

A
B
C

Nhìn vào đoạn code này ta thấy nó hoạt động giống như cơ chế đồng bộ nghĩa là sẽ thực thi từng dòng lệnh một. Ta thay đổi đoạn code trên 1 chút như sau:

console.log('A');

setTimeout(function(){
   console.log('B');
}, 2000);

console.log('C');Code language: JavaScript (javascript)

Đoạn code trên cho ra kết quả:

A
C
B

Ta thấy rằng thay vì chờ đợi phần lệnh console.log(‘B’) trong setTimeout() chạy xong thì lệnh console.log(‘C’) mới thực hiện giống như cơ chế chạy đồng bộ thì lệnh console.log(‘C’) lại trả về kết quả trước. Đây chính là điểm khác nhau giữa cơ chế bất đồng bộ và đồng bộ trong việc lập trình JavaScript.

Kết luận

Trên đây là một số câu hỏi phỏng vấn JavaScript thường gặp (Phần 1). Các bạn hãy cố gắng nắm vững kiến thức từ mức cơ bản nhất cho đến nâng cao để đạt được hiệu quả khi đi phỏng vấn. Chúc các bạn may mắn!

Cảm ơn bạn đã theo dõi bài viết!

Các bạn có thể tham khảo các bài viết hay về JavaScript tại đây.


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

TỔNG HỢP TÀI LIỆU HỌC LẬP TRÌNH CƠ BẢN CHO NGƯỜI MỚI BẮT ĐẦU

KHOÁ HỌC BOOTCAMP JAVA/JAVASCRIPT/PHP TRỞ THÀNH LẬP TRÌNH VIÊN TRONG 5-6 THÁNG

Bình luận