Menyimpan 5000 elemen di sisi klien dalam aplikasi web [ditutup]

12

Saya baru saja melakukan wawancara telepon untuk pengembang ASP.Net, setelah hal-hal pengantar awal pewawancara mengajukan pertanyaan teknis pertama kepada saya:

"Bagaimana Anda menyimpan 5000 elemen di sisi klien untuk setiap pengguna dalam aplikasi web".

Jawaban saya dimulai dengan,

Berapa ukuran rata-rata setiap elemen? Apakah kita benar-benar harus menyimpan data sebanyak ini di sisi klien? Tidak bisakah kita menyimpannya di basis data dan menautkan ini ke sesi pengguna / ID klien entah bagaimana .

Jawabannya adalah "Tidak, Anda memberi tahu saya bagaimana Anda akan menyimpannya di sisi klien, mengingat setiap elemen adalah catatan dengan sekitar 8 bidang termasuk int / string, baris tabel normal".

Saya berkata, "Mungkin menyimpannya dalam satu sesi, tetapi karena sesi dikelola di sisi server untuk setiap pengguna, itu bisa menjadi mahal, atau opsi lain adalah menyimpan banyak data dalam cookie", saya juga mengatakan bahwa saya tidak yakin apakah data sebanyak itu bisa disimpan dalam cookie. Saya menyebutkan opsi Penyimpanan HTML5 ada di sana, tetapi saya belum menggunakannya. Karena didasarkan pada SQLite, ia dapat menyimpan banyak data secara teoritis .

Di situlah pewawancara agak sinis berkata, sehingga Anda memiliki 3 tahun pengalaman dalam pengembangan web, dan mengakhiri wawancara.

Saya bertanya-tanya, apa yang saya lakukan salah? atau ada sesuatu yang sangat mendasar yang saya lewatkan sehubungan dengan menyimpan data di sisi klien.

CriketerOnSO
sumber
14
Saya kira dia sedang mencari penyimpanan lokal html5 , meskipun sepertinya Anda menyebutkannya. Mungkin saja pewawancara itu brengsek, dan / atau salah paham dengan Anda.
Gort the Robot
1
Apakah definisi diberikan untuk 'elemen' apa yang seharusnya? Saya tidak berpikir Anda melakukan kesalahan, pertanyaannya sangat samar.
GrandmasterB
8
Saya tidak tahu mengapa dia menggunakan istilah 'elemen' untuk menggambarkan itu. Tapi ya, sepertinya dia mengincar penyimpanan HTML. Saya pikir insting pertama Anda tentang 'mengapa' Anda ingin menyimpan banyak sisi klien juga bagus.
GrandmasterB
5
Pewawancara mungkin mencari Anda untuk benar-benar mengucapkan kata-kata "penyimpanan lokal". Beberapa orang hanya benar-benar bersemangat anal. Anda tidak akan mau bekerja untuk mereka. Anda menghindari peluru.
Greg Burghardt
2
"apa kesalahan yang telah aku perbuat?" dari komentar dan sikapnya, melamar ke perusahaan ini: Di situlah pewawancara berkata dengan sarkastis, sehingga Anda memiliki 3 tahun pengalaman dalam pengembangan web, dan mengakhiri wawancara
Francisco Presencia

Jawaban:

10

Saya setuju dengan komentar bahwa ia kemungkinan mencari penyimpanan lokal HTML5, dan mungkin mengharapkan Anda memiliki pengalaman dengannya.

Terus terang, kecuali itu adalah persyaratan integral dari pekerjaan dan Anda menyatakan Anda memiliki pengalaman dengan itu, harapan dan reaksinya tidak masuk akal, menurut pendapat saya, bagi siapa pun dengan jumlah pengalaman apa pun.

Mengapa?

Sebab, tiga tahun lalu, HTML5 sebagai spec masih dalam masa pertumbuhan. Dengan kata lain, bagi Anda, khususnya, karier Anda adalah sepanjang sejarah spesifikasi itu sendiri. Bukan hal yang aneh untuk melihat pekerjaan mencari orang yang lebih berpengalaman dengan suatu produk daripada produk yang sudah ada. Jarang untuk melihat hal yang sama terjadi untuk seluruh spesifikasi. Untuk itu, saya memuji Anda karena menemukan permata seperti itu.

Namun, yang lebih serius, sepertinya masalah itu lebih terletak pada pewawancara Anda yang mengajukan pertanyaan yang terlalu samar, dan menilai Anda terlalu keras karenanya. Bukan hal yang aneh bagi pewawancara untuk mengajukan pertanyaan yang tidak jelas, terutama di arena pengembangan. Biasanya, ini dilakukan untuk mencoba mengukur bagaimana Anda berpikir, dan ke mana insting pertama Anda menuntun Anda. Untuk itu, Anda melakukannya dengan baik dengan mempertanyakan kebutuhan untuk menyimpan data semacam itu secara lokal. Pertanyaan-pertanyaan ini, dalam dan dari diri mereka sendiri, tidak buruk, tetapi apa yang dilakukan pewawancara dengan mereka dapat menyebabkan hasil yang buruk bagi Anda (bisa dibilang, pemutusan wawancara seperti itu berarti Anda mungkin tidak ingin bekerja untuk perusahaan itu).

Sekarang, mungkin saja kebutuhan bisnis perusahaan mengharuskan mereka menggunakan penyimpanan lokal untuk satu alasan atau lainnya. Jika itu masalahnya, itu harus dijabarkan dalam uraian tugas, dan Anda seharusnya dikesampingkan sebagai kandidat yang berpotensi bertahan ketika resume Anda tidak mencerminkan pengalaman seperti itu jika mereka merasa mereka tidak bisa atau tidak seharusnya berlatih atau menyediakan karyawan baru dengan waktu / sarana untuk mencapai kecepatan pada teknologi.

Adapun penyimpanan lokal, itu sendiri - seperti yang saya sebutkan sebelumnya, HTML5 sebagai spek baru sekitar tiga tahun, dan itu murah hati dan menghitung konsep "panggilan terakhir". Kemudian, Anda memiliki masalah dukungan browser, yang mungkin atau mungkin tidak memiliki sejarah panjang (misalnya, sementara pasangan nama-nilai telah didukung secara luas bahkan sebelum pemadatan HTML5, IndexedDB dan Web SQL DB masih samar ).

Akhirnya, penggunaan untuk penyimpanan lokal HTML5 masih kurang umum. Dalam tahun-tahun saya sebagai pengembang web, saya telah menemukan sebuah aplikasi yang saya tahu menggunakannya sekali (mungkin ada beberapa yang menggunakannya tanpa terlihat, tetapi itu lebih sulit untuk diukur), dan mungkin setengah lusin proyek yang mungkin dapat untuk memanfaatkannya (tetapi tidak benar-benar membutuhkannya pada waktu itu, atau biaya untuk menggunakan pendekatan itu vs yang lain tidak dibenarkan).

Dalam arti yang lebih umum, wawancara gagal terjadi. Pengembangan perangkat lunak adalah jauh lapangan terlalu besar untuk dapat mengetahui semua detail kecil tentang setiap hal (dalam hal ini, batas penyimpanan HTML5 penyimpanan lokal), dan yang jujur tentang tidak mengetahui hal yang diberikan adalah, menurut pendapat saya, masih jalan terbaik (saya pribadi lebih menghargai seseorang yang mengakui kesenjangan mereka dalam pengetahuan dan berusaha untuk mengisinya, daripada seseorang yang mencoba menutupi fakta bahwa mereka tidak tahu sesuatu). Dengan mengingat hal itu, saya akan mengatakan Anda menangani pertanyaan dengan baik, mengingat informasi yang Anda berikan di sini. Jika ada sesuatu kamu apakah salah, itu mungkin ada dalam perincian tentang bagaimana Anda merespons, yang tidak dapat kami bantu dengan Anda, di sini, karena kami tidak berada di wawancara untuk menilai aspek non-bahasa dari respons Anda.

Shauna
sumber
7

Jawaban 'benar' - setidaknya, yang mereka cari - memang HTML5 LocalStorage (tautan luar biasa dari Steven Burnap). Dan pewawancara itu mungkin sedang ... yah, saya percaya frasa teknisnya adalah "sedikit tombol ".

Ini pada dasarnya dicapai dengan proses eliminasi, dalam hal cookie tidak dapat mendekati cukup besar , sesi memang server-side dan bukan mekanik penyimpanan sisi klien sama sekali, dll. Pewawancara mungkin berpikir ini adalah pengetahuan umum dan Anda harus mengetahuinya, yang lucu karena Anda hanya perlu kemampuan HTML5 LocalStorage biasanya dalam pekerjaan UI data-berat yang merupakan pengecualian daripada aturan. Seseorang dapat memprogram selama bertahun-tahun dan tidak membutuhkan fitur tersebut, sementara yang lain mungkin membutuhkannya pada proyek pertama mereka.

Namun, saya biasanya mengatakan dalam kasus-kasus seperti ini itu bukan pertanyaan tentang jawaban Anda dan lebih pada pertanyaan tentang bagaimana Anda menjawabnya dan proses yang Anda gunakan untuk sampai ke sana. Dari uraian Anda, Anda baik-baik saja, tetapi saya tidak ada di sana sehingga kesan mereka mungkin sangat berbeda.

Sebagian besar pewawancara yang masuk akal tidak akan menyatakan satu sisi kecil teknologi sebagai tes lakmus di mana setiap orang harus menjawabnya dengan sangat baik ... namun, saya telah melakukan banyak wawancara dengan orang-orang yang bukan pewawancara yang masuk akal. Mengetahui hal-hal sepele seperti itu bisa menjadi keuntungan ketika Anda bertemu orang-orang seperti itu.

Akhirnya, saya akan mencatat bahwa dengan menyatakan wawancara itu dengan cara yang tidak terlalu baik, sangat mungkin bahwa orang itu sudah jengkel dan sudah memutuskan tentang Anda (jawaban Anda untuk pertanyaan khusus ini mungkin tidak penting dalam sedikit pun). Mereka hanya menunggu sebentar bagi Anda untuk naik sehingga mereka bisa menunjukkannya dan tidak mengungkapkan fakta bahwa mereka telah memutuskan dalam 30 detik pertama atau lebih apakah Anda kandidat yang layak atau tidak.

Saya mungkin akan berlatih bagaimana menjawab pertanyaan yang Anda tidak segera tahu jawaban "benar", karena kemampuan untuk menjadi anggun dan tampak berpengetahuan dan cerdas toh merupakan keterampilan yang sangat berguna - dan kita semua bisa mendapat manfaat dari latihan ekstra ini. . Memoles beberapa artikel "Apa yang baru dalam [versi terbaru dari teknologi penting]" dan kemudian kembali ke sana!

BrianH
sumber