สัมภาษณ์เทคนิค คือกระบวนการประเมินทักษะของนักพัฒนาผ่านชุดสัมภาษณ์และงานปฏิบัติ ในการพัฒนาโมบายรวมถึงการตรวจสอบความรู้แพลตฟอร์ม (Android SDK, UIKit, SwiftUI) อัลกอริทึมและโครงสร้างข้อมูล รูปแบบสถาปัตยกรรม (MVVM, Clean Architecture, MVI) และการออกแบบระบบของแอปพลิเคชันโมบาย บริษัทขนาดใหญ่จัด 3 ถึง 5 รอบ เวลาในการจ้างงานเฉลี่ย 4-6 สัปดาห์ ตามรายงาน LinkedIn Talent Report 2025 ความต้องการวิศวกร iOS และ Android เพิ่มขึ้น 34% ในสองปี
ประเด็นสำคัญ
สัมภาษณ์เทคนิค คือกระบวนการประเมินความสามารถทางวิชาชีพที่มีโครงสร้าง รวมถึงการตรวจสอบทักษะแข็ง (ความรู้เทคนิค) และทักษะอ่อน (การสื่อสาร การทำงานเป็นทีม) รอบสัมภาษณ์มาตรฐานสำหรับนักพัฒนาโมบายมี 3-5 รอบ ใช้เวลาทั้งหมด 4-6 ชั่วโมง อัตราการผ่านเทียบกับใบสมัครเริ่มต้นอยู่ที่ 2-5% ในบริษัทเทคโนโลยีขนาดใหญ่
กระบวนการจ้างงานในการพัฒนาโมบายแตกต่างจากการพัฒนาเว็บ: มีคำถามเฉพาะแพลตฟอร์มเพิ่มเติม — วงจรชีวิตของ Activity/Fragment, ARC และการจัดการหน่วยความจำใน Swift, โมเดลเธรดดิ้ง (Main Thread, Dispatch Queue, Coroutines), คำขอเครือข่ายและการแคชข้อมูล นักพัฒนา Android ต้องรู้ Jetpack Compose, Room, WorkManager, Dagger/Hilt นักพัฒนา iOS — SwiftUI, Core Data, Combine, URLSession ความแตกต่างของข้อกำหนดเพิ่มขึ้นตามประสบการณ์: สำหรับตำแหน่ง Senior จะเพิ่มการออกแบบระบบและสถาปัตยกรรมทั้งแอปพลิเคชัน
โครงสร้างสัมภาษณ์ขึ้นอยู่กับระดับ สำหรับตำแหน่ง Junior ความรู้พื้นฐานภาษาและแพลตฟอร์มก็เพียงพอ (1-2 รอบ) นักพัฒนา Middle ผ่าน 2-3 รอบพร้อมส่วนอัลกอริทึม สัมภาษณ์ Senior รวม 4-5 รอบ: อัลกอริทึม สถาปัตยกรรมแอปพลิเคชันโมบาย การออกแบบระบบ สัมภาษณ์เชิงพฤติกรรม และสัมภาษณ์สุดท้ายกับ VPE (รองประธานฝ่ายวิศวกรรม) หรือ CTO
การคัดกรอง HR — ขั้นตอนแรกใช้เวลา 20-30 นาที ผู้สรรหาตรวจสอบความสอดคล้องของประสบการณ์กับข้อกำหนดของตำแหน่ง ปรึกษาเกี่ยวกับเงื่อนไขการทำงาน ความคาดหวังเงินเดือน และแรงจูงใจของผู้สมัคร ในขั้นตอนนี้สิ่งสำคัญคือต้องนำเสนอประสบการณ์อย่างชัดเจน: โครงการ สแต็กเทคโนโลยี ความสำเร็จในเมตริก (ลดเวลาโหลด ลดอัตราคราซ เร่งความเร็วบิลด์) การคัดกรอง HR ไม่ตรวจสอบความรู้เทคนิค แต่คัดผู้สมัครออกถึง 40% เนื่องจากไม่ตรงตามข้อกำหนดทางการ
หลังจากการคัดกรองคือ สัมภาษณ์อัลกอริทึม — ขั้นตอนสำคัญสำหรับบริษัทส่วนใหญ่ ใช้เวลา 45-90 นาที ผู้สมัครได้รับงาน 1-2 งานเกี่ยวกับอัลกอริทึมและโครงสร้างข้อมูล โซลูชันเขียนบนบอร์ดออนไลน์ (Codility, HackerRank, CoderPad) หรือบนกระดาษ ไม่เพียงแค่ความถูกต้อง แต่ยังรวมถึงความเร็วในการคิด ความสามารถในการถามคำถามชี้แจง และการปรับโซลูชันให้เหมาะสม ตาม interviewing.io (2025) 73% ของผู้สมัครล้มเหลวในขั้นตอนอัลกอริทึมนี้
รอบสถาปัตยกรรม ทดสอบความสามารถในการออกแบบแอปพลิเคชันโมบาย ผู้สมัครถูกขอให้ออกแบบแอปพลิเคชัน (รายการสิ่งที่ต้องทำ, แอปส่งข้อความ, ตัวรวบรวมข่าว, บริการสตรีมมิ่ง) การเลือกรูปแบบสถาปัตยกรรม (MVP, MVVM, MVI, VIPER), การจัดระเบียบชั้น (Presentation, Domain, Data), การทำงานกับ DI (Dagger, Hilt, Swinject) และการนำทางจะถูกประเมิน สำหรับ Android — ความรู้ Jetpack Navigation, สำหรับ iOS — รูปแบบ Coordinator และ SwiftUI NavigationStack
สัมภาษณ์เชิงพฤติกรรม ประเมินทักษะอ่อน: ความสามารถในการทำงานเป็นทีม แก้ไขข้อขัดแย้ง โต้แย้งการตัดสินใจ ใช้วิธี STAR (Situation, Task, Action, Result) — ผู้สมัครอธิบายสถานการณ์เฉพาะจากประสบการณ์ ตัวอย่างคำถาม: “เล่าเกี่ยวกับบั๊กที่ยากที่สุดที่คุณพบและแก้ไข” รอบสุดท้าย กับหัวหน้าทีมหรือ VPE ทดสอบความคิดเชิงกลยุทธ์และความเหมาะสมทางวัฒนธรรมกับบริษัท
งานอัลกอริทึม เป็นองค์ประกอบบังคับในการสัมภาษณ์ในบริษัทเทคโนโลยีขนาดใหญ่ (Google, Meta, Yandex, Tinkoff, Avito) เป้าหมายหลักคือการประเมินความสามารถในการแก้ปัญหา ไม่ใช่ความรู้ภาษา ผู้สมัครสามารถใช้ภาษาโปรแกรมใดก็ได้ — Kotlin สำหรับ Android และ Swift สำหรับ iOS เป็นที่นิยม หัวข้อทั่วไป: อาร์เรย์, ตารางแฮช, กราฟ, การเขียนโปรแกรมพลวัต, ต้นไม้ (Binary Tree, Trie, Segment Tree)
ตาม LeetCode (2025) เพื่อผ่านสัมภาษณ์อัลกอริทึมอย่างมั่นใจ ต้องแก้ 250-400 งาน หัวข้อหลักตามความถี่: Two Pointers (12%), Sliding Window (10%), DFS/BFS บนกราฟ (14%), Binary Search (8%), Dynamic Programming (18%), Hash Map / Set (15%) สัญกรณ์ Big O เป็นองค์ประกอบบังคับ: ผู้สมัครต้องอธิบายความซับซ้อนด้านเวลาและพื้นที่ของโซลูชัน และเสนอการปรับให้เหมาะสม
// LeetCode 1: Two Sum — ปัญหา HashMap คลาสสิก
fun twoSum(nums: IntArray, target: Int): IntArray {
// เก็บส่วนเติมเต็ม = target - nums[i] และ index ของมัน
val map = mutableMapOf<Int, Int>()
for (i in nums.indices) {
val complement = target - nums[i]
// ถ้าพบส่วนเติมเต็ม — พบคู่แล้ว
if (complement in map) {
return intArrayOf(map[complement]!!, i)
}
map[nums[i]] = i
}
throw IllegalArgumentException("No two sum solution")
}
// เวลา: O(n), พื้นที่: O(n)งาน Two Sum เป็นงานที่ได้รับความนิยมมากที่สุดในการสัมภาษณ์ (ตาม LeetCode มีมากกว่า 20 ล้านการส่ง) โซลูชัน O(n) ใช้ HashMap: สำหรับแต่ละองค์ประกอบ ตรวจสอบว่าผลต่าง target - nums[i] ปรากฏแล้วหรือไม่ ถ้าใช่ — คืนค่า index ถ้าไม่ — เก็บองค์ประกอบปัจจุบันใน HashMap โซลูชันง่าย O(n²) ด้วยลูปซ้อนสองชั้นถือว่าไม่ผ่านสำหรับตำแหน่ง Senior
คำถามแพลตฟอร์ม ในการสัมภาษณ์นักพัฒนาโมบายแบ่งเป็นสามส่วน: ความรู้พื้นฐานแพลตฟอร์ม การทำงานกับ UI และมัลติเธรดดิ้ง คำขอเครือข่ายและการจัดเก็บข้อมูล สำหรับ Android บังคับ: วงจรชีวิตของ Activity และ Fragment, ความแตกต่าง Fragment v1 vs Fragment v2, ActivityResult API (แทนที่ onActivityResult), ViewModel + StateFlow, Compose lifecycle สำหรับ iOS: วงจรชีวิตของ UIViewController, ARC (การนับอ้างอิงอัตโนมัติ), DispatchQueue และ OperationQueue, SwiftUI lifecycle (View — @State — @Binding — @ObservedObject)
คำถามทั่วไป: “คอลแบ็กวงจรชีวิตของ Activity ใดที่ถูกเรียกเมื่อหมุนหน้าจอ?” คำตอบที่ถูกต้อง: onPause → onStop → onDestroy → onCreate → onStart → onResume คำถามเพิ่มเติม: “จะบันทึกสถานะเมื่อหมุนได้อย่างไร?” — ผ่าน SavedStateHandle ใน ViewModel, onSaveInstanceState Bundle หรือ rememberSaveable ใน Jetpack Compose สำหรับ iOS: “เกิดอะไรขึ้นกับ UIViewController เมื่อเข้าสู่พื้นหลัง?” — viewWillDisappear → viewDidDisappear → didEnterBackground (AppDelegate)
| ส่วนประกอบ | Android | iOS |
|---|---|---|
| วงจรชีวิต | Activity: onCreate → onStart → onResume → onPause → onStop → onDestroy | UIViewController: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear |
| การบันทึกสถานะ | SavedStateHandle, onSaveInstanceState, rememberSaveable | Codable + UserDefaults, Core Data, @SceneStorage |
| มัลติเธรดดิ้ง | Coroutines (Dispatchers.Main, IO, Default) | GCD (DispatchQueue.main, .global, .background) |
| เลย์เอาต์ UI | Jetpack Compose (Modifier, @Composable) | SwiftUI (View, @ViewBuilder, Modifier) |
| การนำทาง | Jetpack Navigation Component, Cicerone, Decompose | NavigationStack, Coordinator, Router (RIBs) |
System Design Interview สำหรับนักพัฒนาโมบายทดสอบความสามารถในการออกแบบสถาปัตยกรรมของแอปพลิเคชันไคลเอนต์และการโต้ตอบกับเซิร์ฟเวอร์ งานมาตรฐาน: ออกแบบฟีดข่าว (เหมือน Instagram/TikTok), แชท (เหมือน Telegram), เครื่องเล่นวิดีโอ (เหมือน YouTube), แคชระดับแรก (L1 — ในหน่วยความจำ, L2 — ดิสก์) ใช้เวลา 60 นาที โครงสร้างของความคิดถูกประเมิน ไม่ใช่ปริมาณรายละเอียด
เทมเพลตคำตอบสำหรับ System Design: 1) Clarify requirements — ชี้แจงข้อกำหนดฟังก์ชัน (ฟีด, ถูกใจ, ความคิดเห็น, อัปโหลดรูปภาพ) และข้อกำหนดที่ไม่ใช่ฟังก์ชัน (ออฟไลน์, ความเร็วโหลด, การใช้แบตเตอรี่) 2) High-level design — วาดไดอะแกรมชั้น: UI Layer → ViewModel → Repository → Network / Cache / DB 3) Deep dive — ลงรายละเอียดส่วนประกอบสำคัญ เช่น กลไก การแบ่งหน้า (Paging 3 สำหรับ Android, Offset-based vs Cursor-based สำหรับ iOS) 4) Trade-offs — อภิปรายการประนีประนอม: แคช vs ความสดของข้อมูล, offline-first vs online-only
หัวข้อ System Design หลักสำหรับโมบาย: การแคช (LRU Cache, Disk Cache ที่มีขีดจำกัด), การทำงานกับรูปภาพ (Coil, Glide, SDWebImage — โหลด, แคช, ตัวยึดตำแหน่ง, ความคืบหน้า), การปรับปริมาณการรับส่งข้อมูลให้เหมาะสม (protobuf แทน JSON, การบีบอัด, Differ/GraphQL), การทำงานออฟไลน์ (Room + Sync Adapter, Core Data + iCloud, WorkManager สำหรับการซิงค์พื้นหลัง) Offline-first เป็นหนึ่งในหัวข้อที่พบบ่อยที่สุดสำหรับตำแหน่ง Senior
สำหรับ iOS มีคำถามเพิ่มเติมเกี่ยวกับ App Thinning, Slicing, On-Demand Resources และการปรับบิลด์ให้เหมาะสม สำหรับ Android — เกี่ยวกับ R8/ProGuard, App Bundles (AAB vs APK), Dynamic Delivery และ Minification คำถามสถาปัตยกรรม “จะใช้แคชรูปภาพที่มีขีดจำกัดหน่วยความจำได้อย่างไร?” ทดสอบความเข้าใจ LRU Cache (LinkedHashMap ตามลำดับการเข้าถึง), Disk LRU Cache (DiskLruCache ของ Jake Wharton) และชั้นแคชหน่วยความจำ Coil/Glide
การเตรียมตัวสัมภาษณ์ ต้องใช้แนวทางที่เป็นระบบ 4-8 สัปดาห์ก่อนสัมภาษณ์ที่วางแผนไว้ กลยุทธ์พื้นฐาน: 2 สัปดาห์สำหรับทบทวนทฤษฎี (ภาษา, แพลตฟอร์ม, อัลกอริทึม), 2-4 สัปดาห์สำหรับแก้งานอัลกอริทึม (100-300 งานบน LeetCode), 1-2 สัปดาห์สำหรับสัมภาษณ์จำลอง (Pramp, interview.io, กับเพื่อน) สำหรับตำแหน่ง Senior เพิ่มการเตรียม System Design (2-3 สัปดาห์) แผนนี้ให้อัตราการผ่าน 70-80% ในระดับเป้าหมาย
สำหรับนักพัฒนาโมบาย การเตรียมเฉพาะรวมถึง: อ่าน Android Developers Guide / iOS Developer Library, วิเคราะห์ซอร์สโค้ดของไลบรารียอดนิยม (Retrofit, OkHttp, Coil, Koin, Alamofire, Kingfisher), เขียนโปรเจกต์ส่วนตัวด้วย Clean Architecture และ CI/CD (GitHub Actions, Fastlane) เขียน แอปพลิเคชันตัวอย่าง บน GitHub ด้วยสถาปัตยกรรมแบบโมดูล, DI, การทดสอบ (Unit + UI + Snapshot) — สิ่งนี้จะแสดงความเข้าใจอย่างลึกซึ้งและกลายเป็นข้อโต้แย้งในการสัมภาษณ์
| สัปดาห์ | สิ่งที่ต้องทำ | ผลลัพธ์ |
|---|---|---|
| 1-2 | ทบทวนทฤษฎี: ภาษา (Kotlin/Swift), แพลตฟอร์ม (Android/iOS), อัลกอริทึม (Big O, โครงสร้างพื้นฐาน) | สรุปหัวข้อสำคัญ |
| 3-4 | LeetCode: 100-150 งาน, หัวข้อ: Arrays, Hash Maps, Trees, DFS/BFS, DP | แก้งานระดับ Medium ได้อย่างมั่นใจ |
| 5-6 | System Design: อ่าน “Designing Data-Intensive Applications”, ฝึก 5-7 การออกแบบ | เทมเพลตคำตอบ System Design พร้อมใช้ |
| 7-8 | สัมภาษณ์จำลอง (5-10 ครั้ง), ทบทวนคำถามแพลตฟอร์ม, คำถามเชิงพฤติกรรม | ความพร้อมเต็มที่สำหรับสัมภาษณ์จริง |
ข้อผิดพลาด 1: แก้ปัญหาอย่างเงียบๆ ผู้สมัครเขียนโค้ดเงียบๆ ไม่แสดงความคิดเห็นเกี่ยวกับกระบวนการคิด ผู้สัมภาษณ์ไม่สามารถประเมินกระบวนการแก้ปัญหาได้ วิธีที่ถูกต้อง: พูดแต่ละขั้นตอนออกมาดังๆ “ฉันเห็นว่างานนี้เป็นการค้นหาในกราฟ ฉันแนะนำให้ใช้ BFS เพราะเราต้องหาเส้นทางที่สั้นที่สุด” การสื่อสารเช่นนี้ทำให้ผู้สัมภาษณ์มีโอกาสแนะนําผู้สมัครเมื่อเกิดข้อผิดพลาด ซึ่งได้รับการประเมินในเชิงบวก
ข้อผิดพลาด 2: เขียนโค้ดทันที เริ่มเขียนโค้ดโดยไม่ชี้แจงข้อกำหนดและอภิปรายแนวทาง เป็นหนึ่งในสาเหตุหลักของความล้มเหลว ก่อนเขียนโค้ด: ชี้แจงข้อมูลเข้า/ออก, อภิปรายกรณีขอบ, เปรียบเทียบ 2-3 แนวทางพร้อมประเมิน Big O และหลังจากตกลงกับผู้สัมภาษณ์แล้วจึงเขียนโซลูชันที่เหมาะสมที่สุด รูปแบบที่ถูกต้อง: Clarify → High-level approach → Big O → Write code → Test with examples → Discuss trade-offs
ข้อผิดพลาด 3: ขาดความรู้แพลตฟอร์ม ผู้สมัครแก้ปัญหาอัลกอริทึมได้ดีแต่ไม่สามารถอธิบายความแตกต่างระหว่าง Activity และ Fragment หรือระหว่าง weak/unowned ใน Swift สําหรับตําแหน่งโมบาย ความรู้แพลตฟอร์มถูกประเมินเท่ากับอัลกอริทึม ศึกษา: ความแตกต่างของเวอร์ชัน SDK (compileSdk vs minSdk vs targetSdk), กฎ ProGuard/R8 สําหรับไลบรารียอดนิยม, Swift Concurrency (async/await, actors) และ MainActor ทุกสามคนที่สมัครตําแหน่ง iOS หนึ่งคนล้มเหลวในคําถามเกี่ยวกับ ARC
คำถามที่พบบ่อย
จำนวนรอบมาตรฐานคือ 3-5: การคัดกรอง HR (30 นาที), อัลกอริทึม (60 นาที), สถาปัตยกรรม/การออกแบบระบบ (60 นาที), สัมภาษณ์เชิงพฤติกรรม (45 นาที), รอบสุดท้ายกับหัวหน้าทีม (60 นาที) ในสตาร์ทอัพอาจมี 2-3 รอบ ในบริษัทใหญ่ (Google, Meta) — ถึง 6 รอบ ระยะเวลาทั้งหมด ของรอบสัมภาษณ์ — 2 ถึง 6 สัปดาห์ ขึ้นอยู่กับบริษัท
5 หัวข้ออันดับต้นๆ สำหรับสัมภาษณ์อัลกอริทึม: การเขียนโปรแกรมพลวัต (18% ของงาน), DFS/BFS บนกราฟ (14%), Two Pointers (12%), Sliding Window (10%), Binary Search (8%) สำหรับการผ่านสัมภาษณ์ FAANG แนะนำให้แก้ 250-400 งานบน LeetCode ระดับ Medium เป็นขั้นต่ำบังคับ สำหรับตำแหน่ง Senior เพิ่มงานเกี่ยวกับต้นไม้และคิวลำดับความสำคัญ
แผนหนึ่งเดือน: สัปดาห์ 1 — ทบทวนภาษาและแพลตฟอร์ม (Kotlin/Swift, ไลบรารีหลัก, วงจรชีวิต) สัปดาห์ 2 — LeetCode Medium (100 งาน, หัวข้อ: Arrays, Hash Maps, Trees) สัปดาห์ 3 — System Design สำหรับโมบาย (แคช, การแบ่งหน้า, offline-first) สัปดาห์ 4 — สัมภาษณ์จำลอง (อย่างน้อย 3 ครั้งบน Pramp หรือกับเพื่อนร่วมงาน) คำแนะนำสำคัญ: ทำสัมภาษณ์จำลองในเงื่อนไขใกล้เคียงจริง — กำหนดเวลา ผู้สัมภาษณ์ที่ไม่คุ้นเคย บอร์ดออนไลน์
Junior: 1-2 รอบ, อัลกอริทึมพื้นฐาน (reverse string, fizzbuzz, การท่องต้นไม้พื้นฐาน), คำถามเกี่ยวกับภาษาและพื้นฐานแพลตฟอร์ม Middle: 2-3 รอบ, อัลกอริทึมระดับ Medium, คำถามเกี่ยวกับสถาปัตยกรรม (MVP/MVVM), การทำงานกับเครือข่ายและแคช Senior: 4-5 รอบ, อัลกอริทึมระดับ Hard, System Design, สถาปัตยกรรมทั้งแอปพลิเคชัน, CI/CD, การตรวจสอบโค้ด, คำถามเชิงพฤติกรรมเกี่ยวกับภาวะผู้นำและการให้คำปรึกษา Senior ถูกคาดหวังให้ถามคำถามด้วยตนเองและนำการอภิปราย
ตัวอย่างคำถาม: “เล่าเกี่ยวกับข้อขัดแย้งในทีมและวิธีที่คุณแก้ไข,” “ฟีเจอร์ที่ยากที่สุดคืออะไรและเพราะอะไร,” “ทำไมคุณถึงอยากทำงานกับเรา,” “คุณทำอะไรเพื่อปรับปรุงกระบวนการในทีม” ใช้ วิธี STAR (Situation, Task, Action, Result) สำหรับคำตอบที่มีโครงสร้าง เตรียม 3-4 เรื่องราวจากประสบการณ์ล่วงหน้า — สิ่งนี้ครอบคลุม 80% ของคำถามเชิงพฤติกรรม
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม