Làm thế nào các nhà phát triển Scala đang được phỏng vấn [đóng]


17

Các lập trình viên Scala đang được phỏng vấn như thế nào? Các khía cạnh mà người phỏng vấn tìm kiếm khi phỏng vấn một nhà phát triển Scala là gì?


10
Họ phải viết mã FizzBuzz khi đứng trên thang.
Công việc

2
@Job Thêm điểm nếu FizzBuzz sử dụng các đơn vị Bang và IO! :-)
Daniel C. Sobral

Tôi tìm thấy một số câu hỏi cho các nhà phát triển Scala và quyết định tự viết một số câu trả lời. Trong trường hợp ai đó quan tâm: pedrorijo.com/blog/scala-interview-questions
pedrorijo91 17/03/17

Câu trả lời:


17

Đầu tiên, tôi sẽ nói, hãy nghĩ tại sao bạn cần một nhà phát triển Scala. Có thực sự Scala mà bạn cần? Hãy suy nghĩ về những gì đi kèm với Scala (IDE, công cụ xây dựng, libs, một lớp phức tạp khác trên Java, v.v.). Quay lại câu hỏi. Nó đi theo hai khía cạnh: sự hiểu biết lý thuyết và khả năng thực tế. đừng để điều "lý thuyết" đánh lừa bạn. Nó quan trọng trong Scala vì tính thực tiễn là quan trọng trong Java.

Lý thuyết

  • Xem nếu họ biết mô hình chức năng thực sự là về cái gì. Yêu cầu họ so sánh hai mô hình (FP và mệnh lệnh) trong triết học và thực tiễn. Nếu họ có thể đưa ra ví dụ từ các ngôn ngữ có hỗ trợ đầy đủ hoặc một phần cho FP, thì đó là điểm cộng cho họ.

Lý thuyết và thực hành trộn lẫn

  • Xem nếu họ thực sự có thể làm lập trình chức năng theo đúng cách. Hỏi họ về danh sách, bản đồ, nén và đệ quy. Sau đó đến việc đóng cửa, lambdas, giảm, chức năng bậc cao và bất biến.

Thực dụng

  • Xem liệu họ có thể cấu trúc lại một đoạn mã bắt buộc thành một sự thay thế chức năng tốt hay không (xem ở trên). Hãy thử một vòng lặp thực hiện một số toán học hoặc một cái gì đó dọc theo các dòng này.

  • Tìm hương vị của họ cho chức năng vs phong cách bắt buộc. Chọn một phong cách chức năng hơn nhưng hãy cẩn thận, nó không đi đến cực đoan về phía nhà phát triển.

  • Xem họ biết bao nhiêu về libala Scala (ví dụ: Nâng, gửi, v.v.) và các công cụ (ví dụ SBT, fsc, IDEA).

  • Xem họ có thể tận dụng Java tốt như thế nào (công cụ mã và công cụ). Scala được liên kết chặt chẽ với Java đặc biệt trong các môi trường nghiêm trọng hơn. Biết đây là một điểm cộng lớn.

Lý thuyết

  • Yêu cầu họ so sánh Scala với Java (PHP, C ++, Objective C hoặc bất cứ điều gì) và yêu cầu họ cho bạn biết điều gì sai với Scala. Xem nếu họ hiểu các vấn đề cũng như những lợi thế. Yêu cầu họ đưa ra các ví dụ trong thế giới thực về thời điểm thiếu sót của Scala có thể gây rắc rối (ví dụ: Thật khó để các Joes mới có thể hòa đồng, điều đó còn non nớt vì sự hỗ trợ rất hạn chế so với Java, v.v.)

Thực dụng

  • Xem nếu họ được kết nối với cộng đồng. Hỏi họ về Martin Oderky và David Pollak. Yêu cầu họ đặt tên cho một vài dự án Scala và mô tả chúng cho bạn (Facebook, Twitter, FourSapes, DBPedia và DBPedia SpotLight). Xem họ có biết chính xác Scala được sử dụng như thế nào trong các dự án này không. Họ đã đọc các bài báo, xem các video, vv?

  • Hỏi họ về những cuốn sách (chỉ có một vài). Họ càng biết nhiều thì càng tốt.

  • Như một lời cảnh báo cuối cùng tôi có thể nói rằng các ngôn ngữ xuất sắc có tiềm năng kỳ lạ này để thu hút những người sai. Hãy cẩn thận về loại đến với Scala vì tất cả các lý do sai. Dưới đây là một vài

    • Scala là dành cho đặc quyền (tôi cảm thấy thông minh, tôi cảm thấy rất khác biệt so với các Joes khác, tôi đã có một bằng tiến sĩ hoàn toàn mới, tôi ghét sự bắt buộc bởi vì nó là cho người chậm phát triển, Java hời hợt, Scala rất thanh lịch, v.v. ). Loại này không hiệu quả trong các dự án nghiêm túc và khó hòa hợp.
    • Tôi yêu cú pháp của Scala và rất thích viết DSL của tôi ở mọi nơi tôi có cơ hội viết mã. Loại này thích khai thác đặc thù của Scala đến giọt cuối cùng theo cách phá hoại. Họ cảm thấy tuyệt vời khi viết mã khó hiểu và quá súc tích đến mức không thể đọc được. Loại này đặc biệt nguy hiểm vì mã của họ không thể đọc được. Giveaway của họ là tình yêu của họ đối với quá tải nhà điều hành, tên lạ và viết một dòng.
    • Tôi gắn bó với Scala đến giọt cuối cùng không có vấn đề gì. Đây là loại chủ nghĩa thuần túy ngây thơ. Họ không thể đánh đổi và dự án phải chịu đựng khi một phương pháp lai được yêu cầu như trường hợp của các dự án trong thế giới thực.

Tái bút: Nếu bạn tìm thấy một Joe tốt thì xin hãy bằng mọi cách cho tôi biết khi chúng tôi cần một số;)


@Dave Briccetti, tôi đã nhận được ý tưởng "kết nối với cộng đồng" từ Dave và quyết định giải thích và nó đã kết thúc như một câu trả lời rất dài. Tín dụng cho Dave để đề cập đến cộng đồng;)
Ashkan Kh. Nazary

Bài đăng tuyệt vời. Bạn là ai?
Dave Briccetti

@Dave, tôi hiện là nhà phát triển chính @ AYLIEN đang thực hiện NLP theo cách Scala.
Ashkan Kh. Nazary

Câu trả lời tuyệt vời về tổng thể, nhưng +1 đặc biệt cho danh sách ngắn "lý do sai". Các bệnh lý tương tự có thể được tìm thấy trong những người cuồng tín C ++.
DarenW

1
Một người có lẽ có thể vượt qua hơn một nửa cuộc phỏng vấn mà không cần mã hóa trong Scala. Đây có phải là một lỗi, hoặc một tính năng? Tôi ngạc nhiên khi kết luận của bạn không phải là bất khả tri hơn về ngôn ngữ lập trình, ví dụ, sau tất cả, một nhà phát triển Scala tốt là một nhà phát triển tốt, chỉ với đường cú pháp khác nhau.
Arthur Havlicek

8

Trong một cuộc phỏng vấn trong thế giới thực, chỉ cần biết Scala là một nửa trận chiến thắng. Thuê một lập trình viên giỏi luôn khó khăn, bất kể ngôn ngữ!

Các lập trình viên Scala có xu hướng tìm đến ngôn ngữ này vì họ đã ở trên đỉnh của trò chơi của họ ở Java và muốn để đưa nó lên cấp độ tiếp theo.

Nếu bạn có sẵn nguồn cung cấp dồi dào cho các nhà phát triển Scala để phỏng vấn, thì hãy coi mình là người may mắn. Nếu không, những câu hỏi phù hợp hơn có thể là về những khía cạnh nào tôi nên tìm kiếm ở một lập trình viên mà tôi sẽ được đào tạo để sử dụng Scala? Trực tiếp và các công ty nào hiện có thể cung cấp dịch vụ đào tạo?


1
Tôi muốn nói rằng không phải tất cả các nhà phát triển Scala đều đứng đầu về Java (hoặc bất cứ điều gì), nhiều người trong số họ chỉ thích cảm giác "Tôi khác biệt" hoặc "Tôi thông minh" mà Scala mang lại cho họ. Nhiều người không có manh mối nhỏ nhất về những gì Scala thực sự nói về. Bạn nên cẩn thận với họ ;-)
Ashkan Kh. Phát xít

@ ashy_32bit - Điều đó ngày càng đúng, nhưng đó không phải là vấn đề quá nhiều khi tôi trả lời điều này vào năm 2011
Kevin Wright

7

Tôi muốn thấy các giải pháp cho những vấn đề nhỏ như thế này: Tạo một biểu đồ về kết quả của việc ném hai con xúc xắc sáu mặt 200 lần.

Xem các bình luận ở đây để biết một số câu trả lời thú vị: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html

Một người có giải pháp như Daniel Sobral, hoặc giải pháp này của Kevin Wright: http://ideone.com/8LFs3 sẽ đáng để xem xét kỹ hơn.

Nếu câu trả lời trông giống như mã Java, thì người nộp đơn có thể không đủ xa.

Tôi cũng muốn thấy rằng người đó được kết nối với cộng đồng Scala: Biết các cuốn sách, tác giả, nhà phát triển nguồn mở, nhóm người dùng, những người thú vị.


Mặc dù nó vượt qua mức trung bình ngành của chúng tôi khi bị giảm 2 ;-)
Duncan McGregor

4

Tôi chưa bao giờ thực hiện bất kỳ tuyển dụng Scala nào, nhưng tôi muốn tìm hiểu về cách thức hoạt động của hàm, kiểu mẫu lớp và cơ bản của lập trình chức năng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.