คำถามสัมภาษณ์ Javascript โง่ๆ

Dec 11 2022
ฉันไม่ได้ต่อต้านคำถามทางเทคนิคโดยตรง ฉันคิดว่านี่เป็นวิธีหนึ่งในการทำความเข้าใจเกี่ยวกับทักษะด้านเทคโนโลยีของผู้สมัคร

ฉันไม่ได้ต่อต้านคำถามทางเทคนิคโดยตรง ฉันคิดว่านี่เป็นวิธีหนึ่งในการทำความเข้าใจเกี่ยวกับทักษะด้านเทคโนโลยีของผู้สมัคร ฉันชอบการสนทนาทางเทคนิคมากกว่าการสัมภาษณ์ด้านเทคนิคที่เข้มงวด แต่ให้ฉันอธิบายหนึ่งในคำถามที่แย่ที่สุดของ Javascript ในวันนี้และทำไม

รายการที่เชื่อมโยงโดยลำพัง

ก่อนที่ฉันจะเริ่มอธิบายประเด็นของฉัน เรามาเจาะลึกถึงประวัติของ Javascript กันสักหน่อย

มันคือปี 1995พัฒนาโดย Netscape (Brendan Eich) หลังจากนั้น Mozilla ก็ปรับปรุงและพัฒนาจาวาสคริปต์ต่อไป แนวคิดเบื้องหลังจาวาสคริปต์คือการสร้างไดนามิกบางอย่างเมื่อท่องโลกออนไลน์ ใช้สำหรับการแจ้งเตือนหรือภาพเคลื่อนไหวขั้นพื้นฐาน Javascript ได้รับการออกแบบมาให้มีรูปลักษณ์และความรู้สึกของ Java แต่เพื่อให้ใช้งานได้ง่ายขึ้นสำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์ ในเวลานั้นไม่มีแม้แต่ AJAX -> Javascript ที่ไม่ได้ใช้สำหรับการร้องขอและอื่นๆ

ประมาณปี 1997 Javascript กลายเป็นส่วนหนึ่งของมาตรฐาน ECMA

ในปี 2548 เราได้เปิดตัว AJAX อย่างเป็นทางการครั้งแรก -> นี่คือจุดที่การพัฒนาเว็บในปัจจุบันเริ่มต้นขึ้น ไม่จำเป็นต้องรีเฟรชหน้าเพื่อให้สามารถโหลดข้อมูลซ้ำได้อีกต่อไป ลองนึกภาพว่าจู่ๆ คุณก็สร้างเว็บแอปขึ้นมาได้ แต่คำถามคือ Javascript พร้อมหรือยัง? ก็ไม่เชิง นักพัฒนาคุ้นเคยกับการใช้สิ่งต่าง ๆ เช่น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

IIFEEโดยพื้นฐานแล้วจากมุมมองของวันนี้เป็นโซลูชันแฮ็กที่สามารถสร้างแอปที่ซับซ้อนด้วยไฟล์ . js ได้มากขึ้น เราต้องการโซลูชันประเภทนี้เพราะไม่เช่นนั้น เราจะมีข้อขัดแย้งในการตั้งชื่อตัวแปรฟังก์ชันฯลฯเนื่องจากJavascript เป็นภาษาที่ใช้งานได้จริงโดยไม่มีคลาส

VAR และ Hoisting -> Hoisting เป็นพฤติกรรมของการย้ายการประกาศไปด้านบน และในจาวาสคริปต์ ตัวแปรสามารถใช้ได้ก่อนที่จะประกาศ นี่เป็นสถานการณ์ที่ถูกต้อง:

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

ในตัวอย่างนี้ ตัวแปร myVariable ถูกย้ายไปด้านบนสุดและเริ่มต้นพร้อมกัน นี่คือเหตุผลว่าทำไมในบรรทัดที่ 3 ตัวแปรจึงเก็บสตริงไว้แล้ว

และยังมีเรื่องและปัญหาอีกมากมายเช่นนั้น อย่าลืมเกี่ยวกับส่วนแปลก ๆ ของจาวาสคริปต์ ซึ่งคุณจะพบได้ที่นี่:https://hackernoon.com/the-weird-parts-of-javascript-zxo34i8

แต่มีบางอย่างเปลี่ยนไปด้วย Javascript จากเวอร์ชัน es6

หากเรากลับไปที่ตัวอย่างการชักรอกด้วยวิธีใหม่:

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

Javascript ยังคงวางการประกาศตัวแปรไว้ที่ด้านบน แต่ไม่ใช่การเริ่มต้น ดังนั้นคอนโซลของเราจะเขียน ตัวแปรที่ ไม่ได้กำหนดแทนสตริง

นอกจากเวอร์ชัน es6 แล้ว เรายังมี:

  • ฟังก์ชั่นลูกศร
  • ชั้นเรียน
  • โมดูล
  • สัญญา
  • เครื่องกำเนิดไฟฟ้า
  • การประกาศ let และ const สำหรับตัวแปร
  • ตัวดำเนินการกระจายและพักตัว
  • ตัวอักษรแม่แบบ
  • การทำลายล้าง
  • และอีกมากมาย

คำถามสัมภาษณ์ที่ไม่ถูกต้องคืออะไร?

จำเป็นต้องแสดงตัวอย่างเหล่านี้อย่างน้อยบางส่วนก่อนที่ฉันจะเริ่มวาดประเด็นได้

ลองนึกภาพว่าคุณเป็นนักพัฒนาใหม่และเริ่มเรียนรู้ Javascript คุณไม่จำเป็นต้องเข้าใจ:

  • วาร์
  • ไอฟี
  • ปิด
  • สัญญาและการใช้งาน (แต่ควรรู้ไว้)

แต่ไม่จำเป็นอย่างยิ่งที่จะต้องตรวจสอบความรู้ของ Javascript เวอร์ชันเก่า Javascript แบบเก่าถูกสร้างขึ้นเพื่อวัตถุประสงค์ที่แตกต่างจากที่ใช้ในปัจจุบัน

โดยสรุปเราสามารถพูดได้ว่า: แน่นอน Javascript ยังคงมีจุดอ่อนอยู่ แต่ถ้าคุณรู้วิธีใช้ คุณจะเขียนวานิลลา Javascript สำหรับเว็บไซต์ Html ขนาดเล็กหรือแอปขนาดเล็กเท่านั้น มิฉะนั้นนักพัฒนาที่มีเหตุผลแต่ละคนจะใช้ typescript