ฉันล้มเหลว FizzBuzz คุณจะจ้างฉันไหม [ปิด]


27

ฉันเป็นนักพัฒนาที่มีระดับ CS และมีประสบการณ์การทำงานในการพัฒนาในหลายภาษาเป็นเวลาเกือบ 3 ปี

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

นี่คือรหัสของฉัน:

  void FizzBuzz()
  {
    for(int i = 0; i <= 100; i++)
    {
      bool isThree = i % 3;
      bool isFive = i % 5;

     if (isThree)
     {
         print "Fizz\n";
     }
     else if(isFive)
     {
         print "Buzz\n";
     }
     else
     {
         print "FizzBuzz\n";
     }
  }
 }

อย่างที่คุณเห็นฉันทำตัวยุ่งเหยิงของ bools ซึ่งควรจะมีไวยากรณ์ i% 3 == 0; หากฉันจำคำถามได้ถูกต้องฉันจะใส่คำถามอื่นแทนด้วยคำถามอื่นด้วย isThree && isFive ฉันค่อนข้างเครียด แต่นั่นไม่ใช่ข้อแก้ตัวสำหรับการพลาดปัญหาง่ายๆ

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


31
ฉันคิดว่าคุณใช้ตัวดำเนินการโมดูลัสดีพอ
Ryathal

9
คุณไม่ต้องพิมพ์ตัวเลขเมื่อไม่ใช่ทั้ง 3 ตัวหรือ 5 ตัวความจริงที่คุณไม่ได้กล่าวถึงว่าการโพสต์คำถามนี้จะทำให้เกิดความสงสัยอย่างมาก
whatsisname

13
ทุกคนจะตอบคำถามนี้อย่างไรในนามของผู้สัมภาษณ์ของคุณ?
pdr

5
คำแนะนำที่เป็นรูปธรรม - ทำปัญหาออยเลอร์โครงการ 1-10 และคุณจะมีคำถามมากมายเกี่ยวกับประเภทมาตรฐานที่จะถามคุณในฐานะ "คุณสามารถโปรแกรม - เขียนรหัสนี้"

20
ฉันไม่คิดว่าฉันจะจ้างคนที่ล้มเหลวในการเขียน FizzBuzz แต่ IMHO คุณล้มเหลวในการเขียนไวยากรณ์อย่างสมบูรณ์แบบบนกระดานไวท์บอร์ดซึ่งเป็นอย่างอื่น
Michael Shaw

คำตอบ:


44

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

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


ตกลงไม่ได้พยายามที่จะบอกเป็นนัยว่าฉันจำคำตอบได้ มันเป็นสิ่งที่ฉันรู้สึกว่าฉันเป็นโปรแกรมเมอร์ที่มีความสามารถ แต่รู้สึกว่ามีปัญหาการเขียนโปรแกรมเพียงอย่างเดียวเท่านั้น พวกเขาไม่ได้พูดอะไรเกี่ยวกับปัญหา ฉันไม่ได้ตระหนักถึงข้อผิดพลาดของทางของฉันจนกว่าฉันจะได้รับในรถของฉันและเริ่มขับรถกลับบ้าน ถ้าอย่างนั้นมันก็เป็น OMG ทำไม! ปฏิกิริยา.
ja_programmer

พวกเขาให้คำถาม FizzBuzz กับคุณก่อนหรือไม่? หากพวกเขายังไม่จบการสัมภาษณ์คุณผ่าน ผู้สัมภาษณ์พิจารณาปัจจัยอื่น ๆ นอกเหนือจากการทดสอบการเข้ารหัสอย่างง่าย นายจ้างที่ดีต้องการคนที่รู้วิธีคิดวิเคราะห์และแก้ปัญหา
Robert Harvey

พวกเขาใช้เวลาส่วนใหญ่ถามฉันเกี่ยวกับประวัติย่อของฉันถามเกี่ยวกับเทคโนโลยีต่าง ๆ ที่ฉันได้ใช้และวิธีที่ฉันใช้พวกเขา แล้วพวกเขาก็ถามปัญหาการเขียนโปรแกรม จากนั้นพวกเขาถามคำถามเกี่ยวกับตัวฉัน จากนั้นฉันถามคำถามจำนวนหนึ่งและจับมือกันและทิ้งไว้
ja_programmer

4
ผู้สัมภาษณ์ที่ดีจะยุติการสัมภาษณ์เมื่อไม่มีความสนใจในการว่าจ้างคุณอีกต่อไปซึ่งน่าจะเกิดขึ้นทันทีหลังจาก FizzBuzz หากคุณไม่ผ่านการทดสอบ ไม่ได้หมายความว่าพวกเขาจะยังคงจ้างคุณ แต่มันก็หมายความว่าคุณไม่ได้สัมภาษณ์ล้มเหลว
Robert Harvey

4
@ RobertHarvey - ไม่ใช่ทุกคนที่จะตัดการสัมภาษณ์ออกไปและที่นั่น กับผู้สมัครล่าสุดของฉันที่ล้มเหลว FizzBuzz ฉันยังคงให้สัมภาษณ์ในความพยายามที่จะดูว่าเขาสามารถกอบกู้สิ่งต่าง ๆ ได้หรือไม่ กล่าวอีกนัยหนึ่งฉันยินดีที่จะให้ออกกำลังกายที่ขาดหายไปเนื่องจากความเครียดของการสัมภาษณ์

26

ใช่

คนส่วนใหญ่ที่ฉันเคยสัมภาษณ์ที่ล้มเหลวในส่วนของรหัสการออกกำลังกายในไวยากรณ์เล็ก ๆ น้อย ๆ หรือตรรกะปิดท้ายเล็กน้อยได้รับการว่าจ้างที่ดีขึ้น

รับแนวคิดหลักของตรรกะตรง (ที่คุณทำ) และแปลงเป็นสิ่งที่ดีและรัดกุมจากมุมมองโค้ด (ซึ่งฉันคิดว่าคุณทำส่วนใหญ่) มีความสำคัญต่อฉันมากกว่าทำให้สมบูรณ์แบบ

ฉันซื้อ IDE เพราะการตรวจสอบไวยากรณ์ไม่ใช่การจ้าง dev สำหรับมันและคุณจะได้ตระหนักถึงข้อผิดพลาดอื่น ๆ ภายในช่วงเวลาของการดีบักครั้งแรกของคุณ

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

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

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

บุคคลเหล่านี้เป็นสิ่งที่ฉันต้องการกำจัดโดยการออกกำลังกายนี้

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


2
บิลฉันแค่อยากจะบอกว่าขอบคุณมากสำหรับข้อเสนอแนะรายละเอียด มันดีที่ได้มุมมองอื่น มันน่าหงุดหงิดที่จะทำผิดพลาดกับสิ่งที่เรียบง่ายและรู้ว่าคุณดีกว่านั้น
ja_programmer

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

ไม่ใช่เพียงการพิมพ์ตัวเลขเท่านั้น แต่ยังไม่สามารถทราบได้ว่าในจำนวนที่มากถึง 15 คุณไม่ได้พิมพ์ Fizz หรือ Buzz แต่เป็น FizzBuzz มันไม่ได้แสดงให้เห็นถึงปัญหาที่ดี เมื่อใดที่จะพิมพ์ "FizzBuzz" เป็นองค์ประกอบที่สำคัญที่สุดของปริศนานี้
Pieter B

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

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

15

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

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

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

นอกจากนี้อาจทำให้คุณประหลาดใจ แต่คุณกำลังแข่งขันกับคนจำนวนมากที่ไม่สามารถเริ่ม fizzbuzz ได้ เรามักจะคิดว่าทุกคนกำลังสำรวจต้นไม้ b + ในการนอนหลับของพวกเขา .... แต่ในความเป็นจริงพวกเขาไม่สามารถหาผลคูณของ 3 และ 5 และใช้ตัวดำเนินการโมดูลัส คุณอาจประหลาดใจที่เห็นว่าคุณดีกว่าผู้สมัครคนอื่น ๆ

คำแนะนำของฉันเพียงแค่แปรงมันออก ฉันสัมภาษณ์ บริษัท ซอฟต์แวร์ขนาดใหญ่เมื่อไม่นานมานี้ (Microsoft, Amazon และอื่น ๆ ) และเป็นครั้งแรกที่ฉันต้องผ่านกระบวนการสัมภาษณ์อย่างละเอียด ฉันหลอกตัวเองในการสัมภาษณ์ Microsoft ที่สำนักงานใหญ่เนื่องจากความกังวลใจ แต่ฉันก็ไม่รู้ว่าจะคาดหวังหรือไม่ว่าพวกเขากำลังมองหาอะไร ฉันจับปัญหาเส้นทางที่สั้นที่สุดเท่านั้นที่จะเป่าแตรปัญหาที่เรียบง่ายจริงๆ ฉันดึงค่าออกจากจุดสิ้นสุดที่ไม่ถูกต้องของสแต็กลืมในการint atoi(char* value)ใช้งานที่int val = value[i] - '0';จะให้ฉันค่าจำนวนเต็มของตัวละครและข้อผิดพลาดโง่ ๆ อื่น ๆ ฉันมีความสุขเป็นส่วนใหญ่กับการสัมภาษณ์ แต่ก็ยังเข้าใจว่าทำไมฉันไม่ได้รับข้อเสนอ ฉันต้องตระหนักว่านี่ไม่ได้สะท้อนความสามารถของฉันมากนักเพราะมันเป็นตัวบ่งชี้ว่าฉันต้องพยายามต่อไปเรื่อย ๆ จนกว่าฉันจะสามารถควบคุมความกังวลได้ ในที่สุดฉันก็ถูกจับสัมภาษณ์ด้วยคำถามที่ยากกว่านี้มากและไปทำงานในฝันของฉัน มันเป็นเรื่องจริง - สำหรับคนส่วนใหญ่ที่รู้ว่าพวกเขากำลังทำอะไรอยู่ - แค่คิดว่าผู้สัมภาษณ์ต้องการอะไรมีความมั่นใจในตัวเองและมอบให้พวกเขา ใช้เวลาสักครู่


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

@ja_programmer fizzbuzz ดีคือการออกกำลังกายในความเร็ว คุณควรจะทำให้เสร็จในเวลาไม่ถึง 2 นาที พวกเขาไม่ได้ทดสอบความสามารถในการแก้ปัญหาของคุณเพียงแค่ความสามารถในการเขียนโค้ดง่าย ๆ อย่างรวดเร็ว นอกจากนี้ฉันถูกถามว่า "คุณเห็นปัญหาใด ๆ กับรหัสนี้หรือไม่" เมื่อรหัสถูกต้องสมบูรณ์และพวกเขาเพียงแค่พยายามประเมินความมั่นใจของฉันหรือฉี่ฉันออก - ยังไม่ได้ตัดสินใจ
Jonathan Henson

จุดดีพวกเขาสามารถพูดได้ว่าถ้ามันถูกต้อง อย่างไรก็ตามฉันคิดว่าในกรณีนี้ฉันต้องการ Smack ที่ถูกต้องกลับหัวซึ่ง "ปัญหาใด ๆ เกี่ยวกับรหัสนี้" จะได้รับ หากฉันผ่านกรณีทดสอบง่ายๆเช่นคนปกติฉันจะสังเกตเห็นว่าตรรกะของฉันไม่ถูกต้อง นอกจากนี้สำหรับคำถามของคุณฉันจะไปกับทั้งสองเล็กน้อย;)
ja_programmer

2
+1 No? Well let's test itสำหรับ ฉันขอให้ผู้สมัครเขียน buzz buzz ในการสัมภาษณ์ ฉันให้พวกเขาเขียนบททดสอบ บางครั้งเสียงพึมพำของพวกเขาล้มเหลว แต่การทดสอบหน่วยของพวกเขาตรวจจับสิ่งนี้ทำให้พวกเขาแก้ไขได้ คนที่ถูกปฏิเสธคือคนที่เขียนวิธีแก้ปัญหาที่ล้มเหลวแล้วเขียนการทดสอบที่ล้มเหลวในการตรวจจับสิ่งนี้ ฉันถามพวกเขาคุณมีความสุขกับการทดสอบนี้ถ้าพวกเขานั่นคือเมื่อพวกเขาล้มเหลว
Qwerky

12

ฉันต้องบอกว่าไม่ใช่ แต่ไม่ใช่ด้วยเหตุผลที่คุณให้ แต่คุณทำให้ส่วน FizzBuzz เป็นครั้งสุดท้าย ด้วยวิธีการทำงานของรหัสของคุณจะไม่พิมพ์ FizzBuzz เมื่อคุณคาดหวัง ดังที่ลีแสดงความคิดเห็นมันจะพิมพ์ออกมาสำหรับทุกค่าที่ไม่หารด้วย 3 หรือ 5

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


3
มันจะพิมพ์ FizzBuzz เมื่อใดก็ตามที่iไม่หารด้วย 3 หรือ 5
Lee

1
ใช่ฉันรู้ว่า ฉันไม่รู้จริงๆว่าฉันคิดอะไรอยู่
ja_programmer

@ ขอโทษคุณพูดถูกฉันหมายความว่ามันจะไม่พิมพ์ออกมาเมื่อเขาต้องการมัน
David Peterman

1
@ mattnz ไม่ แต่ฉันคาดหวังว่าใครบางคนที่อ้างว่ามีประสบการณ์ 3 ปีที่จะสามารถเขียนฟังก์ชั่นได้ถ้ามีคำสั่งและแม้ว่าพวกเขาจะเข้าใจผิดก็สามารถบอกฉันได้อย่างแม่นยำว่าพวกเขาทำอะไรผิด (ไม่มีความผิดต่อ OP เพียงแค่พยายามซื่อสัตย์เท่าที่จะเป็นไปได้)
David Peterman

6
@ แมทท์: ฉันจะกังวลเกี่ยวกับข้อบกพร่องและการรวบรวมน้อยกว่าความจริงที่ว่าตรรกะของโปรแกรมผิดทั้งหมด ฉันสามารถอยู่กับ isThree = i% 3 ความผิดพลาดได้ แต่ส่วน "else print FizzBuzz" ฆ่ามันให้ฉัน ฉันอาจให้ดุนค์ผู้ให้สัมภาษณ์เล็ก ๆ เพื่อดูว่าพวกเขาสามารถจับและแก้ไขปัญหานั้นได้หรือไม่ แต่ถ้าไม่ใช่มัน
Misko

9

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

ปัญหาได้รับการจัดโครงสร้างเพื่อให้โค้ดการค้นหา "Elegant" ทั้งหมดไม่สามารถครอบคลุมอย่างน้อยหนึ่งเคส

คำตอบที่ยอมรับได้:

if div3 print fizz
if div5 print buzz
if !div3 && !div5 print x


if div3 {
    print fizz;
    if div5 {
        print buzz;
    }
} else {
    if div5 {
        print buzz;
    } else {
        print x;
    }
}

2
ตัวอย่างที่สองของคุณสับสนเกินไป
Brian

7

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

ฉันไปดูรายละเอียดเพิ่มเติมที่"การทดสอบ" ไวท์บอร์ดระหว่างการสัมภาษณ์: วิธีสำรองรหัส (ไวท์บอร์ด) ของคุณถูกต้องตามกฎหมายหรือไม่

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


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

4

หากฉันประเมินสิ่งนี้ฉันจะมองหาสิ่งต่อไปนี้:

  1. ผู้สมัครพยายามทำความเข้าใจกับข้อกำหนดก่อนที่จะเริ่มดำเนินการหรือไม่? ผู้สมัครหาทางแก้ไขปัญหาของฉันหรือใช้เครื่องมือสัตว์เลี้ยงของเขาในกล่องเครื่องมือการเขียนโปรแกรมหรือไม่? ผู้สมัครไปเกี่ยวกับการแก้ปัญหาอย่างไร
  2. ผู้สมัครคล่องแคล่วในภาษาการเขียนโปรแกรมอย่างน้อยหนึ่งภาษาหรือไม่
  3. ผู้สมัครมีความเข้าใจในตรรกะบูลีนหรือไม่?
  4. ผู้สมัครทำอะไรเพื่อรับรองคุณภาพการแก้ปัญหาของเขา?
  5. ผู้สมัครตอบสนองต่อข้อเสนอแนะเกี่ยวกับรหัสของเขาอย่างไร

-

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

ฉันจะให้เครดิตบางส่วนสำหรับ # 2 และ # 3 คุณรู้ว่าจะใช้ตัวดำเนินการโมดูลัสและมีโครงสร้างของวิธีแก้ปัญหาการทำงาน แต่พลาดทั้งสองส่วน

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

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

-

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

  1. ก่อนสัมภาษณ์ให้ฝึกออกกำลังกายแบบเย็น ๆ โดยใช้ทรัพยากรภายนอกให้น้อยที่สุดเท่าที่จะทำได้ ไม่จำวิธีแก้ปัญหา แต่ให้แน่ใจว่าคุณพอใจกับภาษาที่คุณต้องการ

  2. ถามคำถามเกี่ยวกับปัญหาเพื่อตรวจสอบสมมติฐานของคุณ

  3. ก่อนที่จะประกาศวิธีแก้ปัญหาของคุณให้เสร็จถอยกลับจากไวท์บอร์ดและดูมันและเดินผ่านสองกรณีทดสอบง่ายๆ


ในขณะที่ฉันเห็นด้วยกับสิ่งนี้ว่าเป็นเป้าหมายการสัมภาษณ์ขั้นพื้นฐานนี่ไม่ใช่ประเด็นของ fizzbuzz Fizzbuzz กำลังวัดสิ่งหนึ่งและอีกสิ่งหนึ่งเท่านั้น คุณสามารถเขียนรหัสง่าย ๆ ได้อย่างรวดเร็วและถูกต้องหรือไม่? โดยปกติผู้สัมภาษณ์ต้องการคำถามนี้ภายใน 2 นาที นั่นไม่ใช่ทุกอย่างที่ฉันรู้ แต่นั่นคือคำถามที่ออกแบบมาสำหรับ
Jonathan Henson

1
ประเด็นของ fizzBuzz คือสิ่งที่ผู้สัมภาษณ์ต้องการให้เป็น ถ้าฉันจะใช้ fizzBuzz หรือแบบฝึกหัดที่คล้ายกันนี่คือสิ่งที่ฉันจะมองหา
JohnMcG

1
แน่นอนว่าคำถามสัมภาษณ์ใด ๆ คือสิ่งที่ผู้สัมภาษณ์ต้องการใช้เพื่อประเมินสิ่งที่พวกเขาสนใจประเด็นของฉันคือ FizzBuzz เป็นคำถามที่แย่มากสำหรับการประเมินสิ่งอื่นที่ไม่ใช่ "เขา / เธอสามารถเขียนรหัสที่ถูกต้องได้อย่างรวดเร็วหรือไม่?" การท้าทายทางเทคนิคไม่เพียงพอที่จะวัดทักษะการคิดเชิงวิเคราะห์ หากมีคนติดคำถามนี้อย่างจริงจังคุณต้องการให้พวกเขาอยู่ในทีมของคุณหรือไม่? มันเหมือนกับการจ้างวิศวกรที่ไม่สามารถทำแคลคูลัสขั้นพื้นฐานได้ ในขณะที่ทุกคนต้องการให้แน่ใจว่าวิศวกรรู้แคลคูลัสพื้นฐานของเขา - มันไม่สามารถต่อรองได้จริง ๆ ที่เขาทำ
Jonathan Henson

2

การขอให้ใครบางคนแก้ปัญหาโดยไม่ให้ความสามารถในการรับคำติชมเกี่ยวกับวิธีแก้ไขปัญหาของพวกเขาเป็นวิธีที่น่าสงสัยเพราะพวกเขาไม่ได้รับอนุญาตให้ปรับปรุง

การทดสอบทั้งหมดนี้บอกเราว่าคุณไม่ได้แสดงทักษะการแก้ปัญหาที่ดีที่สุด

นี่อาจเป็นองค์ประกอบหนึ่งในการตัดสินใจจ้างคุณหรือไม่ แต่สำหรับฉันมันไม่ควรจะเป็นองค์ประกอบเดียวเท่านั้น

พวกเขาจะให้การทดสอบหน่วยหรือสภาพแวดล้อมในการดำเนินการแก่คุณหรือไม่ความผิดพลาดที่คุณทำนั้นจะไม่สามารถใช้ซ้ำได้


1
มีเวลาและสถานที่ที่จะพัฒนาความสามารถของคุณ แต่การสัมภาษณ์งานไม่ใช่
RokL

คุณหมายความว่านายหน้าไม่ควรสนใจความสามารถของผู้สมัครในการพัฒนาตนเอง
guillaume31

1
การพัฒนาตนเองจะเกิดขึ้นในเวลาที่นานกว่าหนึ่งชั่วโมง นายหน้าไม่สำคัญ
whatsisname

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

@ ชื่ออะไร: ฉันคิดว่ามันควรจะมีความสำคัญกับผู้สรรหา แต่ไม่ใช่ในแบบที่คุณอาจคิด หากผู้สมัครถูกปฏิเสธผู้สรรหาต้องการความเห็นย้อนกลับเพื่อทำความเข้าใจว่าเหตุใดเขาจึงสามารถเสนอผู้สมัครที่ดีกว่าให้กับ บริษัท ในอนาคตและสั่งผู้สมัครคนนี้ว่าพวกเขาจะสามารถเป็นผู้สมัครที่แข็งแกร่งขึ้นสำหรับอนาคตได้อย่างไร ฉันคิดว่ามีที่ว่างสำหรับผลประโยชน์ร่วมกันที่นั่น
alroc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.