Những câu hỏi phỏng vấn Javascript ngu ngốc

Dec 11 2022
Tôi không trực tiếp chống lại các câu hỏi kỹ thuật. Tôi nghĩ đó là một trong những cách để biết được một số ý tưởng về kỹ năng công nghệ của ứng viên.

Tôi không trực tiếp chống lại các câu hỏi kỹ thuật. Tôi nghĩ đó là một trong những cách để biết được một số ý tưởng về kỹ năng công nghệ của ứng viên. Tôi thích một cuộc thảo luận kỹ thuật hơn là một cuộc phỏng vấn kỹ thuật nghiêm ngặt. Nhưng hãy để tôi giải thích một trong những câu hỏi tồi tệ nhất của Javascript hiện nay và tại sao.

Danh sách liên kết đơn

Trước khi tôi bắt đầu mô tả quan điểm của mình, hãy tìm hiểu một chút về lịch sử của Javascript

Đó là năm 1995 , được phát triển bởi Netscape (Brendan Eich), sau này Mozilla tiếp tục cải tiến và phát triển javascript. Ý tưởng đằng sau javascript là tạo ra một số loại động lực khi duyệt thế giới trực tuyến. Nó được sử dụng cho một số cảnh báo hoặc hoạt ảnh rất cơ bản. Javascript được thiết kế để có giao diện của Java, nhưng để những người không phải là lập trình viên làm việc dễ dàng hơn. Vào thời điểm đó thậm chí còn chưa có AJAX -> Javascript không được sử dụng cho các yêu cầu, v.v.

Khoảng năm 1997 Javascript trở thành một phần của tiêu chuẩn ECMA.

Vào năm 2005, chúng tôi đã có bản phát hành chính thức đầu tiên của AJAX -> đây là thời điểm bắt đầu phát triển web ngày nay. Không cần phải làm mới trang để có thể tải lại dữ liệu. Hãy tưởng tượng rằng đột nhiên bạn có thể tạo một số loại ứng dụng web. Nhưng câu hỏi đặt ra là: Javascript đã sẵn sàng cho điều đó chưa? Vâng, không thực sự. Các nhà phát triển nhanh chóng quen với việc sử dụng những thứ như IIFEE :

(function() {
// Code that runs in your function
var name = 'John Doe'
}
)()
console.log(name) // error as the name is not defined in this scope

Theo quan điểm ngày nay, IIFEE về cơ bản là một giải pháp hack để có thể tạo một ứng dụng phức tạp với nhiều tệp .js hơn. Chúng tôi cần loại giải pháp này vì nếu không, chúng tôi sẽ gặp xung đột trong việc đặt tên biến , hàm , v.v., vì Javascript là ngôn ngữ chức năng nghiêm ngặt không có lớp.

VAR và Hoisting -> Hoisting là hành vi di chuyển các khai báo lên trên cùng. Và trong javascript, biến có thể được sử dụng trước khi nó được khai báo. Đây là một kịch bản hợp lệ:

myVariable = ‘is this shit possible?’
var myVariable;
console.log(myVariable); // is this shit possible?

Trong ví dụ này, biến myVariable được di chuyển lên trên cùng và được khởi tạo cùng lúc, đây là lý do tại sao ở dòng 3, biến đã lưu trữ chuỗi.

Và còn rất nhiều điều và vấn đề như thế nữa. Đừng quên những phần kỳ lạ của javascript mà bạn có thể tìm thấy ở đây:https://hackernoon.com/the-weird-parts-of-javascript-zxo34i8

Nhưng có điều gì đó đã thay đổi với Javascript từ phiên bản es6

Nếu chúng ta quay lại ví dụ cẩu với cách tiếp cận mới:

myVariable = ‘is this shit possible?’
let myVariable;
console.log(myVariable); // undefined

Javascript vẫn đặt phần khai báo của biến ở trên cùng, nhưng phần khởi tạo thì không. Vì vậy, bảng điều khiển của chúng tôi sẽ viết một biến không xác định thay vì chuỗi.

Ngoài phiên bản es6, chúng tôi có:

  • Hàm mũi tên
  • Các lớp học
  • mô-đun
  • lời hứa
  • máy phát điện
  • khai báo let và const cho các biến
  • Toán tử trải rộng và phần còn lại
  • chữ mẫu
  • hủy diệt
  • Và nhiều hơn nữa

Sau đó là những câu hỏi phỏng vấn sai?

Cần phải đưa ra ít nhất một số ví dụ đó trước khi tôi có thể bắt đầu rút ra quan điểm của mình.

Hãy tưởng tượng rằng bạn là một nhà phát triển mới và bắt đầu học Javascript. Nó thực sự không cần thiết để bạn hiểu:

  • biến
  • IIFEE
  • đóng cửa
  • Lời hứa và cách sử dụng của họ (nhưng thật tốt khi biết về nó)

Nhưng việc kiểm tra kiến ​​thức của phiên bản Javascript cũ hơn là hoàn toàn không cần thiết. Javascript cũ được xây dựng cho một mục đích khác với mục đích được sử dụng ngày nay.

Tóm lại , có thể nói rằng: Tất nhiên Javascript vẫn có những điểm yếu của nó. Nhưng nếu bạn biết cách sử dụng nó, bạn sẽ chỉ viết vanilla Javascript cho các trang web Html nhỏ hoặc các ứng dụng nhỏ hơn. Mặt khác, mỗi nhà phát triển lành mạnh sẽ sử dụng Bản mô tả.