$>Предположим, кандидат позиционирует себя как эксперт в HTML ftontend.
$>Так как я мимо крокадил CSS-а, как прощупать наличие hands-on experience и что чел вообще что-то понимает подкапотом у CSS?
$>Предположим, кандидат позиционирует себя как эксперт в HTML ftontend.
$>Так как я мимо крокадил CSS-а, как прощупать наличие hands-on experience и что чел вообще что-то понимает подкапотом у CSS?
Самое худшее что может быть в собеседованиях — это интервьювер без глубокого знания той области, в которой он планируют собеседовать кандидатов.
Может привлечь сторонних знакомых людей со знанием во фронтэнде, в знаниях которых ты уверен, заплатить этим людям за подбор требуемого специалиста?
$>Предположим, кандидат позиционирует себя как эксперт в HTML ftontend.
$>Так как я мимо крокадил CSS-а, как прощупать наличие hands-on experience и что чел вообще что-то понимает подкапотом у CSS?
$>Так как я мимо крокадил CSS-а, как прощупать наличие hands-on experience и что чел вообще что-то понимает подкапотом у CSS?
Как верстальщик или как фронтэнд разработчик? Ибо верстальщиков до черта и больше. А вменяемого фронтэндера хрен найдешь. Соответственно говорить нужно про компоненты, как обеспечивать взаимосвязи между компонентами, что такое callback hell и как с ним бороться, какие паттерны доводилось использовать в разработке, когда какие применять, что хорошо, что плохо, какие особенности случаются. Что такое полифиллы, какие особенности и приколы доводилось наблюдать на практике. Из разговора становится достаточно быстро понятно кто перед тобой, прочитал ли он только что книжку или обладает реальным опытом. На практике большинство будут приходить вообще с нулевым опытом и знаниями, прочитав одну книжку по верстке и книжку javascript для чайников. Дополнительно на завал конечно можно дать простейшую задачу на то, чтоб например отсеять дубликаты в массиве, но типичный даже опытный крутой фронтэндер не в состоянии решать никакие алгоритмические задачи (не, он решит за время n квадрат), соответственно приходится брать хоть кого то мало мальски вменяемого, или вакансию не закрыть тогда годами если еще и базовые знания в computer science проверять, соответственно сам тогда будешь корячиться с этим фронтэндом.
_>$>Предположим, кандидат позиционирует себя как эксперт в HTML ftontend. _>$>Так как я мимо крокадил CSS-а, как прощупать наличие hands-on experience и что чел вообще что-то понимает подкапотом у CSS?
_>Самое худшее что может быть в собеседованиях — это интервьювер без глубокого знания той области, в которой он планируют собеседовать кандидатов. _>Может привлечь сторонних знакомых людей со знанием во фронтэнде, в знаниях которых ты уверен, заплатить этим людям за подбор требуемого специалиста?
зачем ты так разочаровываешь аффтара ?!
он, небось, до сих пор уверен, что его умение перевернуть строку кому-то, кроме него самого, интересно
$>Пофиг кем он себя считает, хоть Наполеоном. А что за вопрос про дупликаты кстати, интересно же.
Тривиальный, специально для фронтэндеров. С сервера пришли данные вида массив ФИО. Вывести пользователю только уникальные ФИО. Иногда задача посложнее, вывести те, кто повторяется, но среди фронтэндеров и первую большинство решить не могут. Если что, подобная задача периодически встречается на практике. Хоть и в современных языках достаточно сделать .distinct() у коллекции.
Задача не как у тебя, на завалить, а на отсеять тех, кто вообще в институте не учился, а просто пошел по книжкам технологии учить, не имея базы. К сожалению среди фронтэндеров отсеивается 99 процентов . Да, код писать не нужно, нужно сходу рассказать как это можно сделать, первое что на ум приходит. Большинству блин на ум обход массива n квадрат раз приходит, и очень удивляются когда это можно быстрее. Блин, профильные специальности заканчивали, полный капец.
Потому я и на практике очень сильно гоню на паскаль. Ибо во многих ВУЗах до сих пор это идет первым языком, а там все на массивах. И студенты на первом курсе как то говнокодить начинают и сразу на фултайм идут работать как раз фронтэндерами-верстальщиками. И потом у них фактическое образование — 1 семестр, остальное не посещали и покупали, но диплом как будто 6 лет там что то делали.
Здравствуйте, $$, Вы писали:
PM>>Попросить перевернуть строку.
$>Это скучно: даже если решит, придётся задавать следующий.
Так это же хорошо. Еще классик говорил, что JavaScript неисчерпаем также как и C++, всегда можно показать свое превосходство на собеседовании. Если конечно знать про божественное триединство null, 0, и потомка их, пустой строки.
Здравствуйте, $$, Вы писали:
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 . Короче, если в привычку сайдэффекты не вошло выносить, функциональщина таким противопоказана.
$>Здравствуйте, 0xCAFEDEAD, Вы писали:
CAF>>Но я про biased решение задач на собеседовании. Как патерн.
$>Последний опыт — спросил у чела, что такой список (linked list). Он сказал, что не знает. 6 лет опыта в вебе.
А на кой он ему?
CAF>>Вот попросили переаернуть список. Многие подумают, что однонаправленный. CAF>>Ну и тд.
$>Если не уточнил про одно или двунаправленный- минус. Но да, двунаправленный неинтересно спрашивать, конечно же однонаправленный.
Об этом я и говорю. Типичные задачи — типичные решения.
Здравствуйте, Sharov, Вы писали:
S>С чего вдруг отладочные сообещия(а в js никак по другому, увы) стали жутиким side effect'ом. Хотя да, возможно ассерт, или несколько, был бы лучше.
Здесь фигня не отладочное сообщение, а то, что на автомате не сделано отделение непосредственно логики алгоритма от логики вывода. Это рефлексом быть должно, это нужно делать не задумываясь. Да, больше строчек будет, но де факто это хуже, чем если кто тупит при развороте списка .
Здравствуйте, Sharov, Вы писали:
S>Это отдельный мир, со своей логикой и информатикой
На TS есть пакеты где алгоритмы на графам вовсю используются. Так что это не мир отдельный, а калопрограммисты некоторые, как и в других "мирах".
S>Чистейшее программирвоание без оглядки на окр. мир, т.е. железо. В противовес С, например. Ну и зачем им эти всязанные списки, указатели какие-то?
Алгоритмические задачки редко завязаны на особенности железа.
Предположим, кандидат позиционирует себя как эксперт в HTML ftontend.
Так как я мимо крокадил CSS-а, как прощупать наличие hands-on experience и что чел вообще что-то понимает подкапотом у CSS?
Здравствуйте, white_znake, Вы писали:
_>$>Так как я мимо крокадил CSS-а, как прощупать наличие hands-on experience и что чел вообще что-то понимает подкапотом у CSS?
_>Самое худшее что может быть в собеседованиях — это интервьювер без глубокого знания той области, в которой он планируют собеседовать кандидатов. _>Может привлечь сторонних знакомых людей со знанием во фронтэнде, в знаниях которых ты уверен, заплатить этим людям за подбор требуемого специалиста?
Иди ты в лес. Я лично считаю себя достаточно сильным программистом, в том числе в UI. При этом, CSS только на уровне гуглопоиска и копи-паста использую.
На фоне икспертов в CSS, тех, которые не могут перевернуть строку, прямо титан мысли блин.
$>Здравствуйте, white_znake, Вы писали:
_>>$>Так как я мимо крокадил CSS-а, как прощупать наличие hands-on experience и что чел вообще что-то понимает подкапотом у CSS?
_>>Самое худшее что может быть в собеседованиях — это интервьювер без глубокого знания той области, в которой он планируют собеседовать кандидатов. _>>Может привлечь сторонних знакомых людей со знанием во фронтэнде, в знаниях которых ты уверен, заплатить этим людям за подбор требуемого специалиста?
$>Иди ты в лес. Я лично считаю себя достаточно сильным программистом, в том числе в UI. При этом, CSS только на уровне гуглопоиска и копи-паста использую.
$>На фоне икспертов в CSS, тех, которые не могут перевернуть строку, прямо титан мысли блин.
Но при этом хочешь собеседовать людей по CSS. Каждый, кто придёт собеседоваться, будет знать CSS лучше тебя. Да и задачу перевернуть строку, поймёт не так, как ты.
$>Как в JavaScript сложить integer с float, какой тип аргумента у функции, как отличить, что тип — integer а не float.
Вопрос либо слишком сложный (тк неверно заданный), либо слишком простой. Просто плюсом? Тип один — number. То есть float всегда. typeof ляляля === "number". Что число внутри целое проверить есть встроенный метод.
Кмк наличие hands on experience в js быстро проверяется вопросом что есть в лодаш/андерскор и парой каверзных вопросов типа что такое спред, рест, хоистинг.
Здравствуйте, sr_dev, Вы писали:
_>$>Как в JavaScript сложить integer с float, какой тип аргумента у функции, как отличить, что тип — integer а не float.
_>Вопрос либо слишком сложный (тк неверно заданный), либо слишком простой. Просто плюсом? Тип один — number.
Спросить про базовые типы в JS- слишком сложный вопрос?
_> То есть float всегда.
Неверно
_>typeof ляляля === "number". Что число внутри целое проверить есть встроенный метод.
Вопрос про как проверить тип переменной.
If the target value is an integer, return true, otherwise return false. If the value is NaN or Infinity, return false. The method will also return true for floating point numbers that can be represented as integer.
_> каверзных вопросов типа что такое спред, рест, хоистинг.
Что это за поток сознания?
Здравствуйте, $$, Вы писали:
_>>Вопрос либо слишком сложный (тк неверно заданный), либо слишком простой. Просто плюсом? Тип один — number.
$>Спросить про базовые типы в JS- слишком сложный вопрос?
Ну, прежде чем спрашивать на интервью, разберись сам что ли.
Здравствуйте, elmal, Вы писали:
E>$>Так как я мимо крокадил CSS-а, как прощупать наличие hands-on experience и что чел вообще что-то понимает подкапотом у CSS? E>Как верстальщик или как фронтэнд разработчик? Ибо верстальщиков до черта и больше. А вменяемого фронтэндера хрен найдешь. Соответственно говорить нужно про компоненты, как обеспечивать взаимосвязи между компонентами, что такое callback hell и как с ним бороться, какие паттерны доводилось использовать в разработке, когда какие применять, что хорошо, что плохо, какие особенности случаются. Что такое полифиллы, какие особенности и приколы доводилось наблюдать на практике. Из разговора становится достаточно быстро понятно кто перед тобой, прочитал ли он только что книжку или обладает реальным опытом. На практике большинство будут приходить вообще с нулевым опытом и знаниями, прочитав одну книжку по верстке и книжку javascript для чайников. Дополнительно на завал конечно можно дать простейшую задачу на то, чтоб например отсеять дубликаты в массиве, но типичный даже опытный крутой фронтэндер не в состоянии решать никакие алгоритмические задачи (не, он решит за время n квадрат), соответственно приходится брать хоть кого то мало мальски вменяемого, или вакансию не закрыть тогда годами если еще и базовые знания в computer science проверять, соответственно сам тогда будешь корячиться с этим фронтэндом.
Я бы не брал вообще никого, кто решит за время n квадрат. Или не слышал про linked list ничего. Но не я задаю бюджет, могу только высветить проколы в случае, когда просят пособеседовать.
$>Иди ты в лес. Я лично считаю себя достаточно сильным программистом, в том числе в UI. При этом, CSS только на уровне гуглопоиска и копи-паста использую.
$>На фоне икспертов в CSS, тех, которые не могут перевернуть строку, прямо титан мысли блин.
Наезд детектед
Да, я не спорю, что ты можешь быть сильным программистом, но не в той же верстке с использованием HTML & CSS, раз сам признаешься что слаб в этих областях.
Поэтому было бы правильнее не строить из себя мега-гуру в той области, в которой не разбираешься и не подводить кстати компанию. Потому что отзывы об "олене"-интервьювере сильно подрывают реноме компании
$>Я бы не брал вообще никого, кто решит за время n квадрат. Или не слышал про linked list ничего. Но не я задаю бюджет, могу только высветить проколы в случае, когда просят пособеседовать.
Конкретно тот фронтендер, что решил за н квадрат, к твоему сведению гуру кложурескрипта и от функциональщины вообще прется . Соответственно наверно список бы развернул, но вот дубликаты, звиняйте, но н квадрат .
Здравствуйте, white_znake, Вы писали:
_>Поэтому было бы правильнее не строить из себя мега-гуру в той области, в которой не разбираешься и не подводить кстати компанию. Потому что отзывы об "олене"-интервьювере сильно подрывают реноме компании
Где я строил из себя гуру? Я попросил вопрос, чтоб спросить по бумажке и сравнить ответ с бумажкой. Вместо этого shit hit the fan у некоторых отметившихся тут верстальщиков.
Интервью уже прошло, успешно спросил про что такое flexbox и как завести переменную типа integer в JS.
Здравствуйте, elmal, Вы писали:
E>Конкретно тот фронтендер, что решил за н квадрат, к твоему сведению гуру кложурескрипта и от функциональщины вообще прется . Соответственно наверно список бы развернул, но вот дубликаты, звиняйте, но н квадрат .
Пофиг кем он себя считает, хоть Наполеоном. А что за вопрос про дупликаты кстати, интересно же.
$>Я попросил вопрос, чтоб спросить по бумажке и сравнить ответ с бумажкой.
Я лично считаю себя достаточно сильным программистом, в том числе в 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 мы не даём настолько лёгкие задачи. Но раскрывать я не буду.
Здравствуйте, 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 решение задач на собеседовании. Как патерн.
Вот попросили переаернуть список. Многие подумают, что однонаправленный.
Ну и тд.
Здравствуйте, 0xCAFEDEAD, Вы писали:
CAF>Но я про biased решение задач на собеседовании. Как патерн.
Последний опыт — спросил у чела, что такой список (linked list). Он сказал, что не знает. 6 лет опыта в вебе.
CAF>Вот попросили переаернуть список. Многие подумают, что однонаправленный. CAF>Ну и тд.
Если не уточнил про одно или двунаправленный- минус. Но да, двунаправленный неинтересно спрашивать, конечно же однонаправленный.
Здравствуйте, 0xCAFEDEAD, Вы писали:
CAF>>>Но я про biased решение задач на собеседовании. Как патерн. CAF>$>Последний опыт — спросил у чела, что такой список (linked list). Он сказал, что не знает. 6 лет опыта в вебе.
CAF>А на кой он ему?
Ему то ничего не нужно, а мне нужно. Чтобы не переписывать за ним и не заворачивать PR по 20 раз.
CAF>>>Вот попросили переаернуть список. Многие подумают, что однонаправленный. CAF>>>Ну и тд. CAF>$>Если не уточнил про одно или двунаправленный- минус. Но да, двунаправленный неинтересно спрашивать, конечно же однонаправленный. CAF>Об этом я и говорю. Типичные задачи — типичные решения.
Ну а какие должны быть задачи? Нужно ведь найти просто нормального чела, а не удивить или завалить чем-то.
$>Здравствуйте, 0xCAFEDEAD, Вы писали:
CAF>>>>Но я про biased решение задач на собеседовании. Как патерн. CAF>>$>Последний опыт — спросил у чела, что такой список (linked list). Он сказал, что не знает. 6 лет опыта в вебе.
CAF>>А на кой он ему?
$>Ему то ничего не нужно, а мне нужно. Чтобы не переписывать за ним и не заворачивать PR по 20 раз.
Расшифруй. CAF>>>>Вот попросили переаернуть список. Многие подумают, что однонаправленный. CAF>>>>Ну и тд. CAF>>$>Если не уточнил про одно или двунаправленный- минус. Но да, двунаправленный неинтересно спрашивать, конечно же однонаправленный. CAF>>Об этом я и говорю. Типичные задачи — типичные решения.
$>Ну а какие должны быть задачи? Нужно ведь найти просто нормального чела, а не удивить или завалить чем-то.
Здравствуйте, 0xCAFEDEAD, Вы писали:
CAF>Расшифруй.
Может быть натренированный вышивать крестиком и неспособный думать. Может быть способный думать, который при необходимости вышьет хоть крестиком, хоть петелькой.
CAF>Так вот и решения предлагают типичные.
К сожалению, нет. Предлагают квадратичную сложность.
Здравствуйте, elmal, Вы писали:
E>Здравствуйте, $$, Вы писали:
Б>>>В-третьих, не стоит смешивать алгоритм и вывод в консоль E>$>Почему? E>Ужас, и это спрашивает апологет Clojure . Короче, если в привычку сайдэффекты не вошло выносить, функциональщина таким противопоказана.
С чего вдруг отладочные сообещия(а в js никак по другому, увы) стали жутиким side effect'ом. Хотя да, возможно ассерт, или несколько, был бы лучше.
Здравствуйте, $$, Вы писали:
CAF>>Но я про biased решение задач на собеседовании. Как патерн.
$>Последний опыт — спросил у чела, что такой список (linked list). Он сказал, что не знает. 6 лет опыта в вебе.
Это отдельный мир, со своей логикой и информатикой. Не могу найти пост на хабре, где парень писал, что js никак не завязан на архитектуру низлежащей машины и вообще железо.
Чистейшее программирвоание без оглядки на окр. мир, т.е. железо. В противовес С, например. Ну и зачем им эти всязанные списки, указатели какие-то?
Здравствуйте, elmal, Вы писали:
E>Здесь фигня не отладочное сообщение, а то, что на автомате не сделано отделение непосредственно логики алгоритма от логики вывода. Это рефлексом быть должно, это нужно делать не задумываясь. Да, больше строчек будет, но де факто это хуже, чем если кто тупит при развороте списка .
Тебе нужно паттерн Visitor зафигачить в простой вопрос?
Честно, я бы удивился если соискатель вместо короткого кода на заданную задачу, принялся расписывать диаграммы классов.
$>Тебе нужно паттерн Visitor зафигачить в простой вопрос?
Нет не нужен, ибо этот паттерн здесь ни к месту.
$>Честно, я бы удивился если соискатель вместо короткого кода на заданную задачу, принялся расписывать диаграммы классов.
А на деле здесь код и не нужен, просто сказать достаточно чтоб положил элементы при итерировании в set и проверяю бы наличие текущего элемента в множестве в процессе итерирования. А логика разнесения алгоритма и вывода вполне бы работала через концепцию stream, list comprehension, сопрограм, это все вполне делается и на java script тоже и фронтэндер должен быть в курсе этих концепций. Именно это должно быть реализацией по умолчанию, все остальное читается гораздо хуже и это имеет смысл использовать только когда данный код является крайне узким местом. Вот когда будет этот код узким местом, тогда допустимы будут и сайдэффекты, и визиторы, причем просто хардкодные сайдэффекты более вероятны.
Следует различать требования к коду в критичных по скорости местах и в основном потоке выполнения. В основном потоке выполнения основным должно быть краткость, понятность, расширяемость и т.д. В критичном по скорости (и вообще по ресурсам) месте основным критерием будет производительность, при этом в реализации вполне допустимы очень страшные ужасы, что там черт голову сломит. И нужно уметь писать и так и так, но чаще всего нужно уметь писать основной поток выполнения, то есть кратко и понятно.
Здравствуйте, $$, Вы писали:
S>>Чистейшее программирвоание без оглядки на окр. мир, т.е. железо. В противовес С, например. Ну и зачем им эти всязанные списки, указатели какие-то?
$>Алгоритмические задачки редко завязаны на особенности железа.
Некотрые алг-мы создавались с оглядкой на особенности железа. Я уж про cache oblivious молчу.
Здравствуйте, $$, Вы писали:
E>>Тривиальный, специально для фронтэндеров. С сервера пришли данные вида массив ФИО. Вывести пользователю только уникальные ФИО.
$>ФИО это строка. Значит, hashmap.
$>[code=Typescript]
$>fio: { [key: string]: null}= {};
$>list.forEach(v => { if( fio[v]=== undefined) { fio[v]=null; console.log(fio); }};
$>[/code]
вообще говорят уже Set давно есть
new Set(list).forEach(c => console.log(c));
E>> Иногда задача посложнее, вывести те, кто повторяется, но среди фронтэндеров и первую большинство решить не могут. Если что, подобная задача периодически встречается на практике. Хоть и в современных языках достаточно сделать .distinct() у коллекции.
$>Можно сделать filter с hashmap. У TS только filter вернёт новый массив, а не стрим.
$>Ответ для расширения кругозора: Object в JavaScript является ассоциативным контейнером. Любой Set это обрезанный Map. Лично я предпочитаю короткий синтаксис {} и [].
в тайпскрипте придется использовать костыль в виде [key: string]: null
$>Здравствуйте, PM, Вы писали:
PM>>Вопрос для расширения кругозора: а в Typescript разве нет контейнера для множества значений? Вроде даже в не очень свежем JavaScript есть Set
$>Ответ для расширения кругозора: Object в JavaScript является ассоциативным контейнером. Любой Set это обрезанный Map. Лично я предпочитаю короткий синтаксис {} и [].
Object в JS может иметь только текстовые поля.
попробуй использовать объект или функцию в виде ключа
Здравствуйте, 0xCAFEDEAD, Вы писали:
CAF>Может быть проблема в понимании задач на собеседовании CAF> Вот тут set обсуждают, но в большинстве подобных задач на собеседоаании нельзя использвать доп память. (Кроме пременных) CAF>В итоге чел. иожет затупить и пытаться делать in-place.
гм, в JS строки иммьютабл, можно конечно сделать массив из строки и реверсить ин плейс в массиве.
AC>$>Как в JavaScript сложить integer с float, какой тип аргумента у функции, как отличить, что тип — integer а не float.
AC>напрямую никак, но ты можешь написать что то вроде if(Math.abs(x — parseInt(x)) !== 0)
Это какая-то профессиональная деформация у JS-ков? Блин, у JS не ни integer, ни float.
Здравствуйте, AndyCyp, Вы писали:
AC>$>Ответ для расширения кругозора: Object в JavaScript является ассоциативным контейнером. Любой Set это обрезанный Map. Лично я предпочитаю короткий синтаксис {} и [].
AC>в тайпскрипте придется использовать костыль в виде [key: string]: null
1) это не костыль
2) в результате в генерённом JS будет Object.
AC>>$>Как в JavaScript сложить integer с float, какой тип аргумента у функции, как отличить, что тип — integer а не float.
AC>>напрямую никак, но ты можешь написать что то вроде if(Math.abs(x — parseInt(x)) !== 0)
$>Это какая-то профессиональная деформация у JS-ков? Блин, у JS не ни integer, ни float.
Здравствуйте, PM, Вы писали:
PM>$>Ок, ты крут. А теперь вернёмся к нашим баранам- строку за линейное время перевернёшь, или как всегда?
PM>Обычно я не подаю, но сегодня пятница, так что держите PM>
$>Здравствуйте, AndyCyp, Вы писали:
AC>>$>Ответ для расширения кругозора: Object в JavaScript является ассоциативным контейнером. Любой Set это обрезанный Map. Лично я предпочитаю короткий синтаксис {} и [].
AC>>в тайпскрипте придется использовать костыль в виде [key: string]: null
$>2) в результате в генерённом JS будет Object.
ясен пень, это же и был объект ({})
вообще интересно бывает на интервью поспрашивать как es6 транспайлится в es5
Здравствуйте, AndyCyp, Вы писали:
AC>>>$>Как в JavaScript сложить integer с float, какой тип аргумента у функции, как отличить, что тип — integer а не float.
AC>>>напрямую никак, но ты можешь написать что то вроде if(Math.abs(x — parseInt(x)) !== 0)
AC>$>Это какая-то профессиональная деформация у JS-ков? Блин, у JS не ни integer, ни float.
AC>опечатка, Math.abs(x — Math.floor(x))
Ещё раз. У Javascript нет типа integer, нет типа float. То, что ты повёлся дальше импровизировать,- значит не знаешь про number.
С твоей попыткой протестировать значение не согласен MDN
Здравствуйте, AndyCyp, Вы писали:
C>$>2) в результате в генерённом JS будет Object. AC>ясен пень, это же и был объект ({})
В котором в V8 операция добавления дорогая по причине подбора подходящего HiddenClass
Most Javascript interpreters use dictionary-like objects (hash function based) to store the location of object property values in memory.
Hidden classes work similarly to the fixed object layouts (classes) used in languages like Java
V8 attaches a hidden class to each and every object, and the purpose of the hidden classes is to optimize property access time
AC>вообще интересно бывает на интервью поспрашивать как es6 транспайлится в es5
AC>что происходит с let, const, () =>
Что в этом интересного? Инфа о типах выбрасывается.
Здравствуйте, $$, Вы писали:
PM>>$>Ок, ты крут. А теперь вернёмся к нашим баранам- строку за линейное время перевернёшь, или как всегда?
PM>>Обычно я не подаю, но сегодня пятница, так что держите PM>>