Зберігання 5000 елементів на стороні клієнта у веб-додатку [закрито]


12

Я щойно провів телефонне інтерв'ю для розробника ASP.Net, після початкового вступного матеріалу інтерв'юер задав мені перше технічне запитання:

"Як би ви зберігали 5000 елементів на стороні клієнта для кожного користувача у веб-додатку".

Моя відповідь почалася з,

Який середній розмір кожного елемента? Чи дійсно нам потрібно зберігати стільки даних на стороні клієнта? Чи не можемо ми зберегти це в базі даних і якось зв’язати це з сеансом користувача / ідентифікатором клієнта .

Його відповідь була "Ні, ви кажете мені, як би ви зберігали його на стороні клієнта, враховуючи, що кожен елемент - це запис із приблизно 8 полями, включаючи int / string, звичайний ряд таблиці".

Я сказав: "Можна тримати їх у сеансі, але оскільки сеанси підтримуються на стороні сервера для кожного користувача, це може стати дорогим, або інший варіант - зберігати стільки даних у файлі cookie", я також сказав, що я не впевнений, чи зможе зберегти стільки даних у файлі cookie. Я згадав параметри зберігання HTML5, але я з ним не працював. Оскільки він заснований на SQLite, він може теоретично зберігати стільки даних .

Ось тут інтерв'юер дещо саркастично сказав, тож ви маєте 3-річний досвід роботи в Інтернеті та припинили співбесіду.

Мені цікаво, що я зробив не так? або є щось дійсно базове, чого мені не вистачає щодо зберігання даних на стороні клієнта.


14
Я б здогадувався, що він шукав локальне сховище html5 , хоча це звучить так, як ви це згадали. Можливо, просто інтерв'юер був ривком та / або неправильно зрозумів вас.
Gort the Robot

1
Чи було дано визначення того, яким повинен бути елемент? Я не думаю, що ти зробив щось не так, питання особливо розпливчасте.
GrandmasterB

8
Я не знаю, чому він використовував термін "елемент", щоб описати це. Але так, це здається, що він був після зберігання HTML. Я думаю, що ваш перший інстинкт "чому" ви хочете зберегти стільки клієнтської сторони також був хорошим.
GrandmasterB

5
Інтерв'юер, можливо, шукав вас, щоб буквально сказати слова "місцеве зберігання". Деякі люди просто справді анальні затримки. Ви б не хотіли працювати на них все одно. Ви ухилилися від кулі.
Грег Бургхардт

2
"що я зробив не так?" з його коментаря та ставлення, звертаючись до цієї компанії: Ось тут інтерв'юер дещо саркастично сказав, тож у вас є 3-річний досвід роботи в Інтернеті, а інтерв'ю припинили
Франциско Презенсія

Відповіді:


10

Я погоджуюся з коментарями, що він, ймовірно, шукав локальне сховище HTML5, і, можливо, очікував, що ви будете мати досвід роботи з ним.

Чесно кажучи, якщо це не була невід'ємною вимогою цієї роботи, і ви заявили, що маєте досвід роботи з нею, його очікування та реакція, на мою думку, були необґрунтованими для тих, хто має будь-який досвід.

Чому?

Тому що три роки тому HTML5 як специфікація ще була в зародковому стані. Іншими словами, конкретно для вас ваша кар’єра приблизно стільки, скільки історія самої специфікації. Не рідкість бачити роботу, яка шукає людей з більшим досвідом роботи з продуктом, ніж продукт. Рідко можна побачити те саме, що трапляється для цілої специфікації. За це я аплодую вам за те, що ви знайшли такий дорогоцінний камінь.

Якщо серйозніше, то, здається, проблема полягає в тому, що ваш інтерв’юер більше ставить перед вами занадто розпливчасте питання, і судить вас надто жорстко. Не рідкість інтерв'юери задають неясні запитання, особливо на арені розвитку. Зазвичай це робиться для того, щоб спробувати оцінити, як ви думаєте, і куди веде вас ваш перший інстинкт. З цим ви добре зробили, поставивши під сумнів необхідність зберігання подібних даних на місцях. Ці питання самі по собі не є поганими, але те, що робить інтерв'юер з ними, може призвести до поганого для вас результату (можливо, таке припинення співбесіди означає, що ви, мабуть, не хочете працювати в цій компанії).

Тепер, можливо, потрібні потреби компанії, щоб вони використовували місцеві сховища з тих чи інших причин. Якщо це так, це повинно бути прописано в описі вакансії, і ви повинні бути виключені як потенційно життєздатний кандидат, коли ваше резюме не відображало такого досвіду, якщо вони відчували, що не можуть чи не повинні тренуватися чи іншим чином надавати новий працівник, який має час / засоби, щоб прискорити технологію.

Що стосується локального зберігання - як я вже згадував раніше, HTML5 як специфікація існує лише близько трьох років, і це щедро і підраховує чернетки "останнього дзвінка". Потім у вас виникла підтримка браузера, яка може мати, а може і не мати тривалої історії (наприклад, в той час як пари іменних значень широко підтримуються ще до затвердження HTML5, IndexedDB та Web SQL DB все ще є схематичними ).

Нарешті, використання локального сховища HTML5 все ще рідше. У свої роки, як веб-розробник, я натрапив на додаток, який, як мені відомо, використовував його колись (можливо, є такі, які використовують його невидимо, але це важче оцінити), а може бути і півдесятка проектів, які можуть бути в змозі використовувати його (але насправді вони їм тоді не потрібні , або вартість використання цього підходу проти іншого не була виправданою).

У більш загальному сенсі, невдалі інтерв'ю трапляються. Розробка програмного забезпечення - це занадто велике поле, щоб можна було знати всі дрібні відомості про кожну окрему річ (у цьому випадку обмеження зберігання HTML5 локального сховища), і чесно кажучи про невідомість даної речі, на мій погляд, все-таки найкращий шлях (я особисто більше поважаю того, хто визнає свої прогалини в знаннях і прагне їх заповнити, ніж того, хто намагається приховати те, що вони чогось не знають). Зважаючи на це, я б сказав, що ви добре вирішили це питання, враховуючи інформацію, яку ви надали тут. Якби щось було ти зробив неправильно, можливо, це було в деталях того, як ви відповіли, що ми не можемо вам допомогти тут, тому що ми не були на співбесіді, щоб оцінити нелінгвістичні аспекти ваших відповідей.


7

"Правильна" відповідь - принаймні, та, яку вони шукали - справді була HTML5 LocalStorage (відмінне посилання Стівена Бернапа). І інтерв'юер, мабуть, був ... ну, я вважаю, що технічна фраза є "трохи ручки ".

Це в основному досягається шляхом усунення, оскільки файл cookie не може бути десь поблизу досить великий , сеанси дійсно на стороні сервера і зовсім не є механізмом зберігання на стороні клієнта і т. Д. Інтерв'юер, мабуть, вважав це загальновідомим, і ви слід знати про це, що смішно тим, що вам потрібні лише можливості HTML5 LocalStorage, як правило, для роботи з великим інтерфейсом даних, що є винятком, а не правилом. Людина може програмувати протягом багатьох років і не мати потреби в цій функції, тоді як інші можуть мати потребу в цьому на своєму першому проекті.

Однак я б, як правило, говорив у подібних випадках, це не питання вашої відповіді, а швидше питання про те, як ви відповіли на нього та про процес, до якого ви туди потрапляли. З вашого опису ви зробили добре, але я там не був, і тому їх враження можуть бути дуже різними.

Більшість розважливих інтерв'юерів не оголосять одну маленьку грань технології лакмусовим тестом, коли кожна людина повинна чудово відповісти на неї ... однак у мене було багато інтерв'ю з людьми, які не є розумними інтерв'юерами. Знання таких дрібниць може стати користю, коли ви натрапите на таких людей.

Нарешті, я зазначу, що оголосивши інтерв'ю досить не дуже приємним способом, велика ймовірність, що людина вже роздратований і вже вирішив про вас (ваша відповідь на це конкретне питання не мала значення в найменший). Вони просто чекали хвилини, коли ви поїдете вгору, щоб вони могли вказати на це, а не викривати той факт, що вони вирішили протягом перших 30 секунд, чи так ви, чи є ви життєздатним кандидатом чи ні.

Я, можливо, практикую, як відповісти на запитання, на які ви не відразу знаєте «правильну» відповідь, оскільки здатність помилятися витончено і начебто здається обізнаною та розумною - це чорт корисний навик - і ми всі могли отримати користь від додаткової практики . Ознайомтеся з деякими статтями "що нового у [останній версії важливої ​​технології]", а потім поверніться туди!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.