Mereka harus kode FizzBuzz sambil berdiri di tangga.
Pekerjaan
2
@Job Poin ekstra jika FizzBuzz menggunakan State dan IO monads! :-)
Daniel C. Sobral
Saya menemukan beberapa pertanyaan kepada pengembang Scala dan memutuskan untuk menulis sendiri beberapa jawaban. Jika seseorang tertarik: pedrorijo.com/blog/scala-interview-questions
pedrorijo91
Jawaban:
17
Pertama, saya akan mengatakan, pikirkan mengapa Anda membutuhkan pengembang Scala. Apakah ini benar-benar Scala yang Anda butuhkan? Pikirkan tentang apa yang datang bersama dengan Scala (IDE, build tools, libs, lapisan kompleksitas lain di atas Java dll ...). Kembali ke pertanyaan. Ini berjalan dalam dua aspek: Pemahaman teoritis dan kemampuan praktis. jangan biarkan "teori" itu membodohi Anda. Ini sama pentingnya dalam Scala karena kepraktisan juga penting di Jawa.
Teoretis
Lihat apakah mereka tahu apa sebenarnya paradigma fungsional itu. Minta mereka untuk membandingkan dua paradigma (FP vs imperatif yang ada) dalam filsafat dan praktik. Jika mereka dapat memberikan contoh dari bahasa yang memiliki dukungan penuh atau sebagian untuk FP, maka itu merupakan nilai tambah bagi mereka.
Teori dan praktiknya berbaur
Lihat apakah mereka benar-benar dapat melakukan pemrograman fungsional dengan cara yang benar. Tanyakan kepada mereka tentang daftar, peta, ritsleting dan rekursi. Kemudian datang penutupan, lambda, pengurangan, fungsi tingkat tinggi dan ketidakberubahan.
Praktis
Lihat apakah mereka dapat memperbaiki potongan kode imperatif menjadi alternatif fungsional yang baik (lihat di atas). Coba loop yang mengimplementasikan beberapa matematika atau sesuatu di sepanjang garis ini.
Temukan selera mereka untuk gaya fungsional vs imperatif. Pilihlah gaya yang lebih fungsional tetapi berhati-hatilah agar itu tidak terlalu berlebihan bagi pihak pengembang.
Lihat seberapa banyak yang mereka ketahui tentang Scala libs (mis. Angkat, kirim, dll.) Dan alat (mis. SBT, fsc, IDEA).
Lihat seberapa baik mereka dapat memanfaatkan Java (code-and- tools). Scala sangat erat digabungkan ke Jawa khususnya di lingkungan yang lebih serius. Mengetahui ini adalah nilai tambah yang besar.
Teoretis
Minta mereka untuk membandingkan Scala dengan Java (PHP, C ++, Objective C atau apa pun) dan meminta mereka untuk memberi tahu Anda apa yang salah dengan Scala. Lihat apakah mereka memahami masalah dan juga kelebihannya. Minta mereka untuk memberikan contoh dunia nyata ketika kekurangan Scala dapat menyebabkan masalah (mis. Sulit bagi Joes baru untuk bergaul, itu belum matang karena dukungan sangat terbatas dibandingkan dengan Jawa dll)
Praktis
Lihat apakah mereka terhubung ke komunitas. Tanyakan kepada mereka tentang Martin Odersky dan David Pollak. Minta mereka untuk menyebutkan beberapa proyek Scala dan menjelaskannya kepada Anda (Facebook, Twitter, FourSquare, DBPedia, dan DBPedia SpotLight). Lihat apakah mereka tahu bagaimana tepatnya Scala digunakan dalam proyek-proyek ini. Sudahkah mereka membaca artikel, menonton video, dll?
Tanyakan kepada mereka tentang buku-buku itu (hanya ada beberapa). Semakin mereka tahu semakin baik.
Sebagai satu kata terakhir dari peringatan saya dapat mengatakan bahwa bahasa-bahasa brilian memiliki potensi aneh untuk menarik orang yang salah. Berhati-hatilah dengan jenis yang datang ke Scala untuk semua alasan yang salah. Berikut beberapa di antaranya:
Scala adalah untuk yang istimewa (saya merasa pintar, saya merasa sangat berbeda dari Joes lain, saya punya Ph.D baru mengkilap, saya benci keharusan karena itu untuk terbelakang, Jawa adalah dangkal, Scala sangat elegan, dll. ). Tipe ini tidak produktif dalam proyek-proyek serius dan sulit bergaul.
Saya jatuh cinta dengan sintaks Scala dan akan senang menulis DSL saya di mana saja saya mendapat kesempatan untuk kode. Jenis ini suka mengeksploitasi kekhasan Scala hingga tetes terakhir dengan cara yang merusak. Mereka merasa senang menulis kode yang samar dan terlalu ringkas sampai-sampai tidak terbaca. Jenis ini sangat berbahaya karena kode mereka tidak dapat dibaca. Hadiah mereka adalah kecintaan mereka pada kelebihan beban operator, nama-nama aneh dan penulisan satu kalimat.
Saya tetap dengan Scala hingga tetes terakhir, apa pun yang terjadi. Ini adalah tipe purist yang naif. Mereka tidak dapat berdagang dan proyek menderita ketika pendekatan hibrida diperlukan seperti halnya dengan proyek dunia nyata.
PS: Jika kamu menemukan Joe yang baik maka tolong beri tahu saya kalau kami butuh;)
@Dave Briccetti, saya mendapat ide "terhubung ke komunitas" dari Dave dan memutuskan untuk menguraikan dan itu berakhir sebagai jawaban yang sangat panjang. Penghargaan diberikan kepada Dave untuk menyebut komunitas;)
Ashkan Kh. Nazary
Pos yang bagus. Kamu siapa?
Dave Briccetti
@Dave, saya saat ini pengembang utama @ AYLIEN yang melakukan NLP dengan cara Scala.
Ashkan Kh. Nazary
Jawaban bagus secara keseluruhan, tetapi +1 terutama untuk daftar pendek "alasan yang salah". Patologi yang sama dapat ditemukan di fanatik C ++.
DarenW
1
Seseorang mungkin dapat melewati setengah dari wawancara itu tanpa kode di Scala, selamanya. Apakah itu bug, atau fitur? Saya terkejut kesimpulan Anda tidak lebih agnostik tentang bahasa pemrograman misalnya bahwa bagaimanapun, seorang scala dev yang baik adalah dev yang baik, hanya dengan gula sintaksis yang berbeda.
Arthur Havlicek
8
Dalam wawancara dunia nyata, hanya mengetahui Scala adalah setengah dari pertempuran yang dimenangkan. Menyewa seorang programmer yang baik selalu sulit, terlepas dari bahasa!
Pemrogram scala cenderung menggunakan bahasa tersebut karena mereka sudah berada di puncak permainan mereka di Jawa dan ingin “membawanya ke tingkat berikutnya”.
Jika Anda memiliki banyak pasokan pengembang Scala yang tersedia untuk wawancara, maka anggap diri Anda beruntung. Jika tidak, pertanyaan yang lebih relevan mungkin adalah “Aspek apa yang harus saya cari dalam seorang programmer yang akan saya latih untuk menggunakan Scala?” Dan “Perusahaan apa yang saat ini dapat memberikan layanan pelatihan?”
Saya ingin mengatakan bahwa tidak semua pengembang Scala berada di posisi teratas di Jawa (atau apa pun), banyak dari mereka hanya menyukai "Aku berbeda" atau "Aku pintar" merasa Scala memberi mereka. Banyak yang tidak memiliki petunjuk sedikit pun tentang apa sebenarnya Scala. Anda harus berhati-hati dengan mereka ;-)
Ashkan Kh. Nazary
@ ashy_32bit - Itu semakin benar saat ini, tetapi itu tidak terjadi banyak ketika saya menjawab ini pada tahun 2011
Kevin Wright
7
Saya suka melihat solusi untuk masalah kecil seperti ini: Buat histogram dari hasil melempar dua dadu enam sisi 200 kali.
Seseorang dengan solusi seperti milik Daniel Sobral, atau yang ini dari Kevin Wright: http://ideone.com/8LFs3 akan layak untuk dilihat lebih dekat.
Jika jawabannya terlihat seperti kode Java, maka pelamar mungkin tidak cukup jauh.
Saya juga ingin melihat bahwa orang tersebut terhubung ke komunitas Scala: Mengetahui buku, penulis, pengembang open source, grup pengguna, orang-orang yang menarik.
Meskipun itu mengalahkan rata-rata industri kami untuk berangkat pada 2 ;-)
Duncan McGregor
4
Saya belum pernah melakukan perekrutan Scala, tetapi saya akan mencari pemahaman tentang bagaimana implisit bekerja, pola kelas tipe, dan dasar-dasar pemrograman fungsional.
Jawaban:
Pertama, saya akan mengatakan, pikirkan mengapa Anda membutuhkan pengembang Scala. Apakah ini benar-benar Scala yang Anda butuhkan? Pikirkan tentang apa yang datang bersama dengan Scala (IDE, build tools, libs, lapisan kompleksitas lain di atas Java dll ...). Kembali ke pertanyaan. Ini berjalan dalam dua aspek: Pemahaman teoritis dan kemampuan praktis. jangan biarkan "teori" itu membodohi Anda. Ini sama pentingnya dalam Scala karena kepraktisan juga penting di Jawa.
Teoretis
Teori dan praktiknya berbaur
Praktis
Lihat apakah mereka dapat memperbaiki potongan kode imperatif menjadi alternatif fungsional yang baik (lihat di atas). Coba loop yang mengimplementasikan beberapa matematika atau sesuatu di sepanjang garis ini.
Temukan selera mereka untuk gaya fungsional vs imperatif. Pilihlah gaya yang lebih fungsional tetapi berhati-hatilah agar itu tidak terlalu berlebihan bagi pihak pengembang.
Lihat seberapa banyak yang mereka ketahui tentang Scala libs (mis. Angkat, kirim, dll.) Dan alat (mis. SBT, fsc, IDEA).
Lihat seberapa baik mereka dapat memanfaatkan Java (code-and- tools). Scala sangat erat digabungkan ke Jawa khususnya di lingkungan yang lebih serius. Mengetahui ini adalah nilai tambah yang besar.
Teoretis
Praktis
Lihat apakah mereka terhubung ke komunitas. Tanyakan kepada mereka tentang Martin Odersky dan David Pollak. Minta mereka untuk menyebutkan beberapa proyek Scala dan menjelaskannya kepada Anda (Facebook, Twitter, FourSquare, DBPedia, dan DBPedia SpotLight). Lihat apakah mereka tahu bagaimana tepatnya Scala digunakan dalam proyek-proyek ini. Sudahkah mereka membaca artikel, menonton video, dll?
Tanyakan kepada mereka tentang buku-buku itu (hanya ada beberapa). Semakin mereka tahu semakin baik.
Sebagai satu kata terakhir dari peringatan saya dapat mengatakan bahwa bahasa-bahasa brilian memiliki potensi aneh untuk menarik orang yang salah. Berhati-hatilah dengan jenis yang datang ke Scala untuk semua alasan yang salah. Berikut beberapa di antaranya:
PS: Jika kamu menemukan Joe yang baik maka tolong beri tahu saya kalau kami butuh;)
sumber
Dalam wawancara dunia nyata, hanya mengetahui Scala adalah setengah dari pertempuran yang dimenangkan. Menyewa seorang programmer yang baik selalu sulit, terlepas dari bahasa!
Pemrogram scala cenderung menggunakan bahasa tersebut karena mereka sudah berada di puncak permainan mereka di Jawa dan ingin “membawanya ke tingkat berikutnya”.
Jika Anda memiliki banyak pasokan pengembang Scala yang tersedia untuk wawancara, maka anggap diri Anda beruntung. Jika tidak, pertanyaan yang lebih relevan mungkin adalah “Aspek apa yang harus saya cari dalam seorang programmer yang akan saya latih untuk menggunakan Scala?” Dan “Perusahaan apa yang saat ini dapat memberikan layanan pelatihan?”
sumber
Saya suka melihat solusi untuk masalah kecil seperti ini: Buat histogram dari hasil melempar dua dadu enam sisi 200 kali.
Lihat komentar di sini untuk beberapa jawaban menarik: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html
Seseorang dengan solusi seperti milik Daniel Sobral, atau yang ini dari Kevin Wright: http://ideone.com/8LFs3 akan layak untuk dilihat lebih dekat.
Jika jawabannya terlihat seperti kode Java, maka pelamar mungkin tidak cukup jauh.
Saya juga ingin melihat bahwa orang tersebut terhubung ke komunitas Scala: Mengetahui buku, penulis, pengembang open source, grup pengguna, orang-orang yang menarik.
sumber
Saya belum pernah melakukan perekrutan Scala, tetapi saya akan mencari pemahaman tentang bagaimana implisit bekerja, pola kelas tipe, dan dasar-dasar pemrograman fungsional.
sumber