วิธีสัมภาษณ์ผู้พัฒนาสกาล่า [ปิด]


17

โปรแกรมเมอร์สกาลาถูกสัมภาษณ์อย่างไร? อะไรคือแง่มุมที่ผู้สัมภาษณ์มองหาเมื่อสัมภาษณ์นักพัฒนาสกาล่า?


10
พวกเขาต้องใช้รหัส FizzBuzz ในขณะที่ยืนอยู่บนบันได
งาน

2
@Job Extra points ถ้า FizzBuzz ใช้ State และ IO monads! :-)
Daniel C. Sobral

ฉันพบคำถามบางอย่างกับผู้พัฒนาสกาล่าและตัดสินใจที่จะเขียนคำตอบด้วยตัวเอง ในกรณีที่มีคนสนใจ: pedrorijo.com/blog/scala-interview-questions
pedrorijo91

คำตอบ:


17

อันดับแรกฉันจะบอกว่าทำไมคุณถึงต้องการนักพัฒนา Scala มันเป็นสกาล่าที่คุณต้องการจริงๆเหรอ? คิดเกี่ยวกับสิ่งที่มาพร้อมกับ Scala (IDE, สร้างเครื่องมือ, libs, อีกชั้นหนึ่งของความซับซ้อนเหนือ Java ฯลฯ ... ) กลับไปที่คำถาม มันไปในสองด้าน: ความเข้าใจทางทฤษฎีและความสามารถในการปฏิบัติ อย่าปล่อยให้สิ่งที่ "ทฤษฎี" หลอกคุณ มันมีความสำคัญใน Scala เช่นเดียวกับการปฏิบัติจริงมีความสำคัญใน Java

ตามทฤษฎี

  • ดูว่าพวกเขารู้ว่ากระบวนทัศน์การทำงานนั้นเกี่ยวกับอะไร ขอให้พวกเขาเปรียบเทียบกระบวนทัศน์ทั้งสอง (FP กับความจำเป็นนั่นคือ) ในปรัชญาและการปฏิบัติ หากพวกเขาสามารถให้ตัวอย่างจากภาษาที่มีการสนับสนุนแบบเต็มหรือบางส่วนสำหรับ FP แสดงว่าเป็นข้อดีสำหรับพวกเขา

ทฤษฎีและการฝึกปนกัน

  • ดูว่าพวกเขาสามารถทำการเขียนโปรแกรมใช้งานได้จริงหรือไม่ ถามพวกเขาเกี่ยวกับรายการแผนที่การซิปและการสอบถามซ้ำ จากนั้นการปิด, แกะ, การลด, ฟังก์ชั่นการสั่งซื้อที่สูงขึ้นและการเปลี่ยนแปลง

ประยุกต์

  • ดูว่าพวกเขาสามารถสร้างตัวอย่างข้อมูลโค้ดที่จำเป็นให้เป็นทางเลือกที่ใช้งานได้ดีหรือไม่ (ดูด้านบน) ลองใช้ลูปที่ใช้คณิตศาสตร์หรือบางอย่างในบรรทัดเหล่านี้

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

  • ดูว่าพวกเขารู้มากแค่ไหนเกี่ยวกับ Scala libs (เช่นลิฟท์การจัดส่ง ฯลฯ ) และเครื่องมือ (เช่น SBT, fsc, IDEA)

  • ดูว่าพวกเขาสามารถใช้ประโยชน์จาก Java ได้ดีเพียงใด (โค้ด - และ - เครื่องมือ) Scala เชื่อมโยงอย่างแน่นหนากับ Java เป็นพิเศษในสภาพแวดล้อมที่รุนแรงยิ่งขึ้น การรู้ว่านี่เป็นข้อดี

ตามทฤษฎี

  • ขอให้พวกเขาเปรียบเทียบ Scala กับ Java (PHP, C ++, Objective C หรืออะไรก็ตาม) และกำหนดให้พวกเขาบอกคุณว่ามีอะไรผิดปกติกับ Scala ดูว่าพวกเขาเข้าใจปัญหาและข้อดีหรือไม่ ขอให้พวกเขาให้ตัวอย่างที่แท้จริงของโลกเมื่อข้อบกพร่องของ Scala อาจทำให้เกิดปัญหา (เช่นมันยากสำหรับ Joes ใหม่ที่จะเข้าร่วมมันยังไม่บรรลุนิติภาวะเนื่องจากการสนับสนุนมี จำกัด มากเมื่อเทียบกับ Java และอื่น ๆ )

ประยุกต์

  • ดูว่าพวกเขาเชื่อมต่อกับชุมชนหรือไม่ ถามพวกเขาเกี่ยวกับ Martin Odersky และ David Pollak ขอให้พวกเขาตั้งชื่อโครงการสกาล่าน้อยและอธิบายให้คุณ (Facebook, Twitter, FourSquare, DBPedia และ DBPedia SpotLight) ดูว่าพวกเขารู้หรือไม่ว่า Scala ใช้ในโครงการเหล่านี้อย่างแน่นอนหรือไม่ พวกเขาอ่านบทความดูวิดีโอ ฯลฯ หรือไม่?

  • ถามพวกเขาเกี่ยวกับหนังสือ (มีเพียงไม่กี่) ยิ่งพวกเขารู้มากเท่าไหร่

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

    • Scala สำหรับสิทธิพิเศษ (ฉันรู้สึกสมาร์ทฉันรู้สึกแตกต่างจาก Joes อื่น ๆ ฉันมี phD เงาใหม่เอี่ยมฉันเกลียดความจำเป็นเพราะมันเป็นปัญญาอ่อน Java เป็นเพียงผิวเผิน Scala นั้นสง่างาม ฯลฯ ) ประเภทนี้ไม่ได้ผลในโครงการที่จริงจังและยากที่จะเข้ากันได้
    • ฉันหลงรักไวยากรณ์ของ Scala และชอบเขียน DSL ของฉันทุกที่ที่ฉันได้รับรหัส คนประเภทนี้ชอบที่จะใช้ประโยชน์จากลักษณะเฉพาะของสกาล่าเพื่อหยดสุดท้ายในวิธีการทำลายล้าง พวกเขารู้สึกดีที่ได้เขียนโค้ดที่คลุมเครือและเกินความจริงไปจนถึงจุดที่อ่านไม่ออก ชนิดนี้เป็นอันตรายโดยเฉพาะอย่างยิ่งเนื่องจากรหัสของพวกเขาอ่านไม่ได้ แจกของพวกเขาคือความรักของพวกเขาสำหรับผู้ประกอบการมากไปชื่อแปลกและเขียนหนึ่งสมุทร
    • ฉันติดกับสกาล่าจนถึงหยดสุดท้ายไม่ว่าจะเกิดอะไรขึ้น นี่คือคนเจ้าเล่ห์ไร้เดียงสา พวกเขาไม่สามารถแลกเปลี่ยนและโครงการประสบเมื่อจำเป็นต้องใช้วิธีไฮบริดเช่นเดียวกับโครงการในโลกแห่งความเป็นจริง

PS: ถ้าคุณพบโจที่ดีแล้วโปรดโดยทั้งหมดแจ้งให้เราทราบตามที่เราต้องการ;)


@ Dave Briccetti ฉันได้รับแนวคิด "เชื่อมต่อกับชุมชน" จาก Dave และตัดสินใจที่จะอธิบายอย่างละเอียดและมันก็กลายเป็นคำตอบที่ยาวมาก เครดิตไปที่เดฟเพื่อกล่าวถึงชุมชน;)
ข Nazary

โพสต์ยอดเยี่ยม คุณคือใคร?
Dave Briccetti

@Dave ตอนนี้ฉันเป็นผู้พัฒนานำ @ AYLIEN ซึ่งกำลังทำ NLP ในแบบของ Scala
ษคานข Nazary

คำตอบที่ยอดเยี่ยมโดยรวม แต่ +1 โดยเฉพาะอย่างยิ่งสำหรับรายการสั้น ๆ ของ "เหตุผลที่ผิด" โรคเดียวกันสามารถพบได้ใน C ++ fanatics
DarenW

1
หนึ่งอาจผ่านการสัมภาษณ์ครึ่งโดยไม่ต้องรหัสในสกาล่าเคย มันเป็นข้อบกพร่องหรือคุณสมบัติ? ฉันประหลาดใจที่ข้อสรุปของคุณไม่ได้เป็นผู้ไม่เชื่อเรื่องพระเจ้ามากขึ้นเกี่ยวกับภาษาการเขียนโปรแกรมเช่นนั้นท้ายที่สุด Scala dev ที่ดีก็คือ dev ที่ดีเพียงแค่มีน้ำตาล syntactic ที่แตกต่างกัน
Arthur Havlicek

8

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

โปรแกรมเมอร์ Scala มักจะมาเป็นภาษาเพราะพวกเขาอยู่ด้านบนสุดของเกมของพวกเขาใน Java และต้องการที่จะ "ยกระดับไปอีกระดับ"

หากคุณมีนักพัฒนา Scala จำนวนมากที่พร้อมให้สัมภาษณ์ หากไม่ใช่คำถามที่เกี่ยวข้องอาจเป็น“ ฉันควรมองหาด้านใดในโปรแกรมเมอร์ที่ฉันจะฝึกใช้ Scala?” และ“ บริษัท ใดบ้างที่สามารถให้บริการฝึกอบรมได้ในขณะนี้”


1
ฉันอยากจะบอกว่าไม่ใช่นักพัฒนาสกาล่าทุกคนที่ติดอันดับ Java (หรืออะไรก็ตาม) พวกเขาหลายคนชอบ "ฉันแตกต่าง" หรือ "ฉันฉลาด" รู้สึกว่าสกาล่าให้พวกเขา หลายคนไม่มีเงื่อนงำอะไรที่สกาล่าเป็นเรื่องจริง คุณควรระวังด้วย ;-)
Ashkan Kh Nazary

@ ashy_32bit - มันเป็นความจริงมากขึ้นทุกวันนี้ แต่มันก็ไม่ได้เป็นอย่างนั้นเมื่อฉันตอบคำถามนี้ในปี 2011
Kevin Wright

7

ฉันชอบที่จะเห็นวิธีแก้ปัญหาเล็ก ๆ น้อย ๆ เช่นนี้: ทำฮิสโตแกรมของผลลัพธ์ของการโยนลูกเต๋าหกด้านสองครั้ง 200 ครั้ง

ดูความคิดเห็นที่นี่สำหรับคำตอบที่น่าสนใจ: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html

บางคนที่มีวิธีการแก้ปัญหาเช่น Daniel Sobral หรือคนนี้จาก Kevin Wright: http://ideone.com/8LFs3จะคุ้มค่าดูใกล้ชิด

หากคำตอบนั้นดูเหมือนโค้ด Java ผู้สมัครอาจจะยังไม่พอ

ฉันต้องการเห็นว่าบุคคลนั้นเชื่อมต่อกับชุมชนสกาล่า: รู้หนังสือผู้เขียนนักพัฒนาโอเพนซอร์ซกลุ่มผู้ใช้คนที่น่าสนใจ


แม้ว่ามันจะเต้นเฉลี่ยอุตสาหกรรมของเราในการเป็นปิดโดย 2 ;-)
ดันแคนเกรเกอร์

4

ฉันไม่เคยจ้าง Scala มาก่อน แต่ฉันจะมองหาความเข้าใจเกี่ยวกับการทำงานของ implicits รูปแบบคลาสของคลาสและพื้นฐานของการเขียนโปรแกรมเชิงหน้าที่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.