Як опитують розробників Scala [закрито]


17

Як опитуються програмісти Scala? Які аспекти шукає інтерв'юер, опитуючи розробника Scala?


10
Їм доводиться кодувати FizzBuzz, стоячи на сходах.
Робота

2
@Job Додаткові бали, якщо FizzBuzz використовує монади State та IO! :-)
Даніель К. Собрал

Я знайшов кілька запитань до розробників Scala і вирішив написати кілька відповідей сам. Якщо когось цікавить: pedrorijo.com/blog/scala-interview-questions
pedrorijo91

Відповіді:


17

По-перше, я б сказав, подумайте, навіщо вам потрібен розробник Scala. Чи справді вам потрібна Скала? Подумайте, що поставляється разом із Scala (IDE, інструменти для збирання, libs, ще один рівень складності над Java тощо). Повернення до питання. Це складається у двох аспектах: теоретичне розуміння та практичні здібності. не дозволяйте думці "теорії" вас обдурити. У Scala це так само важливо, як практичність важлива на Java.

Теоретичний

  • Подивіться, чи знають вони, що таке функціональна парадигма насправді. Попросіть їх порівняти дві парадигми (ФП проти імперативного, що є) у філософії та практиці. Якщо вони можуть навести приклади з мов, які мають повну або часткову підтримку FP, то це для них плюс.

Теорія та практика змішалися

  • Подивіться, чи дійсно вони можуть правильно функціонувати програмування. Запитайте їх про списки, карти, поштовхи та рекурсії. Потім приходять закриття, лямбда, скорочення, функції вищого порядку і незмінність.

Практична

  • Подивіться, чи можуть вони переробити імперативний фрагмент коду в хорошу функціональну альтернативу (див. Вище). Спробуйте цикл, який реалізує певну математику або щось подібне.

  • Знайдіть свій смак до функціонального та імперативного стилю. Виберіть більш функціональний стиль, але будьте обережні, він не доходить до крайностей на стороні розробника.

  • Подивіться, скільки вони знають про губки Scala (наприклад, ліфт, відправлення тощо) та інструменти (наприклад, SBT, fsc, IDEA).

  • Подивіться, наскільки добре вони можуть використовувати Java (code -and- tools). Scala тісно пов'язана з Java спеціально в більш серйозних умовах. Знання цього - великий плюс.

Теоретичний

  • Попросіть їх порівняти Scala з Java (PHP, C ++, Objective C або будь-що інше) і вимагайте від них сказати, що не так із Scala. Подивіться, чи розуміють вони проблеми, а також переваги. Попросіть їх навести приклади в реальному світі, коли недоліки Скали можуть спричинити неприємності (наприклад, новим Джосам важко ладити, він незрілий, оскільки підтримка дуже обмежена порівняно з Java тощо)

Практична

  • Подивіться, чи вони підключені до спільноти. Запитайте їх про Мартіна Одерського та Девіда Поллака. Попросіть їх назвати кілька проектів Scala та описати їх вам (Facebook, Twitter, FourSquare, DBPedia та DBPedia SpotLight). Подивіться, чи знають вони, як саме Scala використовується в цих проектах. Чи читали вони статті, переглядали відео тощо?

  • Запитайте їх про книги (їх лише кілька). Чим більше вони знають, тим краще.

  • Як одне останнє застереження я можу сказати, що геніальні мови мають цей дивний потенціал для залучення неправильних людей. Будьте уважні до виду, який приходить до Скали з усіх неправильних причин. Ось декілька:

    • Скала - це привілейований (я відчуваю себе розумним, я відчуваю себе настільки відмінним від інших Джос. У мене є абсолютно новий блискучий доктор філософії, я ненавиджу необхідність, оскільки це для відсталих, Java - поверхня, Скала така елегантна і т.д. ). Цей тип не є результативним у серйозних проектах і його важко ладити.
    • Я закоханий у синтаксис Scala і хотів би писати свій DSL скрізь, коли я отримую можливість кодувати. Цей вид любить руйнівно використовувати особливості Скали до останньої краплі. Вони чудово пишуть криптовалютний і надто стислий код, щоб зробити його нерозбірливим. Цей вид особливо небезпечний, оскільки їх код не читається. Їх роздача - це їх любов до перевантаження операторів, дивних імен та написання однокласників.
    • Я тримаюсь зі Скалою до останньої краплі, незважаючи ні на що. Це наївний пуристський тип. Вони не можуть торгувати, і проект страждає, коли потрібен гібридний підхід, як це стосується реальних проектів у світі.

PS: Якщо ви знайшли хорошого Джо, то будь-ласка, будь ласка, повідомте мені, як нам це потрібно;)


@Dave Briccetti, я отримав ідею "підключення до громади" від Дейва і вирішив детально розробитись, і це закінчилося як дуже довга відповідь. Кредит належить Дейву за згадування громади;)
Ашкан Х. Nazary

Чудовий пост. Хто ти?
Дейв Бріксетті

@Dave, я в даний час провідний розробник @ AYLIEN, який робить NLP шляхом Scala.
Ашкан Х. Назарій

Чудова відповідь загалом, але +1 особливо для короткого списку "неправильних причин". Такі ж патології можна зустріти у фанатиків С ++.
DarenW

1
Напевно, можна пропустити більше половини інтерв'ю, не кодуючи в Scala ніколи. Це помилка чи функція? Я здивований, що ваш висновок не є більш агресивним щодо мови програмування, наприклад, що все-таки хороший розробник Scala - це хороший розробник, просто з різним синтаксичним цукром.
Артур Гавлічек

8

У реальному інтерв'ю просто знати, що Скала - це половина виграної битви. Найняти хорошого програміста завжди важко, незалежно від мови!

Програмісти Scala схильні до мови, тому що вони вже були на вершині своєї гри на Java і хотіли «перенести її на наступний рівень».

Якщо у вас є достатня кількість розробників Scala, доступних для співбесіди, тоді вважайте себе щасливчиком. Якщо ні, то більш релевантними питаннями можуть бути "Які аспекти слід шукати у програміста, якого я навчатимусь використовувати Scala?" Та "Які компанії в даний час можуть надавати навчальні послуги?"


1
Я хотів би сказати, що не всі розробники Scala переважають на Java (або що завгодно), багато з них просто люблять "я інший" або "я розумний", відчуваючи, що Scala дає їм. Багато хто не має ані найменшого поняття про те, що насправді йдеться про Scala. Вам слід бути обережними з ними ;-)
Ашкан Х. Назарій

@ ashy_32bit - Це все частіше актуально в наш час, але це було не так вже й тоді, коли я відповів на це в 2011 році
Кевін Райт

7

Мені подобається бачити такі невеликі проблеми, як це: Складіть гістограму результатів, кинувши дві шестигранні кістки 200 разів.

Дивіться коментарі тут, щоб отримати цікаві відповіді: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html

Хтось із таким рішенням, як Даніель Собрал, або це з Кевіна Райт: http://ideone.com/8LFs3 варто було б детальніше ознайомитись.

Якщо відповідь виглядає як код Java, то заявник може бути недостатньо далеко.

Я також хотів би побачити, що людина пов’язаний із спільнотою Scala: Знає книги, авторів, розробників з відкритим кодом, групи користувачів, цікавих людей.


Хоча це перевищує середній показник для нашої галузі за 2 :-)
Duncan McGregor

4

Я ніколи не робив жодного найму Scala, але хотів би зрозуміти, як впливає робота, тип класового шаблону та основи функціонального програмування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.