คำถามสัมภาษณ์งาน JavaScript ที่มักเจอ
โดย Aaron Cao · อัปเดตเมื่อ

ควรเตรียมพื้นฐานให้พร้อม ได้แก่ closures, event loop, การ binding ของ this, prototype และการทำ scoping ด้วย var, let และ const จากนั้นจะเป็นแบบฝึกหัดเขียนโค้ด เช่น การ implement debounce, การทำ array ให้แบนราบ หรือการเขียน promise utility รวมถึงหัวข้อเกี่ยวกับเบราว์เซอร์อย่าง event delegation ส่วนการสัมภาษณ์ระดับ senior จะเพิ่มเรื่อง async pattern และ performance เข้ามาด้วย
พื้นฐาน JavaScript แบบไหนที่ถูกถามบ่อยที่สุด
รายการคำถาม JavaScript ดูเหมือนจะไม่มีที่สิ้นสุด และการท่องจำคำถามแบบสุ่มคือวิธีที่ช้าที่สุดในการฝ่าฟันมัน ส่วนนี้จะจำกัดขอบเขตให้เหลือแค่แนวคิดที่ผู้สัมภาษณ์มักย้อนกลับมาถามในแทบทุกรอบ เพื่อให้การฝึกของคุณตรงกับการกระจายตัวของคำถามจริง ห้าหัวข้อต่อไปนี้ครอบคลุมการสัมภาษณ์รอบคัดกรองส่วนใหญ่
- Closures function จับอะไรไว้บ้าง บั๊กคลาสสิกเรื่องตัวแปรใน loop และเหตุผลที่ module pattern ใช้งานได้
- Event loop call stack, task queue และ microtask queue รวมถึงลำดับการพิมพ์ log ในตัวอย่างที่ผสมกัน
- การ binding ของ this แบบ default, implicit, explicit ด้วย call และ apply และความแตกต่างของ arrow function
- Prototype การค้นหา property ตามสาย chain และสิ่งที่ syntax class ถูกคอมไพล์ไปเป็นจริง ๆ
- Scoping var เทียบกับ let และ const, hoisting และ temporal dead zone
การแปลงค่าความเท่ากันด้วย == เทียบกับ ===, truthiness และ array method อย่าง map, filter และ reduce คือส่วนที่เหลือของระดับคัดกรอง ถ้าคุณอธิบายแต่ละหัวข้อข้างต้นออกมาดัง ๆ ได้ภายในเวลาไม่ถึงหนึ่งนาที รอบพื้นฐานก็ถือว่าผ่านฉลุย
ควรฝึกแบบฝึกหัดเขียนโค้ดแบบไหนบ้าง
นอกจากคำถามเชิงแนวคิดแล้ว รอบสัมภาษณ์ JavaScript ส่วนใหญ่จะมีแบบฝึกหัด implement สั้น ๆ ที่ต้องทำสด ๆ ชุดคำถามที่เจอซ้ำ ๆ นั้นมีไม่มาก และคุ้มค่าที่จะฝึกจนกว่าแต่ละข้อจะใช้เวลาแค่ไม่กี่นาที ไม่ใช่หลายรอบของการลองผิดลองถูก
- Implement
debounceและthrottleพร้อมบอกว่าแต่ละตัวเหมาะกับสถานการณ์ไหน - ทำ nested array ให้แบนราบ ทั้งแบบใช้ recursion และไม่ใช้
- เขียน
Promise.allเวอร์ชันย่อที่ reject ทันทีที่มีความล้มเหลวครั้งแรก - สร้าง event emitter เล็ก ๆ ที่มี on, off และ emit
- ทำ deep clone ของ object แล้วบอกว่าเวอร์ชันของคุณพลาดกรณีไหนไปบ้าง
ตัวอย่างเช่น ผู้สมัครสาย front-end ที่สัมภาษณ์ตำแหน่งระดับกลาง อาจได้ debounce เป็นโจทย์วอร์มอัพ จากนั้นจะถูกขอให้เชื่อมมันเข้ากับช่องค้นหา แล้วอธิบายว่าเกิดอะไรขึ้นกับ request ที่ยังค้างอยู่ คำถามตามหลังต่างหากคือบททดสอบตัวจริง ผู้สัมภาษณ์จะขยายโจทย์ออกไปเรื่อย ๆ เพื่อดูว่าความเข้าใจภาษาของคุณไปสิ้นสุดที่ตรงไหน
การฝึกพูดออกเสียงต่อหน้าผู้สัมภาษณ์ที่คอยโต้แย้งกลับ คือสิ่งที่ทำให้ความรู้ติดแน่นในหัว หน้า mock interview พูดถึงวิธีจัดเซสชันจับเวลาพร้อมคำถามตามหลัง
คำถามเรื่องเบราว์เซอร์และ async หน้าตาเป็นอย่างไร
ตำแหน่งที่เกี่ยวกับเบราว์เซอร์จะเพิ่มอีกชั้นหนึ่งเหนือพื้นฐานของภาษา event delegation คือแกนกลาง เหตุผลที่ listener ตัวเดียวบน parent ดีกว่าใส่นับพันตัวใน child แต่ละตัว bubbling ทำให้สิ่งนี้เกิดขึ้นได้อย่างไร และ capture phase สำคัญตอนไหน DOM update batching, layout thrashing และสิ่งที่ทำให้เกิด reflow มักปรากฏในรอบคัดกรองที่เน้นเรื่อง performance
คำถามเกี่ยวกับ async ได้ลงตัวเป็นรูปแบบมาตรฐานแบบหนึ่งแล้ว นั่นคือโค้ดที่ผสม setTimeout, promise chain และฟังก์ชัน async เข้าด้วยกัน แล้วให้คุณทายลำดับของ output คำตอบขึ้นอยู่กับลำดับระหว่าง microtask กับ macrotask และผู้สัมภาษณ์สนใจเหตุผลมากกว่าลำดับเอง การจัดการ error ข้าม await boundary การเทียบ promise chaining กับ nesting และการให้ request แข่งกันด้วย Promise.race คือส่วนที่เหลือของกลุ่มคำถามนี้
ความแตกต่างของรอบเหล่านี้ระหว่างรูปแบบ coding, behavioral และ system design ถูกพูดถึงใน หน้ารวมประเภทการสัมภาษณ์
ควรฝึกอย่างไรให้นำไปใช้ได้จริงในรอบสัมภาษณ์
การอ่านคำตอบให้ความรู้สึกว่ามีประสิทธิภาพ แต่แทบไม่ช่วยให้นำไปใช้ได้จริง รอบสัมภาษณ์ต้องพูดออกเสียง จับเวลา และโต้ตอบกันไปมา การฝึกจึงต้องเป็นแบบเดียวกัน ลองทำเซสชันจำลองที่คุณพูดอธิบายไปพร้อมกับพิมพ์ ถูกขัดจังหวะด้วยคำถามตามหลัง และแข่งกับเวลา แรงกดดันแบบนี้เองที่ทำให้การดึงความรู้ออกมาใช้กลายเป็นเรื่องอัตโนมัติ ชุดคำถามเฉพาะภาษาและสแตกอื่น ๆ อยู่ใน หน้ารวมคลังคำถาม
ข้อเท็จจริงที่ควรรู้ไว้ รอบสัมภาษณ์ JavaScript จริงมักเกิดขึ้นใน editor ที่แชร์กัน โดยหน้าจอของคุณมองเห็นได้ตลอด และการประเมินที่มีผู้คุมสอบจะบันทึกภาพไว้ด้วย ผู้ช่วยมีไว้สำหรับการเตรียมตัวและฝึกซ้อม ไม่ใช่สำหรับหน้าจอที่แชร์สดตอนนั้น ในจุดที่การช่วยเหลือแบบสดเป็นเรื่องถูกต้องเหมาะสม เช่น ระหว่างสัมภาษณ์ทางโทรศัพท์ที่ไม่มีการแชร์หน้าจอ หรือช่วงฝึกซ้อมส่วนตัวของคุณเอง overlay ของ SubcueAI จะอยู่แค่ในเครื่องของคุณเท่านั้น และไม่มีบอทตัวไหนเข้าร่วมสายเลย