20 câu hỏi phỏng vấn Javascript dành cho Intern/Fresher

5682
câu hỏi phỏng vấn Javascript

Giới thiệu

Theo một cuộc điều tra cách mạng ẩn danh mà mình tìm hiểu được thì trong cuộc sống có 2 thứ khó hiểu nhất. Đối với nam giới thì đó là phụ nữ, còn đối với lập trình viên thì đó hẳn là javascript rồi.

Javascript là ngôn ngữ không thể thiếu trong thời đại hiện nay. Dù bạn có học ngôn ngữ gì đi chăng nữa thì bạn vẫn cần phải biết về javascript. Hôm nay mình xin chia sẻ một chút kiến thức về javascript, cụ thể là các câu hỏi phỏng vấn JavaScript mà nhà tuyển dụng thường sẽ hỏi bạn.

Bài viết này mình viết với mục đích dành cho các bạn Intern, Fresher trong quá trình đi phỏng vấn có thể tham khảo vì đây là những câu hỏi liên quan đến javascript mà rất dễ bị “sờ gáy”.

Xem thêm Fresher/Intern là gì

Bắt đầu nào!

  Kinh nghiệm phỏng vấn IT: Đi xin việc cũng như đi tán gái!
  Tôi đã phỏng vấn ở Silicon valley như thế nào (Phần 1)

Câu hỏi phỏng vấn JavaScript dành cho Intern/Fresher

#1. Javascript là gì?

Trả lời: Javascript là một ngôn ngữ lập trình kịch bản dựa vào đối tượng phát triển có sẵn hoặc tự định nghĩa ra, javascript được sử dụng rộng rãi trong các ứng dụng Website. Nó là một ngôn ngữ thông dịch.

#2. Các kiểu dữ liệu trong Javascript?

Trả lời: Có 6 kiểu đó là StringNumberObjectUndefinedBooleanArrayNull

Ví dụ:

#3. Hàm delete có chức năng gì?

Trả lời: Hàm delete loại bỏ một thuộc tính khỏi object; nếu không tồn tại tham chiếu tới thuộc tính, nó sẽ tự động giải phóng.

Ví dụ:

#4. Phân biệt var, let và const?

Trả lời:
const dùng để khai báo một hằng số – là một giá trị không thay đổi được trong suốt quá trình chạy.
let tạo ra một biến chỉ có thể truy cập được trong block bao quanh nó
var – tạo ra một biến có phạm vi truy cập xuyên suốt function chứa nó.

Ví dụ:

#5. Strict mode trong javascript là gì?

Trả lời: Strict theo nghĩa tiếng Việt là “nghiêm khắc”. Strict Mode là một quy mẫu nghiêm khắc trong Javascript. Nếu như việc viết code bình thường là Normal mode, thì Strict Mode sẽ có thêm các quy định khác so với Normal mode.

Ví dụ:

#6. this trong javascript là gì?

Trả lời: Từ khóa this dùng để chỉ đối tượng từ nơi nó được gọi.

Ví dụ:

#7. Khác nhau giữa undefined và null trong javascript?

Trả lời: Khi tạo ra một biến mà không gán giá trị thì nó sẽ là undefined. Còn null là một object

Ví dụ:

#8. == và === khác nhau như thế nào?

Trả lời: Toán tử == kiểm tra tính bằng nhau, còn === kiểm tra cả tính bằng nhau và cả kiểu dữ liệu

Ví dụ:

#9. Thay đổi style/class của element?

Trả lời: Sử dụng thuộc tính document trong javascript. Có thể sử dụng với id, class hay bất cứ element nào.

Ví dụ:

#10. Tại sao Math.max() nhỏ hơn Math.min()?

Trả lời: Khi chạy code Math.max() > Math.min(), giá trị trả về là False, nghe có vẻ không hợp lý. Tuy nhiên, nếu không có tham số nào được truyền vào, Math.min() trả về Infinity và Math.max() trả về -Infinity. Vậy nên Math.max() < Math.min().

Ví dụ:

#11. Closure trong javascript là gì?

Trả lời: Closure là một hàm bên trong, truy cập đến các giá trị bên ngoài phạm vi của nó. Closure có thể truy cập vào các biến trong phạm vi của riêng nó (Variables in their own scope), trong hàm (Variables in the function’s scope), và biến toàn cục (Global variables).

Ví dụ:

Lý do là bởi vì hàm setTimeout sẽ tạo ra 1 function (closure) có thể truy cập phạm vi bên ngoài nó, vòng loop sẽ chứa index i. Sau 10ms, hàm được thực thi và nó sẽ log ra giá trị của i, là giá trị cuối cùng của vòng lặp (4).

Xem thêm JavaScript Closures là gì

#12. Hoisting trong javascript là gì?

Trả lời: Hoisting là hành động mặc định của Javascript, nó sẽ chuyển phần khai báo lên phía trên top Trong Javascript, một biến (variable) có thể được khai báo sau khi được sử dụng.

Ví dụ:

#13. Phân biệt giữa Function Declaration và Function Expression

Trả lời: Function declaration sẽ sử dụng từ khóa function rồi đến tên hàm. Còn Function expression sẽ được bắt đầu với từ khóa var, const, hoặc let.

Ví dụ:

#14. Hàm Array.splice() và hàm Array.slice() khác nhau như thế nào ?

Trả lời: Hàm Array.splice() sẽ thay thế một hoặc một số phần tử của mảng bằng một hoặc một số phần tử khác. Trong khi hàm Array.slice() sẽ trích xuất một số phần tử của mảng, vị trí bắt đầu và kết thúc việc trích xuất sẽ được xác định bởi tham số truyền vào hàm. Lưu ý hàm sẽ trích xuất không bao gồm phần tử end truyền vào.

Ví dụ:

#15. Spread Operator trong javascript ?

Trả lời: Spread operator là một biểu thức mở rộng giúp gộp các phần tử vào trong một cách viết ngắn gọn hơn. Cách viết này được thể hiện bằng dấu ...

Ví dụ:

#16. Anonymous function là gì ?

Trả lời: Là một hàm ẩn danh, không có tên gọi, thường được sử dụng khi xử lý các công việc có quy mô nhỏ, vì thế không cần thiết phải khởi tạo tên định danh cho hàm này. Giúp nó có tốc độ xử lý nhanh hơn hàm truyền thống phải có tên định danh.

Ví dụ:

#17. Tại sao 0.1 + 0.2 không bằng 0.3 ?

Trả lời: Vấn đề này liên quan đến việc Javascript lưu trữ dữ liệu float ở dạng nhị phân chính xác tới từng con số sau dấu phẩy. Hơn nữa máy tính không thể biểu diễn chính xác số thập phân, nên gây ra sai số kiểu này.
Giải pháp ở đây có thể sử dụng hàm toFixed() để đạt được kết quả đúng.

#18. Sự khác nhau giữa window.onload và onDocumentReady ?

Trả lời: Sự kiện window.onload có ý nghĩa rằng khi trình duyệt đã load xong mọi thứ (image, js, css) thì những đoạn code nằm bên trong đó mới được chạy. Với onDocumentReady, mọi thứ bên trong hàm này sẽ được load ngay khi DOM được load và trước khi toàn bộ nội dung bên ngoài được load.

#19. Kết quả của 1 + 2 + ‘3’ ?

Trả lời: 33. 1 và 2 là kiểu integer, khi cộng lại sẽ được 3, sau đó sẽ nối với string ‘3’ để được kết quả là 33.

#20. Promise trong javascript là gì ?

Trả lời: Promise là một cơ chế trong JavaScript giúp bạn thực thi các tác vụ bất đồng bộ mà không rơi vào callback hell hay pyramid of doom, là tình trạng các hàm callback lồng vào nhau ở quá nhiều tầng. Có 3 trạng thái: pendingfulfilledreject.

Kết luận

Hi vọng sau khi đọc xong bài này các bạn có thể nhớ thêm, học thêm một chút gì đó về javascript. Mong có thể giúp ích cho các bạn.

Tài liệu tham khảo:

Đừng bỏ lỡ những bài viết hay về:

Xem thêm tuyển dụng JavaScript Developer trên TopDev

TopDev via viblo.asia

  Kinh nghiệm phỏng vấn Basecamp - Tại sao 80% các ứng viên kỹ sư phần mềm bị người sáng lập Rails từ chối?
  51 câu hỏi "hại não" nhất trong những bài phỏng vấn của Apple