นี่คือโพสต์ที่แปลด้วย AI
[ไม่มีพื้นฐานทางวิศวกรรมคอมพิวเตอร์ การอยู่รอดในฐานะนักพัฒนา] 14. สรุปเนื้อหาการสัมภาษณ์ทางเทคนิคที่นักพัฒนาหน้าใหม่ถามบ่อย
- ภาษาที่เขียน: ภาษาเกาหลี
- •
- ประเทศอ้างอิง: ทุกประเทศ
- •
- เทคโนโลยีสารสนเทศ
เลือกภาษา
สรุปโดย AI ของ durumis
- บทความนี้รวบรวมคำถามเกี่ยวกับเทคโนโลยีที่ถามบ่อยในการสัมภาษณ์งานนักพัฒนาหน้าใหม่ เพื่อให้ความรู้เกี่ยวกับหัวข้อต่างๆ เช่น พื้นที่หน่วยความจำหลัก โครงสร้างข้อมูล ฐานข้อมูล การเขียนโปรแกรม อัลกอริทึมการเปลี่ยนหน้า กระบวนการและเธรด OSI 7 ชั้น TCP และ UDP
- บทความนี้ให้คำอธิบายแนวคิดโดยย่อเกี่ยวกับแต่ละหัวข้อพร้อมกับตัวอย่างที่เป็นที่รู้จักเพื่อให้ง่ายต่อการทำความเข้าใจ
- บทความนี้ให้ข้อมูลที่มีประโยชน์ที่จะช่วยให้นักพัฒนาได้รับความรู้ทางเทคนิคพื้นฐานที่จำเป็นในการเตรียมตัวสัมภาษณ์งาน
ไม่ใช่สาขา แต่เป็นนักพัฒนา
#14. เนื้อหาการสัมภาษณ์ทางเทคนิคที่นักพัฒนาใหม่มักถาม
[พื้นที่ของหน่วยความจำหลัก]
- พื้นที่รหัส: พื้นที่ที่รหัสต้นฉบับของโปรแกรมถูกเก็บไว้ ซึ่ง CPU จะดึงคำสั่ง (แหล่งที่มา ฟังก์ชัน คำสั่งควบคุม) ที่เก็บไว้ในพื้นที่รหัสมาประมวลผล ตัวอย่างเช่น เมื่อโปรแกรมที่เขียนด้วยภาษา C ถูกดำเนินการ พื้นที่รหัสจะเก็บรหัสต้นฉบับของโปรแกรมนี้
- พื้นที่ข้อมูล: พื้นที่ที่เก็บตัวแปรทั่วโลกและตัวแปรคงที่ ซึ่งถูกจัดสรรเมื่อโปรแกรมเริ่มต้นและจะไม่ถูกทำลายจนกว่าโปรแกรมจะสิ้นสุด ตัวอย่างเช่น เมื่อโปรแกรมที่เขียนด้วยภาษา C ถูกดำเนินการ พื้นที่ข้อมูลจะเก็บตัวแปรทั่วโลกหรือตัวแปรคงที่ที่ประกาศไว้ในโปรแกรมนี้
- พื้นที่สแต็ก: พื้นที่หน่วยความจำชั่วคราวที่โปรแกรมใช้ ซึ่งจะเก็บตัวแปรเฉพาะที่และพารามิเตอร์ที่เกี่ยวข้องกับการเรียกใช้ฟังก์ชัน จะถูกจัดสรรเมื่อเรียกใช้ฟังก์ชันและจะถูกทำลายเมื่อฟังก์ชันสิ้นสุด ตัวอย่างเช่น เมื่อเรียกใช้ฟังก์ชันที่เขียนด้วยภาษา C ตัวแปรเฉพาะที่ หรือพารามิเตอร์ที่ใช้ในฟังก์ชันนั้นจะถูกจัดสรรในพื้นที่สแต็ก
- พื้นที่ฮีป: พื้นที่ที่ผู้ใช้จัดสรรและปลดปล่อยหน่วยความจำแบบไดนามิก ตัวอย่างเช่น เมื่อใช้ฟังก์ชัน malloc() ในภาษา C เพื่อจัดสรร หน่วยความจำแบบไดนามิก พื้นที่หน่วยความจำที่จัดสรรจะถูกเก็บไว้ในพื้นที่ฮีป
[โครงสร้างข้อมูล]
- สแต็ก: โครงสร้างข้อมูลแบบ 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 เป็นภาษาแบบเชิงวัตถุ ตัวอย่างเช่น ในโปรแกรมจำลองรถยนต์ รถยนต์จะถูกแสดงเป็นวัตถุ ซึ่งคุณลักษณะของรถยนต์ (สี, ความเร่ง ฯลฯ) จะถูกแสดงเป็นข้อมูล และฟังก์ชันที่รถยนต์ดำเนินการ (วิ่ง, หยุด ฯลฯ) จะถูกแสดงเป็นวิธีการ
[การแทนที่และการโหลดเกิน]
- การแทนที่: การกำหนดนิยามวิธีการใหม่ในคลาสลูกเพื่อใช้ในคลาสพ่อ เมื่อเรียกใช้เมธอดของคลาสพ่อในคลาสลูก เมธอดที่กำหนดนิยามใหม่ในคลาสลูก จะถูกดำเนินการแทนเมธอดของคลาสพ่อ ตัวอย่างเช่น เมธอด toString() ใน Java เป็นตัวอย่างของการแทนที่
- การโหลดเกิน: การกำหนดนิยามเมธอดที่มีชื่อเดียวกันหลาย ๆ เมธอด แต่มีชนิดและจำนวนพารามิเตอร์ที่แตกต่างกัน เพื่อตอบสนองการเรียกใช้ ที่หลากหลาย เมธอดหลาย ๆ เมธอดที่มีชื่อเดียวกันแต่พารามิเตอร์ต่างกันจะทำงาน ตัวอย่างเช่น เมธอด print() ใน Java เป็นตัวอย่างของการโหลดเกิน
[อัลกอริทึมการเปลี่ยนหน้า]
- FIFO: เปลี่ยนหน้าที่โหลดในหน่วยความจำฟิสิกัลนานที่สุด ตัวอย่างเช่น 'ปิดในแถบงาน' ในคอมพิวเตอร์คล้ายกับอัลกอริทึม FIFO โปรแกรมที่เรียกใช้ครั้งแรกจะเป็นโปรแกรมที่แสดงผลล่าสุดและปิด
- LRU: เปลี่ยนหน้าที่ไม่ได้ใช้มานานที่สุด ตัวอย่างเช่น 'แอพปิดการทำงาน' ในแอพที่ไม่ได้ใช้บ่อยที่สุดและเก่าที่สุดคล้ายกับอัลกอริทึม LRU
- LFU: เปลี่ยนหน้าที่มีจำนวนการอ้างอิงน้อยที่สุด ตัวอย่างเช่น 'ปิดแท็บ' ในเบราว์เซอร์ซึ่งจะปิดแท็บที่เปิดใหม่และไม่ได้ใช้บ่อยที่สุด คล้ายกับอัลกอริทึม LFU
- MFU: เปลี่ยนหน้าที่มีจำนวนการอ้างอิงมากที่สุด อัลกอริทึม MFU แทบไม่ถูกใช้
[กระบวนการและเธรด]
- กระบวนการ: หน่วยงานของงานที่ดำเนินการซึ่งได้รับการจัดสรรจากระบบปฏิบัติการหมายถึงโปรแกรม หากกระบวนการหลาย ๆ กระบวนการ ทำงานพร้อมกัน แต่ละกระบวนการจะได้รับหน่วยความจำและ CPU ที่เป็นอิสระ
- เธรด: หน่วยงานที่ดำเนินการในกระบวนการ โดยแชร์ทรัพยากรที่ได้รับการจัดสรรจากกระบวนการและทำงาน ตัวอย่างเช่น ในเว็บเบราว์เซอร์ แต่ละแท็บจะทำงานเป็นเธรด ไม่ใช่กระบวนการ
[OSI 7Layer]
- เลเยอร์แอปพลิเคชัน: เลเยอร์ที่เชื่อมต่อผู้ใช้กับเครือข่าย ซึ่งรวมถึงโปรโตคอลเช่น HTTP, FTP, SMTP
- เลเยอร์การนำเสนอ: เลเยอร์ที่กำหนดวิธีการแสดงข้อมูล ซึ่งรวมถึงโปรโตคอลเช่น JPEG, MPEG, SSL
- เลเยอร์เซสชัน: เลเยอร์ที่จัดการเซสชันระหว่างสองระบบที่สื่อสารกัน
- เลเยอร์การขนส่ง: เลเยอร์ที่รับผิดชอบในการส่งข้อมูล ซึ่งรวมถึงโปรโตคอลเช่น TCP, UDP
- เลเยอร์เครือข่าย: เลเยอร์ที่ตั้งค่าเส้นทางสำหรับการส่งข้อมูล ซึ่งรวมถึงโปรโตคอลเช่น IP, ICMP
- เลเยอร์ข้อมูลลิงก์: เลเยอร์ที่ส่งข้อมูลโดยใช้ที่อยู่ทางกายภาพ (ที่อยู่ MAC) ซึ่งรวมถึงโปรโตคอลเช่น Ethernet, Token Ring
- เลเยอร์ทางกายภาพ: เลเยอร์ที่รับผิดชอบในการเชื่อมต่อทางกายภาพและการสื่อสารผ่านสื่อส่ง
[TCP และ UDP]
- TCP: บริการแบบเชื่อมต่อ ซึ่งเป็นวิธีการส่งข้อมูลอย่างน่าเชื่อถือโดยใช้การจับมือ 3 ทางและการจับมือ 4 ทางเพื่อสร้างหรือยกเลิกการเชื่อมต่อ ตัวอย่างเช่น การเข้าสู่ระบบเว็บไซต์หรือการส่งไฟล์จะใช้ TCP
- UDP: บริการแบบไม่เชื่อมต่อ ซึ่งไม่มีขั้นตอนการส่งสัญญาณสำหรับการส่งข้อมูล และความน่าเชื่อถือของข้อมูลจะต่ำ แต่มีความเร็วในการประมวลผลสูง ตัวอย่างเช่น สตรีมมิ่งวิดีโอหรือเกมออนไลน์ เนื่องจากความเร็วในการส่งข้อมูลเป็นสิ่งสำคัญ จึงใช้ UDP