Scala 개발자 인터뷰 방법 [폐쇄]


17

스칼라 프로그래머는 어떻게 인터뷰를합니까? 스칼라 개발자를 인터뷰 할 때 면접관이 찾는 측면은 무엇입니까?


10
그들은 사다리에 서있는 동안 FizzBuzz를 코딩해야합니다.
Job

2
FizzBuzz가 State 및 IO 모나드를 사용하는 경우 @Job Extra points! :-)
Daniel C. Sobral

스칼라 개발자에게 몇 가지 질문을 발견하고 스스로 답변을 작성하기로 결정했습니다. 누군가 관심이 있다면
pedrorijo91

답변:


17

먼저, 왜 스칼라 개발자가 필요한지 생각해보십시오. 정말 당신이 필요한 스칼라입니까? 스칼라 (IDE, 빌드 도구, 라이브러리, Java보다 복잡한 다른 계층 등)와 함께 제공되는 사항을 생각해보십시오. 질문으로 돌아 가기 이론적 이해와 실용 능력이라는 두 가지 측면으로 나뉩니다. "이론"이 당신을 속이게하지 마십시오. 실용성이 Java에서 중요하기 때문에 Scala에서 중요합니다.

이론적 인

  • 기능적 패러다임이 무엇인지 알고 있는지 확인하십시오. 그들에게 철학과 실천의 두 패러다임 (FP와 명령)을 비교해 보라고한다. 그들이 FP를 전적으로 또는 부분적으로 지원하는 언어의 예를들 수 있다면 그것은 더할 나위 없습니다.

이론과 실습

  • 이들이 실제로 올바른 방식으로 기능적 프로그래밍을 수행 할 수 있는지 확인하십시오. 목록,지도, 압축 및 재귀에 대해 문의하십시오. 그런 다음 클로저, 람다, 축소, 고차 함수 및 불변성을 제공합니다.

실용적인

  • 그것들이 명령형 코드 스 니펫을 좋은 기능의 대안으로 리팩터링 할 수 있는지 확인하십시오 (위 참조). 이 선을 따라 수학이나 무언가를 구현하는 루프를 사용해보십시오.

  • 기능적 스타일과 명령형 스타일에 대한 취향을 찾으십시오. 더 기능적인 스타일을 선택하되 개발자 쪽에서는 극한까지 도달하지 않도록주의하십시오.

  • Scala 라이브러리 (예 : 리프트, 디스패치 등) 및 도구 (예 : SBT, fsc, IDEA)에 대해 얼마나 알고 있는지 확인하십시오.

  • 이들이 Java (코드 및 도구)를 얼마나 잘 활용할 수 있는지 확인하십시오. 스칼라는보다 심각한 환경에서 특별히 Java와 밀접하게 연결되어 있습니다. 이것을 아는 것은 큰 장점입니다.

이론적 인

  • 스칼라와 자바 (PHP, C ++, Objective C 또는 기타)를 비교하고 스칼라의 문제점을 알려달라고 요청하십시오. 그들이 문제와 장점을 이해하는지 확인하십시오. 스칼라의 결점으로 인해 문제가 발생할 수있는 실제 사례를 제시하도록 요청하십시오 (예 : 새로운 Joe가 만나기가 어렵고 지원이 Java 등에 비해 매우 제한적이므로 미숙합니다)

실용적인

  • 이들이 커뮤니티에 연결되어 있는지 확인하십시오. Martin Odersky와 David Pollak에 대해 물어보십시오. 그들에게 몇몇 Scala 프로젝트의 이름을 정하고 당신에게 그것들을 설명하도록 요청하십시오 (Facebook, Twitter, FourSquare, DBPedia 및 DBPedia SpotLight). 이 프로젝트에서 스칼라가 정확히 어떻게 사용되는지 알고 있는지 확인하십시오. 기사를 읽고 동영상을 보았습니까?

  • 그들에게 책에 대해 물어보십시오 (몇 개만 있습니다). 더 많이 알수록 좋습니다.

  • 마지막으로주의해야 할 말로, 훌륭한 언어는 잘못된 사람들을 끌어들이는이 이상한 잠재력을 가지고 있다고 말할 수 있습니다. 모든 잘못된 이유로 스칼라에 오는 종류에주의하십시오. 몇 가지가 있습니다 :

    • 스칼라는 특권을 가지고 있습니다 (나는 똑똑하고 다른 조와는 다르게 느끼고, 새로운 반짝임 박사 학위를 받았으며 지연을위한 것이므로 명령이 싫어하고 자바는 피상적이며 스칼라는 너무 우아합니다. ). 이 유형은 심각한 프로젝트에서는 생산적이지 않으며 다루기가 어렵습니다.
    • 나는 스칼라의 구문을 좋아하고 코딩 할 수있는 곳이라면 어디에서나 DSL을 작성하고 싶습니다. 이 종류는 스칼라의 특성을 마지막으로 떨어 뜨리는 특성을 파괴적으로 사용하는 것을 좋아합니다. 암호를 읽을 수 없을 정도로 비밀스럽고 간결한 코드를 작성하는 것이 좋습니다. 이러한 종류의 코드는 읽을 수 없으므로 특히 위험합니다. 그들의 공짜는 운영자 과부하, 이상한 이름 및 원 라이너 작성에 대한 그들의 사랑입니다.
    • 나는 무엇이든 상관없이 스칼라를 마지막 방울에 붙입니다. 순진한 순수 주의자 유형입니다. 실제 프로젝트와 마찬가지로 하이브리드 방식이 필요한 경우에는 거래를 할 수 없으며 프로젝트는 어려움을 겪습니다.

추신 : 만약 당신이 좋은 조를 발견했다면 꼭 알려주세요.)


@Dave Briccetti, 나는 Dave로부터 "커뮤니티에 연결됨"아이디어를 얻었고 정교하기로 결정했고 매우 긴 답변으로 끝났습니다. 신용은 공동체를 언급 한 Dave에게 간다;)
Ashkan Kh. Nazary

좋은 포스트. 누구세요?
Dave Briccetti

@Dave, 저는 현재 NLP를 스칼라 방식으로 수행하는 @ AYLIEN의 수석 개발자입니다.
Ashkan Kh. Nazary

전체적으로 큰 대답이지만 특히 "잘못된 이유"의 짧은 목록에 대해 +1입니다. C ++ 광신자에서도 동일한 병리를 찾을 수 있습니다.
DarenW

1
스칼라로 코딩하지 않고도 인터뷰의 절반 이상을 통과 할 수 있습니다. 버그입니까, 아니면 기능입니까? 나는 당신의 결론이 프로그래밍 언어에 대해 더 무의미하지 않다는 것에 놀랐다. 예를 들어, 좋은 스칼라 개발은 다른 구문 설탕과 함께 훌륭한 개발이다.
Arthur Havlicek

8

실제 인터뷰에서 스칼라를 아는 것만으로도 승리 한 것입니다. 언어에 관계없이 좋은 프로그래머를 고용하는 것은 항상 어려운 일입니다!

스칼라 프로그래머는 이미 자바에서 게임의 최상위에 있고“다음 단계로 넘어 가기”를 원했기 때문에 언어를 사용하는 경향이 있습니다.

인터뷰 할 수있는 스칼라 개발자가 풍부하다면 운이 좋다고 생각하십시오. 그렇지 않다면 더 관련성이 높은 질문은 "스칼라를 사용하도록 훈련 할 프로그래머에서 어떤 측면을 찾아야합니까?"및 "현재 어떤 회사에서 훈련 서비스를 제공 할 수 있습니까?"일 수 있습니다.


1
모든 스칼라 개발자가 Java (또는 무엇이든)를 능가하는 것은 아니며, 많은 사람들이 스칼라가 느끼는 "나는 다르다"또는 "나는 똑똑하다"는 느낌을 좋아합니다. 많은 사람들이 스칼라가 무엇에 관한 것인지에 대한 최소한의 단서를 가지고 있지 않습니다. 조심해야합니다 ;-)
Ashkan Kh. Nazary

@ ashy_32bit-요즘에는 점점 더 사실이지만 2011 년에이 질문에 대답했을 때 그리 많이 그렇지 않았습니다.
Kevin Wright

7

나는 이와 같은 작은 문제에 대한 해결책을보고 싶다. 두 개의 6 면체 주사위를 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 ;-)에 의해 떨어져 업계의 평균을 능가하지만
Duncan McGregor

4

나는 스칼라 채용을 한 적이 없지만 암시 적 작동 방식, 유형 클래스 패턴 및 함수형 프로그래밍의 기본 사항에 대한 이해를 찾고 싶습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.