Bagaimana saya bisa menguji kemampuan PHP dalam sebuah wawancara? [Tutup]

58

Perusahaan saya perlu menyewa pengembang PHP, tetapi tidak ada yang memiliki pengetahuan PHP di perusahaan saya dan kami merasa sulit untuk menguji keterampilan PHP. Jika itu adalah pengembang C / Java saya akan memintanya untuk menulis implementasi cepat dari Game of Life, tetapi PHP adalah bahasa yang sama sekali berbeda.

Saya melihat tes ini dengan minat:

http://vladalexa.com/scripts/php/test/test_php_skill.html

Adakah yang punya saran lebih banyak?

Sabar
sumber
3
Tes yang menarik, tidak mencakup injeksi SQL yang saya pasti akan membahas. Saya kira tes itu adalah cara yang baik untuk menguji kemampuan mereka untuk menentukan keakraban mereka dengan bagaimana PHP memperlakukan variabel dan tidak banyak lagi.
Ben Brocka
6
Apa pun yang Anda lakukan, jangan bertanya tentang ejaan nama fungsi standar. Penamaan fungsi PHP sangat tidak konsisten.
Chris C
1
Kemungkinan duplikat dari programmers.stackexchange.com/questions/46274/…
Adam Lear
16
Saya tidak akan terlalu khawatir dengan PHP chops mereka dan lebih banyak lagi jika mereka dapat memprogram, bekerja dengan tim, memahami keamanan web, dll.
Peter Loron
12
Jika tidak ada perusahaan Anda yang mengenal PHP dengan baik, maka cara terbaik bagi Anda adalah menggunakan beberapa layanan pengujian keterampilan. http://tests4geeks.com/test/php-mysql - Saya suka yang ini. Dan kemudian, jika hasilnya bagus, Anda dapat memintanya untuk menulis beberapa kode PHP. Misalnya, ada siswa dan subjek dalam database. Mintalah dia untuk menulis formulir HTML, di mana sutradara mengedit tanda di tabel (Siswa di kolom kiri, Subjek berada di baris atas, Tanda berada di persimpangan).
Joseph

Jawaban:

71

Kode

  • Minta kandidat untuk menulis kode
  • Minta kandidat untuk membaca kode

Jika Anda meminta kandidat untuk menulis kode, pastikan bahwa:

  • Kode ini tidak sepele tetapi kecil
  • Anda mengizinkan akses ke manual dan internet

Jika Anda meminta kandidat untuk membaca kode, pastikan bahwa:

  • Kode memiliki beberapa kesalahan sepele
  • Kode memiliki beberapa kesalahan yang tidak sepele
  • Kode berfungsi dengan baik, tetapi dapat dengan mudah dioptimalkan

Anda dapat menggunakan tiga atau lebih potongan kode yang berbeda, mulai dari yang lebih sederhana dan hanya maju ke yang berikutnya jika Anda melihat bahwa kandidat mengatasi dengan mudah. Lempar rekursi, untuk membumbui semuanya.

Sumber daya

Mintalah daftar terperinci sumber daya PHP yang digunakan kandidat. Buku, blog, forum, majalah, dll. Begitulah cara majikan saya saat ini mengetahui tentang StackOverflow .

Jika kandidat menyebutkan StackOverflow atau Programmer, Anda TIDAK boleh bertanya atau mencoba mencari tahu nama pengguna mereka. Jika mereka ingin mengiklankan reputasi mereka, mereka akan menyertakan tautan Karir 2.0 di resume mereka.

Kerangka kerja

Setiap pengembang PHP harus mengetahui kerangka kerja PHP paling populer:

dan fasih dalam setidaknya satu dari mereka. Anda dapat memiliki beberapa contoh kode yang siap untuk masing-masing dan meminta kandidat untuk membaca dan menjelaskannya, setelah mereka memberi tahu Anda mana yang lebih mereka kenal.

Debugging & Profiling

Saya selalu merasa bahwa pengembang PHP kurang memiliki keterampilan debugging dan profil (mungkin hanya pengembang PHP yang pernah bekerja sama dengan saya). Jika selama diskusi Anda mengetahui bahwa kandidat aktif menggunakan xdebug , jangan repot-repot dengan sisa wawancara dan hanya mempekerjakan mereka. ;)

Sanitasi input

Ini penting. Anda dapat mulai dengan diskusi tentang mengapa ini penting dan kemudian meminta metode yang paling umum untuk mencapainya. Diskusi ini akan membantu Anda tentang apa yang harus ditanyakan.

Beberapa petunjuk:

PHP snafus

Anda dapat menemukan banyak snafus PHP dalam diskusi yang luar biasa ini . Jika Anda mewawancarai untuk posisi senior, Anda sebaiknya bertanya pada beberapa dari mereka. Beberapa contoh:

PHP menangani nilai-nilai numerik dalam string:

"01a4" != "001a4" // true
"01e4" == "001e4" // also true

Kode PHP yang valid :

System.out.print("hello");

Dalam PHP, string sama baiknya dengan pointer fungsi:

$x = "foo";
function foo(){ echo "wtf"; }
$x(); # "wtf"   

Pengujian unit

Perlu saya katakan lebih?

Kesimpulan

Pengembang PHP yang baik harus menggabungkan berbagai keterampilan & bakat:

  • Pemahaman yang baik tentang HTTP
  • Pemahaman yang baik tentang konfigurasi Apache (Bahkan jika Anda menggunakan server web yang berbeda di perusahaan Anda)
  • Setidaknya pemahaman dasar tentang JavaScript
  • Pemahaman yang bagus tentang HTML / CSS

Daftar ini terus berlanjut. Pastikan Anda menyesuaikan wawancara dengan kebutuhan spesifik pembukaan pekerjaan, Anda tidak ingin merekrut hanya pengembang yang baik tetapi pengembang yang baik sangat hebat dalam hal apa yang segera Anda perlukan untuk dia lakukan.

yannis
sumber
22
Jawaban yang bagus secara keseluruhan, tetapi saya tidak setuju pada bagian 'kerangka kerja' dan bagian 'kinerja dasar'. Apakah Anda tahu kerangka kerja tertentu atau tidak, tidak banyak bicara tentang kualitas Anda sebagai seorang programmer. Tentang bagian kinerja: jika Anda mengoptimalkan pada tingkat ini, Anda mungkin tidak boleh menggunakan PHP di tempat pertama. Saya membuat pilihan di antara alternatif yang Anda daftarkan puluhan kali setiap hari, tetapi selalu didasarkan pada keterbacaan dan fungsionalitas, bukan kinerja. Jawaban yang benar untuk pertanyaan kinerja ini adalah "tidak masalah sebagian besar waktu."
tdammers
1
@YannisRizos: Walaupun kemungkinan besar membuatnya lebih mudah untuk diintegrasikan dalam tim, Anda mengasumsikan bahwa di perusahaan OP mereka menggunakan salah satu dari kerangka kerja populer ini, tetapi jika mereka tidak mengetahui bahwa kerangka tersebut tidak akan membuktikan apa-apa. Mungkin Anda berarti bagian ini sebagai cara untuk menguji kemampuannya untuk bekerja dengan sebuah kerangka kerja bukan dengan orang-orang kerangka kerja? (Poin dalam kasus: di perusahaan tempat saya bekerja kami menggunakan kerangka kerja yang dikembangkan sendiri)
Purefan
2
@ Petah Itu tidak masuk akal sama sekali, terutama pada tahap wawancara dan saya akan menghindari bekerja di perusahaan yang meminta orang untuk mengungkapkan informasi seperti itu selama wawancara. Seluruh alasan "menyembunyikan sesuatu" itu tidak benar, saya tidak peduli dengan majikan saya karena tahu bagaimana saya menghabiskan waktu luang saya, dan itu saja. Jika saya tertarik untuk mempublikasikan akun Programmer saya sendiri, itu cerita yang berbeda ...
yannis
1
@ Petah Yah saya jujur ​​berharap majikan di masa depan tidak mencoba untuk mengenal kepribadian saya melalui kegiatan Programmer saya (yang ingin menghabiskan 25% -35% dari waktu mereka dengan mod nazi jahat;)
yannis
1
Tidak setuju dengan kerangka hal. Praktik modern yang baik adalah menggunakan komponen yang dapat diterapkan dari kerangka kerja menggunakan komposer yang Anda butuhkan daripada menggunakan keseluruhan kerangka kerja. Bahkan, hal yang sama dapat dikatakan di dunia JS sekarang juga ..
John Hunt
44

Tes yang Anda tautkan menarik, dan jawaban Yannis Rizos bagus, tapi saya pikir yang juga penting adalah ini:

Jika Anda membutuhkan pengembang yang baik, jangan mencari pengembang PHP. Cari pengembang yang baik yang mengerti PHP. Itu berarti, setidaknya setengah dari wawancara Anda harus mengajukan pertanyaan yang tidak ada hubungannya dengan sintaks PHP atau fungsi PHP.

Tanyakan padanya apa itu MVC, apa itu AJAX, bagaimana HTTP bekerja, bagaimana REST bekerja, bagaimana SQL bekerja, beberapa struktur data, beberapa dasar kinerja (bagaimana Anda mengukur, bagaimana Anda meningkatkan), dasar-dasar pengujian, dasar-dasar keamanan (XSS, XSRF, suntikan, bagaimana Anda bertahan), pengetahuan dasar pemrograman yang diterapkan pada domain PHP biasa - web, jaringan, transformasi data, dll.

Jika dia ahli dalam hal itu, lanjutkan memintanya untuk menulis beberapa kode sederhana, pilih beberapa tugas mudah yang seharusnya tidak memakan waktu lama - seperti menemukan kata-kata dengan sebagian besar vokal dalam satu baris dalam teks, atau membalikkan setiap kata dalam teks, atau mengalikan dua matriks. Anda juga dapat memintanya untuk mengimplementasikan Game of Life di PHP, jika Anda suka :)

Jika dia mengatasinya, maka Anda dapat melanjutkan ke pertanyaan PHP yang lebih rumit, tetapi jangan terlalu membebani ini. Dia bisa membaca sebagian besar dalam manual, dan apa yang tidak bisa dia baca, dia akan belajar dengan cepat jika dia baik. PHP dibangun untuk menjadi sederhana, jadi jika dia seorang programmer yang baik, dan memiliki pengetahuan tentang PHP, dia mungkin akan dapat mengejar ketinggalan. Jika dia tahu cara memprogram secara umum, maka mempelajari cara memprogram dalam PHP lebih mudah daripada sebaliknya - mengetahui minutia sintaksis PHP tidak penting jika Anda tidak mengerti untuk apa unit test atau bagaimana menyingkirkan masalah XSS.

StasM
sumber
13

Sementara jawaban Yannis Rizos adalah jawaban yang bagus - saya tahu saya tidak akan lulus ujian itu dan saya mungkin menggunakan jawaban itu sebagai sumber daya untuk menentukan di mana harus fokus untuk meningkatkan kemampuan PHP saya, saya pikir itu akan bernilai saat Anda menemukan pemrograman sobat yang tahu PHP untuk mengikuti proses wawancara. Semua pertanyaan dalam jawaban sebelumnya baik, tetapi tanpa pengetahuan domain, akan sulit untuk menilai kualitas jawaban.

Yang mengatakan, tergantung pada apa yang Anda butuhkan seperti yang orang lain katakan fasilitas pemrograman umum dan kesesuaian tim mungkin lebih penting daripada pengetahuan khusus bahasa.

cori
sumber
5
+1 untuk I think it would be worth your while to find a programming buddy who knows PHP to sit in on the interview process., saran bagus.
yannis