Notes & software courses · Free to learn
Aph's Blog
On this page

พื้นฐานที่ต้องแม่น (Technical Fundamentals)

👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ

ความรู้เชิงปฏิบัติที่บริษัทไอทีเกือบทุกที่ในไทยคาดหวัง — สำหรับงานส่วนใหญ่ สำคัญกว่าการทำ LeetCode

Tech Interview Handbook และคู่มือสาย FAANG ส่วนใหญ่เน้น algorithm แต่ความจริงคือบริษัทไอทีส่วนใหญ่ในไทย (SI, outsource, agency, enterprise และ startup จำนวนมาก) ไม่ได้ออกโจทย์ LeetCode ยาก ๆ สิ่งที่ถามจริงคือพื้นฐานเชิงปฏิบัติด้านล่างนี้ ซึ่งถ้าแม่นจะได้เปรียบกว่าการท่องโจทย์ algorithm เป็นร้อยข้อ

Git & การทำงานเป็นทีม

แทบทุกบริษัทใช้ Git และทำงานผ่าน pull request ผู้สัมภาษณ์มักถามว่าเคยใช้ workflow แบบไหน และดูจาก commit history ในโจทย์ take-home ด้วย ต้องเข้าใจ branch, commit, merge, การแก้ conflict และมารยาทการรีวิวโค้ด

bash
# workflow พื้นฐานที่ใช้จริงทุกวัน
git checkout -b feature/login      # แตก branch ใหม่จาก main
git add . && git commit -m "feat: add login form"
git push -u origin feature/login   # push ขึ้น remote
# เปิด Pull Request บน GitHub/GitLab แล้วให้เพื่อนรีวิว

# เมื่อ main มีการเปลี่ยนแปลง ให้ดึงมา sync ก่อน merge
git checkout main && git pull
git checkout feature/login && git rebase main   # หรือ git merge main
  • เขียน commit message ให้สื่อความหมาย (เช่นแบบ Conventional Commits: feat/fix/refactor)
  • 1 PR ควรโฟกัสเรื่องเดียว ไม่ใหญ่เกินจนรีวิวยาก
  • เวลา conflict ให้อ่านทั้งสองฝั่งให้เข้าใจก่อนเลือกรวม อย่าลบของคนอื่นทิ้งมั่ว
  • รีวิว PR คนอื่นด้วยน้ำเสียงสร้างสรรค์ ชมในสิ่งที่ดี เสนอแนะในสิ่งที่ปรับได้

HTTP & REST API

งานสายเว็บ/แอปเกือบทั้งหมดต้องคุยกับ API ต้องเข้าใจว่า HTTP method แต่ละตัวใช้ทำอะไร, status code สื่อความหมายอะไร และ REST ออกแบบ endpoint อย่างไรให้สม่ำเสมอ

Methodใช้ทำอะไรIdempotent?
GETอ่านข้อมูล ไม่เปลี่ยนแปลง stateใช่
POSTสร้างข้อมูลใหม่ไม่
PUTแทนที่ข้อมูลทั้งก้อนใช่
PATCHแก้บางส่วนของข้อมูลไม่เสมอไป
DELETEลบข้อมูลใช่
Status Codeความหมาย
200 OK / 201 Createdสำเร็จ (201 = สร้างใหม่สำเร็จ)
400 Bad Requestclient ส่งข้อมูลผิดรูปแบบ
401 / 403ยังไม่ login / login แล้วแต่ไม่มีสิทธิ์
404 Not Foundไม่พบทรัพยากรที่ขอ
500 Internal Server Errorฝั่ง server พัง

หลัก REST: ใช้ noun เป็น resource (เช่น /users/123/orders) ไม่ใช่ verb, ใช้ HTTP method สื่อ action, ส่ง/รับเป็น JSON และคืน status code ให้ตรงความหมาย

ฐานข้อมูล & SQL

SQL คือทักษะที่ถูกถามบ่อยที่สุดอย่างหนึ่งในสัมภาษณ์งานไทย ต้องเขียน query ที่มี JOIN, GROUP BY, และเข้าใจว่า INDEX ช่วยให้ query เร็วขึ้นอย่างไร

sql
-- หาลูกค้าที่มียอดสั่งซื้อรวมเกิน 1000 บาท
SELECT u.name, SUM(o.total) AS total_spent
FROM users u
JOIN orders o ON o.user_id = u.id
WHERE o.status = 'paid'
GROUP BY u.id, u.name
HAVING SUM(o.total) > 1000
ORDER BY total_spent DESC;
  • JOIN — เชื่อมหลายตาราง (INNER vs LEFT JOIN ต่างกันอย่างไร)
  • INDEX — ทำให้ค้นหาเร็วขึ้น แต่ทำให้ write ช้าลงเล็กน้อย ใส่ที่คอลัมน์ที่ค้นบ่อย
  • Normalization — แยกข้อมูลไม่ให้ซ้ำซ้อน (รู้จัก 1NF–3NF พอสังเขป)
  • Transaction — กลุ่มคำสั่งที่ต้องสำเร็จทั้งหมดหรือไม่สำเร็จเลย (ACID)

ส่วนการเลือก SQL vs NoSQL และการ scale ฐานข้อมูล ดูเพิ่มในหน้า System Design

OOP & หลักการออกแบบ

ภาษาที่ใช้ในองค์กรไทยจำนวนมาก (Java, C#, PHP, TypeScript) เป็น OOP ต้องอธิบาย 4 เสาหลักได้ และรู้จักหลัก SOLID แบบเข้าใจ ไม่ใช่ท่องชื่อ

  • Encapsulation — ซ่อนรายละเอียดภายใน เปิดเฉพาะที่จำเป็น
  • Inheritance — สืบทอดคุณสมบัติจาก class แม่ (ใช้เท่าที่จำเป็น)
  • Polymorphism — object ต่างชนิดตอบสนอง method เดียวกันได้ต่างกัน
  • Abstraction — มองภาพรวมโดยไม่ต้องรู้รายละเอียดการทำงานภายใน
  • SOLID — โดยเฉพาะ Single Responsibility และ Dependency Inversion ที่ถูกถามบ่อย

การเขียน Test

ในโจทย์ take-home การมี test คือสิ่งที่ทำให้คุณเด่นกว่าคนอื่นทันที เพราะแสดงว่าคิดถึงความถูกต้องและการดูแลโค้ดระยะยาว

  • Unit test — ทดสอบฟังก์ชัน/หน่วยเล็ก ๆ แยกกัน (เร็ว เขียนเยอะได้)
  • Integration test — ทดสอบหลายส่วนทำงานร่วมกัน เช่น API + database
  • เขียน test ที่ครอบ edge case ไม่ใช่แค่ happy path
  • เครื่องมือยอดนิยม: Jest/Vitest (JS), pytest (Python), JUnit (Java)

ความปลอดภัยเบื้องต้น (Security)

ไม่ต้องเป็นผู้เชี่ยวชาญ แต่ต้องรู้ช่องโหว่พื้นฐานที่นักพัฒนาทุกคนต้องป้องกัน เพราะถูกถามบ่อยขึ้นเรื่อย ๆ

  • SQL Injection — ใช้ parameterized query เสมอ อย่าต่อ string เข้า query ตรง ๆ
  • XSS — escape/​sanitize ข้อมูลจากผู้ใช้ก่อนแสดงผลบนหน้าเว็บ
  • Authentication vs Authorization — ยืนยันว่าเป็นใคร (login) ต่างจากมีสิทธิ์ทำอะไร (role/permission)
  • เก็บรหัสผ่านด้วยการ hash (bcrypt/argon2) ไม่เก็บเป็น plain text เด็ดขาด
  • ห้าม commit secret/API key ลง git ให้ใช้ environment variable แทน
ทำไมส่วนนี้สำคัญกว่าที่คิด (บริบทไทย)

บริษัทไทยสาย SI, outsource, agency และ enterprise ส่วนใหญ่ออกสัมภาษณ์จากพื้นฐานเหล่านี้ + โจทย์งานจริง มากกว่า algorithm ยาก ๆ ถ้าเป้าหมายไม่ใช่ big-tech ต่างชาติ ให้ลงน้ำหนักที่หน้านี้และหน้า สัมภาษณ์เชิงปฏิบัติ มากกว่าการไล่ทำ LeetCode