Câu hỏi phỏng vấn JavaScript Developer

60 Các câu hỏi phỏng vấn JavaScript Developer được chia sẻ bởi các ứng viên

Câu hỏi phỏng vấn JavaScript Developer & Cách trả lời

Dưới đây là 3 câu hỏi phỏng vấn JavaScript Developer hàng đầu và cách trả lời chúng:

Câu hỏi #1: Kể tên 3 loại dữ liệu cơ bản của JavaScript

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

Câu hỏi #2: Primitive là gì? Nêu các primitive value trong JavaScript

Trong JavaScript có hai kiểu dữ liệu: Kiểu nguyên thủy (primitive)object.

Kiểu nguyên thuỷ là bất biến, một kiểu nguyên thuỷ không phải là object vì vậy chúng không có các method (phương thức) riêng của mình. 

Có sáu loại nguyên thủy trong JS:

  • Boolean — true or false
  • Undefined — một biến được khai báo nhưng chưa được cung cấp giá trị
  • Null — no value
  • Symbol — một giá trị duy nhất không bằng bất kỳ giá trị nào khác (được giới thiệu trong ES6)
  • Number — integers, floats..
  • String — tất cả những gì bên trong dấu “ ”

Câu hỏi #3: Giải thích về Arrays trong JavaScript?

Một array là một đối tượng chứa các giá trị (thuộc bất kỳ kiểu nào) ở các vị trí được lập index:

var arr = [

"hello world",

42,

true

];

arr[0]; // "hello world"

arr[1]; // 42

arr[2]; // true

arr.length; // 3

 

typeof arr; // "object"

Câu hỏi phỏng vấn

JavaScript Developer được hỏi... 05/06/2023

Callback function là gì? Cho một ví dụ đơn giản.

1 câu trả lời

Callback function – hay còn gọi là hàm gọi lại – là một hàm chỉ được thực thi một khi hàm khác đã thực thi xong. 

Ví dụ:

function writeBlog(topic, callback) {

  alert(`Starting my ${topic} blog.`);

// then execute the callback function that was passed

  callback();

}

writeBlog(‘JS’, function() {

  alert(‘Finished my blog!’);

});

Nếu bạn chạy đoạn code trên, kết quả sẽ trả về hai thông báo. Thông báo đầu tiên là “Starting my JS blog.” và thông báo thứ hai là: “Finished my blog!”

JavaScript Developer được hỏi... 05/06/2023

Toán tử && để làm gì?

1 câu trả lời

Toán tử trong JavaScript, có kí hiệu là && sẽ trả về giá trị true nếu cả hai toán hạng là true, ngược lại sẽ trả về false. 

JavaScript Developer được hỏi... 05/06/2023

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

1 câu 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',...
JavaScript Developer được hỏi... 05/06/2023

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

1 câu 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.
JavaScript Developer được hỏi... 05/06/2023

Hãy cho biết Falsy value và Truthy value là gì? Có các falsy value nào trong JavaScript?

1 câu trả lời

Falsy values là giá trị trong Javascript mà khi ta ép kiểu về Boolean sẽ cho ra giá trị false. 

Tương tự, truthy values là những giá trị mà khi ta ép kiểu về Boolean sẽ cho ra giá trị true.

Có 7 falsy values trong JavaScript:

  • number 0
  • keyword undefined
  • BigInt 0n
  • number NaN
  • keyword null
  • boolean false
  • empty string “” (tương ứng với “ hay ‘’)
JavaScript Developer được hỏi... 06/06/2023

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

1 câu trả lời

Trong javascript, mọi thứ đều là objectNumberstring 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”,…])

JavaScript Developer được hỏi... 05/06/2023

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

1 câu 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 PhongvanIT.com");
}
anonyFunc();
JavaScript Developer được hỏi... 05/06/2023

Phân biệt giữa anonymous và named functions?

1 câu trả lời

Anonymous function – hay còn được biết đến là hàm ẩn danh – là hàm không có tên và được tạo ra trong thời gian ứng dụng đang chạy. 

Named function – hay còn gọi là hàm được đặt tên – được sử dụng để gỡ lỗi và tìm kiếm những hàm gây ra lỗi.

JavaScript Developer được hỏi... 05/06/2023

Scope của 1 biến trong JavaScript là gì? Có bao nhiêu loại scope?

1 câu trả lời

Scope của 1 biến là phạm vi trong chương trình của bạn mà biến đó được định nghĩa.

Trong JavaScript có 3 loại scope:

  • Global scope: có phạm vị hoạt động ở bất kỳ trong mã javascript của bạn.
  • Function scope: có phạm vi hoạt động trong function mà bạn khai báo biến đó.
  • Block scope: có phạm vị trong cặp dấu {} mà bạn khai báo biến đó. (ES6)
JavaScript Developer được hỏi... 06/06/2023

Kể các cách khai báo 1 biến trong JavaScript?

1 câu trả lời

Có 3 cách:

  • Var:

var test = 10;​

  • Let:

let test = 10;​

  • Const:

const test = 10;

JavaScript Developer được hỏi... 07/06/2023

Trong JavaScript, Prototypal inheritance và classical inheritance là gì?

1 câu trả lời

Prototypal inheritance là kế thừa nguyên mẫu. Bản chất prototype là một object trong JS. Với cơ chế Prototype, các object trong Javascript sẽ kế thừa các tính năng từ một object khác. 

Classical inheritance được hiểu là kế thừa lớp. Classical inheritance cho phép JavaScript developer tạo ra một lớp mới dựa trên định nghĩa của lớp đã tồn tại. Nhìn chung, sử dụng classical inheritance sẽ phức tạp hơn prototypal. 

JavaScript Developer được hỏi... 06/06/2023

Sự khác biệt giữa classical inheritance và prototypal inheritance?

1 câu trả lời

Class Inheritance (tính kế thừa lớp): Nó cho phép xây dựng một lớp mới dựa trên các định nghĩa của lớp đã có. Có nghĩa là lớp cha có thể chia sẻ dữ liệu và phương thức cho các lớp con. Các phiên bản thường được khởi tạo thông qua các hàm khởi tạo với từ khóa “new” . Kế thừa lớp có thể có hoặc không sử dụng từ khóa “class” từ ES6 .

Prototypal inheritance (kế thừa nguyên mẫu): Prototype là cơ chế mà các object trong javascript kế thừa các tính năng từ một object khác. Nó thường được thực hiện bằng lệnh “Object.create ()”. Các phiên bản có thể được tạo từ nhiều đối tượng khác nhau, cho phép dễ dàng kế thừa có chọn lọc.

Trong JavaScript, prototypal inheritance – kế thừa nguyên mẫu đơn giản và linh hoạt hơn so với class inheritance – kế thừa lớp.

Ở câu hỏi này, ứng viên nên trình bày về tác dụng của class như một khớp nối tạo liên kết chặt chẽ cho chương trình và đề cập đến tính kế thừa, phân cấp chức năng, thành phần đối tượng của prototypes. Sự cần thiết của 2 yếu tố này là như nhau và không có sự ưu tiên đối với inheritance nào cả.

JavaScript Developer được hỏi... 06/06/2023

Lập trình không đồng bộ là gì và tại sao nó lại quan trọng trong JavaScript?

1 câu trả lời

Lập trình không đồng bộ là loại bỏ các điều kiện và lệnh gọi hàm, mã được thực hiện tuần tự từ trên xuống dưới, chặn các tác vụ chạy dài như yêu cầu mạng và I / O đĩa. Về bản chất, giao diện người dùng là không đồng bộ và dành phần lớn thời gian của họ để chờ thông tin nhập của người dùng làm gián đoạn vòng lặp sự kiện và kích hoạt trình xử lý sự kiện.Với câu hỏi này ứng viên nên trình bày các hiểu biết của mình về lập trình không đồng bộ và những lợi ích mà nó mang lại, tại sao nó lại quan trọng với mã giao diện người dùng.

JavaScript Developer được hỏi... 06/06/2023

Ưu, nhược điểm của lập trình chức năng và lập trình hướng đối tượng là gì?

1 câu trả lời

Ưu điểm của OOP: OOP khá dễ hiểu với các khái niệm cơ bản về đối tượng, là một kỹ thuật lập trình cho phép lập trình viên tạo ra các đối tượng trong code trừu tượng hóa các đối tượng. OOP có xu hướng sử dụng kiểu mệnh lệnh hơn là kiểu khai báo, kiểu này giống như một tập hợp các hướng dẫn chuyển tiếp để máy tính làm theo.

Nhược điểm của OOP: OOP có thể khiến dữ liệu được xử lý tách rời, khi cấu trúc dữ liệu thay đổi sẽ dẫn đến việc thuật toán bị thay đổi theo. Bên cạnh đó, OOP không tự động khởi tạo và giải phóng dữ liệu động, không mô tả được đầy đủ và trung thực hệ thống trong thực tế.

Ưu điểm của FP: Với FP các dev có thể tránh được bất kỳ trạng thái chia sẻ nào để giúp loại bỏ các lỗi gây ra bởi nhiều chức năng cạnh tranh cho cùng một source. Các chức năng có xu hướng được đơn giản hóa hoàn toàn và dễ dàng đặt lại bố cục để mã có thể tái sử dụng thường xuyên hơn so với OOP.

Nhược điểm của FP: Việc khai thác quá mức các tính năng của FP như kiểu không điểm và bố cục lớn có thể làm giảm khả năng đọc vì mã kết quả thường được chỉ định trừu tượng hơn, ngắn gọn hơn và ít cụ thể hơn.

JavaScript Developer được hỏi... 07/06/2023

Functional programming là gì?

1 câu trả lời

Functional programming là một dạng mô hình lập trình, dựa trên các hàm toán học (function), tránh việc thay đổi giá trị của dữ liệu. Functional Programming hướng đến tính kết hợp (composability) các hàm (function) để tối đa hóa khả năng tái sử dụng (reusability) trong chương trình.

JavaScript Developer được hỏi... 06/06/2023

Bạn có thể kể tên hai mô hình lập trình quan trọng đối với các JavaScript app developers không?

1 câu trả lời

JavaScript là một ngôn ngữ lập trình được sử dụng để tạo ra những trang web tương tác mà chúng ta vẫn sử dụng hàng ngày như Facebook, Tweeter,… Nó được tích hợp và nhúng trong HTML, hỗ trợ lập trình hướng đối tượng (OOP) và lập trình chức năng.

Với câu hỏi này, ứng viên nên trình bày các vấn đề liên quan đến lập trình dựa trên nguyên mẫu cũng như thuộc tính prototype và các nguyên tắc lập trình chức năng. Những câu hỏi mang đậm tính kỹ thuật như thế này nếu ứng viên không đề cập đến prototypal hay các kiến thức chuyên môn của mình sẽ khó gây ấn tượng với nhà tuyển dụng.

JavaScript Developer được hỏi... 06/06/2023

Giải thích phép so sánh trong JavaScript!

1 câu trả lời

Trong Java, chúng ta có hai cách so sánh: so sánh nghiêm ngặt (strict comparison) và chuyển đổi kiểu (type-converting).

Strict comparison sử dụng ba dấu bằng ===
Cả kiểu và giá trị phải giống nhau, ví dụ:

10 === 10 // true

'hello world' === 'hello world' // true because both are strings and equal

values

23 === '23' // falsebecause you are comparing a Number to a String

Strict comparison không cho phép ép kiểu dữ liệu  (coercion).

Vì một số bạn có thể không quen với khái niệm coercion, chúng ta sẽ xem một ví dụ nhanh dưới đây:
Trong JS, coercion  là sự chuyển đổi giữa hai kiểu dữ liệu được tạo sẵn. Có hai loại coercion:

  • Explicit coercion (ép kiểu tường minh):

let a = '23';

let b = Number(a);

a; // '23'

b; // 23 (this is the Number 23 not the String)

  • Implicit coercion (ép kiểu ngầm định):

let a = '23';

let b = a * 2; // '23' is implicitly coerced to 23

a; // '23'

b; // 46 (this is the Number 46 not a String)

JavaScript Developer được hỏi... 06/06/2023

So sánh trừu tượng (Abstract comparison)

1 câu trả lời

So sánh trừ tượng sử dụng Dấu bằng kép (Double Equals) ==
So sánh trừu tượng là so sánh giá trị bình đẳng và được phép ép kiểu dữ liệu (coercion) . Vì vậy, hai giá trị được so sánh sau khi chuyển đổi chúng thành cùng một kiểu dữ liệu.

23 == '23' // true

Tài liệu VietJack

Các toán tử trong JavaScript

JavaScript Developer được hỏi... 06/06/2023

Callback function là gì và hãy cho một ví dụ đơn giản:

1 câu trả lời

Callback function (hàm gọi lại) là một hàm được thực thi sau khi một hàm khác đã thực thi xong. Hay nói cách khác, một callback function là một hàm được truyền cho một hàm khác như một đối số và được thực thi sau khi một số tác vụ đã hoàn thành. Ví dụ:

function writeBlog(topic, callback) {

  alert(`Starting my ${topic} blog.`); 

// then execute the callback function that was passed

  callback();

}

 

writeBlog('JS', function() {

   alert('Finished my blog!');

});

Nếu bạn chạy đoạn code, bạn sẽ nhận được hai thông báo. Thông báo đầu tiên “Starting my JS blog.” và thông báo thứ hai: “Finished my blog!”

JavaScript Developer được hỏi... 06/06/2023

Primitive là gì? Các primitive value trong JavaScript là gì?

1 câu trả lời

Trong JavaScript có 2 loại kiểu dữ liệu: Kiểu nguyên thủy (primitive) và object.

Một kiểu nguyên thủy không phải là một object và không có các phương thức (method) của riêng nó. Tất cả các kiểu nguyên thủy là bất biến. Có sáu loại nguyên thủy trong JS:

  • Boolean — true or false
  • Null — no value
  • Undefined— một biến được khai báo nhưng chưa được cung cấp giá trị
  • Number— integers, floats..
  • String— tất cả những gì bên trong dấu “ ”
  • Symbol— một giá trị duy nhất không bằng bất kỳ giá trị nào khác (được giới thiệu trong ES6)

Symbol('x') === Symbol('x') // false

Đang xem 1 - 20 trong 60 câu hỏi phỏng vấn