Bộ câu hỏi phỏng vấn Javascript và cách trả lời phỏng vấn xin việc dưới đây sẽ giúp bạn dễ dàng vượt qua buổi gặp gỡ nhà tuyển dụng một cách dễ dàng. Javascript là ngôn ngữ không thể thiếu đối với các lập trình viên trong thời đại này. Vì thế, hãy tìm hiểu ngay cùng Tanca nhé.
Bộ câu hỏi phỏng vấn Javascript: Javascript là gì?
JavaScript là ngôn ngữ lập trình nền tảng được các lập trình viên sử dụng để tạo các trang web tương tác. Từ việc làm mới nguồn cấp dữ liệu mạng xã hội đến hiển thị hoạt ảnh và bản đồ tương tác, các khả năng của JavaScript có thể nâng cao trải nghiệm trang web của bạn.
Là ngôn ngữ phía máy khách, JavaScript là một công nghệ cốt lõi của World Wide Web. Ví dụ: khi duyệt Internet, khi bạn nhìn thấy một băng chuyền hình ảnh hoạt động, menu thả xuống nhấp để xem hoặc màu sắc thay đổi linh hoạt của các thành phần trên trang web, bạn sẽ thấy các hiệu ứng JavaScript.
Xem thêm: Bộ câu hỏi phỏng vấn Angular
Câu hỏi phỏng vấn JavaScript Intern: Hàm delete có chức năng gì?
Hàm delete giúp xóa một thuộc tính khỏi object; Nó sẽ tự động được giải phóng nếu không có tham chiếu đến thuộc tính.
Ví dụ:
var user = { name: 'Vu', age: 18 };
delete student.age;
console.log(student)
// => { name: 'Vu' }
Xem thêm: Bộ câu hỏi phỏng vấn Product Owner
Strict mode trong javascript là gì?
Trường hợp các nhà tuyển dụng việc làm hỏi bạn câu này, bạn nên trả lời như sau: Strict trong tiếng Việt có nghĩa là “nghiêm khắc”. Strict Mode là một quy tắc nghiêm ngặt trong JavaScript. Nếu viết code bình thường là Normal mode, thì chế độ Strict Mode sẽ có các quy tắc khác với Normal mode.
Ví dụ:
"use strict";
function foo(){
var bar = 'viblo';
return bar;
}
// Uncaught ReferenceError: bar is not defined
bar = 'asia';
Xem thêm: Bộ câu hỏi phỏng vấn BA - Business Analyst
Câu hỏi phỏng vấn JavaScript Fresher: Các kiểu dữ liệu trong Javascript?
Đây là kiến thức cơ bản dành cho fresher. Có 6 kiểu: String, Number, Boolean, Array, Null, Object, Undefined
Ví dụ:
// String
var a = 'viblo';
// Number
var b = 3;
// Object
var c = { a: 1, b: '2' }
// Undefined
var d;
// Boolean
var e = 10 < 11;
// Array
var f = [1, 2, 3, 'z'];
Xem thêm: Bộ câu hỏi phỏng vấn Project Manager
this trong javascript là gì?
Từ khóa this đề cập đến đối tượng mà từ đó nó được gọi.
Ví dụ:
var data = {
name: "vu",
age: 18,
getName: function(){
return this.name; // this = data;
}
};
console.log(data.getName()) // 'vu'
Khác nhau giữa null và undefined trong javascript?
Khi tạo một biến mà không gán giá trị, nó sẽ không được xác định. Và null là một đối tượng.
Ví dụ:
var a;
console.log(typeof a) // undefined
console.log(typeof null) // object
== và === khác nhau như thế nào?
Toán tử == kiểm tra sự bằng nhau, trong khi === kiểm tra cả sự bằng nhau và kiểu dữ liệu
Ví dụ:
var number1 = 1;
var number2 = '1';
console.log(number1 == number2) // true
console.log(number1 === number2) // false
Câu hỏi phỏng vấn JavaScript Senior: Phân biệt var, let và const?
const được sử dụng để khai báo một hằng số - một giá trị không thể thay đổi trong thời gian chạy.
let tạo một biến chỉ khả dụng trong khối xung quanh
var – tạo một biến khả dụng trong toàn hàm chứa nó.
Ví dụ:
// let
if (true) {
let text = 'in if statement'
}
console.log(text) // undefinded
//const
const a = 'vu';
a = 'nguyen'; // Lỗi Identifier 'a' has already been declared
// var
var a = 'viblo';
if (true) {
var a = 'viblo.asia';
console.log(a); // 'viblo.asia'
}
console.log(a); // 'viblo.asia'
Thay đổi style/class của element?
Sử dụng thuộc tính document trong javascript. Nó có thể được sử dụng với ID, class hoặc bất kỳ element nào.
Ví dụ:
document.getElementById("myId").style.backgroundColor = "red";
document.getElementById("myId").className = "newclass";
document.getElementByClass("myClass").className = "newclass";
document.getElementByTagsName("myTagsName").className = "newclass";
Câu hỏi phỏng vấn JavaScript Junior: Tại sao Math.max() nhỏ hơn Math.min()?
Khi chạy Math.max() > Math.min(), giá trị trả về là Sai, nghe có vẻ không hợp lý. Tuy nhiên, nếu không có tham số nào được truyền, Math.min() sẽ trả về Infinity và Math.max() sẽ trả về -Infinity. Vì vậy, math.max() < math.min().
Ví dụ:
var infinity = 5
var value1 = Math.min(1)
var value2 = Math.min(1, infinity)
var value3 = Math.min(1, -infinity)
console.log(value1) // 1
console.log(value2) // 1
console.log(value3) // -5
Hosting trong javascript là gì?
Hoisting là hành động mặc định của Javascript, nó sẽ chuyển phần khai báo lên trên cùng Trong JavaScript, một biến có thể được khai báo sau khi nó đã được sử dụng.
Ví dụ:
a = 'https://viblo.asia';
console.log("My website: ", a); // My website: https://viblo.asia
var domain;
console.log("My website: ", a); // // My website: https://viblo.asia
Closure trong javascript là gì?
Closure là một chức năng bên trong truy cập các giá trị bên ngoài phạm vi của nó. Closure có thể truy cập các biến trong phạm vi riêng của chúng (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ụ:
const arr = [1, 2, 3, 4];
for (var i = 0; i < arr.length; i++) {
setTimeout(function() {
console.log(i);
}, 10);
}
// 4 4 4 4
Phân biệt giữa Function Expression và Function Declaration
Function declaration được sử dụng từ khóa function rồi đến hàm tên. Còn Function expression sẽ bắt đầu bằng từ khóa var, const hoặc let.
Ví dụ:
// Function Declaration:
function a(x,y,z) {
// code here
}
// Function Expression
const a = function(x,y,z) {
// code here
}
Hàm Array.splice() và hàm Array.slice() khác nhau như thế nào?
Hàm Array.splice() thay thế một hoặc nhiều phần tử mảng bằng một hoặc nhiều phần tử khác. Trong khi hàm Array.slice() trích xuất các phần tử của mảng, vị trí bắt đầu, kết thúc của quá trình trích xuất được xác định bởi đối số được truyền cho hàm.
Lưu ý hàm sẽ trích xuất không gồm phần tử end được truyền vào.
Ví dụ:
// Array.splice()
var language = ["php", "css", "html", "js"];
language.splice(1, 1, "python", "c#", "ios");
console.log(language) // ['php', 'python', 'c#', 'ios', 'html', 'js'];
// Array.slice()
var language = ["html", "js", "php", "c#", "python", "androi", "ios"];
var slice = language.slice(1, 4);
console.log(slice); // ['js(1)', 'php(2)', 'c#(3)']
Anonymous function là gì?
Bởi vì nó là một hàm ẩn danh, không tên thường được sử dụng cho các nhiệm vụ quy mô nhỏ, không cần thiết phải khởi tạo tên định danh cho chức năng này. Giúp nó có tốc độ xử lý nhanh hơn so với chức năng truyền thống cần phải có tên ID.
Ví dụ:
var anonymous = function(a, b) {
return a + b;
};
console.log(anonymous(5, 10)); // 15
//Anonymous Function không có đối số
var anonymous = function() {
return "Hello World";
};
console.log(anonymous()); // Hello World
(function(){
console.log('viblo');
}).call(this) // viblo
Spread Operator trong javascript?
Spread operator là biểu thức mở rộng cùng các phần tử theo cách viết ngắn gọn hơn. Cách viết này được thể hiện bằng dấu …
var topLane = ['zed', 'akali'];
var all = ['yasuo', 'rengar', ...topLane, 'đan trường'];
console.log(all) // ['yasuo', 'rengar', 'zed', 'akali', 'đan trường']
Câu hỏi phỏng vấn javascript kungfu: Tại sao 0.1 + 0.2 không bằng 0.3?
Sự cố này liên quan đến việc lưu trữ dữ liệu dấu phẩy động trong JavaScript với độ chính xác thập phân. Ngoài ra, máy tính không thể biểu diễn chính xác số thập phân, điều này gây ra các loại lỗi này. Giải pháp ở đây có thể là sử dụng toFixed() để có kết quả phù hợp.
console.log(0.1 + 0.2) //0.30000000000000004
// Sử dụng toFixed()
var number = 0.1 + 0.2;
console.log(number.toFixed(2)) // 0.3
Kết quả của 1 + 2 + ‘3'?
1 và 2 là kiểu số nguyên, chúng cộng lại thành 3 thì sẽ kết hợp với chuỗi “3” sẽ được kết quả là 33.
<H3> Tại sao 018 trừ 017 bằng 3?
Kết quả của việc chuyển đổi loại là 018 - 017, trả về 3. Đây là trường hợp bát phân.
Trong JavaScript, tiền tố 0 chuyển đổi bất kỳ số nào tiếp theo thành bát phân. Tuy nhiên, số 8 không được sử dụng trong bát phân, vì vậy các số có chứa số 8 sẽ chuyển về dạng thập phân thông thường.
Vì vậy, 018 - 17 tương đương với 18 (số thấp hơn) - 15 (số bát phân 017) và trả về 3.
Promise trong javascript là gì?
Promise là một cơ chế trong JavaScript giúp bạn thực hiện các tác vụ không đồng bộ mà không rơi vào callback hell hay pyramid of doom.
Sự khác nhau giữa window.onload và onDocumentReady?
Sự kiện window.onload có nghĩa là khi trình duyệt tải xong mọi thứ (hình ảnh, js, css) thì mã sẽ được chạy. Với onDocumentReady, mọi thứ bên trong hàm này sẽ được tải ngay khi DOM được tải và trước khi tất cả nội dung bên ngoài được tải.
Promise có thể có ở trạng thái nào?
Promise có thể ở một trong ba trạng thái:
- Đang chờ xử lý (Pending): Trạng thái ban đầu của lời hứa
- Đã thực hiện (Fulfilled): Được cập nhật khi một lời hứa đã được thực hiện thành công.
- Bị từ chối (Rejected): Đã xảy ra lỗi khi lời hứa bị từ chối.
Ưu điểm và nhược điểm của việc dùng Promises là gì?
Ưu điểm của việc sử dụng Promises:
- Không giống như các cuộc gọi lại, Promises có thể được soạn thảo, vì vậy có thể tránh được các địa chỉ gọi lại
- Khi có nhiều phản hồi, bạn có thể dễ dàng thực thi mã với Promises.all
- Với sự trợ giúp của Promise.race, bạn có thể đợi kết quả từ Promise trong khi chờ đợi
- Đồng bộ hóa mã được viết không đồng bộ nếu bạn đang kết hợp các lời hứa async/await vpwos.
Nhược điểm:
- Nó chỉ có thể chạy trên một giá trị/thời gian
- Không khả dụng trong các trình duyệt cũ hơn
- Chậm hơn so với sử dụng gọi lại, ảnh hưởng đến hiệu suất
Các câu hỏi JavaScript phỏng vấn khác
Ngoài những câu hỏi phỏng vấn trên, bạn nên tham khảo thêm những câu hỏi dưới đây:
- 3 Giai đoạn của event propagation là gì?
- Sự khác biệt của number++ và ++number là gì?
- typeof sayHi() là gì?
- Phương thức setInterval trả về cái gì?
Trên đây là bộ câu hỏi phỏng vấn Javascript thường gặp mà chúng tôi muốn chia sẻ đến bạn. Tanca hy vọng bài viết này sẽ giúp bạn thêm tự tin trong buổi phỏng vấn sắp tới và dễ dàng nhận được công việc, mức lương mà bạn mong muốn.