Saya menghadiri banyak wawancara dan berada di kedua sisi konfrontasi. Sekarang saatnya berbagi teka-teki paling menarik dengan yang lain. Untuk wawancara harus menarik dan mudah diingat, dan tidak menyedihkan dan menurunkan motivasi.
Beberapa komentar
- Semua tugas pada logika dan / atau pemrograman. Tidak ada nuansa psikologis dan palka bulat.
- Keputusan tidak diberikan dengan sengaja. Namun, saya meyakinkan Anda bahwa hampir semua tugas memiliki solusi yang sederhana dan indah. Selamat menikmati!
Tugasnya
Inilah mereka.
String cermin dalam SQL
Misalkan kita memiliki tabel dengan kolom string dan kita ingin menemukan baris yang sama berdasarkan beberapa kondisi (misalnya, itu bisa berupa pencarian teks lengkap atau beberapa fungsi internal yang menerima dua nilai pada input dan mengembalikan true / false). Jadi, kami menulis self-join dan, tentu saja, kami mendapatkan duplikat di antara nilai-nilai tersebut. Artinya, kami mendapatkan pasangan cermin sebagai hasilnya dan nilai totalnya tepat dua kali lebih banyak dari yang kita inginkan. Pertanyaan: bagaimana menghapus dari satu elemen hasil dari setiap pasangan cermin dan hanya menyisakan nilai unik di sana hingga permutasi?
Kiat & Trik- ada satu properti string dan pernyataan SQL dasar yang tidak jelas yang dapat Anda gunakan ...
- Atau Anda dapat google itu, jika permintaan sudah benar, jawabannya akan ada di tautan pertama ke stackoverflow.
Menemukan Lubang dengan SQL
Ini adalah tugas yang sangat baik untuk menilai pengetahuan tentang semua fitur dasar SQL.
Misalkan kita memiliki tabel dengan satu kolom int. Kami tidak tahu apa-apa tentang nilai minimum / maksimum di dalamnya. Juga, kita tidak tahu apa-apa tentang jumlah baris dalam tabel dan, secara umum, itu bervariasi dan kita tidak harus bergantung padanya. Kita juga tahu bahwa di antara nilai-nilai ada kelalaian yang panjangnya tidak melebihi satu. Sebagai contoh, untuk tabel 5 (lima) elemen: 1, 2, 4, 6, 7. Pertanyaan: tulis satu query SQL hanya menggunakan operator dasar (yaitu, tanpa prosedur dan variabel), yang akan mengembalikan nilai semua "lubang". Untuk contoh di atas, hasilnya harus 3, 5. Ingat bahwa tidak ada nilai NULL di celahnya. Nilai 3 dan 5 tidak secara fisik ada dalam tabel.
Kiat- jika pemindahan gagal, tulis beberapa kueri atau gunakan pl / sql, dan kemudian, jika ide Anda benar, Anda bisa masuk ke satu permintaan secara logis.
Petunjuk- permintaan yang paling indah adalah jika permintaan untuk kondisi input di atas tidak mengembalikan "3, 5", tetapi "3, 5, 8".
Loop dalam daftar yang terhubung sendiri
Ini adalah masalah tentang algoritma dan kompleksitas.
Misalkan kita memiliki daftar yang terbatas dan terhubung secara sederhana. Kita tahu bahwa itu mungkin memiliki siklus. Artinya, salah satu elemen berikut mengacu pada salah satu yang sebelumnya. Penting untuk menggambarkan metode menemukan siklus dalam struktur seperti itu dalam waktu yang terbatas. Selain itu, Anda harus memberikan perkiraan waktu dan memori yang diperlukan untuk menjalankan algoritma yang diusulkan.
Lanjutan
Penting untuk memodifikasi hasilnya sehingga kompleksitas memori adalah O (1). Yaitu, agar konsumsi memori tidak tergantung pada ukuran daftar.
Petunjuk- ingat bahwa sama seperti massa dapat dikonversi menjadi energi, kompleksitas waktu juga dapat dikonversi menjadi konsumsi memori dan sebaliknya.
Penyimpanan nilai kunci
Tugas lain untuk menulis kode bersama dan mendiskusikannya selama penulisan.
Tulis penyimpanan nilai kunci dalam bahasa apa pun yang Anda inginkan. Tambahkan fungsi set_all
, yang mengambil nilai dan menetapkannya untuk semua kunci yang ada. Perkirakan biaya waktu dan memori untuk implementasi yang dihasilkan.
Sekarang buat set_all
berfungsi untuk O (1).
Dan dapatkah Anda memastikan bahwa kompleksitas metode get
and set
tetap di awal, dan set_all
terus bekerja untuk O (1)? Jika ya, maka implementasikan. Jika tidak, buktikan mengapa ini tidak mungkin.
Menyelamatkan orang
Dan dalam tugas ini Anda perlu berpikir dan bernalar dengan orang yang diwawancarai. Dan implementasi adalah masalah teknologi dan tidak terlalu menarik.
Bayangkan kita memiliki sekelompok orang. Kuantitas tidak masalah. Seluruh kelompok berbaris di belakang kepala satu sama lain dan topi hitam atau putih diletakkan di setiap kepala. Tidak ada yang tahu warna topi yang ia kenakan. Namun, semua orang melihat apa yang terjadi di depan mereka dan mendengar apa yang terjadi di belakang mereka. Setelah itu, seorang asing dengan pistol datang ke belakang kelompok terakhir. Dia bertanya, "apa warna topimu?" Jawabannya hanya hitam atau putih. Tidak ada pesan lain. Jika seseorang menebak, mereka akan membiarkannya pergi. Kalau tidak, tembakan terjadi dan, dalam kasus apa pun, proses ini berulang dengan anggota terakhir "baru" dalam antrian.
Klarifikasi penting: sebelum memulai pengalaman tidak manusiawi ini, semua anggota kelompok dapat bertemu dan memikirkan strategi bertahan hidup mereka.
Pertanyaan: bagaimana cara memaksimalkan jumlah orang yang selamat dan apakah ada perkiraan akurat jumlah orang yang selamat tergantung pada ukuran kelompok?
Kiat- pikirkan bagaimana setiap anggota dapat mengumpulkan semua informasi yang tersedia dan mengirimkannya dalam satu bit?
Petunjuk- mungkin genap / ganjil atau operator XOR dapat membantu Anda?
Itu saja. Sekarang giliran Anda untuk menyelesaikan masalah dan berbicara tentang pilihan s / untuk wawancara yang menarik.