Baru-baru ini saya mengetahui bahwa Facebook memiliki tantangan pemrograman yang jika selesai dengan benar Anda secara otomatis mendapatkan wawancara telepon.
Ada contoh tantangan yang meminta Anda untuk menulis algoritma yang dapat menyelesaikan masalah tipe Tower of Hanoi . Diberi sejumlah pasak dan cakram, konfigurasi awal dan akhir; Algoritme Anda harus menentukan langkah sesedikit mungkin untuk mencapai konfigurasi final dan menampilkan langkah-langkahnya.
Tantangan sampel ini memberi Anda batas waktu 45 menit tetapi memungkinkan Anda untuk tetap menguji kode Anda untuk melihat apakah itu melewati begitu batas waktu Anda berakhir.
Saya tidak tahu ada solusi matematika lucu yang bisa menyelesaikannya, dan saya tidak ingin mencari satu karena saya pikir itu akan curang. Jadi saya mencoba untuk menyelesaikan tantangan yang terbaik yang saya bisa sendiri.
Saya dapat membuat algoritma yang berfungsi dan berhasil. Namun, saya membutuhkan waktu lebih dari 4 jam, lebih lama dari persyaratan 45 menit. Karena saya butuh waktu lebih lama dari waktu yang ditentukan, saya belum mencoba tantangan yang sebenarnya.
Ini membuat saya bertanya-tanya, pada kenyataannya apakah penting bahwa saya butuh waktu lama? Maksud saya apakah ini pertanda bahwa saya tidak akan bisa mendapatkan pekerjaan di tempat seperti ini (bukan hanya Facebook, tetapi Google, Fog Creek, dll.) Dan perlu menurunkan aspirasi saya, atau apakah fakta bahwa saya benar-benar lulus? pada upaya pertama saya meskipun butuh waktu terlalu lama dianggap baik?
sumber
Jawaban:
Dalam praktiknya tidak masalah berapa lama Anda. Salah satu yang dapat menyelesaikan masalah dalam 45 menit adalah - semuanya sama - lima kali lebih produktif daripada yang membutuhkan waktu 4 jam, dan karenanya lebih menarik bagi majikan.
Yang mengatakan, Anda tidak mengatakan mengapa Anda membutuhkan empat jam untuk menyelesaikan masalah ini.
Apa saja dan semua hal ini mungkin memengaruhi waktu yang Anda perlukan, dan sebenarnya lebih penting untuk dapat menyelesaikan masalah ketika berada di bawah tekanan, tanpa diberi tahu segalanya, dan dengan alat yang ada, karena itu AKAN terjadi selama karier Anda dan biasanya pada titik di mana sangat penting bagi seseorang apakah Anda berhasil atau tidak.
sumber
Tidak masalah, bagi perusahaan yang mencari pengembang umum dengan arus kas yang baik , karena lebih cepat berarti lebih banyak pekerjaan yang bisa dilakukan. Namun, dalam banyak kasus lain (sebenarnya saya berpendapat sebagian besar kasus), tidak masalah sebanyak kemampuan Anda untuk memecahkan masalah , dan kemampuan Anda untuk menyelesaikannya dengan baik .
Saya dapat memikirkan lima jenis pemecah masalah:
Orang-orang yang...
Tes gaya Facebook secara eksplisit menyingkirkan kandidat # 3, # 4, dan # 5 karena memiliki batasan waktu, jadi kami tahu bahwa tes ini adalah untuk pengusaha yang telah menentukan bahwa mereka hanya boleh merekrut kandidat # 1 atau mungkin # 2 ( tergantung pada penyaringan lebih lanjut).
Beberapa contoh:
sumber
Menara Hanoi? Itu adalah salah satu tugas pemrograman pertama yang saya miliki di kursus mahasiswa baru saya di universitas (tepat setelah Fibonacci - ya, saya memiliki kelas dengan salah satu dari orang-orang aneh pemrograman fungsional :). Dan saya bahkan tidak pada ilmu komputer, saya pada teknik komputer.
Dan tetap saja, sebagian besar yang disebut 'programmer' tidak dapat menulis algoritma semacam ini dengan benar, karena sebagian besar programmer mengerikan. (cari fizzbuzz untuk kesenangan tambahan)
Bagaimanapun, setelah Anda melewati ambang tertentu, saya pikir keterampilan pemrograman Anda tidak masalah sebanyak kemampuan Anda untuk menyelesaikan proyek, ketahanan Anda terhadap kesulitan, dll. Dan sepertinya Anda sudah melewatinya dengan pasti.
Facebook ingin mempekerjakan para pengembang top, tentu saja, tetapi saya tidak tahu berapa banyak dari mereka yang mereka harapkan dengan permainan seperti itu. Saya pikir mereka hanya tidak ingin kehilangan waktu dengan programmer yang sangat buruk.
Kiat yang selalu saya dengar adalah bahwa jika Anda ingin dipekerjakan oleh perusahaan teknologi keren, cobalah untuk terlibat dengan proyek sumber terbuka. Juga, cobalah untuk magang.
sumber
Ketika ada banyak pasokan (banyak calon pemrogram) dan sedikit permintaan (sedikit pekerjaan pemrograman), pemberi kerja bisa sangat menuntut seperti yang mereka inginkan. Faktanya, mereka harus banyak menuntut, atau mereka akan menghabiskan banyak waktu mewawancarai orang alih-alih menyelesaikan pekerjaan. Jadi, mereka memberikan kandidat tes yang sangat sulit untuk mendapatkan daftar pendek secepat mungkin, dan untuk memastikan bahwa mereka akan mewawancarai orang-orang yang tidak hanya baik, bahkan tidak sangat baik, tetapi sebenarnya karismatik .
Jadi, fakta bahwa Anda tidak menyelesaikan tes dalam kerangka waktu yang diberikan tidak berarti Anda adalah programmer yang buruk; Anda hanya tidak cocok dengan definisi dari apa yang dianggap facebook karismatik. Menurut saya, tidak apa-apa.
sumber
Waktu itu penting, tetapi jangan anggap Anda bodoh jika itu membutuhkan waktu lebih lama. Banyak orang memiliki hal-hal "hafal". Mereka berlatih menerapkan teknik seperti rekursi begitu banyak sehingga menjadi 2CD. Bukan karena mereka lebih pintar, mereka hanya berlatih sampai ke titik 2CD dan Anda juga bisa!
Pertimbangkan masalah matematika berikut: 2 + 2 =?
Jika Anda segera tahu jawabannya adalah 4 itu bukan karena Anda pintar, tetapi karena itu sifat 2cd. Seorang anak yang belajar menambahkan mungkin terpaksa harus menjalani operasi penghitungan paling mendasar untuk mendapatkan jawabannya. Tetapi anak itu mungkin memiliki potensi untuk melampaui orang dewasa.
sumber
Orang tidak terlalu peduli berapa banyak waktu yang Anda habiskan untuk melakukan sesuatu; hanya memenuhi tenggat waktu Anda dan semuanya baik-baik saja.
sumber
Cukup tegang, Ini akan mengharuskan saya untuk membaca tentang apa itu menara Hanoi -15menit, mulai IDE, buat solusi kosong -5menit, jadi itu hanya 25 menit untuk menyelesaikan masalah. Cukup menulis kode dengan semua pipa seperti kelas aman dengan desain antarmuka yang baik akan membutuhkan waktu juga -10 menit, jadi tinggal 15 menit untuk ide yang sebenarnya. Tergantung pada apa menara di Hanoi, itu mungkin sudah cukup, sedikit mungkin tidak. Dan kadang-kadang, saya hanya perlu membiarkan masalah menyelesaikan sendiri sementara saya sedang mengerjakan masalah lain, karena saya tidak melihat solusi di sana di tempat. Jadi itu dipecahkan secara gratis di utas paralel, tetapi itu tidak terjadi dalam sekejap.
Bagaimanapun, ini adalah salah satu perusahaan terbesar, sehingga mereka dapat melakukan apa pun yang mereka inginkan. Tetapi batas waktu adalah salah satu faktor terburuk dalam wawancara IMHO, saya selalu merasa ditekan, terburu-buru, tidak dapat melakukan semuanya dengan bersih, dan tidak dapat berkonsentrasi pada semua detail yang sangat penting ketika benar-benar bekerja. :) Tentu Anda dapat memecahkan solusi dengan cepat, seperti, mengatur akses ke admin sehingga semuanya berfungsi +
'SELECT * FROM pass WHERE usr == ' + user_input
, tetapi untuk tugas apa pun yang aman dan ditulis dengan baik saya akan bangga dengan, saya akan membutuhkan waktu dan 45 menit benar-benar sangat intens.sumber