Scala Geliştiricileri ile Nasıl Görüşme Yapılıyor [kapatıldı]


17

Scala programcılarıyla nasıl görüşme yapılır? Bir Scala geliştiricisiyle röportaj yaparken görüşmecinin aradığı yönler nelerdir?


10
Onlar bir merdiven üzerinde dururken FizzBuzz kodlamak zorunda.
Meslek

2
@ İş FizzBuzz State ve IO monads kullanıyorsa ekstra puan! :-)
Daniel C. Sobral

Scala geliştiricilerine bazı sorular buldum ve kendime bazı cevaplar yazmaya karar verdim. Birisi ilgileniyorsa: pedrorijo.com/blog/scala-interview-questions
pedrorijo91

Yanıtlar:


17

İlk olarak, neden bir Scala geliştiricisine ihtiyacınız olduğunu düşünün. Gerçekten ihtiyacınız olan Scala mı? Scala ile birlikte gelenleri düşünün (IDE, araçlar, kütüphaneler, Java'nın üstünde başka bir karmaşıklık katmanı vb.). Soruya geri dön. İki açıdan ele alınmaktadır: Teorik anlayış ve pratik yetenekler. "teori" olayının sizi kandırmasına izin vermeyin. Scala'da Java için pratiklik önemli olduğu kadar önemlidir.

Teorik

  • İşlevsel paradigmanın gerçekte ne hakkında olduğunu bildiklerine bakın. Onlardan felsefe ve pratikte iki paradigmayı (FP ile zorunlu olan) karşılaştırmasını isteyin. FP için tam veya kısmi desteğe sahip dillerden örnekler verebilirlerse, bu onlar için bir artıdır.

Teori ve pratik karıştı

  • İşlevsel programlamayı gerçekten doğru şekilde yapıp yapamayacaklarına bakın. Onlara listeler, haritalar, sıkıştırma ve özyineleme hakkında sorular sorun. Ardından kapaklar, lambdalar, azaltma, yüksek dereceli fonksiyonlar ve değişmezlik geliyor.

Pratik

  • Zorunlu bir kod snippet'ini iyi bir işlevsel alternatif haline getirip getiremeyeceklerine bakın (yukarıya bakın). Bu çizgiler boyunca matematik veya başka bir şey uygulayan bir döngü deneyin.

  • İşlevsel ve zorunluluk tarzı için zevklerini bulun. Daha işlevsel bir stil tercih edin, ancak geliştirici tarafında aşırı uçlara ulaşmadığına dikkat edin.

  • Scala kütüphaneleri (örn. Kaldırma, sevkiyat vb.) Ve araçlar (örn. SBT, fsc, IDEA) hakkında ne kadar bildiklerini görün.

  • Java'dan ne kadar iyi yararlandıklarını görün (kod ve araçlar). Scala, özellikle daha ciddi ortamlarda Java ile sıkı sıkıya bağlıdır. Bunu bilmek büyük bir artı.

Teorik

  • Scala'yı Java (PHP, C ++, Objective C ya da her neyse) ile karşılaştırmalarını isteyin ve Scala ile ilgili neyin yanlış olduğunu söylemelerini isteyin. Sorunları ve avantajları anlayıp anlamadıklarına bakın. Scala'nın eksikliklerinin ne zaman sorun yaratabileceğine dair gerçek dünyadan örnekler vermelerini isteyin (örneğin, yeni Joes için anlaşılması zor, Java ile karşılaştırıldığında destek çok sınırlı olduğu için olgunlaşmamış).

Pratik

  • Topluluğa bağlı olup olmadıklarına bakın. Martin Odersky ve David Pollak hakkında sor. Onlardan birkaç Scala projesi adlandırmasını ve bunları size açıklamasını isteyin (Facebook, Twitter, FourSquare, DBPedia ve DBPedia SpotLight). Scala'nın bu projelerde tam olarak nasıl kullanıldığını bilip bilmediklerine bakın. Makaleleri okudular mı, videoları izlediler mi?

  • Onlara kitapları sor (sadece birkaç tane var). Ne kadar çok bilirlerse o kadar iyi.

  • Son bir uyarı kelimesi olarak, parlak dillerin yanlış insanları çekmek için bu garip potansiyele sahip olduğunu söyleyebilirim. Scala'ya gelen tüm yanlış nedenlerden dolayı dikkatli olun. İşte az:

    • Scala ayrıcalıklı biri için (zeki hissediyorum, diğer Joes'den çok farklı hissediyorum, yepyeni bir parlak doktora sahibim, zorunluluktan nefret ediyorum çünkü engelli için, Java yüzeysel, Scala çok zarif, vb. ). Bu tür ciddi projelerde verimli değildir ve üstesinden gelmek zordur.
    • Scala'nın sözdizimine aşığım ve DSL kodumu yazabileceğim her yere yazmak isterdim. Bu tür, Scala'nın özelliklerini son damlasına yıkıcı bir şekilde sömürmeyi sever. Okunamaz olma noktasına şifreli ve özlü kod yazmak harika. Bu tür kodları okunamaz olduğundan özellikle tehlikelidir. Onların hediye, operatörün aşırı yüklenmesi, garip isimler ve tek gömlek yazma sevgisidir.
    • Ne olursa olsun Scala ile son damlasına sadık kaldım. Bu saf saflık tipidir. Gerçek dünya projelerinde olduğu gibi hibrit bir yaklaşım gerektiğinde takas edilemez ve proje zarar görür.

Not: İyi bir Joe bulduysanız, lütfen bize ihtiyacımız olduğu için bana bildirin;)


@Dave Briccetti, Dave'den "topluma bağlı" fikrini aldım ve detaylandırmaya karar verdim ve çok uzun bir cevap olarak sona erdi. Kredi, topluluktan bahsetmek için Dave'e gider;)
Ashkan Kh. Nazary

Harika gönderi. Kimsin?
Dave Briccetti

@Dave, şu anda NLP'yi Scala yolunda yapan baş geliştirici @ AYLIEN'im.
Aşkan Kh. Nazary

Genel olarak büyük cevap, ama özellikle "yanlış nedenlerin" kısa listesi için +1. Aynı patolojiler C ++ fanatiklerinde bulunabilir.
DarenW

1
Muhtemelen bu röportajın yarısını Scala'da kodlamadan geçebilir. Bir hata mı yoksa bir özellik mi? Sonuçlarınızın programlama dili konusunda daha agnostik olmamasına şaşırıyorum, sonuçta iyi bir Scala geliştiricisi, sadece farklı sözdizimsel şekerle iyi bir geliştirici.
Arthur Havlicek

8

Gerçek dünyayla yapılan bir röportajda, sadece Scala'yı bilmek kazanılan savaşın yarısıdır. İyi bir programcı işe almak dilden bağımsız olarak her zaman zordur!

Scala programcıları dile gelme eğilimindedir çünkü zaten Java'daki oyunlarının zirvesindeydiler ve “bir sonraki seviyeye taşımak istediler”.

Görüşme için bol miktarda Scala geliştiricisi varsa, kendinizi şanslı sayın. Değilse, daha alakalı sorular “Scala'yı kullanmak için eğitim alacağım bir programcıda hangi yönleri aramalıyım?” Ve “Şu anda hangi şirketler eğitim hizmeti verebiliyor?” Olabilir.


1
Scala geliştiricilerinin hepsinin Java'da (ya da her neyse) en üstte olmadığını, birçoğunun Scala'nın onlara verdiği "Farklıyım" ya da "Akıllıyım" hissini sevdiğini söylemek isterim. Birçoğu Scala'nın gerçekte ne olduğuna dair en ufak bir ipucuna sahip değil. Onlara dikkat etmelisin ;-)
Ashkan Kh. Nazary

@ ashy_32bit - Bu, günümüzde gittikçe daha doğru, ancak 2011'de buna cevap verdiğimde pek de böyle değildi
Kevin Wright

7

Bunun gibi küçük sorunların çözümlerini görmek isterim: İki altı taraflı zarın 200 kez atılmasının sonuçlarının bir histogramını yapın.

Bazı ilginç cevaplar için buradaki yorumlara bakın: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html

Daniel Sobral'ınki gibi bir çözümü olan veya Kevin Wright'ın bu çözümü olan biri: http://ideone.com/8LFs3 daha yakından bakmaya değer.

Cevap Java koduna benziyorsa, başvuru sahibi yeterince uzakta olmayabilir.

Ayrıca kişinin Scala topluluğuna bağlı olduğunu da görmek isterim: Kitapları, yazarları, açık kaynak geliştiricileri, kullanıcı gruplarını, ilginç insanları bilir.


Her ne kadar 2 ;-) kapalı olmakla endüstri ortalamamızı geçse de
Duncan McGregor

4

Daha önce hiç Scala işe almadım, ancak etkilerin nasıl çalıştığını, sınıf modelini ve fonksiyonel programlamanın temellerini nasıl anladığımı anlayabilirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.