투잡뛰는 개발 노동자

[สำหรับผู้ไม่ใช่ผู้เชี่ยวชาญ ด้านการพัฒนาซอฟต์แวร์ เพื่อความอยู่รอด] 14. สรุปเนื้อหาสัมภาษณ์ทางเทคนิคที่ผู้พัฒนาซอฟต์แวร์มือใหม่ถามบ่อย

สร้าง: 2024-04-03

สร้าง: 2024-04-03 20:38

ผู้ที่ไม่ใช่ผู้เชี่ยวชาญเฉพาะทาง การเอาชีวิตรอดในฐานะนักพัฒนา


#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 และ NoSQL]

  • 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 ที่เป็นอิสระ
  • เธรด: หน่วยงานการทำงานที่ทำงานภายในกระบวนการ โดยจะใช้ทรัพยากรที่กระบวนการได้รับการจัดสรรร่วมกัน ตัวอย่างเช่น ในเว็บเบราว์เซอร์ แต่ละแท็บจะทำงานเป็นเธรด ไม่ใช่กระบวนการ

[OSI 7Layer]

  • เลเยอร์แอปพลิเคชัน: เลเยอร์ที่เชื่อมต่อผู้ใช้กับเครือข่าย โดยโปรโตคอล เช่น HTTP, FTP, SMTP จะอยู่ในเลเยอร์นี้
  • เลเยอร์นำเสนอ: เลเยอร์ที่กำหนดรูปแบบการแสดงข้อมูล โดยโปรโตคอล เช่น JPEG, MPEG, SSL จะอยู่ในเลเยอร์นี้
  • เลเยอร์เซสชัน: เลเยอร์ที่จัดการเซสชันระหว่างสองระบบที่สื่อสารกัน
  • เลเยอร์การขนส่ง: เลเยอร์ที่รับผิดชอบในการส่งข้อมูล โดยโปรโตคอล เช่น TCP, UDP จะอยู่ในเลเยอร์นี้
  • เลเยอร์เครือข่าย: เลเยอร์ที่กำหนดเส้นทางสำหรับส่งข้อมูล โดยโปรโตคอล เช่น IP, ICMP จะอยู่ในเลเยอร์นี้
  • เลเยอร์ลิงก์ข้อมูล: เลเยอร์ที่ส่งข้อมูลโดยใช้ที่อยู่ทางกายภาพ (MAC Address) โดยโปรโตคอล เช่น Ethernet, Token Ring จะอยู่ในเลเยอร์นี้
  • เลเยอร์ทางกายภาพ: เลเยอร์ที่รับผิดชอบการเชื่อมต่อทางกายภาพและสื่อกลางการส่งข้อมูล

[TCP และ UDP]

  • TCP: บริการแบบเชื่อมต่อ ส่งข้อมูลอย่างน่าเชื่อถือโดยใช้ 3-way handshaking และ 4-way handshaking เพื่อสร้างหรือยกเลิกการเชื่อมต่อ ตัวอย่างเช่น การเข้าสู่ระบบหรือการส่งไฟล์ในเว็บไซต์จะใช้ TCP
  • UDP: บริการแบบไม่เชื่อมต่อ ไม่ต้องผ่านขั้นตอนการส่งสัญญาณสำหรับการส่งข้อมูล ความน่าเชื่อถือของข้อมูลต่ำ แต่มีความเร็วในการประมวลผลสูง ตัวอย่างเช่น การสตรีมวิดีโอหรือเกมออนไลน์ มักจะใช้ UDP เนื่องจากความเร็วในการส่งข้อมูลมีความสำคัญ

ความคิดเห็น0

[ออบเจกต์] บทที่ 1 วัตถุ การออกแบบอธิบายถึงความสำคัญและแนวคิดของการออกแบบเชิงวัตถุในงานพัฒนาซอฟต์แวร์ พร้อมยกตัวอย่างแอปพลิเคชันจำหน่ายตั๋วเพื่อเน้นย้ำถึงความจำเป็นของการออกแบบเชิงวัตถุ
제이온
제이온
제이온
제이온

April 28, 2024

[Java] คอลเล็กชันที่ซิงโครไนซ์ เทียบกับ คอลเล็กชันแบบพร้อมใช้งานบทความนี้จะอธิบายถึงความแตกต่างระหว่างคอลเล็กชันที่ซิงโครไนซ์ (Vector, Hashtable) และคอลเล็กชันแบบพร้อมใช้งาน (ConcurrentHashMap เป็นต้น) ใน Java พร้อมทั้งอธิบายประเภทของ Concurrent Collection ช่วยแก้ไขปัญหาการทำงานพร้อมกันและปรับปรุงประสิทธิภาพ
제이온
제이온
제이온
제이온

April 25, 2024

[1 วัน] สร้างเกมสนุกๆ กับ AIขอแนะนำบันทึกการพัฒนาเกมดันเจี้ยน 100 ชั้นที่สร้างด้วย Javascript, HTML, CSS โดยได้รับความช่วยเหลือจาก AI ปัจจุบันกำลังพัฒนาส่วนต่างๆ เช่น เมือง ดันเจี้ยน และระบบต่อสู้ โดยได้เสร็จสิ้นการสร้างระบบสร้างตัวละครและระบบคลังของแล้ว พรุ่งนี้จะเริ่มพัฒนาต่อสู้
꼬반
꼬반
꼬반
꼬반

November 8, 2024

กฎพื้นฐานของ CSS (Normal flow, BFC, IFC)บทความนี้จะอธิบายเกี่ยวกับกฎพื้นฐานของ CSS อย่าง Normal flow, BFC และ IFC พร้อมทั้งให้ความรู้ที่จำเป็นในการสร้างโครงสร้าง Layout และการออกแบบเว็บไซต์แบบ Responsive
뚠뚠멍의 생각들
뚠뚠멍의 생각들
뚠뚠멍의 생각들
뚠뚠멍의 생각들

September 7, 2024

เรื่องราวการพัฒนาโครงการ LegiNote ตอนที่ 2 - สแตกเทคโนโลยีและเวิร์กเกอร์บทความตอนที่สองของเรื่องราวการพัฒนาโครงการ LegiNote ซึ่งจะกล่าวถึงการพัฒนาเวิร์กเกอร์โดยใช้ภาษา Go เนื้อหาครอบคลุมการนำไปใช้ในการรวบรวมและอัปเดตข้อมูล รวมถึงการออกแบบโครงสร้างของโครงการ
statpan
statpan
statpan
statpan

August 20, 2024

2024-11-18 สิ่งที่สนใจอย่างหลากหลายในชีวิต : ฉันใช้เวลาว่างทำอะไรบ้าง?บทความบล็อกที่เขียนเมื่อวันที่ 18 พฤศจิกายน 2024 บทความนี้กล่าวถึงงานอดิเรก การลงทุน การเรียนรู้ และกิจวัตรประจำวันต่างๆ ของผู้เขียน รวมถึงความกังวลเกี่ยวกับการเพิ่มประสิทธิภาพการทำงานผ่านระบบอัตโนมัติ
Charles Lee
Charles Lee
Charles Lee
Charles Lee

November 19, 2024