ข้อสอบภาคเฉพาะ: คอมพิวเตอร์ระดับวิชาชีพ นายร้อยตำรวจ สายประมวลผล (คอมพิวเตอร์)

เขียนโปรแกรม โครงสร้างข้อมูล อัลกอริทึม ฐานข้อมูล SQL เครือข่าย subnet ความปลอดภัยไซเบอร์ ระบบปฏิบัติการ วิศวกรรมซอฟต์แวร์ และกฎหมายคอมพิวเตอร์

พร้อมเฉลย 50 ข้อ
เริ่มฝึกภาคเฉพาะ: คอมพิวเตอร์ระดับวิชาชีพตรวจทันทีทีละข้อ • มีเทคนิคติวเตอร์ทุกข้อ • ระบบเลือกข้อที่ยังไม่เคยทำก่อน

หัวข้อที่ออกสอบ

การเขียนโปรแกรม · 8ฐานข้อมูลและ SQL · 7เครือข่ายคอมพิวเตอร์ · 6ความมั่นคงปลอดภัยสารสนเทศ · 6โครงสร้างข้อมูล · 5ระบบเลขฐานและการแทนข้อมูล · 4ระบบปฏิบัติการ · 4วิศวกรรมซอฟต์แวร์ · 3อัลกอริทึมและ Big-O · 3กฎหมายคอมพิวเตอร์และไซเบอร์ · 3คลาวด์และเวอร์ชวลไลเซชัน · 1

ตัวอย่างข้อสอบภาคเฉพาะ: คอมพิวเตอร์ระดับวิชาชีพ พร้อมเฉลย

ข้อ 1
การเขียนโปรแกรม

พิจารณาโค้ดภาษา Python ต่อไปนี้ s = 0 for i in range(1, 10, 2): s = s + i print(s) ผลลัพธ์ที่แสดงออกทางหน้าจอคือข้อใด

  1. ก. 16
  2. ข. 20
  3. ค. 25
  4. ง. 45
ดูเฉลย เทคนิคติวเตอร์ และวิธีคิด

คำตอบ: ค. 25

เทคนิคติวเตอร์ — เห็นโจทย์แบบนี้ ตอบแบบนี้

เห็น range(a, b, step) → ไล่ค่าจาก a เพิ่มทีละ step และ "ไม่รวม b" เสมอ (ค่าสุดท้ายต้องน้อยกว่า b) เช็กเร็ว: จำนวนรอบ = (b − a) ÷ step แล้วปัดเศษขึ้น ถ้านับรอบได้ก่อนจะตัดตัวเลือกที่นับเกิน/ขาดไป 1 รอบได้ทันที

วิธีคิด

จับใจความโจทย์: ต้องรู้ว่า range(1, 10, 2) ให้ค่าอะไรบ้าง แล้วนำมาบวกสะสมใน s range(เริ่ม, หยุด, ก้าว) เริ่มที่ 1 เพิ่มทีละ 2 และหยุด "ก่อน" ถึง 10 → i = 1, 3, 5, 7, 9 s = 1 + 3 + 5 + 7 + 9 = 25 → print(s) แสดง 25 ตัวหลอก 16 มาจากตัด 9 ทิ้ง (คิดว่าค่าสุดท้ายไม่ถูกนับ) ได้ 1 + 3 + 5 + 7 ตัวหลอก 20 มาจากคิดเป็นเลขคู่ 2 + 4 + 6 + 8 และ 45 มาจากบวก 1 ถึง 9 ทุกตัว (ลืมก้าวทีละ 2)

ข้อ 2
โครงสร้างข้อมูล

สแตก (Stack) ว่างเปล่า ทำคำสั่งตามลำดับดังนี้ push(4), push(9), pop(), push(1), push(6), pop(), push(8) เมื่อทำครบแล้ว ข้อมูลในสแตกเรียงจากล่างสุดขึ้นไปบนสุดเป็นอย่างไร

  1. ก. 4, 1, 8
  2. ข. 1, 6, 8
  3. ค. 4, 9, 8
  4. ง. 4, 6, 8
ดูเฉลย เทคนิคติวเตอร์ และวิธีคิด

คำตอบ: ก. 4, 1, 8

เทคนิคติวเตอร์ — เห็นโจทย์แบบนี้ ตอบแบบนี้

เห็น Stack / push / pop → LIFO ตัวที่เข้าล่าสุดออกก่อน (เหมือนกองจาน) · เห็น Queue / enqueue / dequeue → FIFO ตัวที่เข้าก่อนออกก่อน (เหมือนแถวรอคิว) วาดกล่องแนวตั้งแล้วเขียนตามทีละคำสั่ง เร็วและแม่นกว่าคิดในหัว

วิธีคิด

จับใจความโจทย์: สแตกทำงานแบบ LIFO (Last In, First Out) คำสั่ง pop() เอาตัวที่ใส่ "ล่าสุด" ออก push(4), push(9) → [4, 9] pop() เอา 9 ออก → [4] push(1), push(6) → [4, 1, 6] pop() เอา 6 ออก → [4, 1] แล้ว push(8) → [4, 1, 8] ตัวหลอก 1, 6, 8 คือผลถ้าเป็นคิว (FIFO) ที่เอาตัวแรกออก · 4, 9, 8 และ 4, 6, 8 มาจาก pop ผิดตัว

ข้อ 3
โครงสร้างข้อมูล

การค้นหาในกราฟแบบกว้างก่อน (Breadth-First Search: BFS) นิยมใช้โครงสร้างข้อมูลใดเก็บโหนดที่รอการเยี่ยม

  1. ก. คิว (Queue)
  2. ข. สแตก (Stack)
  3. ค. ต้นไม้ค้นหาแบบทวิภาค (BST)
  4. ง. ตารางแฮช (Hash Table)
ดูเฉลย เทคนิคติวเตอร์ และวิธีคิด

คำตอบ: ก. คิว (Queue)

เทคนิคติวเตอร์ — เห็นโจทย์แบบนี้ ตอบแบบนี้

เห็น BFS / ทีละระดับ / เส้นทางที่ผ่านจำนวนเส้นน้อยสุด → Queue · เห็น DFS / ย้อนรอย (backtracking) / recursion → Stack จำคู่: BFS คู่กับคิว (เข้าก่อนออกก่อน) · DFS คู่กับสแตก (เข้าหลังออกก่อน)

วิธีคิด

จับใจความโจทย์: BFS เยี่ยมโหนดทีละระดับ คือเยี่ยมเพื่อนบ้านทุกตัวของโหนดปัจจุบันก่อน แล้วค่อยไปชั้นถัดไป โหนดที่ค้นพบก่อนต้องถูกเยี่ยมก่อน = เข้าก่อนออกก่อน (FIFO) จึงใช้คิว ตัวหลอก สแตก (LIFO) ใช้กับการค้นหาแบบลึกก่อน (DFS) · BST ใช้ค้นหาค่าที่เรียงลำดับ · ตารางแฮชอาจใช้จำว่าโหนดใดเยี่ยมแล้ว (visited) แต่ไม่ได้กำหนดลำดับการเยี่ยม

ข้อ 4
อัลกอริทึมและ Big-O

ข้อใดกล่าวถึงการค้นหาแบบทวิภาค (Binary Search) ได้ถูกต้อง

  1. ก. ใช้ได้กับข้อมูลที่ยังไม่เรียง และกรณีแย่ที่สุดเป็น O(log n)
  2. ข. ข้อมูลต้องเรียงลำดับก่อน และกรณีแย่ที่สุดเป็น O(n)
  3. ค. ข้อมูลต้องเรียงลำดับก่อน และกรณีแย่ที่สุดเป็น O(log n)
  4. ง. ใช้ได้กับข้อมูลที่ยังไม่เรียง และกรณีแย่ที่สุดเป็น O(n log n)
ดูเฉลย เทคนิคติวเตอร์ และวิธีคิด

คำตอบ: ค. ข้อมูลต้องเรียงลำดับก่อน และกรณีแย่ที่สุดเป็น O(log n)

เทคนิคติวเตอร์ — เห็นโจทย์แบบนี้ ตอบแบบนี้

เห็น "ตัดครึ่ง/แบ่งครึ่งทุกรอบ" → Big-O เป็น log n · เห็น Binary Search → ต้องคู่กับคำว่า "ข้อมูลเรียงแล้ว" เสมอ ตัวเลือกไหนบอกว่า Binary Search ใช้กับข้อมูลที่ไม่เรียงได้ ตัดทิ้งทันที

วิธีคิด

จับใจความโจทย์: ต้องรู้ทั้ง "เงื่อนไขก่อนใช้" และ "ความเร็ว" ของ Binary Search Binary Search เทียบกับค่ากึ่งกลาง แล้วตัดข้อมูลทิ้งครึ่งหนึ่งทุกรอบ จึงใช้ได้กับข้อมูลที่เรียงแล้วเท่านั้น ตัดครึ่งไปเรื่อย ๆ จาก n จนเหลือ 1 ใช้ประมาณ log₂ n รอบ → O(log n) ตัวหลอกที่บอกว่าใช้กับข้อมูลไม่เรียงได้ผิด เพราะจะตัดทิ้งผิดฝั่ง · O(n) คือ Linear Search ที่ไล่ทีละตัว

ข้อ 5
ระบบเลขฐานและการแทนข้อมูล

เลขฐานสิบหก 3A7₁₆ เมื่อแปลงเป็นเลขฐานสอง (แบ่งกลุ่มละ 4 บิต) จะได้ข้อใด

  1. ก. 0011 1010 0111
  2. ข. 0011 1100 0111
  3. ค. 0111 1010 0011
  4. ง. 0011 1010 0110
ดูเฉลย เทคนิคติวเตอร์ และวิธีคิด

คำตอบ: ก. 0011 1010 0111

สูตรที่ใช้

เลขฐานสิบหก 1 หลัก = เลขฐานสอง 4 บิต (ค่าประจำบิต 8, 4, 2, 1)

1

แยกเลขฐานสิบหกทีละหลัก และเปลี่ยนตัวอักษร A–F เป็นค่า 10–15

2

แปลงแต่ละหลักเป็นเลขฐานสอง โดยเติม 0 ด้านหน้าให้ครบ 4 บิต

3

นำกลุ่ม 4 บิตมาเรียงต่อกันตามลำดับหลักเดิม

⚠ ห้ามสลับลำดับกลุ่ม และห้ามตัดเลข 0 ด้านหน้าของกลุ่มที่อยู่ตรงกลาง

เทคนิคติวเตอร์ — เห็นโจทย์แบบนี้ ตอบแบบนี้

เห็นการแปลงฐาน 16 ↔ ฐาน 2 → ไม่ต้องผ่านฐานสิบ ใช้ 1 หลักฐาน 16 = 4 บิต (ค่าประจำบิต 8-4-2-1) จำ A = 10, B = 11, C = 12, D = 13, E = 14, F = 15 · ฐาน 8 ↔ ฐาน 2 ใช้วิธีเดียวกันแต่กลุ่มละ 3 บิต

วิธีคิด

จับใจความโจทย์: เลขฐานสิบหก 1 หลัก = เลขฐานสอง 4 บิตพอดี จึงแปลงทีละหลักแล้วนำมาต่อกัน 3 = 0011 A = 10 = 1010 7 = 0111 เรียงต่อกันตามลำดับเดิม: 0011 1010 0111 ตัวหลอก 0011 1100 0111 แปลง A ผิดเป็น 12 (ซึ่งคือ C) · 0111 1010 0011 สลับลำดับหลักหน้า-หลัง · 0011 1010 0110 แปลง 7 ผิดเป็น 6