Здравствуйте, scf, Вы писали:
scf>ппц, 5 страниц уже и ровно 1 ответ по теме. И то я бы так делать не стал, т.к. можно взять кандидата, прокачавшего скилл красивой болтовни, а не теорию, написание кода или там проектирование архитектуры.
Так наймешь студента или того, кто зазубрил.
Болтолог сразу посыпется — для этого и нужен испытательный срок.
Re[7]: Что вы всегда спрашиваете на собеседовании?
Здравствуйте, Lexey, Вы писали:
L>Здравствуйте, sergey2b, Вы писали:
S>>я запилил примерно вот такой алгоритм
L>Это ты написал вариант сортировки подсчетом. C ошибками и в ужасном стиле. L>Ну и, если вместо char будет char32_t, то оно просто не будет работать в таком виде. Хотя, можно починить, заменив массив на хеш-таблицу.
Обьясните оба, пожалуйста, тупому. Я не могу это скомпилить в голове. Где там подсчёт собственно?
Здравствуйте, kaa.python, Вы писали:
KP>Я считаю что работа должна быть:
KP>а) не противна, KP>б) приносить достаточно (в твоем понимании) денег, KP>в) не занимать более 40 часов в неделю (у всех бывают релизы, но это мероприятие не должно быть каждый месяц), KP>г) увеличивать твою стоимость (как минимум не уменьшать) в будущем.
KP>Если хотя бы что-то не соблюдается, то ну его нахер эту работу. Что у тебя из этого соблюдается я не знаю
Что насчёт переизбытка (а) "доставляет кучу удовольствия" при устовии тотального несоблюдения (в) "занимает 50-60 часов и более".
kalsarikännit
Re[8]: Что вы всегда спрашиваете на собеседовании?
Здравствуйте, scf, Вы писали:
scf>Вопрос к собеседующим.
scf>Какие навыки и знания, по вашему мнению, являются настолько важными в работе программиста, что вы всегда их спрашиваете на собеседованиях? Желательно с объяснением из личного опыта, почему именно так
У нас в конторе по предыдушему опыту отдельная секция с презентацией, я в основном по technical skills интервью провожу.
Мудреные задачки не даю, простые задачки даю на фон-скрине (что-нить типа посчитать наиболее часто встречаюшийся символ в строке).
На онсайт — обычно даю что-то на поговорить-пообсуждать вместе. Чтобы собрать максимум информации о кандидате в процессе.
Soft skills очень важны, кандидат обязан уметь задавать уточняющие вопросы и внятно формулировать свои мысли.
С++-миддл/сеньор — самое простое, что-нибудь из этого:
1) "А давай задизайним unique_ptr" — и пошло поехало, тут тебе и базовая работа с классами, и мув-семантика, и работа с памятью, затем переход на разговор о shared_ptr/weak_ptr, RAII, многопоточность, случаи из опыта — с хорощим кандидатом легко найдется о чем поговорить по ходу дела.
2) "А давай задизайним класс строки" — и опять тут все что надо всплывет, хорошо если беседа затронет copy-on-write — а там тебе опять многопоточность, SSO сюда же, string_view итд итп
3) По дизайну/ООП можно что-нить на тему Inheritance vs Composition. Типа — задизайнить классы Маг(cast spells)/Воин(hit)/Паладин(cast spells and hit), а затем дальше расширять, добавлять новый функционал и сущности. Но это больше для джуниоров, хотя сеньоры тоже часто бросаются фигачить иерархии.
4) Для абстрактной существующей системы — задизайнить логгер. Добавляем многопоточность, базы данных по вкусу итд итп.
Re[9]: Что вы всегда спрашиваете на собеседовании?
Здравствуйте, Lexey, Вы писали:
L>Я ж говорю, код с ошибками.
L>Там L>
L>if (i < s_arr1) { code[arr1[i]] |= mask1; if (code[arr1[i]] == maskEnd) return arr1[i]; }
L>
L>должно быть. L>Подсчет идет числом единичных битов в code[char].
Т.е. там выделяется массив размером с макс число на входе? Семантически, то же самое, что завести 3 BitSet, выставить каждому бит по индексу входного числа, сделать AND и вывести нижний бит (если он есть)?
И по сути, проще тогда завести TreeMap<character, byte>, выставлять 0..2 бит в его value. По окончании, перебрать это rbtree до первого нода с 3 выставленными битами.
Re[10]: Что вы всегда спрашиваете на собеседовании?
%>Т.е. там выделяется массив размером с макс число на входе?
Что такое "макс. число на входе"? Если размер алфавита, то да.
%>Cемантически, то же самое, что завести 3 BitSet, выставить каждому бит по индексу входного числа, сделать AND и вывести нижний бит (если он есть)?
Типа того. Только у него в случае неотсортированных массивов выведется не наименьший символ, а первый, который встретится во всех 3-х массивах. В случае отсортированных массивов разницы не будет.
%>И по сути, проще тогда завести TreeMap<character, byte>, выставлять 0..2 бит в его value. По окончании, перебрать это rbtree до первого нода с 3 выставленными битами.
Это уже O(N log K) (где K — размер алфавита), вместо O(N).
"Будь достоин победы" (c) 8th Wizard's rule.
Re[11]: Что вы всегда спрашиваете на собеседовании?
Здравствуйте, Lexey, Вы писали:
L>%>Т.е. там выделяется массив размером с макс число на входе?
L>Что такое "макс. число на входе"? Если размер алфавита, то да.
Например, алфавит из 3 символов: 0, 1, (2^64-1).
L>%>Cемантически, то же самое, что завести 3 BitSet, выставить каждому бит по индексу входного числа, сделать AND и вывести нижний бит (если он есть)?
L>Типа того. Только у него в случае неотсортированных массивов выведется не наименьший символ, а первый, который встретится во всех 3-х массивах. В случае отсортированных массивов разницы не будет.
Раз уж "в лоб" решение и утверждается про "нетребование к упорядоченности", то нужно затянуть до конца. И уже потом искать наименьший общий символ.
L>%>И по сути, проще тогда завести TreeMap<character, byte>, выставлять 0..2 бит в его value. По окончании, перебрать это rbtree до первого нода с 3 выставленными битами.
L>Это уже O(N log K) (где K — размер алфавита), вместо O(N).
Да, ты прав. С HashMap можно затянуть все массивы, потом с фильтром вывести наименьшее из совпавших чисел.
Здравствуйте, %, Вы писали:
L>>Что такое "макс. число на входе"? Если размер алфавита, то да.
%>Например, алфавит из 3 символов: 0, 1, (2^64-1).
Тогда он кодируется 3 кодами — 0,1,2. И размер алфавита — 3. А символьное представление этих кодов не особо интересно.
%>Раз уж "в лоб" решение и утверждается про "нетребование к упорядоченности", то нужно затянуть до конца. И уже потом искать наименьший общий символ.
Можно искать не наименьший код символа, а тот, на котором достигается минимум максимума по индексам первых вхождений символа в каждый массив. В этом случае его решение работает без требования к упорядоченности.
%>Да, ты прав. С HashMap можно затянуть все массивы, потом с фильтром вывести наименьшее из совпавших чисел.
Да, так лучше.
"Будь достоин победы" (c) 8th Wizard's rule.
Re[6]: Что вы всегда спрашиваете на собеседовании?
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>Т.е. что-то специфическое, с чем большинство программистов не сталкивается? НС>В 2019 году большинство программистов с криптохешами таки сталкивается.
нет.
И каждый день — без права на ошибку...
Re[11]: Что вы всегда спрашиваете на собеседовании?
L>Типа того. Только у него в случае неотсортированных массивов выведется не наименьший символ, а первый, который встретится во всех 3-х массивах. В случае отсортированных массивов разницы не будет.
да ладно, если пройти по всему массиву, то можно определить наименьший и наибольший и средний
и три массива перед этим сортировать не надо
я собеседуюшегося спросил, после того как я напишу вы скажите а теперь тоже самое с не отсортированными массивами
и будите ждать что я запилю вам сорттировку
он ответил, ага
надо было конечно не малодушничать а встать и уйти от туда нафик
Re[12]: Что вы всегда спрашиваете на собеседовании?
Здравствуйте, sergey2b, Вы писали:
S>да ладно, если пройти по всему массиву, то можно определить наименьший и наибольший и средний
Можно, но твой код этого не делает.
S>и три массива перед этим сортировать не надо
Угу, но для отсортированных массивов можно сделать решение, которое требует O(1) доп. памяти. А твое требует O(размер алфавита).
То есть, снятие требования отсортированности совсем не бесплатно обходится.
S>надо было конечно не малодушничать а встать и уйти от туда нафик
Тебе задали вполне нормальную задачку и продолжение предполагали вполне логичное. С чего уходить-то?
"Будь достоин победы" (c) 8th Wizard's rule.
Re[13]: Что вы всегда спрашиваете на собеседовании?
Здравствуйте, Lexey, Вы писали:
L>>>Что такое "макс. число на входе"? Если размер алфавита, то да. L>%>Например, алфавит из 3 символов: 0, 1, (2^64-1).
L>Тогда он кодируется 3 кодами — 0,1,2. И размер алфавита — 3. А символьное представление этих кодов не особо интересно.
Т.е. завести отдельно таблицу символов, как таблица цветов в gif. Да, это прикольное решение.
L>%>Раз уж "в лоб" решение и утверждается про "нетребование к упорядоченности", то нужно затянуть до конца. И уже потом искать наименьший общий символ.
L>Можно искать не наименьший код символа, а тот, на котором достигается минимум максимума по индексам первых вхождений символа в каждый массив. В этом случае его решение работает без требования к упорядоченности.
Эээ не распарсил «минимум максимума». Ну да входное требование и условие известно ведь- минимальное общее, упорядоченные. Т.е. правильный ответ там лишь один- merge sort.
Re[12]: Что вы всегда спрашиваете на собеседовании?
Здравствуйте, sergey2b, Вы писали:
L>>Типа того. Только у него в случае неотсортированных массивов выведется не наименьший символ, а первый, который встретится во всех 3-х массивах. В случае отсортированных массивов разницы не будет.
S>да ладно, если пройти по всему массиву, то можно определить наименьший и наибольший и средний S>и три массива перед этим сортировать не надо
S>я собеседуюшегося спросил, после того как я напишу вы скажите а теперь тоже самое с не отсортированными массивами S>и будите ждать что я запилю вам сорттировку
S>он ответил, ага
S>надо было конечно не малодушничать а встать и уйти от туда нафик
Для отсортированных нужно было через merge sort. Для неотсортированных — через HashMap+ counting, либо через bitset+ counting.
HashMap+ counting: HashMap<character, bitmask>.
bitset+ counting: byte[3 * AlphabetSize / 8 + 1]
Re[12]: Что вы всегда спрашиваете на собеседовании?
Здравствуйте, alzt, Вы писали:
A>Здравствуйте, Baudolino, Вы писали:
B>>"в чем разница между хэшем в hashmap и хэшем в крипто" A>А какой правильный ответ?
И то, и другое — хэш-функция (отображение бесконечного или почти бесконечного множества на конечное), но первый должен быть вычислительно быстрым, второй должен быть медленным (чтобы исключить brute force).
Здравствуйте, Sharov, Вы писали:
S>У них совершенно разное предназначение — уникальная идентификация объекта
Хэш-функция по определению не может давать уникальный идентификатор объекта. В вычислительных системах хэш — это проекция множества натуральных чисел на конечное множество, там просто нет взаимно однозначного соответствия.
Re[4]: Что вы всегда спрашиваете на собеседовании?
Здравствуйте, Masterspline, Вы писали:
M>Думаю, тут хотят услышать, что крипто хеширует необратимо, а для hashmap достаточно равномерного хеширования.
Хэш по определению необратим. Учите матчасть.
Здравствуйте, Baudolino, Вы писали:
B>Здравствуйте, Sharov, Вы писали:
S>>У них совершенно разное предназначение — уникальная идентификация объекта B>Хэш-функция по определению не может давать уникальный идентификатор объекта. В вычислительных системах хэш — это проекция множества натуральных чисел на конечное множество, там просто нет взаимно однозначного соответствия.
Грамотное было бы сказать про равномерность распределения.