Cara yang baik untuk mempelajari cara menyelesaikan pertanyaan di InterviewStreet [ditutup]

10

Kemungkinan Gandakan:
Bagaimana saya beradaptasi dengan pertanyaan tantangan pra-wawancara?

InterviewStreet adalah perusahaan baru yang pada dasarnya bertindak sebagai filter bagi perusahaan untuk menemukan programmer yang dapat membuat kode. Masalah saya adalah matematika saya cukup lemah dan saya ingin mempelajarinya, bahkan jika itu dari bawah, untuk dapat memecahkan pertanyaan seperti ini, yang ditemukan di situs mereka:

Find the no of positive integral solutions for the equations (1/x) + (1/y) = 1/N! (read 1 by n factorial) Print a single integer which is the no of positive integral solutions modulo 1000007

Sekarang, JANGAN memposting jawaban untuk pertanyaan itu, itu diambil langsung dari InterviewStreet dan tidak boleh diposting di sini. Bukan jawaban yang saya cari di utas ini. Yang saya tanyakan adalah pertanyaan yang lebih mendasar yang mungkin bisa dijawab oleh beberapa peretas di komunitas SO.

Bagaimana seseorang mempersiapkan diri untuk pertanyaan seperti itu? Sumber daya apa yang tersedia untuk saya pelajari / pelajari cara memecahkan masalah jenis ini? Apakah ini termasuk dalam courseware terbuka MIT? Akademi Khan? Ada buku tertentu? Saya bahkan tidak yakin harus mulai dari mana menyelesaikan masalah di atas dan saya ingin mempelajari langkah-langkah apa yang dapat saya lakukan untuk melakukannya.

imajinatif
sumber
jangan salah paham - saya sangat suka pertanyaan semacam ini (teka-teki kecil untuk akhir pekan) - tetapi saya benar-benar tidak berpikir Anda akan menemukan program yang bagus dengan itu - Anda akan menemukan matematika-geeks (yang mungkin bagus di programmig) - dan kita semua tahu bahwa orang-orang menyelesaikan kode, tetapi orang di sebelah mereka tidak akan pernah bisa membaca kode mereka :) ... ingin tahu apakah ada yang baik? Duduk dan untuk memprogram 2 jam dengan orang itu dan Anda akan belajar lebih banyak daripada jika dia menyukai Gardner-puzzle
Carsten

Jawaban:

9

Seringkali pertanyaan wawancara dirancang untuk menguji keterampilan Anda dalam memecahkan masalah tanpa memerlukan pengetahuan khusus. Tetapi untuk pertanyaan Anda, beberapa pengetahuan matematika pasti akan membantu. Paling tidak, Anda harus memahami definisi 'integral positif' dan 'modulo'. Kursus pengantar teori bilangan mungkin berguna, mungkin yang ini dari OCW .

Saya juga merekomendasikan Project Euler untuk masalah sampel - ini cara yang bagus untuk mengembangkan pengetahuan matematika dan pemrograman Anda. Pilih bahasa dan mulai bekerja melalui latihan.


sumber
6

Anda tidak dapat mempersiapkan diri untuk masalah seperti ini hanya dengan menghafal sebuah buku. Satu-satunya cara untuk menjadi pandai dalam pemecahan masalah adalah dengan melakukan banyak dan banyak masalah. Saya sarankan mendapatkan algoritma dan struktur data buku dan membacanya. Ini akan mempercepat proses secara signifikan.

Saya ingat beberapa tahun yang lalu saya menghabiskan seluruh musim panas (5+ jam sehari) berlatih memecahkan masalah-masalah semacam ini hanya untuk bersenang-senang.

Ada sejumlah tempat di mana Anda bisa melakukan ini. Project Euler adalah titik awal yang baik. Hakim UVa Online juga memiliki banyak masalah.

tskuzzy
sumber
Itu beberapa komitmen. Apakah Anda menemukannya membantu Anda dalam kemampuan pemrograman umum Anda?
Darren Young
3
Benar. Saya berpartisipasi dalam Olimpiade Komputasi Amerika Serikat di sekolah menengah dan beralih dari siapa pun menjadi 20 besar di AS. Dalam hal pemrograman "dunia nyata", saya pikir saya dapat mengatakan dengan sangat percaya diri bahwa keterampilan saya telah dipertajam secara signifikan. Sekarang saya tidak mengatakan semua orang harus keluar dan melakukan apa yang saya lakukan, tetapi saya pikir perlu menghabiskan waktu mengasah keterampilan memecahkan masalah Anda. Anda benar-benar dapat belajar banyak dan itu jelas berlaku untuk pengembangan perangkat lunak.
tskuzzy
0

Masalah khusus ini mengharuskan Anda untuk mengetahui teori bilangan dasar, khususnya gagasan seperti memfaktorkan bilangan komposit, beberapa properti bilangan prima dan pemahaman tentang pasangan bilangan yang relatif prima.

Masalah lain di situs ini membutuhkan pemahaman notasi O besar, struktur data sederhana, algoritma dasar seperti pengurutan, dan kombinatorik. Saya telah melewati 3 dari 5 masalah dan saya hampir selesai dengan masalah ke-4 saya, dan saya belum menggunakan pengetahuan khusus apa pun setelah tahun pertama kelas CS saya di perguruan tinggi. Yang mengatakan, ini adalah masalah yang sulit. Beberapa dari mereka membutuhkan intuisi matematika yang mengejutkan.

Untuk mempersiapkan hal-hal semacam ini, Anda harus pandai dalam pemecahan masalah matematika. Lihatlah ke Olympiad (jika Anda di sekolah menengah) atau ujian Putnam (jika Anda kuliah) dan lakukan masalah latihan yang Anda temukan. Mereka sulit, tetapi pada akhirnya Anda menjadi lebih baik.

Juga, jangan lakukan pertanyaan 30 poin - Kuadran Kueri - pertama. Sejauh ini yang paling sulit.

lionel b
sumber