Jak przeprowadzane są rozmowy z programistami Scala [zamknięte]


17

Jak przeprowadza się wywiady z programistami Scala? Jakie aspekty szuka ankieter podczas rozmowy z programistą Scala?


10
Muszą zakodować FizzBuzz, stojąc na drabinie.
Job

2
@Zakładaj dodatkowe punkty, jeśli FizzBuzz używa monad State i IO! :-)
Daniel C. Sobral

Znalazłem kilka pytań dla programistów Scali i postanowiłem napisać kilka odpowiedzi samodzielnie. Jeśli ktoś jest zainteresowany: pedrorijo.com/blog/scala-interview-questions
pedrorijo91

Odpowiedzi:


17

Po pierwsze, powiem, zastanów się, dlaczego potrzebujesz programisty Scala. Czy naprawdę potrzebujesz Scali? Pomyśl o tym, co przychodzi wraz ze Scalą (IDE, narzędzia do budowania, biblioteki lib, kolejna warstwa złożoności powyżej Java itp.) Powrót do pytania Ma dwa aspekty: teoretyczne zrozumienie i umiejętności praktyczne. nie daj się zwieść „teorii”. Jest to tak samo ważne w Scali, jak praktyczność jest ważna w Javie.

Teoretyczny

  • Sprawdź, czy wiedzą, na czym tak naprawdę polega paradygmat funkcjonalny. Poproś ich, aby porównali dwa paradygmaty (czyli FP z imperatywem) w filozofii i praktyce. Jeśli mogą podać przykłady z języków, które mają pełne lub częściowe wsparcie dla FP, to jest to dla nich plus.

Teoria i praktyka mieszały się

  • Sprawdź, czy potrafią właściwie programować funkcjonalnie we właściwy sposób. Zapytaj ich o listy, mapy, kompresowanie i rekurencję. Potem są zamknięcia, lambda, redukcja, funkcje wyższego rzędu i niezmienność.

Praktyczny

  • Sprawdź, czy potrafią zmienić fragment kodu imperatywnego na dobrą funkcjonalną alternatywę (patrz wyżej). Wypróbuj pętlę, która implementuje matematykę lub coś w tym stylu.

  • Znajdź swój gust w stylu funkcjonalnym vs imperatywnym. Wybierz bardziej funkcjonalny styl, ale zachowaj ostrożność, aby nie dojść do skrajności po stronie dewelopera.

  • Zobacz, ile wiedzą o bibliotekach Scala (np. Lift, dispatch itp.) I narzędziach (np. SBT, fsc, IDEA).

  • Zobacz, jak dobrze potrafią wykorzystać Javę (narzędzia i kody). Scala jest ściśle związana z Javą, szczególnie w poważniejszych środowiskach. Wiedza o tym jest dużym plusem.

Teoretyczny

  • Poproś, aby porównali Scalę z Javą (PHP, C ++, Objective C lub cokolwiek innego) i poproszą, aby powiedzieli ci, co jest nie tak ze Scalą. Sprawdź, czy rozumieją problemy, a także zalety. Poproś ich, aby podali rzeczywiste przykłady tego, kiedy braki Scali mogą powodować problemy (np. Trudno jest dogadać się z nowymi Joesami, jest niedojrzałe, ponieważ wsparcie jest bardzo ograniczone w porównaniu z Javą itp.)

Praktyczny

  • Sprawdź, czy są połączone ze społecznością. Zapytaj ich o Martina Oderskiego i Davida Pollaka. Poproś, aby wymienili kilka projektów Scala i opisali je Tobie (Facebook, Twitter, FourSquare, DBPedia i DBPedia SpotLight). Sprawdź, czy wiedzą, jak dokładnie Scala jest wykorzystywana w tych projektach. Czy czytali artykuły, oglądali filmy itp.?

  • Zapytaj ich o książki (jest ich tylko kilka). Im więcej wiedzą, tym lepiej.

  • Jako ostatnie słowo ostrzeżenia mogę powiedzieć, że genialne języki mają ten dziwny potencjał przyciągania niewłaściwych ludzi. Uważaj na to, co przychodzi do Scali z niewłaściwych powodów. Oto kilka:

    • Scala jest dla uprzywilejowanych (czuję się mądry, czuję się tak różny od innych Joes, mam zupełnie nowy błyszczący doktorat, nienawidzę imperatywu, ponieważ jest dla opóźnionego, Java jest powierzchowna, Scala jest taka elegancka itp. ). Ten typ nie jest produktywny w poważnych projektach i trudno się z nim dogadać.
    • Jestem zakochany w składni Scali i chciałbym pisać moją DSL wszędzie, gdzie mam okazję kodować. Ten rodzaj uwielbia wykorzystywać osobliwości Scali do ostatniej kropli w niszczycielski sposób. Świetnie się czują, pisząc tajemniczy i zbyt zwięzły kod, aż do tego stopnia, że ​​są nieczytelne. Ten rodzaj jest szczególnie niebezpieczny, ponieważ ich kod jest nieczytelny. Ich upominkiem jest ich miłość do przeciążania operatora, dziwnych nazwisk i pisania jedno-linijek.
    • Trzymam się Scali do ostatniej kropli bez względu na wszystko. To naiwny purystyczny typ. Nie mogą się wymieniać, a projekt cierpi, gdy wymagane jest podejście hybrydowe, tak jak ma to miejsce w przypadku rzeczywistych projektów.

PS: Jeśli znalazłeś dobrego Joe, to proszę, daj mi znać, bo potrzebujemy trochę;)


@Dave Briccetti, dostałem pomysł Dave'a „związany ze społecznością” i postanowiłem go rozwinąć, co zakończyło się bardzo długą odpowiedzią. Podziękowania należą się Dave'owi za wzmiankę o społeczności;)
Ashkan Kh. Nazary,

Wspaniały post. Kim jesteś?
Dave Briccetti,

@Dave, obecnie jestem głównym programistą @ AYLIEN, który zajmuje się NLP po Scala.
Ashkan Kh. Nazary,

Świetna odpowiedź ogólnie, ale +1, szczególnie z krótkiej listy „niewłaściwych powodów”. Te same patologie można znaleźć w fanatykach C ++.
DarenW,

1
Prawdopodobnie można przekazać ponad połowę tego wywiadu bez kodowania w Scali. Czy to błąd, czy funkcja? Dziwię się, że twoja konkluzja nie jest bardziej agnostyczna w odniesieniu do języka programowania, np. Że dobry deweloper Scala jest dobrym deweloperem, tylko z innym cukrem składniowym.
Arthur Havlicek,

8

W wywiadzie z prawdziwego świata po prostu wiedza, że ​​Scala to połowa zwycięskiej bitwy. Zatrudnienie dobrego programisty jest zawsze trudne, niezależnie od języka!

Programiści Scali zwykle przychodzą do tego języka, ponieważ byli już na szczycie swojej gry w Javie i chcieli „przenieść ją na wyższy poziom”.

Jeśli masz wystarczającą liczbę programistów Scala dostępnych na rozmowę kwalifikacyjną, uważaj się za szczęściarza. Jeśli nie, bardziej odpowiednie pytania mogą brzmieć: „Jakich aspektów powinienem szukać u programisty, którego będę szkolił w zakresie korzystania ze Scali?” Oraz „Jakie firmy są obecnie w stanie świadczyć usługi szkoleniowe?”


1
Chciałbym powiedzieć, że nie wszyscy programiści Scali są najlepsi w Javie (lub czymkolwiek), wielu z nich po prostu uwielbia „jestem inny” lub „jestem mądry”. Wielu nie ma pojęcia, o co tak naprawdę chodzi w Scali. Powinieneś być z nimi ostrożny ;-)
Ashkan Kh. Nazary,

@ ashy_32bit - Obecnie jest to coraz bardziej prawdziwe, ale nie było tak wiele, kiedy odpowiedziałem na to w 2011 roku
Kevin Wright

7

Lubię widzieć rozwiązania takich małych problemów: Zrób histogram wyników rzucania dwiema sześciokątnymi kostkami 200 razy.

Zobacz komentarze tutaj, aby uzyskać interesujące odpowiedzi: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html

Ktoś z rozwiązaniem takim jak Daniel Sobral lub ten z Kevin Wright: http://ideone.com/8LFs3 byłby wart bliższego przyjrzenia się.

Jeśli odpowiedź wygląda jak kod Java, wnioskodawca może nie być wystarczająco daleko.

Chciałbym również zobaczyć, że osoba jest powiązana ze społecznością Scala: zna książki, autorów, programistów open source, grupy użytkowników, ciekawych ludzi.


Chociaż przewyższa naszą średnią branżową, jeśli chodzi o 2 ;-)
Duncan McGregor,

4

Nigdy nie zatrudniałem Scali, ale szukałem zrozumienia, w jaki sposób implikuje ona pracę, wzorzec klas typów i podstawy programowania funkcjonalnego.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.