ประสบการณ์สัมภาษณ์งานกับ Agoda

Surasak
2 min readOct 24, 2019

--

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

ผมลองสมัครเข้าไปสัมภาษณ์งานในตำแหน่ง Back End Team — Engineer โดยวิธีการสมัครตรงผ่านเว็บไซต์ของ Agoda เองเลย

ผมได้รับอีเมลนัดสัมภาษณ์ หลังจากส่งใบสมัครไปแล้ว ประมาณ 1 อาทิตย์

การสัมภาษณ์งานของผมเป็นแบบ face-to-face ครั้งเดียว รู้ผลเลย (ภายในสามวัน)โดยใช้ระยะเวลาในการสัมภาษณ์ทั้งหมด 3 ชั่วโมง

รอบแรก (1 ชั่วโมง) กับ Full Stack Senior Software Engineer
รอบสอง (1 ชั่วโมง) กับ Lead Software Engineer
รอบสุดท้าย (1 ชั่วโมง) กับ Development Manager

2 ชั่วโมงแรก สัมภาษณ์เป็นภาษาอังกฤษ โดยชาวต่างชาติครับ

รอบแรก สัมภาษณ์กับ Full Stack Senior Software Engineer

  • แนะนำตัวเอง ปัจจุบันทำงานอะไร ตำแหน่งอะไร
  • แนะนำบริษัทปัจจุบัน ว่าทำเกี่ยวกับอะไร
  • อธิบายหน้าที่และบทบาทที่เราทำในบริษัท มีผลงานอะไรบ้างที่เราภาคภูมิใจ ก็เล่าให้เขาฟัง
  • ถาม ตอบ ปัญหาเชิง Technical, Infrastructure
  • เขียนโค้ดสดบนกระดาน ตามโจทย์ที่เขาให้ 3 ข้อ เป็นการทดสอบ Algorithm
  • Q & A สำหรับรอบแรก

รอบสอง สัมภาษณ์กับ Lead Software Engineer

  • แนะนำตัวเอง
  • ถาม ตอบ เกี่ยวกับสิ่งที่เราเขียนลงไปใน Resume กล่าวคือ สิ่งที่เราเขียนลงไปว่า เราทำอะไรได้บ้าง เขาจะถามเราทั้งหมด ทุกข้อ ต้องอธิบายว่าสิ่งนั้นคืออะไร ทำงานยังไง และเอามาใช้ทำอะไรในงานของเราบ้าง อันไหนที่อธิบายแล้ว เขาไม่เห็นภาพ เราจะต้องวาดภาพประกอบบนกระดาน และอธิบายให้เขาฟัง
  • เขาจะเลือก Tools ที่ Agoda ใช้ มาเทียบกับสิ่งที่เราเคยใช้งานมา แล้วถามว่าเรารู้จัก Tool ตัวนี้ไหม ถ้าตอบว่ารู้จัก เราจะต้องตอบได้ว่า มันเหมือนหรือแตกต่างกันกับ Tool ที่เราเคยใช้มาอย่างไร และทำไมเราถึงเลือกใช้
  • เขาจะมีโจทย์ใหญ่ 1 ข้อ ให้เราออกแบบระบบ ซึ่งจะต้องออกแบบตั้งแต่ Layer ที่ติดต่อกับผู้ใช้งาน ไปจนกระทั่งถึง Layer ที่เป็นส่วนของ Database ในข้อนี้ จะต้องวาด Infrastructure บนกระดาน ระบุ Endpoint URL ที่เหมาะสมได้ ออกแบบ Business Logic ได้ และต้องออกแบบ Database Schema ในเบื้องต้นได้ นอกจากนั้นแล้ว ต้องเลือกได้ว่า จะใช้ Database ตัวไหน สำหรับโจทย์ที่เขาให้มา เขาจะถามถึงเหตุผลในการเลือก ทำไมเราถึงเลือกใช้ Database ชนิดนี้ เราจะต้องโต้แย้งเขาได้ เพราะเขาจะพยายามนำเสนอทางเลือกอื่นเสมอ
  • ความรู้ความเข้าใจเกี่ยวกับระบบที่เราเพิ่งออกแบบ เขาจะค่อนข้างให้ความสำคัญกับเรื่อง High Availability, Scalability และ Security เขาจะถามทุกจุดของ Infrastructure ว่าตรงนี้ เรารับมือกับ Traffic มหาศาลได้อย่างไร และมีประเด็นเรื่องความปลอดภัยตรงไหนบ้าง ที่เราควรให้ความสำคัญ
  • Design Pattern เรารู้จักแนวคิดอะไรบ้าง และเคยนำแนวคิดแบบไหนมาใช้งานจริงบ้าง อธิบายให้เขาฟัง
  • SOLID Principles เราจะต้องมีความรู้พื้นฐานเกี่ยวกับหลักการเหล่านี้ในระดับหนึ่ง เพราะเขาถามละเอียดมาก
  • ถาม ตอบ เชิง Technical แบบเจาะลึก เน้น Data Structure แบบถึงรากเหง้า (Stack, Queue, List, ArrayList etc.), OOP Concepts, IOC Container, Dependency Injection, Stateless vs Stateful Session
  • เจาะลึก Elasticsearch (สำหรับผม) เขาจะให้อธิบาย กระบวนการทำงานของ Elasticsearch, เปรียบเทียบข้อดีข้อเสีย ระหว่าง Linear Search vs Binary Search vs Index / Hashing และถามถึง Algorithm ภายใน ของ Elasticsearch ว่าทำไมการค้นหา ถึงต้องมีการทำ Score มีกรณีไหนบ้างที่ Score ไม่ถูกนำมาคิด
  • เขียนโค้ดสดบนกระดาน ตามโจทย์ที่เขาให้ 1ข้อ เป็นการทดสอบ Algorithm
  • Q & A สำหรับรอบสอง

ผ่านมาแล้ว สองชั่วโมง บอกได้คำเดียวว่า สมองแทบไหลออกมาจากตัว ด้วยความที่ภาษาอังกฤษ เราก็ไม่ได้ดีเลิศประเสริฐศรี บวกกับความตื่นเต้น ทำให้รู้สึกว่า การสัมภาษณ์ที่นี่ ช่างโหดร้ายยิ่งนัก (นั่นคือความคิด เมื่อผ่านไปแล้วสองชั่วโมง)

รอบสุดท้าย สัมภาษณ์กับ Development Manager

รอบนี้ชิวหน่อยครับ สัมภาษณ์กับคนไทย ก็เป็นการสัมภาษณ์แบบชิวๆ ครับ ไม่มีอะไรให้ต้องกังวลเรื่องการสื่อสาร

  • เล่าประสบการณ์ส่วนตัวคร่าว ๆ
  • เขียนโค้ดสดบนกระดาน กับโจทย์ 3 ข้อ โจทย์ทุกข้อสัมพันธ์กันหมด ทุก Algorithm ที่เราหยิบมาใช้ เขาจะหาช่องโหว่ แล้วพลิกแพลงโจทย์ เพื่อให้เกิดปัญหาใหม่ แล้ว Algorithm เดิม ที่เรานำมาใช้ในโปรแกรม จะใช้ไม่ได้ เราจะต้องแก้จาก Code เดิมที่เราเขียน แล้วบอกเขาได้ว่า เราจะต้องแก้ตรงไหนบ้าง เพื่อให้สามารถทำงานได้ และได้ผลลัพธ์ที่เขาต้องการ
  • ถาม ตอบ เชิง Technical ทั่วไป เกี่ยวกับเทคโนโลยีที่เราเคยทำมา เช่น .NET Framework vs .NET Core อธิบายความแตกต่าง อธิบายข้อดีข้อเสีย เป็นต้น
  • Q & A สำหรับปิดท้าย

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

ขอบคุณทุกคนที่ติดตามอ่านจนจบครับ แล้วพบกันใหม่น้าาาาา

--

--

Surasak
Surasak

Written by Surasak

Innovative Leader inspiring creativity and driving change to achieve business objectives and customer satisfaction.

No responses yet