Как интервьюируют разработчиков Scala [закрыто]

17

Как проходят собеседования с программистами Scala? Какие аспекты ищет интервьюер при опросе разработчика Scala?

prasonscala
источник
10
Они должны кодировать FizzBuzz, стоя на лестнице.
Работа
2
@Job Дополнительные очки, если FizzBuzz использует монады State и IO! :-)
Даниэль С. Собрал
Я нашел несколько вопросов для разработчиков Scala и решил сам написать несколько ответов. Если кому-то это интересно: pedrorijo.com/blog/scala-interview-questions
pedrorijo91

Ответы:

17

Во-первых, я бы сказал, подумайте, зачем вам Scala-разработчик. Вам действительно нужен Scala? Подумайте о том, что идет вместе со Scala (IDE, инструменты для сборки, библиотеки, еще один уровень сложности выше Java и т. Д.). Вернуться к вопросу. Это идет в двух аспектах: теоретическое понимание и практические способности. не позволяйте «теории» обмануть вас. Это так же важно в Scala, как практичность важна в Java.

теоретический

  • Посмотрите, знают ли они, что такое функциональная парадигма. Попросите их сравнить две парадигмы (FP против императива, то есть) в философии и практике. Если они могут привести примеры из языков с полной или частичной поддержкой FP, то это для них плюс.

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

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

практический

  • Посмотрите, могут ли они преобразовать императивный фрагмент кода в хорошую функциональную альтернативу (см. Выше). Попробуйте цикл, который реализует некоторые математические или что-то в этом роде.

  • Найдите их вкус к функциональности против императивного стиля. Выберите более функциональный стиль, но будьте осторожны, он не доходит до крайности на стороне разработчика.

  • Посмотрите, как много они знают о библиотеках Scala (например, Lift, Dispatch и т. Д.) И инструментах (например, SBT, fsc, IDEA).

  • Посмотрите, насколько хорошо они могут использовать Java (инструменты кода и). Scala тесно связана с Java, особенно в более серьезных средах. Знание этого является большим плюсом.

теоретический

  • Попросите их сравнить Scala с Java (PHP, C ++, Objective C и т. Д.) И попросить их рассказать вам, что не так с Scala. Посмотрите, понимают ли они проблемы, а также преимущества. Попросите их привести примеры из реальной ситуации, когда недостатки Scala могут вызвать проблемы (например, новичкам трудно ладить, они незрелые, поскольку поддержка очень ограничена по сравнению с Java и т. Д.)

практический

  • Посмотрите, связаны ли они с сообществом. Спросите их о Мартине Одерском и Дэвиде Поллаке. Попросите их назвать несколько проектов Scala и описать их вам (Facebook, Twitter, FourSquare, DBPedia и DBPedia SpotLight). Посмотрите, знают ли они, как именно Scala используется в этих проектах. Они читали статьи, смотрели видео и т. Д.?

  • Спросите их о книгах (их всего несколько). Чем больше они знают, тем лучше.

  • В качестве последнего слова предостережения я могу сказать, что блестящие языки обладают этим странным потенциалом для привлечения не тех людей. Будьте осторожны с тем, что приходит в Scala по всем неправильным причинам. Вот несколько:

    • Scala для привилегированных (я чувствую себя умным, я чувствую себя настолько отличным от других Джо, у меня есть совершенно новый блестящий доктор философии, я ненавижу императив, потому что это для отсталых, Java поверхностен, Scala настолько элегантен, и т. Д. ). Этот тип не продуктивен в серьезных проектах и ​​с ним трудно ладить.
    • Я влюблен в синтаксис Scala и хотел бы писать свой DSL везде, где у меня есть возможность писать код. Этот вид любит эксплуатировать особенности Scala до последней капли разрушительным способом. Они прекрасно сочиняют загадочный и лаконичный код до такой степени, что его невозможно прочитать. Этот вид особенно опасен, так как их код не читается. Их распродажа - любовь к перегрузкам операторов, странным именам и написанию однострочников.
    • Я придерживаюсь Scala до последней капли, несмотря ни на что. Это наивный пуристский тип. Они не могут пойти на компромисс, и проект страдает, когда требуется гибридный подход, как в случае с реальными проектами.

PS: Если вы нашли хорошего Джо, то, пожалуйста, непременно сообщите мне, как нам нужно;)

Ашкан Х. Назарий
источник
@Dave Briccetti, я получил идею «связан с сообществом» от Дейва и решил уточнить, и в итоге я получил очень длинный ответ. Благодарю Дэйва за упоминание сообщества;)
Ашкан Х. Назар
Отличный пост. Кто ты?
Дэйв Бричетти,
@ Дэйв, я в настоящее время ведущий разработчик @ AYLIEN, который занимается NLP Scala.
Ашкан Х. Назар
Отличный ответ в целом, но +1 особенно за короткий список "неправильных причин". Те же патологии можно найти в фанатиках C ++.
DarenW
1
Вероятно, можно пропустить половину этого интервью, не закодировав в Scala. Это баг или фича? Я удивлен, что ваш вывод не более агностичен в отношении языка программирования, например, что, в конце концов, хороший разработчик Scala - хороший разработчик, просто с другим синтаксическим сахаром.
Артур Гавличек
8

В реальном интервью просто знание того, что Scala - это половина выигранной битвы. Нанимать хорошего программиста всегда сложно, независимо от языка!

Программисты Scala склонны переходить на язык, потому что они уже были на вершине своей игры на Java и хотели «поднять его на новый уровень».

Если у вас есть множество разработчиков Scala, доступных для интервью, то считайте себя счастливчиком. Если нет, то более актуальными могут быть следующие вопросы: «Какие аспекты мне следует искать у программиста, которого я буду обучать использованию Scala?» И «Какие компании в настоящее время могут предоставлять услуги обучения?»

Кевин Райт
источник
1
Я хотел бы сказать, что не все разработчики Scala являются лучшими в Java (или что-то в этом роде), многим из них просто нравится чувство «я другой» или «я умный», которое дает им 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 раза ;-)
Дункан МакГрегор,
4

Я никогда не нанимал Scala, но я бы искал понимание того, как это влияет на работу, шаблон классов типов и основы функционального программирования.

Даниэль С. Собрал
источник