สัมภาษณ์งานที่ Microsoft(2)

posted on 09 Aug 2010 00:11 by house in IT
อีกไม่กี่วันต่อมา ผมก็ได้รับเมล์ยืนยันจากทาง HR เรื่องนัดสัมภาษณ์ครั้งถัดไป คราวนี้ ไมโครซอฟต์ จัดสัมภาษณ์สี่รอบในวันเดียวกัน โดยเริ่มตั้งแต่บ่ายโมง เมื่อถึงวันที่กำหนด ก็ย่างเท้าไปที่ออฟฟิศ แจ้งว่ามาสัมภาษณ์งาน ซึ่งก็จะถูกจัดให้ไปนั่งรอในห้องประชุม ผนังข้างหนึ่งมีไวท์บอร์ดและปากกาพร้อม ไม่นานเกินรอ ผู้สัมภาษณ์คนแรก ก็ถือโน้ตบุ้ค เดินเข้ามานั่งตรงข้าม

ผู้สัมภาษณ์คนแรก เป็นชาวต่างชาติครับ ชื่อซันเจ น่าจะมีเชื้อชาติทางอินเดียอยู่พอควร หลังการแนะนำตัวเล็กน้อย ซันเจ ตั้งคำถามไปถึงแรงจูงใจในการเข้าร่วมกับไมโครซอฟต์(ไม่ยาก บิลเกตต์ เป็นไอดอลผมตั้งแต่อายุ 14)  หลังจากนั้นก็เริ่มเข้าประเด็นของการควบคุมคุณภาพซอฟแวร์(QA) กระบวนการพัฒนา การใช้ Unit test และ Automate Testing การแก้ปัญหาความขัดแย้งของฟีเจอร์/เวลา/และความต้องการลูกค้า ซันเจให้เขียนฟังชันต์ง่ายๆในรูปแบบของรีเคอซีฟให้ดูฟังชันต์หนึ่ง พร้อมทั้งถามว่าในกรณีปกติจะใช้รีเคอซีฟในกรณีใด(สมองช็อต ตอบไปว่านึกไม่ออก เวลาจะใช้มันก็ลอยมาเองเป็นรีเคอซีฟ) คุยสบายๆสนุกๆ เกือบๆชั่วโมง ก็เป็นอันจบการสัมภาษณ์ รอบนี้ มีเวลาให้พักแป็ปนึง ก่อนที่คนที่สองจะมาสัมภาษณ์ต่อ

คนถัดมา เป็นฝรั่งร่างสูง มาในชุดเสื้อยืด กางเกงยีน แนะนำตัวเองว่าชื่อแบรนดอน ซึ่งไม่พูดพล่ามทำเพลงครับ แบรนดอนเริ่มจากคอนเซ็ปต์พื่้นฐานของ OOP , Multiple/Single Inheritant แล้วก็ตั้งโจทย์ให้ลองทันที(เอามาลงด้วย เผื่อใครอยากลอง) โดยสร้างสถานการณ์สมมุติดังนี้
1. มีอุปกรณ์สองชนิด คือ tablet(มี function runApp) กับ mobile(มี function makeCall)
2. มีสามยี่ห้อ คือ nokia(function getSimbianVersion) , apple(function getIOSVersion), WinMobile(function GetWinMobileVersion) 

จากสถานการณ์นี้จะพบว่ามีอุปกรณ์ได้ทั้งหมด 2*3 = 6 แบบ และแต่ละแบบจะมีสองฟังชันต์(ตามเจ้าของแบรนด์ และ ชนิดอุปกรณ์)

แบรนดอนต้องการให้ ออกแบบโครงสร้างคลาส(design pattern) ที่จะทำให้ implement function ทั้ง 5 ฟังชันต์เพียงครั้งเดียว และคลาสปลายทางทั้งหกคลาส นำไปใช้ได้ ทั้งนี้ ต้องเป็น single inheritant และ ห้ามมีฟังชันต์เกินหรือขาดในคลาสปลายทาง
(นอกจากเรื่องนี้แล้วก็มีให้ทดลองออกแบบ UI นิดๆหน่อยๆ ซึ่งช่างมันเหอะ)
ช่วงท้ายแบรนดอนปล่อยของครับ คือเอาเทคนิคการดีไซน์คลาสแพทเทิร์นที่ใช้ๆอยู่มาพูดให้ฟัง ซึ่งน่าประทับใจทีเดียว
หลุดจากแบรนดอนมาแบบเอ๋อๆ(สมองเริ่มโอเวอร์โหลด) ก็มาเจอคนที่สาม เป็นคนไทยครับ

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

คนสุดท้าย เป็นการสัมภาษณ์ที่มันส์ที่สุดของวันนี้(ของแบรนดอนเรียกว่าตื่นตาตื่นใจมากกว่า) คนสัมภาษณ์คือพี่เอก เปิดเกมด้วยการให้เขียนฟังชันต์ง่ายๆ เกี่ยวกับการตรวจสอบว่าในอาเรย์มีตัวเลขที่ซ้ำกันหรือไม่ หลังจากเขียนเสร็จ ให้แก้โน่นแก้นี่อยู่พักหนึ่ง ก่อนเริ่มให้ออกแบบระบบการส่งข้อมูลที่สามารถปรับเปลี่ยนข้อมูลที่จะส่งได้อิสระ เพิ่มลดชนิดของข้อมูล รูปแบบตัวดำเนินการ และ เซอร์เวอร์ปลายทางได้ โดยไม่จำเป็นต้อง deploy system ใหม่ 
โจทย์นี้สนุกเป็นอย่างมาก เพราะเริ่มจากความต้องการง่ายๆ(ส่งแพ็คเก็ตชุดเดียวกันให้เซอร์เวอร์หลายชุด) แล้วค่อยๆยากขึ้น(มีการดำเนินการที่แตกต่างกัน สำหรับแต่ละเซอร์เวอร์/ ขอให้เพิ่มเซอร์เวอร์ได้อิสระ/สลับการดำเนินการได้อิสระ/เพิ่ม-ลด เซอร์เวอร์, ตัวดำเนินการได้อิสระ,  ต้องทำ hot update ได้ , etc.)  การชี้นำความคิดด้วยการค่อยๆเพิ่มความซับซ้อนของสถานการณ์ทำให้เราเห็นมุมมองใหม่ๆในการออกแบบที่ไม่เห็นมาก่อน

สี่รอบ สี่ชั่วโมงเศษๆ ที่ล้ามาก แต่สนุกจริงๆ ตอนเดินออกมานี่คิดว่าถึงไม่ได้งาน แต่แค่มาฟังแบรนดอนพูด กับมาทำโจทย์ข้อสุดท้ายนั่นก็คุ้ม และ สนุกสุดๆแล้ว

Comment

Comment:

Tweet

เงิบครับ ผมคงตายตั้งแต่สัมภาษณ์ครั้งแรกล่ะ

#7 By เอ้ (27.55.44.244|27.55.44.244) on 2014-08-03 15:09

ได้ทำงานกับ microsoft อนาคตไกลนะพี่
แต่ว่าเค้าจะให้รหัสเรามาใช่ปะคะ
แล้วเราจะเอารหัสไปเข้าที่ไหนอ่ะ
บังเอิญเพือนเขาชวนไปทำงานกะไมโครซอฟอะค่ะ sad smile

#6 By mony (110.49.233.24) on 2013-07-20 12:00

เป็นผม เจอสัมภาษณ์ไปแบบนี้ ก็ตายไปตั้งแต่แรกแล้วครับ

#5 By คุณไท้ (58.64.72.38) on 2010-08-09 21:50

ขอให้ได้นะคะ confused smile
#2 แบรนดอน มีผลในการตัดสินใจมากครับ

ผมมาสัมภาษณ์ด้วยความรู้สึกว่าไม่อยากเสียโอกาส แต่หลังจากสัมภาษณ์กับแบรนดอนจบ ผมมั่นใจว่าผมอยากทำงานที่นี่

ผมอยากออกแบบซอฟแวร์ได้อย่างที่แบรนดอนทำ มันสวยมาก แค่ได้เข้ามาอ่านโค้ด มาดูโครงสร้างที่วางระบบไว้ ผมว่าผมก็คุ้มแล้วsurprised smile

#3 By house on 2010-08-09 00:50

คุณแบรนดอนท่าจะสนุกนะครับนี่ (แต่ฟังแล้วไม่ค่อยรู้เรื่องตามเลย แฮ่)

คุณซันเจ ผมว่าต้องชื่อ สัญชัย(Sanjay) แน่เลย อิอิ
ขอบคุณสำหรับข้อมูลนะครับ confused smile

#1 By Faith on 2010-08-09 00:33