Re[18]: Собеседования в Яндекс++
От: chaotic-kotik  
Дата: 24.05.19 17:16
Оценка: -1
Здравствуйте, Erop, Вы писали:

E>Это проблема этих вторых. Мы же говорим о практике переманивания конкретных людей по рекомендации, а не о найме людей с улицы?


Эта форумная легенда про "переманивание" меня всегда забавляет. На практике людей все равно находит HR по базам резюме, после чего включает "ой, нам вас порекомендовал Х, потому что вы такой крутой специалист, не хотите прийти к нам на собеседование?". Я за всю свою карьеру ни разу не видел чтобы кого-то переманивали прямо вот целенаправленно. Типа вот этот чувак работает в Люксофте, давайте его сманим, он крутой. Вот ни разу вообще. Бывает — "о, этот чувак обновил резюме на hh и работает в Люксофте, давайте спросим про него у Васи, он с ним работал". При этом от программистов это слышно постоянно

E>Ну и потом я, например, не совсем понимаю, что ты понимаешь под "очистить вектор"

E>Вызвать std::vector::clear? Или речь про std::vector::erase? Или про swap с пустым, что бы занулить capacity? Или про какие-то более тонкие материи?

swap с пустым, либо reserve, копия и swap


E>Возможно это им было не надо. И, возможно, и будет не надо или быстро выучат. Например во многих крупных старых проектах не используют или ограниченно используют STL


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

E>Некоторые просят показать образец кода или написать что-нибудь. Но только особо некоторые просят это сделать быстро на доске и т. д.


обычно просим на компе что-нибудь написать (есть ряд тестовых заданий), success rate примерно такой же как и при обычном собеседовании с рисованием алгоритмов на доске
Re[18]: Собеседования в Яндекс++
От: chaotic-kotik  
Дата: 24.05.19 17:44
Оценка: +1
Здравствуйте, a7d3, Вы писали:


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


Вопросы по STL оскорбляют твое достоинство? а вопросы по многопоточности?
Штука в том, что мы задаем всем одинаковые вопросы, независимо от опыта. Темы зависят от того, что придется использовать в работе.

A>Человек потратил время и силы, отодвинул дела, чтобы подъехать на эту встречу. А никого не интересует чем и как он занимался, как с чем привык работать, вместо этого держат за идиота, спрашивают всякую херню, вроде того как очистить вектор. Человек отключается и начинает думать, а с кем же тут работать придётся, если людей сюда нанимают посредством таких вот вопросов.


Большинство людей приходит и отвечает на вопросы вполне нормально, получает офер или отказ с объяснением причин и предложением прийти через пол-года/год. Это win-win. За все время был всего один человек, который отказался отвечать на вопросы и мы с ним распрощались. Вот он потратил и свое время и чужое.

A>Иначе говоря тут проблема в том, что работал «в одной из топовых контор в СПб». Чинить надо ЧСВ и т.п. вещи, перестав мнить себя Д'Артаньяном посреди необразованных, нечёсанных и ни к чему не пригодных.


Хоспаде
Интервью, это повинность, которую никто не хочет выполнять. Идти в переговорку и сидеть там с незнакомым человеком два-три часа, чтобы в 9-ти случаях из 10-ти не получить никакого результата — приятного мало. И бывает очень здорово и приятно, когда приходит человек и заруливает всех на интервью, отвечает на все вопросы и решает все задачи. По ту сторону все хотят тупо закрыть вакансию и все.
Re[19]: Собеседования в Яндекс++
От: Erop Россия  
Дата: 24.05.19 18:29
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>swap с пустым, либо reserve, копия и swap


А зачем все эти ужимки? Обычно же скорость важнее памяти, а все такие фокусы ведут к увеличению числа аллокаций же?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[20]: Собеседования в Яндекс++
От: chaotic-kotik  
Дата: 24.05.19 19:05
Оценка: 10 (2) +1
Здравствуйте, Erop, Вы писали:

E>А зачем все эти ужимки? Обычно же скорость важнее памяти, а все такие фокусы ведут к увеличению числа аллокаций же?


слишком общее суждение, может у меня коллекция векторов на миллион элементов и я не хочу вставлять в нее вектора с size 10 и capacity 100500? вполне могу написать что-то вроде

if (vec.capacity() / vec.size() > 2) {
  vector<int> tmp;
  tmp.reserve(vec.size());
  copy(begin(vec), end(vec), back_inserter(tmp));
  swap(tmp, vec);
}

bigAssCollection[key] = move(vec);
Re[19]: Собеседования в Яндекс++
От: smeeld  
Дата: 24.05.19 19:09
Оценка: -3 :))
Здравствуйте, chaotic-kotik, Вы писали:


CK>Эта форумная легенда про "переманивание" меня всегда забавляет. На практике людей все равно находит HR по базам резюме, после чего включает "ой, нам вас порекомендовал Х, потому что вы такой крутой специалист, не хотите прийти к нам на собеседование?".


Это не правда, мир IT очень узок, особенно в РФ. Вокруг вижу только то, что по собеседованиям бегают начинающие или посредственности. Матёрые переходят с место на место по знакомству. Это распространено среди матёрых очень сильно. Настолько сильно, что основная масса на собеседованиях-начинающие или посредствености, которых никто никуда не приглашает. Вот с таким контингентом Яндекс и имеет дело в своих программах по отбору персонала с улицы через HR и собеседования. Отсюда и все эти методики-напрягает чуваков из Яндекса всё время в дерьме копаться, вот они и стараются хоть как-то отбирать ещё на начальном этапе тех, кто хоть что-то из себя представляет.
Re[19]: Собеседования в Яндекс++
От: a7d3  
Дата: 24.05.19 19:15
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>Хоспаде

CK>Интервью, это повинность, которую никто не хочет выполнять. Идти в переговорку и сидеть там с незнакомым человеком два-три часа, чтобы в 9-ти случаях из 10-ти не получить никакого результата — приятного мало. И бывает очень здорово и приятно, когда приходит человек и заруливает всех на интервью, отвечает на все вопросы и решает все задачи. По ту сторону все хотят тупо закрыть вакансию и все.

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

Небось ещё и список вопросов для интервью жёстко регламентирован — спущен сверху в приказном порядке или типа того.
Небось следующим шагом будет переход на какое-нибудь адаптивное онлайн-тестирование, чтобы не тратить лишний раз время своих сотрудников на всяких там кандидатов.
Молодцы, всё замечательно, продолжайте в том же духе!
Re[3]: Собеседования в Яндекс++
От: smeeld  
Дата: 24.05.19 19:23
Оценка: 1 (1) +1
Здравствуйте, chaotic-kotik, Вы писали:


CK>Ядро и лоу-левел это довольно маргинальная ниша, люди оттуда обычно мало что умеют кроме как пилить низкоуровневые штуки, ну и редко где приживаются кроме эмбедеда. И вас таких не 300 человек, уж поверь.


Ыксперта по ядерным делам видно за километр. Можете поверить, работы хватает в кернель левеле. Эмбеддед-это как раз очень малая отрасль, тут всё верно. Но на порядки более развита отрасль разработки кастомных решений для серверных систем, на базе линуксов, сильно затрагивающих ядро. Cпецилизированные системы хранения, системы обработки данных, сеть, всё железо-стандартные x86 серверы. Спектр задач-специализированне драйверы ФС, оптимизации ввода/вывода, блочного, сетевого, оптимизация драйверов сетевух и различные оптимизации сетевого стека, кастомные сборки ядер, из которых выкидывается многое ненужное, наработки в драйверах сетевых протоколов, в netfiler, для анализа и модификации трафика (DLP), и это далеко не полный перечень, и это именно в РФ.
Re[19]: гугл, фб, я и проч.
От: a7d3  
Дата: 24.05.19 19:37
Оценка: +1
Здравствуйте, Sharov, Вы писали:

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


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

A>>Человек потратил время и силы, отодвинул дела, чтобы подъехать на эту встречу. А никого не интересует чем и как он занимался, как с чем привык работать, вместо этого держат за идиота, спрашивают всякую херню, вроде того как очистить вектор. Человек отключается и начинает думать, а с кем же тут работать придётся, если людей сюда нанимают посредством таких вот вопросов.

S>Ну фирмам уровня гугля, фб, мс, я, амазон и проч. и вправду должно быть не очень интересно, чем соискатель занимался и какие проблемы решал. Гораздо важнее готов ли решать человек задачи,

S>которы перед ним встанут в соотв. фирме. Это и проверяют. Что логично, кмк. Если собеседовать уже в гораздо меньшую фирму, то там пред. достижения могут и учитываться.

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


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

Т.е. принцип отбора людей очень многое говорит о том, каким образом потом строится рабочий процесс.
Re[19]: Собеседования в Яндекс++
От: a7d3  
Дата: 24.05.19 19:46
Оценка: -1
Здравствуйте, chaotic-kotik, Вы писали:

CK>плюс, нужно сравнивать кандидатов, для этого нужно спрашивать у них +- одно и тоже, но если чувак не интересовался ничем из того, о чем мы спрашиваем, как с ним быть?


Тоже очень хороший индикатор — когда говорят об оценке и сравнении кандидатов.
Классический флажок о том, что с этими людьми не стоит иметь дело ни под каким соусом.
Re[21]: Собеседования в Яндекс++
От: Denis Ivlev  
Дата: 24.05.19 19:49
Оценка: +1
Здравствуйте, chaotic-kotik, Вы писали:

CK>слишком общее суждение, может у меня коллекция векторов на миллион элементов и я не хочу вставлять в нее вектора с size 10 и capacity 100500? вполне могу написать что-то вроде


Ну как-бы показывает, что С++ ты знаешь стандарта аж 2003 года (открой для себя С++11 и старше https://en.cppreference.com/w/cpp/container/vector/shrink_to_fit), что вполне себе стопер для многих интервьюеров. Кстати, а почему ты не интересуешься языком на котором пишешь?
Re[3]: Собеседования в Яндекс++
От: Denis Ivlev  
Дата: 24.05.19 19:51
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>Ядро и лоу-левел это довольно маргинальная ниша, люди оттуда обычно мало что умеют кроме как пилить низкоуровневые штуки, ну и редко где приживаются кроме эмбедеда. И вас таких не 300 человек, уж поверь.


Омг, какая чушь. Тех кто контрибьютит в ядро с руками отрывают.
Re[19]: Собеседования в Яндекс++
От: Denis Ivlev  
Дата: 24.05.19 19:56
Оценка: +2
Здравствуйте, chaotic-kotik, Вы писали:

CK>Эта форумная легенда про "переманивание" меня всегда забавляет.


Вообще-то это не легенда, если тебя не переманивают, значит ты просто середнячок, но добротный, ведь в перконе ты же что-то делаешь?
Re[21]: Собеседования в Яндекс++
От: Erop Россия  
Дата: 24.05.19 20:32
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>
CK>if (vec.capacity() / vec.size() > 2) {
CK>  vector<int> tmp;
CK>  tmp.reserve(vec.size());
CK>  copy(begin(vec), end(vec), back_inserter(tmp));
CK>  swap(tmp, vec);
CK>}

CK>bigAssCollection[key] = move(vec);
CK>


Ну всяко бывает, но, по идее, раз у нас коллекция на миллион векторов, то мы её в цикле наверное заполняем. И всё равно аллокация нужна.

Альтернативное решение -- иметь используемый в цикле аккомулятор, и из него копировать во вставляемые вектора с нужным reserve
std::vector<T> acc
for( 1000000 раз ) {
    acc.clear()
    заполняем acc
    vector<T> tmp;
    tmp.reserve( acc.size() )
    bigCollection[key] =move( tmp )
}

По идее число аллокаций уменьшится...

Но в любом случае, я бы спрашивал не "как очистить вектор", а "как уменьшить capacity вектора", а то торудно понять про что спрашивают

Только на мой взгляд это мелкие мелочи же всё. Ну просто STL довольно долго был дебильной библиотекой, где вместо того, что бы вызвать какой-нибудь shrink_to_fit, надо страдать фигнёй. Если программист на С++ не понимает как работают такие контейнеры -- это странно. А если не знает всех этих stl-ных трюков, то это фигня на прочитать местный кодинг стайл или что-то вроде того...
Ну это если работадатель адекватный.
Обычно инженеры, особенно с 10+ лет опытом сложных проектов нужны не для того, что бы такого рода трюки лабать, а для чего-то другого...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Отредактировано 25.05.2019 0:40 Erop . Предыдущая версия .
Re[22]: Собеседования в Яндекс++
От: chaotic-kotik  
Дата: 24.05.19 21:20
Оценка: -1 :)
Здравствуйте, Denis Ivlev, Вы писали:

DI>Ну как-бы показывает, что С++ ты знаешь стандарта аж 2003 года (открой для себя С++11 и старше https://en.cppreference.com/w/cpp/container/vector/shrink_to_fit), что вполне себе стопер для многих интервьюеров. Кстати, а почему ты не интересуешься языком на котором пишешь?


Интересный заход, сразу с наездов
У нас в том числе солярис древний поддерживается на котором с++03, так что нужно знать и swap trick, так что мимо кассы.
Re[20]: в США делают код простым
От: PM  
Дата: 24.05.19 21:23
Оценка: 2 (1)
Здравствуйте, Denis Ivlev, Вы писали:

PM>>Интерфейс `std::unordered_map` зафиксирован так, что фактически возможна реализация chaining hash map.


DI>За счет чего интерфейс навязал реализацию? Что конкретно мешает использовать открытую адресацию? Очень любопытно, спасибо.


Если честно, то я не помню откуда это знание у меня. Быстрый поиск выдал такой ответ на SO: https://stackoverflow.com/a/31113618/1355844

Ну и в http://www.ilikebigbits.com/2016_08_28_hash_table.html есть упоминание:

Since C++11, STL ships with two hash tables: std::unordered_map and std::unordered_set. They where designed to have an interface very close to the old (ordered) std::map and std::set. The advantage of this is that it's easy to port old std::map/std::set code to the new unordered variants and get a nice speed boost. The disadvantage, however, is that STL:s hash tables are much slower than they have to be. The reason is that the standard mandate that any insertion or deletion of an element must not affect pointers to other elements. This means a rehash may not move elements in memory. The memory for an element must thus be allocated once, and never moved. This means that C++11's hash tables must have an array that points to its elements rather than contain them directly. This means that any lookup in the hash table incurs one extra pointer chasing, and thus a likely cache miss. As we shall see, this may make a hash table an order of magnitude slower than it has to be.


Что в общем-то похоже на правду. По-моему, `std::unordered_map` это разумный компромисс память/быстродействие/требовательность к качеству хэш-функции. И в 99% случаях стандартная реализация будет нормальным выбором, когда понадобится хэш-таблица.

Придумывание своих хэш-таблиц это давно известное программистское хобби. Как и переворачивание строки на собеседовании.

И возвращаясь к теме собеседований. Идея для Темчика ака % — в следующий раз на C++ собеседовании попроси кандидата написать на доске реализацию чего-нибудь из стандартной библиотеки. Гарантированно будет где завалить в технической части, если чем-то не понравился лично.

Если кандидат попался упорный (упоротый?) можно усложнять задачу по ходу. Например, реализовать на доске std::shared_ptr, сделать его счетчик потоко-безопасным, добавить weak_ptr, поразмышлять о предотвращении циклических ссылок.
Re[20]: Собеседования в Яндекс++
От: chaotic-kotik  
Дата: 24.05.19 21:34
Оценка:
Здравствуйте, a7d3, Вы писали:

A>Вот с этого и надо было начинать, что людей собеседовать идёт у вас как повинность с обременением. Сразу же становится ясно откуда такое отношение к процессу.


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

A>Небось ещё и список вопросов для интервью жёстко регламентирован — спущен сверху в приказном порядке или типа того.


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

A>Молодцы, всё замечательно, продолжайте в том же духе!


Ты всегда такой пассивно-агрессивный?
Re[22]: Собеседования в Яндекс++
От: chaotic-kotik  
Дата: 24.05.19 21:39
Оценка:
Здравствуйте, Erop, Вы писали:

E>Обычно инженеры, особенно с 10+ лет опытом сложных проектов нужны не для того, что бы такого рода трюки лабать, а для чего-то другого...


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

ты не можешь требовать какие-то узко-специальные знания, нужные внутри компании и задача должна решаться за 15 минут, слабо?
Re[20]: Собеседования в Яндекс++
От: chaotic-kotik  
Дата: 24.05.19 21:42
Оценка:
Здравствуйте, a7d3, Вы писали:

A>Тоже очень хороший индикатор — когда говорят об оценке и сравнении кандидатов.


как выбрать из двух кандидатов, не сравнивая их?
Re[20]: Собеседования в Яндекс++
От: chaotic-kotik  
Дата: 24.05.19 21:44
Оценка:
Здравствуйте, Denis Ivlev, Вы писали:

DI>Вообще-то это не легенда, если тебя не переманивают, значит ты просто середнячок, но добротный, ведь в перконе ты же что-то делаешь?


Re[21]: Собеседования в Яндекс++
От: Пирожочек  
Дата: 24.05.19 21:50
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>
CK>if (vec.capacity() / vec.size() > 2) {
CK>  vector<int> tmp;
CK>  tmp.reserve(vec.size());
CK>  copy(begin(vec), end(vec), back_inserter(tmp));
CK>  swap(tmp, vec);
CK>}

CK>bigAssCollection[key] = move(vec);
CK>


зачем такой кривой велосипед, если есть std::vector::shrink_to_fit ? В яндекс метишь?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.