เลือกภาษาโปรแกรม
👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ
ใช้ภาษาที่ถนัดที่สุดในการสัมภาษณ์ ไม่ใช่ภาษาที่บริษัทใช้
คำถามยอดฮิตคือ "ควรสัมภาษณ์ด้วยภาษาอะไร" คำตอบสั้น ๆ คือ ภาษาที่คุณคล่องที่สุด เพราะตอนสัมภาษณ์คุณต้องคิด algorithm และเขียนโค้ดให้ถูกภายในเวลาจำกัด ไม่ใช่เวลามานั่งนึก syntax
ภาษาที่นิยมใช้สัมภาษณ์
| ภาษา | ข้อดีในการสัมภาษณ์ |
|---|---|
| Python | syntax สั้น มี built-in เยอะ เขียนเร็ว เหมาะกับ algorithm มาก |
| Java | พิมพ์เยอะกว่า แต่ collections ครบ นิยมในบริษัทใหญ่ |
| JavaScript/TypeScript | เหมาะถ้าสาย frontend/full-stack ระวังเรื่อง async และ number |
| C++ | เร็ว มี STL ครบ แต่ต้องระวัง memory และ syntax ยุบยับ |
| Go | เรียบง่าย แต่ standard library ด้าน DS น้อยกว่า ต้องเขียนเองบ่อย |
ข้อยกเว้น
ถ้าตำแหน่งระบุภาษาเฉพาะ (เช่นรับ iOS ต้อง Swift) หรือบริษัทขอให้ใช้ภาษาของ stack เขา ก็ต้องทำตามนั้น แต่กรณีทั่วไป algorithm interview เลือกได้อิสระ
สิ่งที่ต้องคล่องในภาษานั้น
- โครงสร้างข้อมูลพื้นฐาน: array/list, hash map, set, stack, queue, heap
- การ sort และ custom comparator
- การวน loop และ recursion อย่างมั่นใจ
- การจัดการ string (split, substring, แปลงชนิดข้อมูล)
Python idioms ที่ใช้บ่อยในสัมภาษณ์
ถ้าเลือก Python (แนะนำสำหรับ algorithm) ควรคล่อง built-in เหล่านี้ เพราะช่วยให้เขียนสั้นและเร็วในเวลาจำกัด
python
from collections import defaultdict, Counter, deque
import heapq
count = Counter(nums) # นับความถี่ทันที
graph = defaultdict(list) # dict ที่ default เป็น list
q = deque([start]) # queue O(1) ทั้งสองหัว
heapq.heappush(h, x) # min-heap
# เรียงด้วย custom key
items.sort(key=lambda p: (-p[1], p[0]))
# เปิด/ปิด list comprehension และ enumerate
for i, v in enumerate(nums):
...
seen = set() # ค้นหา O(1)หลีกเลี่ยงภาษาที่ไม่คล่อง
อย่าเลือกภาษาเพราะ "ดูเท่" หรือคิดว่าบริษัทชอบ ถ้ายังไม่คล่องจริงจะเสียเวลานึก syntax กลางคัน — เลือกภาษาที่เขียนได้ลื่นที่สุดเสมอ