ผู้ที่ไม่ใช่ผู้เชี่ยวชาญเฉพาะทาง การเอาชีวิตรอดในฐานะนักพัฒนา
#14. เนื้อหาการสัมภาษณ์ทางเทคนิคที่นักพัฒนาใหม่มักถูกถาม
[พื้นที่ของหน่วยความจำหลัก]
- พื้นที่รหัส: พื้นที่ที่เก็บรหัสต้นฉบับของโปรแกรม โดย CPU จะดึงคำสั่ง (Source, Function, Control Statement) ที่เก็บอยู่ในพื้นที่รหัสมาประมวลผล ตัวอย่างเช่น เมื่อโปรแกรมที่เขียนด้วยภาษา C ทำงาน พื้นที่รหัสจะเก็บรหัสต้นฉบับของโปรแกรมนั้น
- พื้นที่ข้อมูล: พื้นที่ที่เก็บตัวแปรทั่วโลกและตัวแปรคงที่ โดยจะถูกจัดสรรพร้อมกับการเริ่มต้นโปรแกรม และจะไม่หายไปจนกว่าโปรแกรมจะสิ้นสุด ตัวอย่างเช่น เมื่อโปรแกรมที่เขียนด้วยภาษา C ทำงาน พื้นที่ข้อมูลจะเก็บตัวแปรทั่วโลกหรือตัวแปรคงที่ที่ประกาศในโปรแกรมนั้น
- พื้นที่สแตก: พื้นที่หน่วยความจำชั่วคราวที่โปรแกรมใช้ โดยจะเก็บตัวแปรท้องถิ่นและพารามิเตอร์ที่เกี่ยวข้องกับการเรียกใช้ฟังก์ชัน จะถูกจัดสรรพร้อมกับการเรียกใช้ฟังก์ชัน และจะหายไปเมื่อฟังก์ชันสิ้นสุด ตัวอย่างเช่น เมื่อเรียกใช้ฟังก์ชันในภาษา C ตัวแปรท้องถิ่นหรือพารามิเตอร์ที่ใช้ในฟังก์ชันนั้นจะถูกจัดสรรไปยังพื้นที่สแตก
- พื้นที่ฮีป: พื้นที่ที่ผู้ใช้สามารถจัดสรรและปลดปล่อยพื้นที่หน่วยความจำได้แบบไดนามิก ตัวอย่างเช่น ในภาษา C เมื่อใช้ฟังก์ชัน malloc() เพื่อจัดสรรหน่วยความจำแบบไดนามิก พื้นที่หน่วยความจำที่ถูกจัดสรรจะถูกเก็บไว้ในพื้นที่ฮีป
- สแตก: โครงสร้างข้อมูลแบบ LIFO (Last-In, First-Out) ตัวอย่างเช่น ปุ่ม 'ย้อนกลับ' ในคอมพิวเตอร์มีความคล้ายคลึงกับสแตก หน้าเว็บที่เคยเข้าชมจะถูกเก็บไว้ในสแตก และเมื่อกดปุ่ม 'ย้อนกลับ' หน้าเว็บที่ถูกเก็บไว้ล่าสุดจะถูกดึงออกมาแสดง
- คิว: โครงสร้างข้อมูลแบบ FIFO (First-In, First-Out) ตัวอย่างเช่น การรับบัตรคิวที่ธนาคารมีความคล้ายคลึงกับคิว ผู้ที่มาก่อนจะได้รับการบริการก่อน และผู้ที่มาทีหลังจะได้รับการบริการทีหลัง
- ทรี: โครงสร้างข้อมูลที่แสดงข้อมูลในรูปแบบลำดับชั้น ตัวอย่างเช่น DOM ทรีของ HTML มีความคล้ายคลึงกับทรี โครงสร้างของหน้าเว็บ HTML จะแสดงในรูปแบบทรี เริ่มจากโหนดรากคือแท็ก html และโหนดลูกจะแสดงตามลำดับ
- ฮีป: หนึ่งในโครงสร้างข้อมูลแบบทรีไบนารี แบ่งออกเป็นฮีปสูงสุดและฮีปต่ำสุด ตัวอย่างเช่น ในคิวลำดับความสำคัญ ข้อมูลที่มีลำดับความสำคัญสูงสุดจะอยู่ในโหนดรากของฮีป และข้อมูลที่มีลำดับความสำคัญถัดไปจะอยู่ในโหนดลูก นี่คือตัวอย่างของฮีปสูงสุด
- RDBMS: ฐานข้อมูลที่กำหนดและจัดการข้อมูลในรูปแบบโครงสร้างโดยใช้สคีมาที่เข้มงวด สามารถจัดเก็บข้อมูลแบบกระจายและแก้ไขได้ง่าย ตัวอย่างเช่น MySQL, Oracle, MS-SQL เป็นตัวอย่างทั่วไปของ RDBMS
- NoSQL: ฐานข้อมูลที่จัดเก็บและจัดการข้อมูลโดยใช้สคีมาที่ยืดหยุ่น เหมาะสำหรับการประมวลผลและจัดเก็บข้อมูลจำนวนมาก และมีการขยายตัวได้สูง ตัวอย่างเช่น MongoDB, Cassandra, HBase เป็นตัวอย่างทั่วไปของ NoSQL
[การเขียนโปรแกรมเชิงกระบวนการและการเขียนโปรแกรมเชิงวัตถุ]
- การเขียนโปรแกรมเชิงกระบวนการ: เทคนิคการเขียนโปรแกรมที่เน้นการประมวลผลแบบลำดับ ภาษาเช่น C, Pascal เป็นภาษาเชิงกระบวนการ
- การเขียนโปรแกรมเชิงวัตถุ: วิธีการจัดการข้อมูลและขั้นตอนโดยการผูกโยงเข้าด้วยกันในเชิงตรรกะโดยใช้แนวคิดของวัตถุ (Object) ภาษาเช่น Java, C++, Python เป็นภาษาเชิงวัตถุ ตัวอย่างเช่น ในโปรแกรมจำลองรถยนต์ รถยนต์จะแสดงเป็นวัตถุ คุณสมบัติ (สี ความเร็ว ฯลฯ) ของรถยนต์จะแสดงเป็นข้อมูล และฟังก์ชัน (การขับ การหยุด ฯลฯ) ของรถยนต์จะแสดงเป็นเมธอด
[Overriding และ Overloading]
- Overriding: การกำหนดเมธอดของคลาสแม่ใหม่ในคลาสลูกเพื่อใช้งาน เมื่อคลาสลูกเรียกใช้เมธอดของคลาสแม่ เมธอดที่กำหนดใหม่ในคลาสลูกจะทำงานแทนเมธอดของคลาสแม่ ตัวอย่างเช่น เมธอด toString() ใน Java เป็นตัวอย่างของ Overriding
- Overloading: การกำหนดเมธอดที่มีชื่อเดียวกันหลายๆ เมธอด แต่มีชนิดและจำนวนพารามิเตอร์ที่ต่างกัน เพื่อตอบสนองต่อการเรียกใช้ที่หลากหลาย เมธอดต่างๆ ที่มีชื่อเดียวกันแต่พารามิเตอร์ต่างกันจะทำงาน ตัวอย่างเช่น เมธอด print() ใน Java เป็นตัวอย่างของ Overloading
[อัลกอริทึมการแทนที่หน้า]
- FIFO: แทนที่หน้าที่โหลดลงในหน่วยความจำทางกายภาพนานที่สุด คอมพิวเตอร์ 'ปิดหน้าต่างในแถบงาน' ก็มีความคล้ายคลึงกับอัลกอริทึม FIFO โปรแกรมที่เปิดใช้งานเป็นอันดับแรกจะแสดงเป็นอันดับสุดท้ายและปิดใช้งานคล้ายกัน
- LRU: แทนที่หน้าที่ไม่ได้ใช้งานมานานที่สุด แอป 'ปิดแอป' ที่ปิดแอปที่ไม่ได้ใช้งานบ่อยและเก่าที่สุดก็มีความคล้ายคลึงกับอัลกอริทึม LRU
- LFU: แทนที่หน้าที่มีจำนวนการอ้างอิงน้อยที่สุด ตัวอย่างเช่น ฟังก์ชัน 'ปิดแท็บ' ในเบราว์เซอร์ที่ปิดแท็บที่เปิดใหม่และใช้งานน้อยที่สุดก็มีความคล้ายคลึงกับอัลกอริทึม LFU
- MFU: แทนที่หน้าที่มีจำนวนการอ้างอิงมากที่สุด อัลกอริทึม MFU มักจะไม่ค่อยได้ใช้งาน
- กระบวนการ: หน่วยงานการทำงานที่ได้รับการจัดสรรจากระบบปฏิบัติการ หมายถึงโปรแกรม หากกระบวนการหลายๆ กระบวนการทำงานพร้อมกัน แต่ละกระบวนการจะได้รับการจัดสรรพื้นที่หน่วยความจำและ CPU ที่เป็นอิสระ
- เธรด: หน่วยงานการทำงานที่ทำงานภายในกระบวนการ โดยจะใช้ทรัพยากรที่กระบวนการได้รับการจัดสรรร่วมกัน ตัวอย่างเช่น ในเว็บเบราว์เซอร์ แต่ละแท็บจะทำงานเป็นเธรด ไม่ใช่กระบวนการ
- เลเยอร์แอปพลิเคชัน: เลเยอร์ที่เชื่อมต่อผู้ใช้กับเครือข่าย โดยโปรโตคอล เช่น HTTP, FTP, SMTP จะอยู่ในเลเยอร์นี้
- เลเยอร์นำเสนอ: เลเยอร์ที่กำหนดรูปแบบการแสดงข้อมูล โดยโปรโตคอล เช่น JPEG, MPEG, SSL จะอยู่ในเลเยอร์นี้
- เลเยอร์เซสชัน: เลเยอร์ที่จัดการเซสชันระหว่างสองระบบที่สื่อสารกัน
- เลเยอร์การขนส่ง: เลเยอร์ที่รับผิดชอบในการส่งข้อมูล โดยโปรโตคอล เช่น TCP, UDP จะอยู่ในเลเยอร์นี้
- เลเยอร์เครือข่าย: เลเยอร์ที่กำหนดเส้นทางสำหรับส่งข้อมูล โดยโปรโตคอล เช่น IP, ICMP จะอยู่ในเลเยอร์นี้
- เลเยอร์ลิงก์ข้อมูล: เลเยอร์ที่ส่งข้อมูลโดยใช้ที่อยู่ทางกายภาพ (MAC Address) โดยโปรโตคอล เช่น Ethernet, Token Ring จะอยู่ในเลเยอร์นี้
- เลเยอร์ทางกายภาพ: เลเยอร์ที่รับผิดชอบการเชื่อมต่อทางกายภาพและสื่อกลางการส่งข้อมูล
- TCP: บริการแบบเชื่อมต่อ ส่งข้อมูลอย่างน่าเชื่อถือโดยใช้ 3-way handshaking และ 4-way handshaking เพื่อสร้างหรือยกเลิกการเชื่อมต่อ ตัวอย่างเช่น การเข้าสู่ระบบหรือการส่งไฟล์ในเว็บไซต์จะใช้ TCP
- UDP: บริการแบบไม่เชื่อมต่อ ไม่ต้องผ่านขั้นตอนการส่งสัญญาณสำหรับการส่งข้อมูล ความน่าเชื่อถือของข้อมูลต่ำ แต่มีความเร็วในการประมวลผลสูง ตัวอย่างเช่น การสตรีมวิดีโอหรือเกมออนไลน์ มักจะใช้ UDP เนื่องจากความเร็วในการส่งข้อมูลมีความสำคัญ
ความคิดเห็น0