Wawancara 'kode buruk' adalah wawancara di mana orang yang diwawancarai ditunjukkan cuplikan 'kode buruk' dan diminta untuk memperbaikinya atau menunjukkan hal-hal yang salah dengannya. Saya mempunyai masalah dengan wawancara-wawancara ini karena saya perlu waktu untuk membaca kode, mencari tahu apa yang dilakukannya, dan menunjukkan kekurangannya. Dalam situasi di mana ada tekanan waktu, saya cenderung membeku dan saya melihat bahwa kode 'harus' berfungsi, bahkan ketika tidak.
Apa cara yang baik untuk menangani wawancara semacam ini, dan, secara umum, teknik apa yang baik untuk membaca dan memahami kode dengan cepat ?
interview
reading-code
quanticle
sumber
sumber
Jawaban:
Wawancara Kode Buruk (jika dilakukan dengan benar) akan menunjukkan kode kepada Anda dengan yang berikut:
using
pernyataan dalam C # saat diperlukan, atau menggunakanArrayList
alih - alih aList<T>
)ref
danout
parameter begitu banyak?)Ada daftar periksa mental yang harus Anda lalui, mengenai setiap poin di atas. Jika Anda tidak dapat melihat kode dan melakukannya, itu adalah titik perbaikan. Apa pun bahasa yang Anda anggap 'mahir', Anda harus dapat melihat satu blok kode dan menunjukkan keempat jenis kesalahan tersebut.
Baru-baru ini saya membuat blog tentang sepotong kode yang menunjukkan semua masalah ini , itu akan membantu Anda untuk melalui proses mental yang sama.
Ayende membawanya lebih dalam dengan seri Wages of Sin- nya.
sumber
List<T>
yang berisinull
elemen ...)Jangan mencoba memahaminya dengan cepat. Tujuannya di sini bukan untuk melihat apakah Anda dapat memahami kode seperti seorang guru, tetapi untuk melihat bagaimana Anda berpikir.
IMO kuncinya adalah berpikir keras. Jadi, bahkan jika Anda membeku - maka katakan saja, "Saya stres di sini, tapi biarkan saya melewati ini perlahan-lahan dengan keras".
Dengan asumsi Anda memiliki keterampilan berpikir keras akan cukup memperlambat Anda untuk membuat pikiran Anda benar. Jika wawancara cukup cerdas, mereka akan melihat situasi Anda dan membantu Anda sampai Anda berpikir jernih. Mereka tidak keluar untuk mencoba dan menipu Anda agar terlihat bodoh - hanya teknik yang kuat untuk melihat bagaimana Anda berpikir.
sumber
Kemungkinannya, 'tekanan waktu' yang Anda rasakan sepenuhnya dipaksakan sendiri. Ini lebih berkaitan dengan perasaan tidak aman Anda sendiri dan mengkhawatirkan seberapa baik Anda mengukur.
Nasihat terbaik yang bisa diberikan siapa pun adalah: Bersantai. Luangkan waktu Anda, lihat kode dan hanya berbicara tentang apa yang Anda lihat saat Anda melihatnya. Jangan ragu untuk membicarakan bagian yang baik dan yang buruk; itu akan membantu mengurangi kegugupan Anda dan ke dalam kekhawatiran bahwa terlalu banyak waktu berlalu.
Selain itu, melalui berbagai 'lintasan' mungkin membuatnya sedikit lebih mudah untuk menemukan detail tertentu. Ambil satu pass untuk mencari kawat gigi atau kesalahan ketik yang tidak cocok. Ambil jalan lain untuk mencari jalur yang tidak jelas. Ambil satu lagi mencari pretzel semantik. Berfokus pada satu jenis "hal yang salah" mungkin membuatnya lebih mudah untuk melihat detail-detail itu dan (lagi) mengurangi suara batin Anda mempertanyakan apakah Anda melakukannya dengan cepat / cukup baik.
Yang terpenting, bicaralah melalui apa yang Anda lakukan dan pikirkan - itu akan membantu Anda dan pewawancara keduanya.
sumber
Saya belum pernah dalam wawancara semacam ini, tetapi ketika saya mencoba mengerjakan sepotong kode rumit yang mungkin saya curigai buruk, kadang-kadang saya berbicara dengan pelan kepada diri saya sendiri. Saya menemukan vokalisasi kadang membantu penyelesaian masalah. Juga dalam sebuah wawancara, Anda bisa mencoba melacak langkah-langkah eksekusi sebagai diagram atau sesuatu dengan pensil dan kertas. Ini dulu bekerja untuk saya di sekolah, masih kadang-kadang melakukannya di tempat kerja. YMMV, tentu saja ...
sumber
Saya pikir tempat yang bagus untuk memulai (jika Anda tidak melihat sesuatu yang jelas) adalah dengan "men-debug" -nya. Kecuali jika Anda melihat masalah yang mungkin terjadi, tempat yang baik untuk memulai adalah membuat daftar nilai pengujian kecil. Nilai yang baik adalah nilai 'jalur bahagia' (normal), nilai 'nol' atau 'kosong', nol, nilai yang sangat kecil (string 1 karakter, int 1, dll.), Sangat besar atau sangat panjang nilai, dan nilai 'aneh' khusus untuk jenis (misalnya, karakter Unicode untuk string, angka negatif untuk int, dll.). Tidak ada salahnya untuk menyebutkan bahwa biasanya Anda akan menulis unit test menggunakan nilai-nilai ini untuk menguji kode, dan hanya akan menjalankannya untuk memverifikasi fungsi.
Mulailah dengan berjalan melalui nilai happy-path Anda. Untuk fungsi tambahan, Anda bisa mulai dengan 3 atau 4. Periksa setiap baris untuk kesalahan ketik dan kesalahan logika, melacak nilai-nilai variabel lokal saat Anda pergi. Semoga Anda menemukan beberapa bug. Ketika Anda selesai dengan jalan bahagia, Anda akan memiliki perasaan yang lebih baik untuk kode dan mudah-mudahan akan merasa sedikit kurang kewalahan - jadi katakan sesuatu seperti, "Sekarang saya memiliki perasaan yang lebih baik untuk apa yang dilakukan kode ini, saya akan melangkah mundur dan melihatnya, "lalu lakukan hal itu - mencari hal-hal yang menonjol bagi Anda sebagai hal-hal yang akan Anda lakukan secara berbeda (keputusan desain yang buruk, variabel dengan nama buruk, selidiki kemungkinan bug, dll.).
Jika itu tidak membuat Anda ke mana-mana, atau jika Anda merasa Anda kehabisan hal untuk dikatakan, kembali ke daftar nilai tes Anda, dan berjalan lagi dengan yang baru yang menurut Anda kemungkinan akan menyebabkan masalah.
Setidaknya ini akan membuat Anda pergi.
sumber
Seperti yang dikatakan Stephen Bailey, berpikir keras adalah teknik yang sangat baik dalam situasi ini karena memungkinkan pewawancara Anda melihat proses berpikir Anda. Semacam menjelaskan apa yang Anda coba cari tahu. Hal lain yang bisa Anda lakukan adalah memberi tahu pewawancara bahwa Anda akan membaca kode dengan benar sebelum memberikan diagnosis tentang kejahatan dalam kode. Saya berada di kedua sisi meja dan saya tahu ini bisa membuat frustasi bagi kedua sisi dalam situasi ini.
sumber
Jika Anda merasa tidak terlalu tertekan untuk melakukannya sebagai ujian tertulis, cabut buku catatan Anda dan mulai mencatat. Saya mengeluarkan buku catatan dan mulai membuat sketsa sebagai bagian dari proses berpikir saya dalam sebuah wawancara. Memiliki buku catatan dan pena membuat Anda terlihat teratur. Anda mungkin menuliskan beberapa poin penting untuk dicari, sintaksis, kesalahan logika, ketidakcocokan tipe data, nilai variabel lokal (daftar dapat bervariasi tergantung pada jenis kode yang Anda dapatkan, daftar saya untuk sepotong SQL yang kompleks akan berbeda dari seseorang yang mendapat sepotong kode yang bukan data centric) ketika Anda melewati proses, dll. Setelah Anda menulis beberapa dari ini, kemudian mulai mencari mereka. Dengan begitu bahkan jika Anda tidak menemukan semua masalah sebelum pewawancara ingin melanjutkan, ia akan dapat melihat daftar hal-hal yang akan Anda periksa. Jika Anda membuat daftar periksa terlebih dahulu dari hal-hal yang mungkin ingin Anda cari, maka Anda akan merasa lebih percaya diri memulai proses mengetahui hal-hal yang telah Anda rencanakan untuk dilihat. Biasanya qiestions ini lebih tentang bagaimana Anda akan menemukan kesalahan daripada benar-benar menemukan semuanya.
sumber
Saya agak terlambat ke pesta ini, tetapi satu teknik yang bisa Anda gunakan adalah menulis unit test untuk kode yang dimaksud. Kemudian Anda dapat lebih sedikit berkonsentrasi pada apa yang salah dengan kode dan lebih pada hasil yang Anda harapkan. Saya lebih suka mempekerjakan seseorang yang bisa menulis tes yang bagus daripada seseorang yang bisa langsung melihat apa yang salah dengan sepotong kode.
sumber
Mungkin ada dua masalah:
Mungkin itu adalah "wawancara stres" http://en.wikipedia.org/wiki/Job_interview#Stress . Pewawancara sedang mencoba untuk melihat bagaimana Anda mengatasi stres karena lingkungan kerjanya yang demikian.
ATAU
Anda mungkin menjadi stres sendiri. Dalam hal ini Anda harus mengelola stres ini, Misalnya introspeksi dan lihat bagaimana Anda bisa tetap tenang.
sumber