Хранение 5000 элементов на стороне клиента в веб-приложении [закрыто]

12

У меня только что было телефонное интервью для разработчика ASP.Net, после первоначальной вводной части интервьюер задает мне первый технический вопрос:

«Как бы вы сохранили 5000 элементов на стороне клиента для каждого пользователя в веб-приложении».

Мой ответ начался с:

Каков средний размер каждого элемента? Нужно ли нам хранить столько данных на стороне клиента? Мы не можем держать , что в базе данных и связать это с сеанса пользователя / идентификатор клиента каким - то образом .

Он ответил: «Нет, вы скажете мне, как бы вы сохранили его на стороне клиента, учитывая, что каждый элемент представляет собой запись с примерно 8 полями, включая int / string, обычную строку таблицы».

Я сказал: «Может быть, держать их в сеансе, но поскольку сеансы поддерживаются на стороне сервера для каждого пользователя, это может стать дорогим, или другой вариант - хранить столько данных в cookie», я также сказал, что я не уверен, что столько данных может быть сохранено в cookie. Я упоминал, что есть варианты хранения HTML5, но я не работал с ним. Поскольку он основан на SQLite, теоретически он может хранить столько данных .

Вот где несколько саркастически сказал интервьюер , так что у вас есть 3 года опыта в веб-разработке, и вы прекратили интервью.

Мне интересно, что я сделал не так? или есть что-то действительно базовое, что мне не хватает в отношении хранения данных на стороне клиента.

CriketerOnSO
источник
14
Я думаю, он искал html5 локальное хранилище , хотя, похоже, вы упомянули об этом. Может быть, просто интервьюер был придурком и / или неправильно вас понял.
Gort the Robot
1
Было ли дано определение того, каким должен быть «элемент»? Я не думаю, что вы сделали что-то не так, вопрос особенно расплывчатый.
GrandmasterB
8
Я не знаю, почему он использовал термин «элемент», чтобы описать это. Но да, похоже, он был после хранения HTML. Я думаю, что ваш первый инстинкт «почему», который вы хотели бы хранить на стороне клиента, был также хорошим.
GrandmasterB
5
Интервьюер, возможно, искал вас, чтобы буквально произнести слова «местное хранилище». Некоторые люди просто действительно сохраняют анал. Вы бы не хотели работать на них в любом случае. Вы увернулись от пули.
Грег Бургхардт
2
"что я сделал не так?" из его комментария и отношения, относящихся к этой компании: вот где несколько саркастически сказал интервьюер, так что у вас есть 3 года опыта в веб-разработке, и вы завершили интервью
Francisco Presencia

Ответы:

10

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

Честно говоря, если это не было неотъемлемым требованием к работе, и вы не заявили, что имели опыт работы с ним, его ожидания и реакция были, по моему мнению, неразумными для любого, имеющего какой-либо опыт.

Почему?

Потому что три года назад HTML5 как спецификация еще находился в зачаточном состоянии. Другими словами, для вас, в частности, ваша карьера занимает столько же времени, сколько история самой спецификации. Нередки случаи, когда люди ищут работу с большим опытом работы с продуктом, чем когда-либо. Редко можно увидеть то же самое для всей спецификации. За это я приветствую вас за то, что вы нашли такой драгоценный камень.

Более серьезно, однако, похоже, что проблема заключается в том, что ваш интервьюер задает вам слишком расплывчатый вопрос и слишком сурово осуждает вас. Интервьюеры нередко задают смутные вопросы, особенно в области разработки. Обычно это делается для того, чтобы попытаться оценить, как вы думаете, и куда ведет вас ваш первый инстинкт. Для этого вы преуспели, поставив под сомнение необходимость локального хранения таких данных. Эти вопросы сами по себе не являются плохими, но то, что делает с ними интервьюер, может привести к плохим результатам для вас (возможно, такое завершение интервью означает, что вы, вероятно, вообще не хотите работать в этой компании).

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

Что касается локального хранилища, само по себе - как я уже упоминал ранее, HTML5 как спецификация существует всего около трех лет, и это щедро и учитывает черновики «последнего вызова». Затем возникает проблема поддержки браузера, которая может иметь или не иметь долгую историю (например, хотя пары имя-значение широко поддерживались даже до затвердевания HTML5, IndexedDB и Web SQL DB по-прежнему отрывочны ).

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

В более общем смысле провальные интервью случаются. Разработка программного обеспечения является далеко слишком большое поле , чтобы быть в состоянии знать все маленькие подробности о каждой вещи (в данном случае, пределы хранения HTML5 , локальное хранение), и быть честным , не зная , данная вещь, на мой взгляд, по-прежнему лучший путь (лично я больше уважаю того, кто признает их пробелы в знаниях и стремится их восполнить, чем того, кто пытается скрыть тот факт, что они чего-то не знают). Имея это в виду, я бы сказал, что вы хорошо справились с вопросом, учитывая информацию, которую вы здесь предоставили. Если бы было что-то вы сделал неправильно, это могло быть в деталях того, как вы ответили, с чем мы не можем вам помочь, здесь, потому что мы не были на собеседовании, чтобы оценить неязыковые аспекты ваших ответов.

Shauna
источник
7

«Правильный» ответ - по крайней мере, тот, который они искали - действительно был HTML5 LocalStorage (отличная ссылка Стивена Бернапа). И интервьюер, вероятно, был ... ну, я считаю, что техническая фраза "немного ручкой ".

Это в основном достигается процессом исключения, поскольку cookie- файлы не могут быть достаточно большими , сеансы действительно на стороне сервера, а не на механике хранения на стороне клиента и т. Д. Интервьюер, вероятно, думал, что это общеизвестно, и вы должен знать это, что забавно тем, что вам нужны только возможности HTML5 LocalStorage, обычно в работе с пользовательским интерфейсом, требующей больших объемов данных, что является скорее исключением, чем правилом. Человек может программировать в течение многих лет и не нуждаться в этой функции, в то время как другие могут нуждаться в ней в своем первом проекте.

Тем не менее, я бы сказал, что в таких случаях это не вопрос вашего ответа, а скорее вопрос о том, как вы на него ответили, и о том, какой процесс вы использовали для этого. Из твоего описания ты все сделал хорошо, но меня там не было, и поэтому их впечатление может быть совсем другим.

Наиболее разумные интервьюеры не будут объявлять один небольшой аспект технологии лакмусовой бумажкой, где каждый должен ответить на него великолепно ... однако у меня было много интервью с людьми, которые не являются разумными интервьюерами. Знание таких мелочей может быть благом, когда вы сталкиваетесь с такими людьми.

Наконец, я хотел бы отметить, что, объявив интервью довольно не очень хорошим способом, весьма вероятно, что человек уже был раздражен и уже решил о вас (ваш ответ на этот конкретный вопрос, возможно, не имел значения в малейшее). Они просто ждали, пока вы подскочите, чтобы они могли указать на это и не показывать тот факт, что они решили в первые 30 секунд или около того, были ли вы подходящим кандидатом или нет.

Возможно, я бы попрактиковался в том, чтобы отвечать на вопросы, на которые вы не сразу знаете «правильный» ответ, поскольку умение изящно ошибаться и казаться знающим и умным в любом случае - чертовски удобный навык - и мы все могли бы извлечь выгоду из дополнительной практики , Почистите некоторые статьи «Что нового в [последней версии важных технологий]» и вернитесь!

BrianH
источник