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.
sumber
Jawaban:
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
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.
sumber
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.
sumber