Re[2]: Что вы всегда спрашиваете на собеседовании?
От: IncremenTop  
Дата: 13.06.19 11:04
Оценка:
Здравствуйте, scf, Вы писали:

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


Так наймешь студента или того, кто зазубрил.

Болтолог сразу посыпется — для этого и нужен испытательный срок.
Re[7]: Что вы всегда спрашиваете на собеседовании?
От: % Австралия жж
Дата: 13.06.19 11:24
Оценка:
Здравствуйте, Lexey, Вы писали:

L>Здравствуйте, sergey2b, Вы писали:


S>>я запилил примерно вот такой алгоритм


L>Это ты написал вариант сортировки подсчетом. C ошибками и в ужасном стиле.

L>Ну и, если вместо char будет char32_t, то оно просто не будет работать в таком виде. Хотя, можно починить, заменив массив на хеш-таблицу.

Обьясните оба, пожалуйста, тупому. Я не могу это скомпилить в голове. Где там подсчёт собственно?

const char mask1 = 0x01;
const char mask2 = 0x02;
const char mask3 = 0x04;
const char maskEnd = 0x07;

if (i < s_arr1) { code[arr1[i]] != mask1; if (code[arr1[i]] == mask3) return arr1[i]; }


Ничего не понятно. Сравнение с битовой маской, которых 8 штук по одной на бит? Что это вообще?
Re[5]: Что вы всегда спрашиваете на собеседовании?
От: Ночной Смотрящий Россия  
Дата: 13.06.19 12:14
Оценка:
Здравствуйте, alzt, Вы писали:

A>Т.е. что-то специфическое, с чем большинство программистов не сталкивается?


В 2019 году большинство программистов с криптохешами таки сталкивается.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[11]: Что вы всегда спрашиваете на собеседовании?
От: IID Россия  
Дата: 13.06.19 13:31
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Я считаю что работа должна быть:


KP>а) не противна,

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

KP>Если хотя бы что-то не соблюдается, то ну его нахер эту работу. Что у тебя из этого соблюдается я не знаю


Что насчёт переизбытка (а) "доставляет кучу удовольствия" при устовии тотального несоблюдения (в) "занимает 50-60 часов и более".
kalsarikännit
Re[8]: Что вы всегда спрашиваете на собеседовании?
От: Lexey Россия  
Дата: 13.06.19 14:48
Оценка: +1
Здравствуйте, %, Вы писали:

%>Ничего не понятно. Сравнение с битовой маской, которых 8 штук по одной на бит? Что это вообще?

Я ж говорю, код с ошибками.

Там
if (i < s_arr1) { code[arr1[i]] |= mask1; if (code[arr1[i]] == maskEnd) return  arr1[i]; }

должно быть.
Подсчет идет числом единичных битов в code[char].
"Будь достоин победы" (c) 8th Wizard's rule.
Отредактировано 13.06.2019 14:51 Lexey . Предыдущая версия .
Re: Что вы всегда спрашиваете на собеседовании?
От: Faland США  
Дата: 13.06.19 20:53
Оценка: 5 (1)
Здравствуйте, 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]: Что вы всегда спрашиваете на собеседовании?
От: % Австралия жж
Дата: 13.06.19 21:29
Оценка:
Здравствуйте, 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]: Что вы всегда спрашиваете на собеседовании?
От: Lexey Россия  
Дата: 13.06.19 22:19
Оценка: +1
Здравствуйте, %, Вы писали:

%>Т.е. там выделяется массив размером с макс число на входе?

Что такое "макс. число на входе"? Если размер алфавита, то да.

%>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]: Что вы всегда спрашиваете на собеседовании?
От: % Австралия жж
Дата: 14.06.19 03:40
Оценка:
Здравствуйте, 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 можно затянуть все массивы, потом с фильтром вывести наименьшее из совпавших чисел.
Отредактировано 14.06.2019 3:44 Артём . Предыдущая версия .
Re[12]: Что вы всегда спрашиваете на собеседовании?
От: Lexey Россия  
Дата: 14.06.19 08:38
Оценка:
Здравствуйте, %, Вы писали:

L>>Что такое "макс. число на входе"? Если размер алфавита, то да.

%>Например, алфавит из 3 символов: 0, 1, (2^64-1).

Тогда он кодируется 3 кодами — 0,1,2. И размер алфавита — 3. А символьное представление этих кодов не особо интересно.

%>Раз уж "в лоб" решение и утверждается про "нетребование к упорядоченности", то нужно затянуть до конца. И уже потом искать наименьший общий символ.

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

%>Да, ты прав. С HashMap можно затянуть все массивы, потом с фильтром вывести наименьшее из совпавших чисел.

Да, так лучше.
"Будь достоин победы" (c) 8th Wizard's rule.
Re[6]: Что вы всегда спрашиваете на собеседовании?
От: B0FEE664  
Дата: 14.06.19 11:10
Оценка: -1 :))
Здравствуйте, Ночной Смотрящий, Вы писали:

A>>Т.е. что-то специфическое, с чем большинство программистов не сталкивается?

НС>В 2019 году большинство программистов с криптохешами таки сталкивается.

нет.
И каждый день — без права на ошибку...
Re[11]: Что вы всегда спрашиваете на собеседовании?
От: sergey2b ЮАР  
Дата: 14.06.19 11:19
Оценка:
Здравствуйте, Lexey, Вы писали:


L>Типа того. Только у него в случае неотсортированных массивов выведется не наименьший символ, а первый, который встретится во всех 3-х массивах. В случае отсортированных массивов разницы не будет.


да ладно, если пройти по всему массиву, то можно определить наименьший и наибольший и средний
и три массива перед этим сортировать не надо


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

он ответил, ага


надо было конечно не малодушничать а встать и уйти от туда нафик
Re[12]: Что вы всегда спрашиваете на собеседовании?
От: Lexey Россия  
Дата: 14.06.19 14:28
Оценка: +1
Здравствуйте, sergey2b, Вы писали:

S>да ладно, если пройти по всему массиву, то можно определить наименьший и наибольший и средний


Можно, но твой код этого не делает.

S>и три массива перед этим сортировать не надо


Угу, но для отсортированных массивов можно сделать решение, которое требует O(1) доп. памяти. А твое требует O(размер алфавита).
То есть, снятие требования отсортированности совсем не бесплатно обходится.

S>надо было конечно не малодушничать а встать и уйти от туда нафик


Тебе задали вполне нормальную задачку и продолжение предполагали вполне логичное. С чего уходить-то?
"Будь достоин победы" (c) 8th Wizard's rule.
Re[13]: Что вы всегда спрашиваете на собеседовании?
От: % Австралия жж
Дата: 14.06.19 23:46
Оценка:
Здравствуйте, Lexey, Вы писали:

L>>>Что такое "макс. число на входе"? Если размер алфавита, то да.

L>%>Например, алфавит из 3 символов: 0, 1, (2^64-1).

L>Тогда он кодируется 3 кодами — 0,1,2. И размер алфавита — 3. А символьное представление этих кодов не особо интересно.

Т.е. завести отдельно таблицу символов, как таблица цветов в gif. Да, это прикольное решение.

L>%>Раз уж "в лоб" решение и утверждается про "нетребование к упорядоченности", то нужно затянуть до конца. И уже потом искать наименьший общий символ.


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

Эээ не распарсил «минимум максимума». Ну да входное требование и условие известно ведь- минимальное общее, упорядоченные. Т.е. правильный ответ там лишь один- merge sort.
Re[12]: Что вы всегда спрашиваете на собеседовании?
От: % Австралия жж
Дата: 14.06.19 23:59
Оценка:
Здравствуйте, 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]: Что вы всегда спрашиваете на собеседовании?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 15.06.19 00:02
Оценка:
Здравствуйте, IID, Вы писали:

IID>Что насчёт переизбытка (а) "доставляет кучу удовольствия" при устовии тотального несоблюдения (в) "занимает 50-60 часов и более".


Меня бы не устроило, наверное, хобби пострадают же.
Re[3]: Что вы всегда спрашиваете на собеседовании?
От: Baudolino  
Дата: 15.06.19 07:52
Оценка: 2 (1) -1 :)
Здравствуйте, alzt, Вы писали:

A>Здравствуйте, Baudolino, Вы писали:


B>>"в чем разница между хэшем в hashmap и хэшем в крипто"

A>А какой правильный ответ?
И то, и другое — хэш-функция (отображение бесконечного или почти бесконечного множества на конечное), но первый должен быть вычислительно быстрым, второй должен быть медленным (чтобы исключить brute force).
Re[4]: Хэши
От: Baudolino  
Дата: 15.06.19 07:58
Оценка: +1
Здравствуйте, Sharov, Вы писали:

S>У них совершенно разное предназначение — уникальная идентификация объекта

Хэш-функция по определению не может давать уникальный идентификатор объекта. В вычислительных системах хэш — это проекция множества натуральных чисел на конечное множество, там просто нет взаимно однозначного соответствия.
Re[4]: Что вы всегда спрашиваете на собеседовании?
От: Baudolino  
Дата: 15.06.19 07:58
Оценка:
Здравствуйте, Masterspline, Вы писали:

M>Думаю, тут хотят услышать, что крипто хеширует необратимо, а для hashmap достаточно равномерного хеширования.

Хэш по определению необратим. Учите матчасть.
Re[5]: Хэши
От: Sharov Россия  
Дата: 15.06.19 08:30
Оценка:
Здравствуйте, Baudolino, Вы писали:

B>Здравствуйте, Sharov, Вы писали:


S>>У них совершенно разное предназначение — уникальная идентификация объекта

B>Хэш-функция по определению не может давать уникальный идентификатор объекта. В вычислительных системах хэш — это проекция множества натуральных чисел на конечное множество, там просто нет взаимно однозначного соответствия.

Грамотное было бы сказать про равномерность распределения.
Кодом людям нужно помогать!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.