Здравствуйте, elmal, Вы писали:
E>Конкретно тот фронтендер, что решил за н квадрат, к твоему сведению гуру кложурескрипта и от функциональщины вообще прется . Соответственно наверно список бы развернул, но вот дубликаты, звиняйте, но н квадрат .
Пофиг кем он себя считает, хоть Наполеоном. А что за вопрос про дупликаты кстати, интересно же.
$>Пофиг кем он себя считает, хоть Наполеоном. А что за вопрос про дупликаты кстати, интересно же.
Тривиальный, специально для фронтэндеров. С сервера пришли данные вида массив ФИО. Вывести пользователю только уникальные ФИО. Иногда задача посложнее, вывести те, кто повторяется, но среди фронтэндеров и первую большинство решить не могут. Если что, подобная задача периодически встречается на практике. Хоть и в современных языках достаточно сделать .distinct() у коллекции.
Задача не как у тебя, на завалить, а на отсеять тех, кто вообще в институте не учился, а просто пошел по книжкам технологии учить, не имея базы. К сожалению среди фронтэндеров отсеивается 99 процентов . Да, код писать не нужно, нужно сходу рассказать как это можно сделать, первое что на ум приходит. Большинству блин на ум обход массива n квадрат раз приходит, и очень удивляются когда это можно быстрее. Блин, профильные специальности заканчивали, полный капец.
Потому я и на практике очень сильно гоню на паскаль. Ибо во многих ВУЗах до сих пор это идет первым языком, а там все на массивах. И студенты на первом курсе как то говнокодить начинают и сразу на фултайм идут работать как раз фронтэндерами-верстальщиками. И потом у них фактическое образование — 1 семестр, остальное не посещали и покупали, но диплом как будто 6 лет там что то делали.
$>Я попросил вопрос, чтоб спросить по бумажке и сравнить ответ с бумажкой.
Я лично считаю себя достаточно сильным программистом, в том числе в UI. При этом, CSS только на уровне гуглопоиска и копи-паста использую.
На фоне икспертов в CSS, тех, которые не могут перевернуть строку, прямо титан мысли блин.
Да и в других темах по собеседованиям, ты хвастаешься, что знаешь 100500 алгоритмов сортировки и список перевернуть можешь. При этом не принимаешь никакого мнения, отличного от твоего, вне зависимости от того, какое решение предлагается.
В тех сферах, в которых ты понимаешь, ты проводишь гораздо более трудные собеседования. А тут — по бумажке и сравнить ответы. А если ответ отличается от того, что в твоей бумажке, как ты определишь, что лучше, то что ответил кандидат или то, что ты нагуглил?
Всё знать невозможно и тебе white_znake правильно написал — обратись к человеку, который сможет проверить квалификацию кандидата в веб-фронтэнде. Ты это не можешь, но можешь проверить квалификацию в общих вопросах, например — в алгоритмах. Можете вдвоём проводить собеседования.
Здравствуйте, elmal, Вы писали:
E>Тривиальный, специально для фронтэндеров. С сервера пришли данные вида массив ФИО. Вывести пользователю только уникальные ФИО.
ФИО это строка. Значит, hashmap.
[code=Typescript]
fio: { [key: string]: null}= {};
list.forEach(v => { if( fio[v]=== undefined) { fio[v]=null; console.log(fio); }};
[/code]
E> Иногда задача посложнее, вывести те, кто повторяется, но среди фронтэндеров и первую большинство решить не могут. Если что, подобная задача периодически встречается на практике. Хоть и в современных языках достаточно сделать .distinct() у коллекции.
Можно сделать filter с hashmap. У TS только filter вернёт новый массив, а не стрим.
E>Задача не как у тебя, на завалить,
У меня просто нормальных набрать, чтобы не нужно чистить за ними, чтобы не обьяснять долго и мучительно, как и что сделать, чтоб код был чистый, расширяемый и эффективный.
$>Здравствуйте, elmal, Вы писали:
E>>Тривиальный, специально для фронтэндеров. С сервера пришли данные вида массив ФИО. Вывести пользователю только уникальные ФИО.
$>ФИО это строка. Значит, hashmap.
$>[code=Typescript]
$>fio: { [key: string]: null}= {};
$>list.forEach(v => { if( fio[v]=== undefined) { fio[v]=null; console.log(fio); }};
$>[/code]
Вопрос для расширения кругозора: а в Typescript разве нет контейнера для множества значений? Вроде даже в не очень свежем JavaScript есть Set
Здравствуйте, PM, Вы писали:
PM>Вопрос для расширения кругозора: а в Typescript разве нет контейнера для множества значений? Вроде даже в не очень свежем JavaScript есть Set
Ответ для расширения кругозора: Object в JavaScript является ассоциативным контейнером. Любой Set это обрезанный Map. Лично я предпочитаю короткий синтаксис {} и [].
Здравствуйте, $$, Вы писали:
E>>Тривиальный, специально для фронтэндеров. С сервера пришли данные вида массив ФИО. Вывести пользователю только уникальные ФИО.
$>ФИО это строка. Значит, hashmap.
$>[code=Typescript]
$>fio: { [key: string]: null}= {};
$>list.forEach(v => { if( fio[v]=== undefined) { fio[v]=null; console.log(fio); }};
$>[/code]
Имхо, это плохой код.
Во-первых, есть Set
Во-вторых, если используется HashMap, то он имее метод has
В-третьих, не стоит смешивать алгоритм и вывод в консоль
и пр.
Здравствуйте, Буравчик, Вы писали:
E>>>Тривиальный, специально для фронтэндеров. С сервера пришли данные вида массив ФИО. Вывести пользователю только уникальные ФИО. Б>$>ФИО это строка. Значит, hashmap. Б>$>[code=Typescript] Б>$>fio: { [key: string]: null}= {}; Б>$>list.forEach(v => { if( fio[v]=== undefined) { fio[v]=null; console.log(fio); }}; Б>$>[/code]
Б>Имхо, это плохой код. Б>Во-первых, есть Set
И что? Б>Во-вторых, если используется HashMap, то он имее метод has
Тебе шашечки или ехать? Б>В-третьих, не стоит смешивать алгоритм и вывод в консоль
Почему?
Б>и пр.
Что пр? Мой код короткий и понятный, вот даже ты с PM смогли осилить смысл. Вариант с Set тоже нормальный.
Здравствуйте, $$, Вы писали:
PM>>Вопрос для расширения кругозора: а в Typescript разве нет контейнера для множества значений? Вроде даже в не очень свежем JavaScript есть Set
$>Ответ для расширения кругозора: Object в JavaScript является ассоциативным контейнером. Любой Set это обрезанный Map. Лично я предпочитаю короткий синтаксис {} и [].
Cпасибо, пойду в гугл, т.к. ответ я не получил (вопрос был про наличие Set в Typescript).
Связь между двумя утверждениями "Object в JavaScript является ассоциативным контейнером" и "Любой Set это обрезанный Map." не наблюдаю.
То есть Object в роли ассоциативного контейнера — это не самое лучше решение. На тысяче элементов разница невооружённым глазом клиенту будет, скорее всего, незаметна.
Здравствуйте, PM, Вы писали:
PM>Cпасибо, пойду в гугл, т.к. ответ я не получил (вопрос был про наличие Set в Typescript).
Ты пытаешься спорить с помощью гугла? И как, гугл случаем, не подсказал, что Typescript является "расширением" JavaScript пока его фичи не включены в JavaScript?
PM>Связь между двумя утверждениями "Object в JavaScript является ассоциативным контейнером" и "Любой Set это обрезанный Map." не наблюдаю.
Если бы знал, что такое Set, как он устроен, то ты бы знал, что это обрезанный Map.
PM>В https://github.com/anvaka/set-vs-object нагулилось что "TL;DR Set is almost two times faster than Object."
Чел экспериментальным путём нашёл, что в Chrome Object добавление свойства в 2 раза медленнее, чем добавление элемента в Set. Ок, полезная находка. Но, эта разница в C. Time complexity у обоих одинаковый.
PM>То есть Object в роли ассоциативного контейнера — это не самое лучше решение. На тысяче элементов разница невооружённым глазом клиенту будет, скорее всего, незаметна.
Разница в 2 раза вне зависимости от количества элементов.
PM>Not great, not O(n^2) terrible.
Проблема в том, что твои собратья по разуму не могут родить решение O(n). А вот ты бы родил, без похода в гугл?
PS мы не даём настолько лёгкие задачи. Но раскрывать я не буду.
Здравствуйте, $$, Вы писали:
PM>>Cпасибо, пойду в гугл, т.к. ответ я не получил (вопрос был про наличие Set в Typescript).
$>Ты пытаешься спорить с помощью гугла? И как, гугл случаем, не подсказал, что Typescript является "расширением" JavaScript пока его фичи не включены в JavaScript?
Я не спорю, расширяю кругозор. Вот наконец повод появился прочитать Typescript in 5 minutes. Теперь наверно тоже смогу фронтендеров собеседовать.
PM>>Связь между двумя утверждениями "Object в JavaScript является ассоциативным контейнером" и "Любой Set это обрезанный Map." не наблюдаю.
$>Если бы знал, что такое Set, как он устроен, то ты бы знал, что это обрезанный Map.
Логическая связь между двумя утверждениями не доказывается повторением одного из них. Подсказка: я могу утверждать, что Set и Map это ассоциативные контейнеры, и что они являются Object. Но я не могу утверждать, что любой Object это Set.
PM>>В https://github.com/anvaka/set-vs-object нагулилось что "TL;DR Set is almost two times faster than Object."
$>Чел экспериментальным путём нашёл, что в Chrome Object добавление свойства в 2 раза медленнее, чем добавление элемента в Set. Ок, полезная находка. Но, эта разница в C. Time complexity у обоих одинаковый.
Был рад помочь и вам расширить кругозор. Теперь вы тоже про это знаете
PM>>То есть Object в роли ассоциативного контейнера — это не самое лучше решение. На тысяче элементов разница невооружённым глазом клиенту будет, скорее всего, незаметна.
$>Разница в 2 раза вне зависимости от количества элементов.
PM>>Not great, not O(n^2) terrible.
$>Проблема в том, что твои собратья по разуму не могут родить решение O(n). А вот ты бы родил, без похода в гугл?
$>PS мы не даём настолько лёгкие задачи. Но раскрывать я не буду.
Как жаль, было бы интересно добавить к запасу тайных знаний, лежало бы по-соседству с нетленным переворотом строки.
Отлично, теперь вы тоже про это знаете. Задание со звездочкой (только для фуллстек программистов!): какого типа свойства добавлялись в объект fio в вашем коде.
PS Set, Map, WeakMap, TypedArray появились в V8 когда Typescript еще и в планах не было.
Здравствуйте, $$, Вы писали:
Б>>В-третьих, не стоит смешивать алгоритм и вывод в консоль
$>Почему?
Ужас, и это спрашивает апологет Clojure . Короче, если в привычку сайдэффекты не вошло выносить, функциональщина таким противопоказана.
Здравствуйте, elmal, Вы писали:
Б>>>В-третьих, не стоит смешивать алгоритм и вывод в консоль E>$>Почему? E>Ужас, и это спрашивает апологет Clojure . Короче, если в привычку сайдэффекты не вошло выносить, функциональщина таким противопоказана.
Побочный эффект вынесен в имплементацию Console.log.
Здравствуйте, white_znake, Вы писали:
_>Здравствуйте, $$, Вы писали:
_>Самое худшее что может быть в собеседованиях — это интервьювер без глубокого знания той области, в которой он планируют собеседовать кандидатов.
Это не самое худшее. Люди без софт скиллз, не понимающие процесс найма гораздо хуже бывают. Именно таких чаще всего опосля обуждают с особым негативом. _>Может привлечь сторонних знакомых людей со знанием во фронтэнде, в знаниях которых ты уверен, заплатить этим людям за подбор требуемого специалиста?
$>Здравствуйте, PM, Вы писали:
PM>>Вопрос для расширения кругозора: а в Typescript разве нет контейнера для множества значений? Вроде даже в не очень свежем JavaScript есть Set
$>Ответ для расширения кругозора: Object в JavaScript является ассоциативным контейнером. Любой Set это обрезанный Map. Лично я предпочитаю короткий синтаксис {} и [].
А по-моему в подобных ситуациях set лучше. Становится понятнее, что хотел сказать автор.
Здравствуйте, elmal, Вы писали:
E>Здравствуйте, $$, Вы писали:
E>$>Я бы не брал вообще никого, кто решит за время n квадрат. Или не слышал про linked list ничего. Но не я задаю бюджет, могу только высветить проколы в случае, когда просят пособеседовать. E>Конкретно тот фронтендер, что решил за н квадрат, к твоему сведению гуру кложурескрипта и от функциональщины вообще прется . Соответственно наверно список бы развернул, но вот дубликаты, звиняйте, но н квадрат .
Может быть проблема в понимании задач на собеседовании
Вот тут set обсуждают, но в большинстве подобных задач на собеседоаании нельзя использвать доп память. (Кроме пременных)
В итоге чел. иожет затупить и пытаться делать in-place.
Здравствуйте, 0xCAFEDEAD, Вы писали:
CAF> Вот тут set обсуждают, но в большинстве подобных задач на собеседоаании нельзя использвать доп память. (Кроме пременных) CAF>В итоге чел. иожет затупить и пытаться делать in-place.
CAF>Но это так, догадки.
Я бы принял Set и ещё если чел объяснил, почему Set в том случае лучше- ещё добавил ему очков. Хотя, я такие очевидные задачи не даю, это imho ну позволит узнать, что допустим, чел знает про Set. Это для меня не говорит ни о чём, что он хороший программист- только о том, что он знает эти API. Мне интересно, чтобы чел мог думать, а какие API- узнает, заменит Object на Set если так уж лучше- no big deal. Все мы постоянно чему-то учимся.
$>Предположим, кандидат позиционирует себя как эксперт в HTML ftontend.
$>Так как я мимо крокадил CSS-а, как прощупать наличие hands-on experience и что чел вообще что-то понимает подкапотом у CSS?
А нельзя вернуть эту задачу менеджеру? С описанием, что можешь оценить, а что нет? А то специалиста по арм в след раз попросят собеседовать
Кстати а что там интересного может быть вообще? Я житель командный строки и емакса
$>Здравствуйте, 0xCAFEDEAD, Вы писали:
CAF>> Вот тут set обсуждают, но в большинстве подобных задач на собеседоаании нельзя использвать доп память. (Кроме пременных) CAF>>В итоге чел. иожет затупить и пытаться делать in-place.
CAF>>Но это так, догадки.
$>Я бы принял Set и ещё если чел объяснил, почему Set в том случае лучше- ещё добавил ему очков. Хотя, я такие очевидные задачи не даю, это imho ну позволит узнать, что допустим, чел знает про Set. Это для меня не говорит ни о чём, что он хороший программист- только о том, что он знает эти API. Мне интересно, чтобы чел мог думать, а какие API- узнает, заменит Object на Set если так уж лучше- no big deal. Все мы постоянно чему-то учимся.
Ну да все, ага
Но я про biased решение задач на собеседовании. Как патерн.
Вот попросили переаернуть список. Многие подумают, что однонаправленный.
Ну и тд.