หน่วย
1. ความรู้เบื้องต้นเกี่ยวกับปัญญาประดิษฐ์และวินัยการตรวจสอบในสาขาวิศวกรรมคอมพิวเตอร์ 2. การวิเคราะห์ความต้องการและการออกแบบซอฟต์แวร์ 3. การเขียนโค้ดและการจับคู่การเขียนโปรแกรมด้วย AI 4. การทบทวนโค้ด การปรับโครงสร้างใหม่ และหนี้ทางเทคนิค 5. การดีบักและการแก้ไขปัญหา 6. ทดสอบระบบอัตโนมัติและการประกันคุณภาพ 7. โครงสร้างข้อมูล อัลกอริธึม และประสิทธิภาพ 8. ฐานข้อมูล SQL และการสร้างแบบจำลองข้อมูล 9. API สถาปัตยกรรมระบบ และคลาวด์ 10. รหัสที่ปลอดภัย การสร้างแบบจำลองภัยคุกคาม และการวิเคราะห์ช่องโหว่ 11. เอกสารประกอบ DevOps และ CI/CD อัตโนมัติ 12. ขอบเขต: ความปลอดภัย ความเป็นส่วนตัว ใบอนุญาต และจริยธรรม
หน่วย 12 / 12

ขอบเขต: ความปลอดภัย ความเป็นส่วนตัว ใบอนุญาต และจริยธรรม

กำไร:

  • ความสามารถในการรับรู้และตรวจสอบว่า AI อาจสร้าง API ปลอม รหัสที่ไม่ปลอดภัย และเนื้อหาที่มีลิขสิทธิ์
  • ความสามารถในการจัดการการใช้งาน AI ภายในขอบเขตการรักษาความลับของซอร์สโค้ด ข้อมูลส่วนบุคคล และนโยบายองค์กร
  • การทำความเข้าใจว่าความรับผิดชอบสูงสุดในการปฏิบัติตามใบอนุญาต ความปลอดภัย และจริยธรรมยังคงเป็นของวิศวกร

การสอบโมดูล

1. ในฐานะวิศวกรคอมพิวเตอร์ เมื่อทำงานกับเครื่องมือสร้างโค้ด AI ความรับผิดชอบสูงสุดในข้อใดต่อไปนี้ควรคงอยู่กับมนุษย์เสมอ

  • A) การอนุมัติขั้นสุดท้ายเกี่ยวกับความถูกต้อง การรักษาความปลอดภัย และการทบทวนและการทดสอบโค้ดที่นำไปใช้จริง ✔
  • B) การสร้างโครงกระดูกโค้ดแรกสำหรับฟังก์ชัน
  • C) จัดทำรายการข้อเสนอแนะสำหรับชื่อตัวแปร
  • D) การเตรียมข้อความร่างสำหรับความคิดเห็นของโค้ด

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

2. AI ได้สร้างฟังก์ชันสำหรับคุณและดูเหมือนว่าจะทำงานในเส้นทางที่มีความสุข ขั้นตอนที่ดีที่สุดก่อนที่จะนำไปผลิตคืออะไร?

  • A) เนื่องจากฟังก์ชันนี้ดูเหมือนว่าจะใช้งานได้ ให้นำมันเข้าสู่การใช้งานจริงโดยตรง
  • B) ตรวจสอบพฤติกรรมโดยการเขียนและรันการทดสอบหน่วยขนาดเล็กที่มี Edge Case ✔
  • C) เพียงแค่ดูจำนวนบรรทัดของฟังก์ชัน
  • D) ทำให้ชื่อของฟังก์ชันมีคำอธิบายมากขึ้น

คำอธิบาย: การปรากฏตัวในการทำงานไม่ได้หมายความว่าถูกต้อง การเขียนและการเรียกใช้การทดสอบหน่วยขนาดเล็กที่ครอบคลุม Edge Case เช่น อินพุตว่าง ศูนย์ ลบ ค่าที่มีขนาดใหญ่มาก และไม่ตรงกันจะตรวจสอบพฤติกรรมที่แท้จริงของฟังก์ชันโดยไม่ต้องย้ายไปยังสภาพแวดล้อมจริง

3. AI แนะนำวิธีการที่เรียกว่า 'array.sortStable()' ซึ่งไม่มีในภาษาของคุณและอธิบายอย่างชัดเจน การดำเนินการที่ถูกต้องอันดับแรกที่ต้องทำคืออะไร?

  • A) ใช้วิธีการโดยตรงเพราะ AI ดูมั่นใจ
  • B) กำหนดวิธีการด้วยตนเองและใช้ชื่อของมันให้ตรงกันทุกประการ
  • C) การตรวจสอบการมีอยู่ของวิธีการจากเอกสารอย่างเป็นทางการของภาษา/ห้องสมุด ✔
  • D) ปิดคำเตือนคอมไพเลอร์และดำเนินการต่อ

คำอธิบาย: โมเดลภาษาสามารถสร้างชื่อไลบรารี แพ็คเกจ หรือวิธีการที่ไม่มีอยู่จริงได้ (ภาพหลอน) API ที่นำเสนอแต่ละรายการควรได้รับการตรวจสอบทุกคำโดยเทียบกับเอกสารอย่างเป็นทางการและปัจจุบันของภาษาหรือห้องสมุด ถ้าไม่รวมอยู่ในเอกสารก็ไม่ควรใช้

4. คุณต้องการวางซอร์สโค้ดที่เป็นความลับของบริษัทของคุณและคีย์ API ที่ฝังไว้ในเครื่องมือ AI สาธารณะแล้วขอความช่วยเหลือ วิธีใดคือแนวทางที่ถูกต้องที่สุด?

  • A) การวางโค้ดเช่นเดียวกับคีย์ API เพื่อความรวดเร็ว
  • B) แค่ลบชื่อบริษัทและแบ่งปันอย่างอื่นก็เพียงพอแล้ว
  • C) แชร์โค้ดแล้วขอให้ AI ลบออก
  • D) การลบความลับและตรรกะที่ซ่อนอยู่และลดปัญหาให้เป็นตัวอย่างที่เป็นตัวแทนหรือการใช้เครื่องมือของสถาบัน ✔

คำอธิบาย: ซอร์สโค้ดลับและข้อมูลประจำตัว (คีย์ API, รหัสผ่าน, สตริงการเชื่อมต่อ); มีความเสี่ยงทั้งในด้านความลับและความปลอดภัยของบริษัท จำเป็นต้องดึงความลับและตรรกะทางธุรกิจที่ซ่อนอยู่ออก และลดปัญหาให้เหลือเพียงตัวอย่างที่ไม่เปิดเผยตัวตน/เป็นตัวแทน หรือใช้เครื่องมือการแบ่งปันระดับองค์กร/ที่ไม่ใช่ข้อมูล

5. AI กล่าวว่าความซับซ้อนของฟังก์ชันการค้นหาที่เขาเขียนคือ O(n); แต่มีสองลูปซ้อนกันในโค้ด พฤติกรรมทางวิศวกรรมที่ถูกต้องคืออะไร?

  • A) วิเคราะห์โค้ดด้วยตนเองและแยกความซับซ้อนด้วยตนเอง แล้ววัดหากจำเป็น ✔
  • B) ยอมรับ O(n) และดำเนินการต่อเนื่องจาก AI กล่าว
  • C) สมมติว่าจำนวนรอบไม่เกี่ยวข้องกับประสิทธิภาพการทำงาน
  • D) เพียงเปลี่ยนชื่อของฟังก์ชัน

คำอธิบาย: ความซับซ้อนของเวลา (Big-O) แสดงให้เห็นว่าจำนวนการดำเนินการเพิ่มขึ้นอย่างไรเมื่ออินพุตเพิ่มขึ้น โดยปกติแล้ว 2 ลูปที่ซ้อนกันจะหมายถึง O(n^2) การกล่าวอ้างความซับซ้อนของ AI ควรได้รับการตรวจสอบโดยการวิเคราะห์โค้ดด้วยตนเอง และการวัดด้วยอินพุตที่เพิ่มขึ้นหากจำเป็น การอาศัยข้อเรียกร้องทำให้เกิดสมมติฐานที่ผิดพลาดในการปฏิบัติงาน

6. AI สร้างโค้ดที่แทรกอินพุตของผู้ใช้ลงในแบบสอบถาม SQL โดยตรงโดยการเชื่อมข้อความเข้าด้วยกัน ปัญหาหลักและแนวทางแก้ไขที่ถูกต้องคืออะไร?

  • ก) ไม่มีปัญหา; การรวมข้อความเป็นวิธีที่เร็วที่สุด
  • B) มีความเสี่ยงของการฉีด SQL; ควรใช้แบบสอบถามแบบกำหนดพารามิเตอร์ (คำสั่งที่เตรียมไว้) ที่แยกอินพุต✔
  • C) เพียงแปลงแบบสอบถามเป็นตัวพิมพ์ใหญ่ก็เพียงพอแล้ว
  • D) การเขียนแบบสอบถามให้สั้นลงจะช่วยแก้ปัญหาได้

คำอธิบาย: การเพิ่มข้อมูลเข้าของผู้ใช้โดยตรงลงในข้อความสืบค้นจะสร้างช่องโหว่ในการแทรก SQL ผู้โจมตีสามารถแก้ไขแบบสอบถามด้วยการป้อนข้อมูล วิธีแก้ไขที่ถูกต้องคือการใช้แบบสอบถามแบบกำหนดพารามิเตอร์ (คำสั่งที่เตรียมไว้) ที่แยกอินพุตออกจากข้อความแบบสอบถาม นี่เป็นหนึ่งในข้อผิดพลาดด้านความปลอดภัยที่พลาดบ่อยที่สุดในโค้ด AI

7. คุณมีเวลาจำกัดในการตรวจสอบโค้ดที่ AI สร้างขึ้น ประเด็นใดควรจัดลำดับความสำคัญได้ดีที่สุด?

  • A) เฉพาะรายละเอียดรูปแบบ เช่น การเยื้องและการเว้นวรรค
  • B) เฉพาะความยาวของชื่อตัวแปร
  • C) ความถูกต้องเชิงตรรกะ ช่องโหว่ และพฤติกรรมของ Edge Case ✔
  • D) เฉพาะจำนวนบรรทัดทั้งหมดของไฟล์เท่านั้น

คำอธิบาย: ความเสี่ยงสูงสุดในการตรวจสอบโค้ด ปัญหาเหล่านี้คือปัญหาที่ก่อให้เกิดอันตรายร้ายแรง เช่น ข้อผิดพลาดเชิงตรรกะ ช่องโหว่ด้านความปลอดภัย และการรั่วไหลของข้อมูลที่เป็นความลับ ปัญหารูปแบบและสไตล์ได้รับการแก้ไขด้วยเครื่องมืออัตโนมัติ ความสนใจหลักของมนุษย์ควรมุ่งเน้นไปที่ความแม่นยำ ความปลอดภัย และพฤติกรรม Edge Case

8. คุณต้องการให้ AI แก้จุดบกพร่อง ข้อมูลใดจะช่วยให้ AI ค้นหาสาเหตุได้ดีที่สุด

  • A) แค่พูดว่า 'โค้ดใช้งานไม่ได้ แก้ไขมัน'
  • B) เพียงระบุชื่อไฟล์
  • C) เพียงพูดผลลัพธ์ที่คาดหวังโดยไม่มีข้อความแสดงข้อผิดพลาด
  • D) ระบุข้อความแสดงข้อผิดพลาดแบบเต็ม การติดตามสแต็ก รหัสที่เกี่ยวข้อง และตัวอย่างการทำซ้ำขั้นต่ำ ✔

คำอธิบาย: เพื่อให้การแก้ไขจุดบกพร่องมีประสิทธิภาพ จำเป็นต้องแจ้งข้อความแสดงข้อผิดพลาดแบบเต็ม การติดตามสแต็ก ข้อมูลโค้ดที่เกี่ยวข้อง และตัวอย่างที่เล็กที่สุดที่สามารถทำซ้ำได้ซึ่งก่อให้เกิดข้อผิดพลาดแก่ AI ข้อความที่คลุมเครือว่า 'ใช้งานไม่ได้' บังคับให้ AI เดาและให้คำแนะนำแบบครอบคลุม

9. การทดสอบหน่วยทั้งหมดที่ผลิตโดย AI ผ่านการทดสอบครั้งแรก ความเสี่ยงใดที่ไม่ควรมองข้ามในสถานการณ์นี้?

  • A) การทดสอบอาจยืนยันสถานะปัจจุบันของโค้ด แต่ไม่ใช่พฤติกรรมที่เกิดขึ้นจริง/ที่คาดหวัง ✔
  • B) รหัสไม่มีข้อผิดพลาดอย่างแน่นอนเนื่องจากผ่านการทดสอบทั้งหมด
  • C) รับประกันคุณภาพหากจำนวนการทดสอบมีขนาดใหญ่
  • ง) การผ่านการทดสอบพิสูจน์ว่าความคุ้มครองครบถ้วน

คำอธิบาย: การทดสอบอาจตรวจสอบพฤติกรรมปัจจุบัน (อาจเป็นข้อผิดพลาด) ของโค้ด ไม่ใช่พฤติกรรมที่ตั้งใจไว้ หรืออาจไม่มีข้อยืนยันที่มีความหมายใด ๆ และผ่านเสมอไป หากต้องการดูว่าการทดสอบกำลังตรวจสอบความคาดหวังที่แท้จริง จำเป็นต้องทำลายโค้ดอย่างมีสติและยืนยันว่าการทดสอบเปลี่ยนเป็นสีแดง

10. AI ได้สร้างบล็อกโค้ดสำเร็จรูปสำหรับปัญหาให้คุณ คุณสงสัยว่าโค้ดอาจถูกคัดลอกแบบคำต่อคำจากโครงการโอเพ่นซอร์ส แนวทางใดคือแนวทางที่ถูกต้อง?

  • A) การใช้ลิขสิทธิ์โดยไม่ต้องคิดเพราะโค้ดใช้งานได้
  • B) ตรวจสอบแหล่งที่มา/ใบอนุญาตของรหัส เขียนใหม่หากจำเป็น และปฏิบัติตามนโยบายองค์กร ✔
  • C) เพียงเปลี่ยนชื่อตัวแปรและพิจารณาปัญหาที่ได้รับการแก้ไข
  • D) สมมติว่าใบอนุญาตเกี่ยวข้องกับบริษัทขนาดใหญ่เท่านั้น

คำอธิบาย: AI สามารถทำซ้ำรหัสที่มีลิขสิทธิ์/ได้รับอนุญาตในข้อมูลการฝึกอบรมแบบคำต่อคำ การละเมิดใบอนุญาตในผลิตภัณฑ์เชิงพาณิชย์ก่อให้เกิดความเสี่ยงทางกฎหมายที่ร้ายแรง จำเป็นต้องตรวจสอบแหล่งที่มาและใบอนุญาตของรหัส เขียนใหม่ด้วยคำพูดของคุณเองหากจำเป็น และปฏิบัติตามนโยบายการออกใบอนุญาตของสถาบัน

11. AI แนะนำให้คุณเปลี่ยนไปใช้สถาปัตยกรรมไมโครเซอร์วิสสำหรับโปรเจ็กต์ของคุณทันที แนวทางทางวิศวกรรมที่เหมาะสมที่สุดเมื่อประเมินข้อเสนอนี้คืออะไร

  • A) แบ่งระบบทั้งหมดออกเป็นไมโครเซอร์วิสทันทีเนื่องจาก AI แนะนำ
  • B) สมมติว่าไมโครเซอร์วิสเป็นตัวเลือกที่ดีที่สุดเสมอ
  • C) ประเมินข้อเสนอตามความต้องการที่แท้จริง ปริมาณงาน โครงสร้างทีม และยอดคงเหลือบวก-ลบ ✔
  • D) การตัดสินใจขึ้นอยู่กับความนิยมของสถาปัตยกรรมเท่านั้น

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

12. AI สร้างเอกสาร README และ API ที่มีประสิทธิภาพสำหรับโค้ดของคุณ แต่จุดสิ้นสุดและพารามิเตอร์บางอย่างไม่ตรงกันในโค้ด พฤติกรรมที่ถูกต้องคืออะไร?

  • A) การเผยแพร่เอกสารตามที่เป็นอยู่เนื่องจากข้อความคล่องแคล่ว
  • B) เพียงแก้ไขชื่อเรื่องและปล่อยให้ส่วนที่เหลือเป็นไปตามที่เป็นอยู่
  • C) การเพิ่มเอกสารเข้าคลังสินค้าโดยไม่ต้องอ่าน
  • D) เปรียบเทียบจุดสิ้นสุดและพารามิเตอร์แต่ละรายการกับโค้ดจริง และแก้ไขจุดปลายและพารามิเตอร์ที่ไม่ตรงกัน ✔

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

13. วิธีการป้อนข้อมูลใดที่เหมาะกับเอาต์พุตคุณภาพสูงสุดเมื่อขอโค้ดจาก AI

  • A) ระบุภาษา/เวอร์ชัน สัญญาอินพุต-เอาท์พุต ข้อจำกัด และสถานการณ์ข้อผิดพลาดอย่างชัดเจน ✔
  • B) แค่พูดว่า 'เขียนโค้ดที่ใช้งานได้ให้ฉันหน่อย'
  • C) เขียนคำขอที่สั้นที่สุดโดยไม่ต้องให้บริบทใดๆ
  • D) เพียงระบุจำนวนโค้ดที่จะมีกี่บรรทัด

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

14. AI สร้างการกำหนดค่าสำหรับไปป์ไลน์ CI/CD (การรวม/ปรับใช้อย่างต่อเนื่อง) ของคุณและฝังรหัสผ่านฐานข้อมูลไว้ในข้อความธรรมดา ข้อใดคือการแก้ไขที่ถูกต้อง?

  • A) ปล่อยให้รหัสผ่านเป็นข้อความธรรมดาเพราะใช้งานได้
  • B) การย้ายความลับออกผ่านตัวแปรสภาพแวดล้อมหรือเครื่องมือการจัดการความลับ โดยไม่ใส่ข้อความธรรมดาในที่เก็บ ✔
  • C) ย้ายรหัสผ่านไปที่บรรทัดแสดงความคิดเห็นเท่านั้น
  • D) การเปลี่ยนชื่อไฟล์ช่วยแก้ปัญหาได้

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