ПМ>К чему я это всё? Да к тому, что сколько-нибудь вменяемая фильтрация по резюме едва ли возможна. Что бы вы ожидали от людей из ведущих вузов с учёными степенями? Ожидать от них, конечно, можно много чего, но вот незнание теории в данном случае немного неожиданно.
Перестаньте проводить собеседования, вы не понимаете для чего предназначено собеседование и кого, и главное почему нужно искать.
У меня вообще впечатление, что у топикстартера острое осознание собственной значимости. С моей точки зрения, программисты в основном делятся на две категории:
-те, которые создают проблемы
-те, которые проблемы решают.
Работать лучше со вторыми независимо от того, знают ли рокетсайнс первые. В целом, в прикладных областях особого знания рокетсайнс не требуется, но требуется умение ясно мыслить(с этим у народа да, большие проблемы бывают).
Далее, еще бывает такая категория, которая возводит в статус религии определенные технологии и подходы. Их тоже следует избегать.
Аналогично имеет смысл избегать людей, чрезмерно усложняющих задачи и мучительно ищущих самовыражение в коде.
З.Ы. По бинарному дереву поиск никогда не проводил(не доводилось сталкиваться на практике, но литературы по данному вопросу завались, как я понимаю).
З.Ы.Ы. Список обернуть на собеседовании скорее всего за 5 минут тоже не смогу.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>поиск у нас в бинарном дереве O(n)
В такой постановке — да, т.к. в "бинарность" дерева относится к допустимому количеству потомков узла.
ПМ>Монитор
Я думаю, тебе пора завязывать с википедией.
ПМ>посчитать int32 хешь-код от двух int32
Интересно, в какой формулировке ты вопросы задаешь. В такой формулировке опять нифига не понятно, что ты хочешь услышать, например.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Как он мог делать сложные вещи, если он понятия не имеет как оценивать время работы алгоритма?
Понятия не имеет или дурацкую букву О не знает? Можно вполне знать как утроено дерево и вектор, и в кто быстрее на каких операциях, но не помнить что там за О такое было. Т.к. зная как они работают, понять что выбрать — не проблема, а детально вычислять сложность от О (а не мерить реальное время выполнения) надо редко когда.
А в реальных сложных системах и алгоритмах часто все это набирается из разных доступных методов, кроме того зависит от того на чем это все работает — есть ли обращения к сети, есть ли блокировки межпоточные, есть ли обращения к бд. И реальную сложность там оценивают профилированием, так как банальное О вообще ни о чем не скажет. Человек может представлять что пузырьковая сортировка медленнее чем метод шелла, но ему ни разу никогда в пень не надо было вычислять для этого О. И есть еще огромная куча вещей, где надо думать о гораздо более глубоких проблемах, чем комбинаторика. Она просто проходит в фоновом режиме — "тут и так ясно что вот то-то сработает быстрее этого, тк сравнений и шагов там меньше". А вот О(cos ln sin x) эта сложность там, или еще какая муда — никому не сперлось.
В общем мне тяжело оценивать всяких там физиков и математиков, т.к. я вообще не знаю, чему их учат и как они докатываются до жизни такой (т.е. становятся программистами), но вот некоторые программисты-по-специальности меня удивляют. Имён и конкретные данные давать не буду просто парочка примеров.
МГТУ им. Баумана, информатика и системы управления, параллельные вычисления и прочий рокетсайнс, аспирант. Вскрытие показывает: алгоритмы и структуры данных — o(1) (вплоть до того, что поиск у нас в бинарном дереве O(n) или что-то в этом роде), многопоточность — более-менее знает примитивы ОС, но высокоуровневые паттерны не знает, что такое Монитор — тоже. Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду. Не, в целом всё не так плохо, я даже его рекомендовал, просто не понятно, чем они там в своём МГТУ им. Баумана занимаются на кафедре параллельных вычислений?
Ах да, сходил на их сайт, увидел страничку с крокозябрами (кодировка win-1251, но в документе об этом ни слова, мой европейский браузер по-умолчанию использует iso 8859-1). Видимо html-странички в этой колыбели высоких технологий тоже верстать не учат.
Второй вообще кандидат физ-мат наук, МГУ мех-мат. Писал какие-то алгоритмы для Интеля, позиционуется на должность ведущего разработчика/архитектора. Что такое вычислительная сложность — не знает. Интересно, как он их писал?..
К чему я это всё? Да к тому, что сколько-нибудь вменяемая фильтрация по резюме едва ли возможна. Что бы вы ожидали от людей из ведущих вузов с учёными степенями? Ожидать от них, конечно, можно много чего, но вот незнание теории в данном случае немного неожиданно.
Здравствуйте, Сонный Программист, Вы писали:
СП>Вот этот момент меня очень веселит. Неужели такие люди искренне полагают, что им всегда будет 23? СП>Пролетят эти 7 лет, как один день, а дальше роли поменяются. Что тогда?
Думаю, что через 7 лет я буду собеседоваться на должность технического директора, а не программиста на сишарпе.
ПМ>Интересно, а вы понимаете?
Я бы не хотел меряться никакими частями тела. Вот на что я бы обращал внимание.
Личные Качества:
1. Нужно понять насколько развиты у человека Communication Skills. Насколько человек бегло и свободно общается, может ли он поговорить просто и без застенчивости "за жизнь"
2. Способность и желание к самообучению. Я бы поинтересовался какие книги по профессии недавно читал человек. Если не книги то чем новым занимался в последнее время.
3. Амбициозен ли человек и какие это амбиции. Мне бы не хотелось что бы человек боялся сложных и объёмных задач.
Профессиональные качества:
1. Постарался бы узнать больше про опыт описанный в резюме. Желательно что бы описанное было бы правдой.
2. Пообщался бы на тему того, что соискатель считаем качественным кодом и почему именно, возможно спросил бы про Code Smells, попросил бы предложить рефакторинг для заранее подготовленного плохого примера кода
3. Узнал бы насколько серьёзно соискатель относится к деталям
4. Мелкие задачи на логику, 2-3 штуки, больше для того что бы посмотреть КАК человек решает задачу а не решит он её или нет.
5. Чем бы человеку хотелось заниматься в процессии и в какую именно сторону он хотело бы рости, могут быть разные варианты, человеку может быть более интересны GUI/Backend/SQL более узкие области итп...
.NET / SQL и иже с ним:
Тут всё зависит от человека и от того что он опиисал в резюме и на кого он претендует, если это Junior то не надо относиться к нему как к магистру Yoda. Обратил бы внимание на то какие книги читал человек, а в частности читал ли человек Рихтера.
Я набросал этот пост за 5 минут без каких либо претензий
Слушай, у тебя реально комплексы. И дело не в вопросах которые ты задаешь на собеседованиях, а в том, что единственная цель твоих постов, это показать что:
1) тебя наконец-то допустили до собеседования людей
2) как мало оказывается вокруг, таких д`Артаньян-ов как ты
Пора уже взрослеть(я не про возраст) и избавляться от комплексов. Посмотри, пишешь о собеседуемых только ты, но ниужели ты думаешь, что на кывте только ты собеседуешь.
Здравствуйте, Паблик Морозов, Вы писали: ПМ>Я деплоймент-иженер, я не пишу код.
Я бы не хотел показаться невежливым, но зачем ты задаешь вопросы по той области, с которой не имеешь дела и в которой, очевидно, не разбираешься?
PS: прочитал про "монитор", освежил свой понятийный аппарат — разумеется, любой, кто хоть сколько-то занимался многопоточкой, сталкивался с полностью synchronized объектами.
Зачем для этого выдумывать термин, который мало кто запоманит — мне непонятно.
Так что, считай, собеседование я не прошел.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, Сонный Программист, Вы писали:
СП>>Вот этот момент меня очень веселит. Неужели такие люди искренне полагают, что им всегда будет 23? СП>>Пролетят эти 7 лет, как один день, а дальше роли поменяются. Что тогда?
ПМ>Думаю, что через 7 лет я буду собеседоваться на должность технического директора, а не программиста на сишарпе.
Кто возьмет тех дира который не сможет написать быструю сортировку на C#
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Это к вопросу, почему на надо нанимать быдлокодеров, не знающих элементарных вещей, пусть у них хоть 10 лет опыта и 100 успешных проектов. Потому что они и у вас "решат задачу", а в итоге вместо кода будет кусок говна, в котором если что-то потрогать, то он весь рассыпется как карточный домик.
А при чем здесь алгоритмическая сложность, мониторы и все остальное то? Все это совершенно никак не связано с тем, будет или нет рассыпаться решение. Это разные классы навыков. Они, конечно, в какой-то мере коррелируют, но не слишком сильно. Для второго очень важен опыт. И это не опыт начальной разработки, а опыт сопровождения. Нужно видеть, как работают проектные решения в длительной перспективе. И здесь 10 лет опыта и 100 успешных проектов (из которых 80 сопровождались этим человеком хотя бы по полгода (пусть несколько сопровождались параллельно)) будут значить гораздо больше, чем умение разворачивать списки и считать алгоритмическую сложность.
Я не отрицаю, что и без опыта можно писать хороший код. Но это гораздо сложнее. Нужно "ощущать" код, большинство решений при дизайне (низкоуровневая структура кода) делается автоматически. И никакая куча теории этот автоматизм выработать не позволит. Слишком много теории может даже запутать (так появляются паттерны на ровном месте).
А алгоритмическая сложность... Если будут проблемы с производительностью, код будет профилирован. И затем будут правится узкие места. При необходимости будет привлечен математик-алгоритмист. А дальше уже по необходимости. Будет заменена структура и алгоритм обработки. Если код хороший, это может быть небольшим изменением. Может быть, чуть изменится обвязка (другие вызовы и работа со структурой). Нет, конечно, лучше правильно выбирать структуры данных для хранения. Но вот так получилось, что в "типичных" случаях вполне подойдут "структуры по умолчанию" — "динамический массив" и "хэшмап". Функция хэшкода будет сгенерирована. Так что почти всегда все будет работать "сразу".
Вы со своим подходом к собеседованию как раз и рискуете набрать быдлокодеров, знающих кучу алгоритмических трюков. У них большая часть кода будет завязана на копание во внутренностях структур данных и трюки. И вот как раз при сопровождении этого творения и будет масса проблем. Но только он будет не "рассыпаться", а будет "слишком сильно связным". Для того, чтобы поменять одну структуру данных придется перекопать половину всего приложения.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Не верьте всему, что пишут в резюме.
ПМ>В общем мне тяжело оценивать всяких там физиков и математиков, т.к. я вообще не знаю, чему их учат и как они докатываются до жизни такой (т.е. становятся программистами), но вот некоторые программисты-по-специальности меня удивляют. Имён и конкретные данные давать не буду просто парочка примеров.
Вы тоже много чего не знаете. И если у них в таких очевидных местах пробелы, это может означать как то что они никудышные кандидаты, так и то,
что зато в какой-то другой области у них знания очень глубоки. Вот серьезно, неужели вы думаете что вы знаете ответы на все возможные "простые" вопросы?
За все время что я учился и работал, процентов 70 того, что я когда-либо знал, читал или делал я конкретно вот сейчас навскидку рассказать может и не смогу.
Однако практика показывает, что тем не менее, задача решается быстро, т.к есть база, знаешь где искать и тд..
В общем на мой взгляд главное это усидчивость, рвение и умение учиться, быстро вникая в суть дела. Все остальное нарастает быстро, если правда
конечно у человека вообще есть какая-то база.
Я встречал соплежуев могущих часами рассуждать про "виртуальный деструктор", при этом на практике почему-то толк от них был не пропорционален
их теоретическим знаниям. Не говорю конечно что всегда так, но встречал.
Здравствуйте, Donz, Вы писали:
D>Человек должен видеть проблему. Вполне вероятно, сложность o(N^2) для него совершенно не проблема. А в реальной работе не будет человека, который намекнет, что o(n) лучше. И проще будет реализовать такую задачу самому, чем потом проводить код-ревью и объяснять, в чем тут дело.
O(N^2) действительно может быть совершенно не проблемой. Кроме того, в реальной работе оно может оказаться быстрее и O(N) и O(1).
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Не нашел тут ответа на вопрос "для предназначено собеседование и кого, и главное почему нужно искать".
Тебе четкий и ясный ответ дали несколько разных людей несколько раз за последние две недели.
Мне интересно, чего ты пытаешься добиться, пересоздавая одни и те же бестолковые ветки? Ты не хочешь вести диалог, не слушаешь, а просто смеешься надо всеми. Твой стиль называется rant, то есть, открытое выражение неудовольствия чем-либо и ожидание поддержки. Ты ее не получил за эти две недели, достаточно очевидно, что не получишь понимания и дальше. Репутацию ты так не заработаешь, скорее, ты уже набрал антикарму на этом форуме. Продолжать дальше смысла не имеет, с какой стороны не посмотри.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>МГТУ им. Баумана, информатика и системы управления, параллельные вычисления и прочий рокетсайнс, аспирант. Вскрытие показывает: алгоритмы и структуры данных — o(1) (вплоть до того, что поиск у нас в бинарном дереве O(n) или что-то в этом роде), многопоточность — более-менее знает примитивы ОС, но высокоуровневые паттерны не знает, что такое Монитор — тоже. Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду.
Всё это ищется в гугле за 5 минут.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, gangof4, Вы писали:
G>что зато в какой-то другой области у них знания очень глубоки.
Видимо эта область не имеет отношения к программированию, т.к. как можно писать программы не зная базовых вещей, вроде вычислительной сложности, мне не совсем понятно. Это безотносительно языка, виртуальные деструкторы нужны только в С++ (да, я не знаю, что это, буду писать на С++ — открою справку и прочитаю), но понимание вычислительной сложности — это понимание того, как именно работает то, что ты написал. Нет этого понимания — значит пишешь наугад. Это не фатально, у многих людей отменная интуиция, но это точно не уровень senior developer-а.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>На основе опыта только обезьянки действуют с квадратно-гнездовым смособом мышления, а умный прежде всего анализирует задачу. Поэтому нерелевантного опыта скорее надо ждать от опытного дурака — неверно распознает паттерн и применит шаблонное решение не подумав, а там раз, и нюанс какой-нибудь выплывет.
Не совсем так. Голое знание без умения решать проблемы гораздо хуже, чем незнание вообще, по той причине, что очень сильно повышает самооценку у знающего.
Говорят, что люди бывают умные и глупые, активные и пассивные, и наихудший вариант — это глупые и активные. Так вот применительно к программистам я бы умный/глупый заменил на две другие категории: умеющий/не умеющий решать проблемы и знающий/не знающий. В результате станет ясно, что самая плохая комбинация — это активный/знающий/не умеющий решать проблемы. Как правило у таких людей гипертрофированная самоуверенность в собственной экстрординарности, что в купе со знанием и активностью является исключительной разрушительной силой для любого проекта.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Не верьте всему, что пишут в резюме.
ПМ>но высокоуровневые паттерны не знает, что такое Монитор — тоже.
Я 5 лет пишу многопоточные приложения, знаю про мап-редьюс, продюсер-консьюмер, про тредпулы и прочий скам. Про монитор? Нет, не слышал
ПМ>Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду.
Сверхсрочно! Если придумаешь, как это сделать без коллизий, то сразу же защищай докторскую, ибо ты придумал, как ужать любые данные в 2 раза!
ПМ>Ах да, сходил на их сайт, увидел страничку с крокозябрами (кодировка win-1251, но в документе об этом ни слова, мой европейский браузер по-умолчанию использует iso 8859-1). Видимо html-странички в этой колыбели высоких технологий тоже верстать не учат.
Как говорил старина Бьярни, "я не веб-дизайнер, я конетент-провайдер"
Особенную пикантность ситуации придает то, что ищется быдлокодер педалить корпоративные системы за доширак, а вы его спрашиваете за вычислительную сложность и О-большое. "Сейчас к людЯм нужно помягше, а на вопросы смотреть ширше" (с) Федя
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, kaa.python, Вы писали:
ПМ>>> многопоточность — более-менее знает примитивы ОС
KP>>для 80% задачь это знание совершенно не вперлось.
ПМ>Ну кроме задач многопоточности
KP>>высокоуровневые паттерны, по моим наблюдениям, это один из способов особо извращенно анонировать на свою крутизну. Особенно хорошо это показывает твой пример с монитором (кстати, впервые слышу про него): всегда можно найти очередной паттерн, про который кто-то не слышал
ПМ>Если не пользовался монитором, и не знаешь про различные способы написания многопоточного кода — значит просто не очень много писал многопоточных приложений/не изучал данную область. Это примарно как вопрос про виртуальный деструктор — я не знаю, что такое виртуальный деструктор, но из этого следует только то, что я ни разу не интересовался ООП в С++.
KP>>Ты про реализацию CRC32, которая берется из какой-нить библиотечки, или надо что-то кривенькое свое придумать? Из твоего описания вообще не понятно.
ПМ>Я просто прошу написать код для решения такой задачи:
>>Примерно так: есть ссылочный объект (не struct) с двумя полями типа Int32. Мы хотим использовать этот объект в качестве ключа в хешь-таблице и хотим, чтобы оба поля в равной степени участвовали в формировании хешь-кода. Как бы вы реализовали getHashCode().
ПМ>Задача вполне реальная, встречается когда мы хотим реализовать кеширование по составному ключу (если кандидат не называет ответ с ходу, значит ему не доводилось реализовывать кеширование в приложении).
Не буду говорить за всех, отвечу только за себя.
"Работаю" фрилансером (С++ в основном). Приходилось решать в том числе и нетривиальные задачи.
Были и многопоточность, и кеширование (например, один из проектов — кроссплатформенный фильтр трафика).
Что такое "монитор" не слышал. Вернее может слышал когда-то на лекциях по ОС, но забыл
Вполне реальные задачи предпочитаю решать на месте, благо интернет есть. В голове держу мало. Часто смотрю на решения других.
В резюме написал достаточно много пунктов (так как и вправду с ними работал, причем основательно). Но вот мало что вспомню если сейчас спросит кто-нибудь, без подготовки, разве что то, над чем работаю последнее время. Что не мешает мне успешно и вовремя (и самостоятельно) заканчивать проекты. Тем не менее это не означает, что я "ни разу не интересовался" ни одной из перечисленных технологий. Или не работал с многопоточностью (хотя если в вакансии сказано что требуется знание каких то технологий, наверное бы повторил — ни разу на собеседования не ходил). Не нужно всех равнять на себя. Лучше поговорите на собеседовании о его прошлых проектах, о том, чем человек интересуется, о задачах, которые решает ваша команда. Неправильный ответ на ваш как вам кажется базовый вопрос не значит что человек задачи решать не умеет
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Второй вообще кандидат физ-мат наук, МГУ мех-мат. Писал какие-то алгоритмы для Интеля, позиционуется на должность ведущего разработчика/архитектора. Что такое вычислительная сложность — не знает. Интересно, как он их писал?..
А вот стоит у тебя задача реализовать аппроксимацию солида с помощью меша, или сделать extrusion параметрической поверхности в направлениях, заданных набором узлов. Не "быстро сделать", не "разными способами", а просто сделать чтобы оно без глюков работало. А есть еще масса алгоритмов, которые не найдешь ни в книжках, ни в статьях — их надо делают первый раз и не знают сработает ли вообще что-то или нет. Вот нафига тебе тут сложность? Я вот когда писал такие вещи, то слышал от сложности, имел какое-то очень базовое представление об О(1) или об О(n) тк просто прочитав можно примерно сказать что это может быть, но _никогда_ не использовал. И в дальнейшем я вообще сталкивался с этим в крайне специфических задачах ( ну не считая всякой фигни типа в конец вектора вставляется быстрее чем в середину ).
А еще чаще оптимизировать надо было не по О() а на уровне языка и самой структуры кода — когда при верном алгоритме хреновая реализация.
Так что если человек не твердо знает что такое О() это еще ни о чем не говорит, он вполне мог алгоритмы комп. зрения писать и О ему нафиг никогда не упало.
ПМ>В общем мне тяжело оценивать всяких там физиков и математиков, т.к. я вообще не знаю, чему их учат и как они докатываются до жизни такой (т.е. становятся программистами), но вот некоторые программисты-по-специальности меня удивляют. Имён и конкретные данные давать не буду просто парочка примеров.
я уж не знаю кто тебя допустил до собеседований, но этот человек явно желает зла компании где ты работаешь.
ПМ>МГТУ им. Баумана, информатика и системы управления, параллельные вычисления и прочий рокетсайнс, аспирант. Вскрытие показывает: алгоритмы и структуры данных — o(1) (вплоть до того, что поиск у нас в бинарном дереве O(n) или что-то в этом роде)
плохо
ПМ> многопоточность — более-менее знает примитивы ОС
для 80% задачь это знание совершенно не вперлось.
ПМ> но высокоуровневые паттерны не знает, что такое Монитор — тоже.
высокоуровневые паттерны, по моим наблюдениям, это один из способов особо извращенно анонировать на свою крутизну. Особенно хорошо это показывает твой пример с монитором (кстати, впервые слышу про него): всегда можно найти очередной паттерн, про который кто-то не слышал
ПМ> Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду.
Ты про реализацию CRC32, которая берется из какой-нить библиотечки, или надо что-то кривенькое свое придумать? Из твоего описания вообще не понятно.
ПМ>К чему я это всё?
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
ПМ>Я поэтому и не занимаюсь программированием, только собеседования с ними провожу. А должность у меня — деплоймент-инженер — это практически консультант.
И чем же ты занимаешься "практически консультант"? По твоим сообщениям видно что бы понятия не имеешь о business value. Может ты тщательно это скрываешь, но кроме как ботан-самодур никак себя на форуме не проявил. Таким людям категорически нельзя не то что в финансовый менеджмент, но и в техническое руководство.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Не верьте всему, что пишут в резюме...
Слушай, а что за контора у тебя?
Назови, что бы страна знала своих героев
Здравствуйте, Donz, Вы писали:
D>Отлично. Сотни копий сломано в борьбе кандидатов с работодателями, которые спрашивают основы алгоритмов и структур данных. Если это ищется в гугле за пять минут, что мешает погуглить перед очередным собеседованием? Назло работодателю не буду учить алгоритмы?
Что именно гуглить? Масштабы знаний в компьютерной индустрии бесконечны.
Гуглить и учить алгоритмы, чтобы снова забыть их к утру следующего дня? Зачем?
Я вот слышу мнения некоторых "работодателей" и думаю, что у вас будет всегда кризис на рынке труда. Вы все время будете мучаться искать нужных людей.
Люди, видимо, делятся на два типа: одни работают, другие профессионально готовятся к собеседованиям. Вы ищите профессиональных собеседников, но их не бывает в первой категории. Поэтому вам сидеть со студентами и щеголять друг перед другом "знаниями алгоритмов".
Здравствуйте, Паблик Морозов, Вы писали:
K>>И как же посчитать этот хэш-код?
ПМ>Самый простой вариант — xor.
И будет классно, когда окажется, что в практических данных 99% случаев в парах одинаковые числа. Пишите лучше сразу hash = 1, потом профайлер разберется, где сгодится, а где исправить.
Здравствуйте, IT, Вы писали:
ПМ>>МГТУ им. Баумана, информатика и системы управления, параллельные вычисления и прочий рокетсайнс, аспирант. Вскрытие показывает: алгоритмы и структуры данных — o(1) (вплоть до того, что поиск у нас в бинарном дереве O(n) или что-то в этом роде), многопоточность — более-менее знает примитивы ОС, но высокоуровневые паттерны не знает, что такое Монитор — тоже. Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду. IT>Всё это ищется в гугле за 5 минут.
Отлично. Сотни копий сломано в борьбе кандидатов с работодателями, которые спрашивают основы алгоритмов и структур данных. Если это ищется в гугле за пять минут, что мешает погуглить перед очередным собеседованием? Назло работодателю не буду учить алгоритмы?
И еще надо знать, что искать. Человек должен хотя бы быть в курсе о существовании этих понятий. Если он их никогда не использовал в реальной работе, то столкнувшись с задачей, где неплохо бы их применить, он решит ее в лоб без каких-либо мыслей, можно ли и нужно ли делать оптимально, и вообще правильное ли это решение.
Здравствуйте, SingleUseAccount, Вы писали:
IT>>Не знание и активность, а знание, активносить и неумение решать проблемы. Казалось бы, без последнего первые два понятия просто бесполезны, но на деле там получается из-за активности весьма сильный отрицательный эффект. SUA>А что есть "умение решать проблемы"? Это выражение уже не первый раз здесь мусолится. Можно конкретики?
Данный процесс состоит из следующих частей:
1. Обнаружение и локализация проблемы.
2. Анализ и понимание проблемы.
3. Поиск вариантов решения и устранение проблемы.
При этом на всех этапах мы сталкиваемся с мешающими нам различными затруднениями(*).
Интуитивное или осознанное следование этим шагам и умение преодолевать их и есть "умение решать проблемы".
Высший пилотаж — это умение заранее обнаруживать различные затруднения(*) и устранять их ещё до появления проблемы.
Умение создавать проблемы — это умение создавать различные затруднения(*) ещё до возникновения проблемы.
Как видно из этого объяснения здесь ни разу не использовано понятие "знание". Это не значит, что оно не имеет значение. Очень даже имеет. Знания позволяют проще преодолевать затруднения(*) и в большинстве случаев без них проблему решаить крайне затруднительно. Можно утверждать, что для решения проблемы знания необходимы, но недостаточны. Из чего следует что, если человек умеет решать проблемы, то он как минимум обладает необходимыми для этого знаниями или способен их обрести в приемлемые сроки.
ЗЫ. Кстати, знания имеют тенденцию выветриваться именно потому, что они не используются для повседневного решения текущих задач. Если я каждый день не пишу функцию нахождения хэша двух интов, то мне проще сходить в гугл и найти её там и после использования немедленно забыть.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, gandjustas, Вы писали:
G>Совершенно необязательно уметь готовить устрицы чтобы судить о их вкусе
Вот это то и умиляет — человек, который наверное ни одного программиста на работу не нанял начинает мне объяснять насколько я не прав, а потом еще что-то втирает про business value.
ПМ>А потом эти недоджуниоры уже в /job/ не могут написать алгоритм разворота списка без ошибок и щеголяют своим незнанием примитивов синхронизации. У меня альтернативное предположение — высокая зарплата (более 80 тысяч) привлекает слишком много 35-летних бездельников, которые просиживали штаны в своих конторах, а теперь вдруг увидели возможность получать больше денег и решили, а вдруг прокатит. Думаю, что назначать зарплату выше рыночной — серьёзная ошибка, мотивировать людей надо другими способами.
О, спасибо за подтверждение моих подозрений.
А вы пока продолжайте искать бриллианты в навозе. Вам обязательно встретится кандидат на 80 тыс. руб. в месяц, который всенепременно будет знать про "монитор", будет разворачивать списки и каждодневно освежать свои знания о nested data parallelism.
PS: вы так и не назвали ни одного проекта, над которыми вы работали. Интересно же посмотреть, где надо столько всего сурового знать _заранее_ — и без возможности подучиться на ходу, въезжая в проект.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, alzt, Вы писали:
A>>Большинство программистов отличат O(N) и O(1000N), хотя разница и невелика.
ПМ>Для того, чтобы отличить O(N) от O(1000N) надо
Здравствуйте, MozgC, Вы писали:
D>>Про быструю сортировку знать надо.
MC>Зачем? Кому надо? Не, я даже честно писал быструю сортировку, но один раз в жизни, и то, чисто для того, чтобы посравнивать скорость разных сортировок, чисто для общего развития. А на практике мне это знание за 7 лет работы ни разу не пригодилось.
Один раз в жизни писал свою супер-быструю сортировку. Изучил все возможные алгоритмы, но так и не смог даже близко приблизиться к показателям предыдущей версии программы, которую делали не мы. Потом сдался и пошёл изучать исходный код, оказалось, что парни использовали заранее подготовленный индекс (задача позволяла) и я всё это время боролся супероптимальными сортировками с одним, не самым оптимальным образом написанным, проходом по по массиву.
Если нам не помогут, то мы тоже никого не пощадим.
Переберешь всех кандидатов города, узнаешь что ты мегакрут но кто работать то будет? Думаешь диру конторы интересно будет услышать что ты мегакрутой перец и никто не достоин работать в такой мегакрутой конторе кроме тебя? Самое интересное что такого типа конторы всех адекватных соискателей отсеют, а потом набирают лишь бы кого нибудь которые вообще ничего не знают чтобы закрыть дыру.
Здравствуйте, Mr.Cat, Вы писали:
MC>Я бы не хотел показаться невежливым, но зачем ты задаешь вопросы по той области, с которой не имеешь дела и в которой, очевидно, не разбираешься?
Я бы не хотел показаться самонадеянным, но что заставляет тебя думать, что я не разбираюсь в данных вопросах? Ведь пока получается, что программисты, которые, казалось бы, должны разбираться в теме гораздо лучше деплоймент-инженеров, по факту обладают куда меньшими знаниями..
Здравствуйте, Паблик Морозов, Вы писали:
G>>что зато в какой-то другой области у них знания очень глубоки.
ПМ>Видимо эта область не имеет отношения к программированию, т.к. как можно писать программы не зная базовых вещей, вроде вычислительной сложности, мне не совсем понятно.
Элементарно. Никому нафиг не сдалась эта "вычислительная сложность". Практики успешно заменяют её пониманием как именно работает испольуемый алгоритм + профайлер по неоьходимости.
ПМ>но понимание вычислительной сложности — это понимание того, как именно работает то, что ты написал.
Человек может прекрасно понимать как именно оно работает но в О нотации никогда выражать не требовалось. Он и без нотаций представляет себе соотношение алгоритмов.
ПМ> Нет этого понимания — значит пишешь наугад.
Вот скажи, ты можешь оценить два алгоритма на предмет вычсложности вообще не вспоминая про О?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, SkyDance, Вы писали:
ПМ>Буду знать, исключил Бауманку из white-листов.
Не утруждайся. Благодаря твоим стараниям все адекватные люди уже вычеркнули Brightconsult из white-листов.
Я еще могу понять собеседования с HR перед собеседованием со специалистом, но чтобы почти эникейщики проводили техническое собеседование прогеров — это уже за гранью, ИМХО.
Здравствуйте, Паблик Морозов, Вы писали: BBI>>Полагаю что у 99% тут сидящих работа уже давно есть. ПМ>Может быть не очень хорошая, раз они сидят в job?
Каждый, кто покупал «Газету для дураков», говорил, что он покупает ее не потому, что считает себя дураком, а потому, что ему интересно узнать, о чем там для дураков пишут. Кстати сказать, газета эта велась очень разумно. Всё в ней даже для дураков было понятно. В результате «Газета для дураков» расходилась в больших количествах...
_AB>Что он при этом воспитывает и имеет ли смысл ради воспитания простого деплоймент-инженегра терять потенциальных девелоперов? Не проще выкинуть неадеквата из компании и фиг с ними, с отношениями? _AB>Скорее в компании просто такая система набора персонала неадекватная и это говорит вовсе не в пользу ума начальника.
Скорее всего, там другая ситуация — компания ищет программистов на смешную зарплату (ну, скажем, до 80к в Москве). И на собеседование действительно идут всякие недо-junior'ы.
С ними форумный сиделец 23-летний Паблик Морозов разделывается легко.
А приличные девелоперы при виде такой вилки зарплат даже и резюме-то подавать не будут.
Здравствуйте, Codechanger, Вы писали:
C>Паблик, если не секрет, каков ваш возраст? (можете, конечно, не отвечать, но это отразится более негативно).
По некоторым сведениям, ему 23. В соседней ветке он утверждал, что в программировании в 16-18 лет уже умеешь все, к 23 программист достигает потенциала, а с 25 лет начинается отупение мозга, в 30 лет люди еле отвечают на его умные вопросы вообще, а в 35 не отвечают совсем. Вы поосторожней с ним.
Здравствуйте, Sharowarsheg, Вы писали:
S>Зря ты, кстати. Практически иногда оказывается, что в O(k*n) слишком большое k. Представь себе, что у тебя что-то такое, что нужно неделю считать. Сразу начнешь различать O(n) и O(10*n).
Так он прав. O(k*n) где k — константа и O(n) — это одно и то же в силу определения O! O-нотация — это грубая оценка ассимптотики функции, возможность выбрать две (для О-большое) положительные константы, таких, что время выполнения T(n) находится в заданном диапазоне (c1*n <= T(n) <= c2*n). Вот и получается, что на практике оценки вроде O не нужны! Нужна другая оценка. Более точная. Учитывающая те самые константы. Назовем ее Estf(n), например. Тогда нас будет интересовать такое приближение, когда |(T(n) — Estf(n))/T(n)| (относительная погрешность) стремится к нулю. Тогда Est(n) и Est(10*n) будут отличаться.
Попытки внести в O не ассимптотику, а само измерение сложности — это и есть непонимание O-нотации. Да, на практике нужны более точные оценки. Ну так и нужно придумать для них другие обозначения, а не вводить всех в заблуждение. А ведь Паблик еще и других собеседует со своим неверным пониманием .
Здравствуйте, Tom, Вы писали:
ПМ>>людей из ведущих вузов с учёными степенями? [skiped] незнание теории в данном случае немного неожиданно.
Tom>и кого, и главное почему нужно искать.
1) И кого-же нужно искать?
2) Стоит ли брать на работу человека, учившегося в ведущем вузе, но не знающего элементарные вещи?
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, Donz, Вы писали:
IT>>Всё это ищется в гугле за 5 минут. D>Отлично. Сотни копий сломано в борьбе кандидатов с работодателями, которые спрашивают основы алгоритмов и структур данных. Если это ищется в гугле за пять минут, что мешает погуглить перед очередным собеседованием? Назло работодателю не буду учить алгоритмы?
Погуглить и запомнить? И сколько мне нужно нагуглить и запомнить перед интервью?
Впрос нужно ставить не так. Если задаёшь такие вопросы на интервью, то дай человеку возможность на том же интервью вопспользоваться гуглом для нахождения ответа. Например, тот же хэш из двух интов я делал в своей жизни несколько раз, но каждый раз иду и ищу алгоритм в гугле или подсматриваю у MS или JetBrains. На самом деле правильный подход здесь
Здравствуйте, Паблик Морозов, Вы писали:
_>>Так ты и не чмори человека, может он системы в десятки раз более сложные писал чем вы делаете, а это ему никогда и не надо было. Вот поразительно — уцепятся за какую-то фигню и потом плач ярославны на форуме "а вот они не знают базовых вещей". А ты хорошо в сплайнах разбираешься? А то для нас это незнание основ.
ПМ>Как он мог делать сложные вещи, если он понятия не имеет как оценивать время работы алгоритма?
Я умел оценивать время работы алгоритмов задолго до того как прочитал про О нотацию.
И чо?
Тебе надо выяснить понимает ли человек принципы, а не красиво говорит про "О балшое".
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, Сонный Программист, Вы писали:
СП>>Вот этот момент меня очень веселит. Неужели такие люди искренне полагают, что им всегда будет 23? СП>>Пролетят эти 7 лет, как один день, а дальше роли поменяются. Что тогда?
ПМ>Думаю, что через 7 лет я буду собеседоваться на должность технического директора, а не программиста на сишарпе.
Насмешил. Технического директора чего? Думаешь у тебя есть качества нужные тех директору? Думаешь они у тебя за 7 лет разовьются?
Ох сомневаюсь. Ты на форуме уже показал что тебе даже подбором персонала противопоказано заниматься, а уж про руководство не говорю.
ПМ>Не нашел тут ответа на вопрос "для предназначено собеседование и кого, и главное почему нужно искать". Тем более, из этого никак не следует, что я чего-то из этого не понимаю.
Вот по этому вам и не нужно заниматься собеседованиями.
Здравствуйте, gandjustas, Вы писали:
G>Универы как раз должны давать основы детально и обзор технологий — поверхностно.
А теперь внимательно читаем исходный пост и выясняем, что он как раз о том, что у людей из универов отсутсвует представление об основах.
G>А думаешь алгоритмическую сложность или разворот списка "для прикола" учить будут?
Вообще-то это стандартная программа обучения по it-специальностям.
G>Я вот как раз "для прикола" изучил SharePoint. Технологии вообще говоря монетизируются лучше чем развороты списков.
Дурак со знанием технологии больше вреда принесёт, чем пользы.
Здравствуйте, Mr.Cat, Вы писали:
MC>Потому что энциклопедические знания глупо проверять и стыдно афишировать. Может знаешь, есть милый анекдот про "напряжометр".
Мне пофиг на анекдоты, человек или знает, что такое монитор, или нет. А стыдятся и краснёют пусть гимназистки всякие.
Здравствуйте, Паблик Морозов, Вы писали: ПМ>Мне пофиг на анекдоты, человек или знает, что такое монитор, или нет. А стыдятся и краснёют пусть гимназистки всякие.
Ты сам давно последний раз монитор использовал?
Здравствуйте, Сонный Программист, Вы писали:
СП>Здравствуйте, Codechanger, Вы писали:
C>>Паблик, если не секрет, каков ваш возраст? (можете, конечно, не отвечать, но это отразится более негативно).
СП>По некоторым сведениям, ему 23. В соседней ветке он утверждал, что в программировании в 16-18 лет уже умеешь все, к 23 программист достигает потенциала, а с 25 лет начинается отупение мозга, в 30 лет люди еле отвечают на его умные вопросы вообще, а в 35 не отвечают совсем. Вы поосторожней с ним.
Спасибо за информацию про возраст. Некоторые особенности поведения(особенно резкое обострения чувства собственной значимости) становятся понятными. Кстати, лет в 30 он попадет на собеседование к такому же Паблику, только из молодых. Интересно, развернет ли он тут полемику по поводу тупых вопросов?
Здравствуйте, m e, Вы писали:
ME>думаешь так просто найти человека с академическим бэкграундом и знаниями в области cs? если бы он еще и адекватный был... а собеседования -- это такая вещь, на которую не хотят тратить время квалифицированных кадров, и вдобавок скучно
Вообще говоря, первое требование адекватность, второе — знания в области cs. Академический бэкграунд в списке обязательных для проведения успешного собеседования не требуется.
Скучно собеседовать — набери грамотных и адекватных специалистов один раз и отбери одного или двух, кому это интересно. Если отправлять на техническое собеседование неадекватных и неквалифицированных, то отгадай кого они наберут?
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
ПМ>Я поэтому и не занимаюсь программированием, только собеседования с ними провожу.
Мда... вот вся страна у нас такая, люди ответственны за работу, о которой не имеет ни малейшего понятия.
ПМ>А должность у меня — деплоймент-инженер — это практически консультант.
Это очень смешная должность. По Задорнову — "Кое-какер".
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Совершенно необязательно уметь готовить устрицы чтобы судить о их вкусе
ПМ>Вот это то и умиляет — человек, который наверное ни одного программиста на работу не нанял начинает мне объяснять насколько я не прав, а потом еще что-то втирает про business value.
Мальчик, ты не по адресу. Я много программистов собеседовал и команды разработчиков собирал, причем не только как сотрудник фирмы, но и как прямой работодатель, который деньги платит.
Господа, судя по количеству тем, которые наплодил топик стартер, предлагаю скинуться ему на психолога. Хорошего знаю, реально помогает, стоит за сеанс вменяемо. В принципе, если психолог откажется с ним работать, можно скинуться на психиатра, тоже мона найти нормального. Если психиатр не поможет, у меня есть один знакомый, который работает психиатром в правильной больнице. Я считаю, там вычислительная сложность будет востребована.
З.Ы. Я настолько уже обленился, что код часто оптимизирую по результатам исключительно лишь профилирования(это к вопросу о вычислительной сложности). Открытия делаются поразительные .
Здравствуйте, SkyDance, Вы писали:
SD>>>PS: но я вот сейчас вспоминаю, что большинство тех, кто шел в аспирантуру были в основном бездельниками и лопухами. Москвичками. Кому аспирантура была нужна для откоса от армии. P>>
SD>Сложности с пониманием? Или с русским языком? Какие есть варианты интерпретации выделенного?
В русском языке, написанные тобой три предложения интерпретируются однозначно: в аспирантуру шли в основном бездельники-москвички, которым аспирантура была нужна для откоса от армии.
Так что учись писать по-русски, это не сложно.
ПМ>Мне пофиг на анекдоты, человек или знает, что такое монитор, или нет. А стыдятся и краснёют пусть гимназистки всякие.
Логично. Но не факт, что знание этого термина как-то коррелирует с навыками разработки многопоточных систем. Я вот уже больше десяти лет такие системы разрабатываю, и в принципе неплохо разбираюсь в многопоточности. Указанную статью в википедии вижу первый раз в жизни, описание этого крайне мутное и непонятное. Обычный класс, методы которого защищены мьютексами? Это "thread safe class", или, по-русски, потокобезопасный класс. Зачем лишнее название городить? При чем здесь "монитор" — он что, мониторит что-то? Какие-то чудовищные огороды с нотификациями и ожиданиями — это все отдельные мелкие концепции, зачем весь этот винегред в одном месте?
Да, я делал такие штуки в коде, и не раз. Но придумывать для них отдельное название а потом спрашивать его на собеседовании... O_O.
Здравствуйте, Sharowarsheg, Вы писали:
ПМ>>>Для того, чтобы отличить O(N) от O(1000N) надо
L>>
S>Зря ты, кстати. Практически иногда оказывается, что в O(k*n) слишком большое k. Представь себе, что у тебя что-то такое, что нужно неделю считать. Сразу начнешь различать O(n) и O(10*n).
Давайте только отделять зерна от плевел. В рамках оценки временнОй сложности алгоритма с помощью O-нотации O(n) = O(k*n) по определению.
Другое дело, когда нужно оценивать абсолютную сложность конкретной реализации. Тут и алгоритм с O(n^2) может оказаться быстрее O(1) за счет накладных расходов. Но O-нотацию для таких оценок применять уже не стоит.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>И никаких IO Completion Port там нет, неблокирующий ввод/вывод там делается по-другому.
Я думаю вы ошибаетесь.
Весь асинхронный I/O в .NET реализован поверх IO Completion Port, которым владеет CLR thread pool.
Да, .NET программисты редко с этим сталкиваются.
Но для общего развития всё же полезно знать, что находится на уровнях абстрацкии ниже чем .NET framework.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Если знают, то какая разница чем они там в универе занимаются (обычно ничем хорошим в универах не занимаются).
ПМ>Зачем тогда вообще универы нужны по-твоему?
1. Способ временного трудоустройства государством огромной массы молодежи
2. Простейший способ недопустить большинство до рынка труда и до равных условий конкуренции, а вместо этого разделить население на руководящее меньшинство и большинство испольнительной рабочей массы.
B>Сидит программист глубоко в отладке. Третий день сидит. Ни.. чего не получается. Подходит к нему сынишка, и говорит:
B>- Папа, а почему солнце встает на востоке?
B>- Ты это проверял?
B>- Да.
B>- Работает?
B>- Да.
B>- Каждый день работает?
B>- Да.
B>- Тогда сынок, ради бога, ничего не трогай, ничего не меняй!
B>
B>Это к вопросу как активновть может навредить проекту, а уж если в дополнение к активности есть нечто зазубренное в универе, но на практике особо не примененное, то вообще.
Это к вопросу, почему на надо нанимать быдлокодеров, не знающих элементарных вещей, пусть у них хоть 10 лет опыта и 100 успешных проектов. Потому что они и у вас "решат задачу", а в итоге вместо кода будет кусок говна, в котором если что-то потрогать, то он весь рассыпется как карточный домик. В итоге-то трогать всё равно придётся — т.к. будут возникать новые требования, но авторы этого говна уйдут в другую компанию, попутно сетуя какой Паблик Морозов плохой, заставляет списки на собеседованиях оборачивать, а компании придётся уже нанимать других специалистов, способных в этом говне разобраться и вкладывать другие деньги, чтобы говно исправить, при том, что бюджет проекта к этому времени обычно уже выплачен в виде зарплат его гениальным авторам, считающим, что умение весело жать кнопки заменяет им знания основ.
Здравствуйте, IT, Вы писали: IT>Не знание и активность, а знание, активносить и неумение решать проблемы. Казалось бы, без последнего первые два понятия просто бесполезны, но на деле там получается из-за активности весьма сильный отрицательный эффект.
А что есть "умение решать проблемы"? Это выражение уже не первый раз здесь мусолится. Можно конкретики?
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Не сходится же. Если мне такое кандидат физико-математических наук напишет, я его на пересдачу матанализа направлю, и буду прав.
да да, там еще скобочек нет, не кошерно. ясно дело отсеивать таких надо, а то вдруг думающих людей возьмете и тебя на их фоне уволят
Здравствуйте, Codechanger, Вы писали:
C>З.Ы.Ы. Список обернуть на собеседовании скорее всего за 5 минут тоже не смогу.
А ты пробовал ? Здесь ничего кроме ясности мышления не нужно.
1. Нарисовать вход-выход
2. Разобраться как делается преобразование
3. Решить задачу для общего случая
4. записать решение в коде
5. Проверить решение
И это ни разу не рокетсаенс. Еще к этом нужно добавить метод проб и ошибок, умение искать и проверять варианты, малую толику тяги к самообразованию, то получается человек, который умеет решать проблемы.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, Sharowarsheg, Вы писали:
S>>И будет классно, когда окажется, что в практических данных 99% случаев в парах одинаковые числа. Пишите лучше сразу hash = 1, потом профайлер разберется, где сгодится, а где исправить.
ПМ>Ну это вообще цикр.
Ничего, со временем приходит понимание разнообразности данных. Если есть выбор, писать hash = md5(...) или hash = 1, второй вариант лучше. В условии "надо сделать хеш из двух uint32" выбирать промежуточный вариант оснований нет.
Здравствуйте, Tom, Вы писали:
ПМ>>К чему я это всё? Да к тому, что сколько-нибудь вменяемая фильтрация по резюме едва ли возможна. Что бы вы ожидали от людей из ведущих вузов с учёными степенями? Ожидать от них, конечно, можно много чего, но вот незнание теории в данном случае немного неожиданно.
Tom>Перестаньте проводить собеседования, вы не понимаете для чего предназначено собеседование и кого, и главное почему нужно искать.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Если знают, то какая разница чем они там в универе занимаются (обычно ничем хорошим в универах не занимаются). ПМ>Зачем тогда вообще универы нужны по-твоему?
Универы как раз должны давать основы детально и обзор технологий — поверхностно.
G>>Если не знают, то какой смысл оплачивать обучение программиста?
ПМ>По-твоему, программист дома CRM выучит, так, для прикола? (в универах программистов, понятное дело CRM не учат)
А думаешь алгоритмическую сложность или разворот списка "для прикола" учить будут?
Я вот как раз "для прикола" изучил SharePoint. Технологии вообще говоря монетизируются лучше чем развороты списков.
Здравствуйте, dilmah, Вы писали:
D>если единственное требование "оба поля в равной степени участвовали в формировании", то очевидно любая симметрическая функция
Ну да, пятёрка по математике, двойка по common sense. Впрочем, как я уже говорил, я прошу писать код для решения этой и других задач. Когда есть код вопросов или не остаётся, или они все по теме.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Видимо эта область не имеет отношения к программированию, т.к. как можно писать программы не зная базовых вещей, вроде вычислительной сложности, мне не совсем понятно.
Так это потому, что ты ничего, кроме как писать программки уровня лаб и контрольных, не умеешь
И поэтому не программист, а какой-то там с горы.
Программисты решают задачи и вполне успешно. Без копания в кишках дотнета, где какому-то умнику когда-то захотелось завести класс монитор, прямо как в умных книжках.
Потом, слава богу, додумались заменить на lock.
Точно так же, как дальнобойщики водят фуры — без знания цикла Карно.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Не верьте всему, что пишут в резюме.
где-то месяц тому назад разговаривал с одним видавшим виды руководителем. так вот он сказал, что огромное кол-во людей не только нагло врут, но даже объявляют себя докторами наук и... их берут. джентльмены верят друг другу на слово. наличие степени проверяют только в исключительных случаях, а тестовые задания дают только студентам, а если вам под сорок, то интервью обычно начинается и заканчивается рукопожатием.
тут один парень из группы разработчиков компиляторов уже писал как одного деятеля завалил указателем на массив (или указателем на указатель на массив -- я уже и не помню). кандидат сначала ступил (что простительно), но проявил себя явным неадекватом и едва пол офиса не разнес.
и я уже молчу о том, что 90% кандидатов, пишущих си и плюсы через дробь, знают только плюсы и не в состоянии откомпилировать (!!!) готовую программу на си (а все потому что студия по умолчанию создает приплюснутый проект, куда копипастят сишный код, который, ес-но, никуя не компилируется).
ПМ> многопоточность — более-менее знает примитивы ОС, но высокоуровневые паттерны не знает,
гм, ну вот я тоже когда-то читал о примитивах оси, но писать многопоточный код с разделяемыми данными мне как-то не доводилось и единственной программой в которой использовалась многопоточность был телепортер сайтов, написанный на питоне и телепортирующий их сразу в несколько потоков. это такой страшный и смертельный грех писать многопоточные программы без разделяемых данных?!
> не понятно, чем они там в своём МГТУ им. Баумана занимаются на кафедре параллельных вычислений?
так это его нужно спрашивать чем он там занимался...
ПМ>Второй вообще кандидат физ-мат наук, МГУ мех-мат. Писал какие-то алгоритмы для Интеля, позиционуется на должность ведущего разработчика/архитектора. Что такое вычислительная сложность — не знает. Интересно, как он их писал?..
что такое "писал алгоритмы"?
ПМ>К чему я это всё? Да к тому, что сколько-нибудь вменяемая фильтрация по резюме едва ли возможна.
потому в приличных домах на резюме смотрят только после трудоустройства, а основной вес имеют референсы.
> Что бы вы ожидали от людей из ведущих вузов с учёными степенями?
что из них программист как с меня балерина. кстати, я тоже программированию учился в процессе работы, т.е. уже после трудоустройства. с учетом моей визы я вполне схожу за ученого. да и по факту в основном исследовательской деятельностью занимаюсь, а в мой код вам лучше не смотреть, т.к. вас удар хватит, но это никого не парит, т.к. от балерины не ждут, что она будет готовить вкусный ужин.
> Ожидать от них, конечно, можно много чего, но вот незнание теории в данном случае немного неожиданно.
по мере углубления в свою предметную область даже базовые понятия быстро выветриваются из головы. так что нужно смотреть кто и чем конкретно занимался. мне известны случаи когда людей брали за счет их ораторских способностей и они приносили большую пользу как докладчики. а что нужно докладчику? иметь хорошо поставленный голос и умение работать с аудиторией. знание матчасти приветствуется, но как бы необязательно.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Паблик Морозов, Вы писали:
J>>Причесать и отрефакторить алгоритм, убрав излишнюю сложность, если это возможно, я и сам могу. А вот построить и решить сложную мат модель — не могу. На кой хрен забивать гвозди микроскопом и сажать мехматянина не на РнД, а на кодинг? ПМ>Назвался груздем — полезай в кузов. Не я ему кодить предлагал, он сам написал, что мол сеньёр-архитект.
Дык архитект то он как раз не по части кодинга, он по части "придуминга".
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Donz, Вы писали:
D>Никто не просит доскональное знание всех томов Кнута. Про бинарный поиск и быструю сортировку знать надо. Если не знаете, вот это и гуглите.
Достаточно знать что они существуют и в общих чертах понимать их суть.
Всё равно в реальном мире по памяти алгоритмы никто не будет писать. Ну разве что если помнишь очень хорошо (т.е. совсем недавно уже приходилось писать) или же связь с внешним миром (или книжной полкой) отсутствует.
D>А вот программеров в этом форуме, которые рассказывают про "вот и будете сидеть со студентами, а не профессионалами", встречаю каждый заход в раздел "Работа"
Полагаю что у 99% тут сидящих работа уже давно есть.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
KP>я уж не знаю кто тебя допустил до собеседований, но этот человек явно желает зла компании где ты работаешь.
вовсе не обязательно все так плохо
вполне возможно, имеется умный начальник, который видит явную неадекватность паблика, и в воспитательных целях и одновременно чтобы не портить личные отношения с ним поставил его на собеседования
вполне возможно он даже и подталкивает его к обсуждению на рсдн -- не самому же вправлять мозги юноше, в самом деле?
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Если не пользовался монитором, и не знаешь про различные способы написания многопоточного кода — значит просто не очень много писал многопоточных приложений/не изучал данную область.
Изучал данную область, писал и отлаживал просто дохрена многопоточных приложений и даже много раз видел эту хрень реализованную различными способами на различных языках. А вот что это умным словом "монитор" называется — узнал только из твоего поста. Что никогда не мешало мне доводить до рабочего состояния переданные мне проекты, которые висли и падали через два действия.
Я поэтому и не занимаюсь программированием, только собеседования с ними провожу. А должность у меня — деплоймент-инженер — это практически консультант.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Я поэтому и не занимаюсь программированием, только собеседования с ними провожу.
Т.е. ты вообще занимаешься не своим делом.
По хорошему собеседовать кандидата следует тому, к кому в подчинение он может пойти.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Если не пользовался монитором ... — значит просто не очень много писал многопоточных приложений/не изучал данную область.
Монитор — это звучит гордо, да!
А если по сути этого паттерна то он банален до жути. Его много кто реализовывал, даже и не думая что у него есть какое то отдельное название.
А ты тут носишься с ним как с веником.
Тебе много раз уже тут говорили: проверять надо не знание красивых слов а понимание принципов работы.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, Паблик Морозов, Вы писали:
ПМ>>>Это к вопросу, почему на надо нанимать быдлокодеров, не знающих элементарных вещей, пусть у них хоть 10 лет опыта и 100 успешных проектов. Потому что они и у вас "решат задачу", а в итоге вместо кода будет кусок говна, в котором если что-то потрогать, то он весь рассыпется как карточный домик. G>>И он будет приносить денег. Столько что тебе и не снилось даже в самых смелых снах. Ибо говнокод, не приносящий денег, выбрасывается очень быстро. ПМ>Хочешь сказать, что качественный код, решающий ту же задачу приносит меньше денег? Если нет, то не понятно, к чему это балабольство.
"Качественный код" стоит больше, а денег приносит дай бог столько же. А если еще и людей отбирать по твоей методике, то time-to-market выйдет за рамки дозволенного.
А профит какой? Я же говорю — ты не понимаешь business-value, потому никогда финансами управлять не будешь.
ПМ>>>В итоге-то трогать всё равно придётся — т.к. будут возникать новые требования, но авторы этого говна уйдут в другую компанию G>>Придут другие авторы и разберутся в коде, допишут\перепишут что надо. Выкинут что не надо. И снова это будет говнокодом, и снова он будет приносить бабло. ПМ>Хочешь сказать, что дописывание качественного кода будет стоить дороже? Если нет, то не понятно, к чему это балабольство.
Да, качественный код, который делает ту же работу что и некачественный стоит дороже, а продается также.
Вообще "качество кода", которое так любят ботаны, крайне плохо в деньги конвертируется в бабло. А качество ПО с качеством кода коррелирует слабо.
ПМ>>>попутно сетуя какой Паблик Морозов плохой, заставляет списки на собеседованиях оборачивать, а компании придётся уже нанимать других специалистов, способных в этом говне разобраться и вкладывать другие деньги, чтобы говно исправить, при том, что бюджет проекта к этому времени обычно уже выплачен в виде зарплат его гениальным авторам, считающим, что умение весело жать кнопки заменяет им знания основ. G>>И ведь они правы, а ты — нет. ПМ>Обоснуй.
Здравствуйте, Banned by IT, Вы писали:
BBI>Монитор — это звучит гордо, да! BBI>А если по сути этого паттерна то он банален до жути. Его много кто реализовывал, даже и не думая что у него есть какое то отдельное название. BBI>А ты тут носишься с ним как с веником.
Нда? Сколько времени у тебе займёт реализация монитора? (я еще не прошу реализовать, у тебя есть возможность осознать свою ошибку и написать что-то вроде: "ну да, писанины там много, если делать хорошо, то дня три-четыре, но ничего сложного нет" чтобы отъехать).
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Нда? Сколько времени у тебе займёт реализация монитора? (я еще не прошу реализовать, у тебя есть возможность осознать свою ошибку и написать что-то вроде: "ну да, писанины там много, если делать хорошо, то дня три-четыре, но ничего сложного нет" чтобы отъехать).
Открываем вики и читаем:
In concurrent programming, a monitor is an object or module intended to be used safely by more than one thread. The defining characteristic of a monitor is that its methods are executed with mutual exclusion. That is, at each point in time, at most one thread may be executing any of its methods.
Заводим в объекте критическую секцию и входим в неё в каждом методе.
Для conditional vars есть готовые системные примитивы.
Лепим их где надо.
"Boil, and Reduce Heat, and Stimmer" (C)
Всё.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Не верьте всему, что пишут в резюме.
ПМ>В общем мне тяжело оценивать всяких там физиков и математиков, т.к. я вообще не знаю, чему их учат и как они докатываются до жизни такой (т.е. становятся программистами), но вот некоторые программисты-по-специальности меня удивляют. Имён и конкретные данные давать не буду просто парочка примеров.
ПМ>МГТУ им. Баумана, информатика и системы управления, параллельные вычисления и прочий рокетсайнс, аспирант. Вскрытие показывает: алгоритмы и структуры данных — o(1) (вплоть до того, что поиск у нас в бинарном дереве O(n) или что-то в этом роде), многопоточность — более-менее знает примитивы ОС, но высокоуровневые...
Кстати открою вам тайну: поиск в бинарном дереве МОЖЕТ занимать O(n).
Я когда про монитор прочитал тоже не понял чего он с ним носится, ну спрашивал про сто нибудь более менее серьёзное, про IO Completion Port, ввод вывод асинхронный или нюансы там какие, а то на ровном месте придумал проблему.
Здравствуйте, gandjustas, Вы писали:
ПМ>>Это к вопросу, почему на надо нанимать быдлокодеров, не знающих элементарных вещей, пусть у них хоть 10 лет опыта и 100 успешных проектов. Потому что они и у вас "решат задачу", а в итоге вместо кода будет кусок говна, в котором если что-то потрогать, то он весь рассыпется как карточный домик. G>И он будет приносить денег. Столько что тебе и не снилось даже в самых смелых снах. Ибо говнокод, не приносящий денег, выбрасывается очень быстро.
С точки зрения девелопера это так. А вот с точки зрения бизнеса говнокод это почти всегда убыток.
ПМ>>В итоге-то трогать всё равно придётся — т.к. будут возникать новые требования, но авторы этого говна уйдут в другую компанию G>Придут другие авторы и разберутся в коде, допишут\перепишут что надо. Выкинут что не надо. И снова это будет говнокодом, и снова он будет приносить бабло.
у тебя какие то джыдаи, которым плевать на качество кода. Обычно стоимость и качество доработки готового кода слишком сильно коррелирует с качеством этого кода.
ПМ>>попутно сетуя какой Паблик Морозов плохой, заставляет списки на собеседованиях оборачивать, а компании придётся уже нанимать других специалистов, способных в этом говне разобраться и вкладывать другие деньги, чтобы говно исправить, при том, что бюджет проекта к этому времени обычно уже выплачен в виде зарплат его гениальным авторам, считающим, что умение весело жать кнопки заменяет им знания основ. G>И ведь они правы, а ты — нет.
Ага, доить заказчика все умеют. Странно, но не все этим занимаются.
Здравствуйте, Tom, Вы писали:
Tom>Личные Качества: Tom>1. Нужно понять насколько развиты у человека Communication Skills. Насколько человек бегло и свободно общается, может ли он поговорить просто и без застенчивости "за жизнь"
Это нужно в зависимости от позиции. Часто девелоперы которые ни бэ ни мэ демонстрируют чудеса программирования
Tom>2. Пообщался бы на тему того, что соискатель считаем качественным кодом и почему именно, возможно спросил бы про Code Smells, попросил бы предложить рефакторинг для заранее подготовленного плохого примера кода
На собеседовании это очень сложно, т.к. время ограничено.
Здравствуйте, Banned by IT, Вы писали:
BBI>Открываем вики и читаем:
BBI>
BBI>In concurrent programming, a monitor is an object or module intended to be used safely by more than one thread. The defining characteristic of a monitor is that its methods are executed with mutual exclusion. That is, at each point in time, at most one thread may be executing any of its methods.
BBI>Заводим в объекте критическую секцию и входим в неё в каждом методе. BBI>Для conditional vars есть готовые системные примитивы. BBI>Лепим их где надо. BBI>"Boil, and Reduce Heat, and Stimmer" (C) BBI>Всё.
Я, конечно, понимаю, что ты не читатель, а писатель, но попробуй прочитать хотя бы 2 абзаца из википедии.
Собственно какие можно сделать выводы из твоего сообщения:
1. ты не знаешь, что такое монитор, т.е. не знаешь ничего про многопоточность в .net-е
2. не можешь прочитать более одного абзаца текста, чтобы разобраться в вопросе
3. но при этом имеешь делаешь заявления, причем безапелляционно и уверенно
И в качестве бонуса — аналоги кондваров в .net — это всяческие наследники WaitHandle-а (объекты OC), и лепить их где надо и не надо надо с большой осторожностью.
Выводы о том, что произойдёт, если взять тебя в проект, подразумевающий написание многопоточного кода на .net-е предлагаю сделать самостоятельно.
Здравствуйте, Паблик Морозов, Вы писали:
KP>>для 80% задачь это знание совершенно не вперлось.
ПМ>Ну кроме задач многопоточности
Да не, я всю дорогу пишу многопоточность, и слова монитор не слышал никогда. Наверняка опять какой-нибудь прикол из терминологии, который никому не нужен, примерно так же, как fork/join схема.
Здравствуйте, Sharowarsheg, Вы писали:
S>Здравствуйте, Паблик Морозов, Вы писали:
KP>>>для 80% задачь это знание совершенно не вперлось.
ПМ>>Ну кроме задач многопоточности
S>Да не, я всю дорогу пишу многопоточность, и слова монитор не слышал никогда. Наверняка опять какой-нибудь прикол из терминологии, который никому не нужен, примерно так же, как fork/join схема.
И про STM ты наверное тоже ничего не слышал, и про asyn workflows, и про join-calculus и про nested data parallelism и про многое другое. Но если утверждаешь, что имел дело с многопоточностью в .net, то что такое монитор, ты просто не можешь не знать. Почему — написано здесь
Здравствуйте, landerhigh, Вы писали:
A>>>Большинство программистов отличат O(N) и O(1000N), хотя разница и невелика.
ПМ>>Для того, чтобы отличить O(N) от O(1000N) надо
L>
Зря ты, кстати. Практически иногда оказывается, что в O(k*n) слишком большое k. Представь себе, что у тебя что-то такое, что нужно неделю считать. Сразу начнешь различать O(n) и O(10*n).
подойдёт? Если нет, то чем плохо, какой вариант предлагается и чем он лучше в данной формулировке (без описания типичных значений этих int32)/
SD>Если распределение исходных данных неизвестно, пойдет что угодно. Хоть a*b, или, для лучшего перемешивания, a & 0xFFFF * b >> 16 + a >> 16 * b & 0xFFFF
Кстати, да. Может оказаться, что b как-то зависит от a, и в итоге получим аналог hashCode() {return 7;}.
ПМ>Одно из требований к программисту — работа с многопоточностью в .net. Монитор — основной примитив в .net, под него даже специальная конструкция языка предусмотрена. Если человек не знает, что это такое, значит он вообще ничего не знает про многопоточность в .net. И никаких IO Completion Port там нет, неблокирующий ввод/вывод там делается по-другому.
Какие мониторы в .NET? Есть критические секции, и классы хелперы позволяющие с ними работать. Забудь ты про этот монитор.
К>Весь асинхронный I/O в .NET реализован поверх IO Completion Port, которым владеет CLR thread pool.
К сожалению это не так. Например, если сокет открыт в overlapped режиме то асинхронный ввод конечно же работает через порт ввода вывода а если нет — то асинхронность эмулируется тем что реально send делается в отдельном потоке, но это простой синхронный send. Но в целом конечно надо понимать что такое порт ввода вывода, тем более что это самый сложный в Windows примитив синхронизации но и самый функциональный
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gangof4, Вы писали:
G>>Кстати открою вам тайну: поиск в бинарном дереве МОЖЕТ занимать O(n).
ПМ>Спасибо, я в курсе.
Ага псе прочтения википедии все в курсе.
Цитирую — "вплоть до того, что поиск у нас в бинарном дереве O(n) или что-то в этом роде",
не ваши слова?
Короче не лейте в уши..
Здравствуйте, koandrew, Вы писали:
L>>На публично доступные поля не рекомендуется lock-аться.
K>Верно, но не рекомендуется локаться не потому, что кто-то (MS?) так сказал, а потому, что внешний неподконтрольный разработчику код может быть не в курсе данной детали имплементации, и тоже на нём залокаться.
Это к чему было написано-то? Да, именно по этой причине MS не рекомендует так делать.
Здравствуйте, vpchelko, Вы писали:
V>Да просто такой интервьюер бы меня сразу завалил, хотя у меня опыт работы С++ на больших проектах 6 лет.
Любой нормальный,в моем понимании, C++ разработчик ответит на такие вопросы не задумываясь. Ты вообще что эти 6 лет писал?
V>С такими запросами им нужен свежий студент, который вызубрил какую-то методичку по С++.
V>>Да просто такой интервьюер бы меня сразу завалил, хотя у меня опыт работы С++ на больших проектах 6 лет.
KP>Любой нормальный,в моем понимании, C++ разработчик ответит на такие вопросы не задумываясь. Ты вообще что эти 6 лет писал?
/me достал ручку и блокнот и приготовился записывать
А не соблаговолит ли уважаемый дон, не задумываясь, просветить неуча о способах вычисления int32 хеша от двух int32? А то у неуча на каждое значение хеша все где-то 2^32 коллизий получается, и на хрена такой красивый хеш может понадобиться, он не понимает, и оттого прям не знает ап какую стену убиццо от горя.
V>>С такими запросами им нужен свежий студент, который вызубрил какую-то методичку по С++.
KP>глупости. См. ответ выше.
Здравствуйте, SkyDance, Вы писали:
L>>Очень даже может поставить, если вредному интервьюверу позволят вредничать слишком долго, чтобы накопить критическую массу специалистов по обращению списков.
SD>Я так понимаю, вредный интервьюер работает только как отрицательный фильтр (т.е. он не принимает решение "берем", но может принять решение "не берем"). Соответственно, если "обращателей списков" вполне себе найдутся и хорошие программисты. Я, к примеру, список без проблем обращу. Хотя вот на вопросе про "монитор" срезался бы точно SD>Монитор — это то, куда я сейчас смотрю
Среди обращателей списков или знатоков значения слова "монитор" (кстати, монитор — это семейство ящериц) с бОльшей вероятностью найдутся специалисты по значению слова "монитор" или опытные обращатели списков или просто профессиональные ходоки по собеседованиям, нежели хорошие программисты.
Здравствуйте, landerhigh, Вы писали:
SD>>Я вступлюсь за контору — к счастью, наличие одного вредного интервьювера не всегда ставит крест на всей конторе.
L>Очень даже может поставить, если вредному интервьюверу позволят вредничать слишком долго, чтобы накопить критическую массу специалистов по обращению списков.
Или постить тупак на профильных форумах, засветив при этом название конторы.
Здравствуйте, Tom, Вы писали:
Tom>Перестаньте проводить собеседования, вы не понимаете для чего предназначено собеседование и кого, и главное почему нужно искать.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>К чему я это всё? Да к тому, что сколько-нибудь вменяемая фильтрация по резюме едва ли возможна. Что бы вы ожидали от людей из ведущих вузов с учёными степенями? Ожидать от них, конечно, можно много чего, но вот незнание теории в данном случае немного неожиданно.
Напомни, это все еще CRM или как? Если CRM, то они CRM знают или нет? Если знают, то какая разница чем они там в универе занимаются (обычно ничем хорошим в универах не занимаются). Если не знают, то какой смысл оплачивать обучение программиста?
Не нашел тут ответа на вопрос "для предназначено собеседование и кого, и главное почему нужно искать". Тем более, из этого никак не следует, что я чего-то из этого не понимаю.
З.Ы.: про Рихтера сильно, почти как про библию в средние века.
Здравствуйте, Mr.Cat, Вы писали:
MC>В такой постановке — да, т.к. в "бинарность" дерева относится к допустимому количеству потомков узла.
Там было в другой постановке.
MC>Я думаю, тебе пора завязывать с википедией.
Почему это интересно?
MC>Интересно, в какой формулировке ты вопросы задаешь. В такой формулировке опять нифига не понятно, что ты хочешь услышать, например.
Интересно, а если на рельном проекте программисту будет что-то непонятно, он зависнет?
Здравствуйте, Tom, Вы писали:
Tom>Я набросал этот пост за 5 минут без каких либо претензий
ИМХО нужно чтобы человек мог решать задачи, которые перед ним ставятся.
1) Нужно ориентироваться в тех технологиях, которые применяются. Например для CRM: сам CRM, web (html\css\js), rest- и ws-* webservices, sql server, .NET
2) Если проект командный, то нужно communication skills и системы командной разработки.
3) Умение таки решать задачи. Дать совершенно типовую задачу (или несколько) в той области где придется работать, пусть опишет пути решения.
Если только 1) — то junior, если 1) и 2) — то mid, если все 3 то senior.
Дальше уже можно заковыристые вопросы по технологиям давать и развороты списка спрашивать чтобы понять глубину знаний кандидата.
Здравствуйте, UA, Вы писали:
UA>Здравствуйте, Паблик Морозов, Вы писали:
UA>Переберешь всех кандидатов города, узнаешь что ты мегакрут но кто работать то будет? Думаешь диру конторы интересно будет услышать что ты мегакрутой перец и никто не достоин работать в такой мегакрутой конторе кроме тебя? Самое интересное что такого типа конторы всех адекватных соискателей отсеют, а потом набирают лишь бы кого нибудь которые вообще ничего не знают чтобы закрыть дыру.
Интересно, где я что-то писал про отсеивание? Тем более про отсеивание адекватных соискателей?
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду.
Я вот и не понял о чем ты. Какой еще код от двух интов? Зачем он нужен? Какие к нему требования? Ты вопрос как задаешь?
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Паблик Морозов, Вы писали:
ПМ>>Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду. G>Я вот и не понял о чем ты. Какой еще код от двух интов? Зачем он нужен? Какие к нему требования? Ты вопрос как задаешь?
Примерно так: есть ссылочный объект (не struct) с двумя полями типа Int32. Мы хотим использовать этот объект в качестве ключа в хешь-таблице и хотим, чтобы оба поля в равной степени участвовали в формировании хешь-кода. Как бы вы реализовали getHashCode().
З.Ы.: Разумеется вопрос формулируется не совсем так, т.к. является логичным продолжением обсуждения способов использования хешь-таблиц в дудке.
З.З.Ы.: А окуда такая заинтересованность? Неповезло оказаться среди отфутболенных мной кандидатов?
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, Паблик Морозов, Вы писали:
ПМ>>>Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду. G>>Я вот и не понял о чем ты. Какой еще код от двух интов? Зачем он нужен? Какие к нему требования? Ты вопрос как задаешь?
ПМ>Примерно так: есть ссылочный объект (не struct) с двумя полями типа Int32. Мы хотим использовать этот объект в качестве ключа в хешь-таблице и хотим, чтобы оба поля в равной степени участвовали в формировании хешь-кода. Как бы вы реализовали getHashCode().
И что отвечали? Может лучше сразу спросить читал ли рихтера?
ПМ>З.З.Ы.: А окуда такая заинтересованность? Неповезло оказаться среди отфутболенных мной кандидатов?
Просто написал глупость, вот я и решил узнать что именно ты пытаешься сказать. А когда я был на собеседовании в brightconsult мне технических вопросов не задавали вообще.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Универы как раз должны давать основы детально и обзор технологий — поверхностно. ПМ>А теперь внимательно читаем исходный пост и выясняем, что он как раз о том, что у людей из универов отсутсвует представление об основах.
Искренне верю, и че? Они ведь не "основами" программы пишут.
G>>А думаешь алгоритмическую сложность или разворот списка "для прикола" учить будут? ПМ>Вообще-то это стандартная программа обучения по it-специальностям.
В каком месте? Я учился по такой специальности, про вычислительную сложность только вскользь упоминали.
G>>Я вот как раз "для прикола" изучил SharePoint. Технологии вообще говоря монетизируются лучше чем развороты списков. ПМ>Дурак со знанием технологии больше вреда принесёт, чем пользы.
Умный без знания технологий принесет вреда еще больше, так как будет везде нерелевантный опыт пихать.
Поэтому для начала надо бы удостовериться что человек в курсе того с чем работать надо и умеет задачи решать, а потом же выяснять его способности к разворачиванию списков.
Здравствуйте, gandjustas, Вы писали:
G>И что отвечали?
Как обычно, с ходу отвечает один из 10 (правда потом сразу следует вопрос "а почему именно так и чем хуже вариант Б"). Правда среди сфейлевших были и очень интересные предложения, настолько интересные, что я даже рекомендовал человека (правда дальше его зарубили).
G>Может лучше сразу спросить читал ли рихтера?
Не лучше. Мне не важно, читал ли человек Рихтера, мне надо, чтобы он умел пользоваться хешь-таблицей. Может быть он Advanced Data Structures читал, зачем ему ваш Рихтер?
G>Просто написал глупость
Где именно?
G>А когда я был на собеседовании в brightconsult мне технических вопросов не задавали вообще.
Здравствуйте, gandjustas, Вы писали:
G>В каком месте? Я учился по такой специальности, про вычислительную сложность только вскользь упоминали.
Ну значит так учился, или в таком месте нехорошем. А то, что и сейчас не знаешь, характерезует тебя как неполноценного специалиста.
G>Умный без знания технологий принесет вреда еще больше, так как будет везде нерелевантный опыт пихать.
На основе опыта только обезьянки действуют с квадратно-гнездовым смособом мышления, а умный прежде всего анализирует задачу. Поэтому нерелевантного опыта скорее надо ждать от опытного дурака — неверно распознает паттерн и применит шаблонное решение не подумав, а там раз, и нюанс какой-нибудь выплывет.
Здравствуйте, IT, Вы писали:
IT>Погуглить и запомнить? И сколько мне нужно нагуглить и запомнить перед интервью?
Вычисление хеша от двух интов вполне можно сообразить на месте. Навряд ли кто будет требовать идеальную функцию, но какое-то решение предложить можно.
Сложность поиска в неотсортированном списке тоже запоминать не нужно. И в сортированном не нужно.
На самом деле даже незнание устройства HashMap — это не конец интервью. Один разработчик с наводящего вопроса, как бы сделать o(1), прямо на собеседовании рассказал собственную реализацию этой структуры.
IT>Интервью прежде всего должно выявлять людей умеющих решать проблемы. А это не всегда коррелирует с набором заученных знаний у претендента.
Человек должен видеть проблему. Вполне вероятно, сложность o(N^2) для него совершенно не проблема. А в реальной работе не будет человека, который намекнет, что o(n) лучше. И проще будет реализовать такую задачу самому, чем потом проводить код-ревью и объяснять, в чем тут дело.
Здравствуйте, Donz, Вы писали:
D>Вычисление хеша от двух интов вполне можно сообразить на месте. Навряд ли кто будет требовать идеальную функцию, но какое-то решение предложить можно.
Это смотря как на это посмотреть. Можно сообразить и изобрести трехколёсный велосипед, а можно в гугле найти идеальную функцию. Какой разработчик тебе больше понравится?
D>Человек должен видеть проблему. Вполне вероятно, сложность o(N^2) для него совершенно не проблема. А в реальной работе не будет человека, который намекнет, что o(n) лучше. И проще будет реализовать такую задачу самому, чем потом проводить код-ревью и объяснять, в чем тут дело.
Так о том и речь. Нужны не столько знания, сколько умение не только видеть, но и решать проблемы.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Это смотря как на это посмотреть. Можно сообразить и изобрести трехколёсный велосипед, а можно в гугле найти идеальную функцию. Какой разработчик тебе больше понравится?
Тот, который предложит свое решение и скажет, что задача, скорее всего, типовая и надо посмотреть, как она уже решена в готовых библиотеках.
D>>Человек должен видеть проблему. Вполне вероятно, сложность o(N^2) для него совершенно не проблема. А в реальной работе не будет человека, который намекнет, что o(n) лучше. И проще будет реализовать такую задачу самому, чем потом проводить код-ревью и объяснять, в чем тут дело. IT>Так о том и речь. Нужны не столько знания, сколько умение не только видеть, но и решать проблемы.
Понимание, что здесь есть проблема, требует определенных знаний. В общем, нужен не только потенциал и соображалка разработчика, но и уже готовые знания и опыт. Без знаний набирают обычно студентов, в этом случае как раз надо в первую очередь мышление проверять.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Не верьте всему, что пишут в резюме.
ПМ>В общем мне тяжело оценивать всяких там физиков и математиков, т.к. я вообще не знаю, чему их учат и как они докатываются до жизни такой (т.е. становятся программистами), но вот некоторые программисты-по-специальности меня удивляют. Имён и конкретные данные давать не буду просто парочка примеров.
ПМ>МГТУ им. Баумана, информатика и системы управления, параллельные вычисления и прочий рокетсайнс, аспирант. Вскрытие показывает: алгоритмы и структуры данных — o(1) (вплоть до того, что поиск у нас в бинарном дереве O(n) или что-то в этом роде), многопоточность — более-менее знает примитивы ОС, но высокоуровневые паттерны не знает, что такое Монитор — тоже. Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду. Не, в целом всё не так плохо, я даже его рекомендовал, просто не понятно, чем они там в своём МГТУ им. Баумана занимаются на кафедре параллельных вычислений?
В чем смысл вопросов а-ля "Monitor" ? Люди тыщу лет работают с локами и критсекциями, но их "legacy" названия могут и не знать. Я бы не стал спрашивать именно про паттерны, а поинтересовался деталями,вроде
мультипоточных синглтонов. Для понимания ширины кругозора опять-таки не стал бы спрашивать определения книжных терминов, а спросил бы про lock-free алгоритмы
Задачка "посчитать хэшкод от 2х int32" меня вполне могла бы испугать, на собеседовании-то — тут уже не с кондачка ксорить или складывать, а математически доказывать, что хэшкод получится оптимальным как по быстродействию, так и по коллизиям.
Здравствуйте, aleks_mur, Вы писали:
_>Так что если человек не твердо знает что такое О() это еще ни о чем не говорит, он вполне мог алгоритмы комп. зрения писать и О ему нафиг никогда не упало.
Ну не повезло ему значит, для нас незнание О() — это незнание основ, и повод заканчивать разговор. Ибо данных много, обрабатываться они должны за конечное время и зависимость времени обработки от количества данных надо хотя бы приблизительно уметь оценивать.
Здравствуйте, Codechanger, Вы писали:
C>погугли Ad hominem и сделай выводы.
G>Я учился по такой специальности, про вычислительную сложность только вскользь упоминали.
G>Я
Здравствуйте, IT, Вы писали:
IT>Говорят, что люди бывают умные и глупые, активные и пассивные, и наихудший вариант — это глупые и активные. Так вот применительно к программистам я бы умный/глупый заменил на две другие категории: умеющий/не умеющий решать проблемы и знающий/не знающий.
А я вот не понимаю, что такого особенного в программистах, что именно для них надо вносить правки в эту, позиционируемую как универсальную, мудрость.
IT>В результате станет ясно, что самая плохая комбинация — это активный/знающий/не умеющий решать проблемы. Как правило у таких людей гипертрофированная самоуверенность в собственной экстрординарности, что в купе со знанием и активностью является исключительной разрушительной силой для любого проекта.
Опять же не ясно. Как знание и активность могут навредить проекту? (если человек не вредит сознательно)
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Ну не повезло ему значит, для нас незнание О() — это незнание основ, и повод заканчивать разговор. Ибо данных много, обрабатываться они должны за конечное время и
зависимость времени обработки от количества данных надо хотя бы приблизительно уметь оценивать.
Так ты и не чмори человека, может он системы в десятки раз более сложные писал чем вы делаете, а это ему никогда и не надо было. Вот поразительно — уцепятся за какую-то фигню и потом плач ярославны на форуме "а вот они не знают базовых вещей". А ты хорошо в сплайнах разбираешься? А то для нас это незнание основ.
Спросил бы как бы он стал оценивать относительную скорость работы каких-то конкретных вещей, вероятно он бы это все на собеседовании из головы родил. Кароче, еще одна бестолковая тема
Здравствуйте, Donz, Вы писали:
D>Один разработчик с наводящего вопроса, как бы сделать o(1), прямо на собеседовании рассказал собственную реализацию этой структуры.
Вот это было очень круто. Такого человека надо ставить алгоритмистом или что-нибудь в этом роде. Он может быть адским быдлокодером (обычно алгоритмисты — адские быдлокодеры), но придумать на собеседовании реализацию структуры с random access по ключу за O(1) — это очень круто.
Здравствуйте, Философ, Вы писали:
Ф>2) Стоит ли брать на работу человека, учившегося в ведущем вузе, но не знающего элементарные вещи?
какие, в баню, элементарные вещи — ну не учат на мехмате элементарным программистским вещам. Зачем вам нужен знаток элементарных вещей, вы на работе в ЧГК играете? Или вы работу делаете?
Причесать и отрефакторить алгоритм, убрав излишнюю сложность, если это возможно, я и сам могу. А вот построить и решить сложную мат модель — не могу. На кой хрен забивать гвозди микроскопом и сажать мехматянина не на РнД, а на кодинг?
Здравствуйте, Паблик Морозов, Вы писали:
IT>>Говорят, что люди бывают умные и глупые, активные и пассивные, и наихудший вариант — это глупые и активные. Так вот применительно к программистам я бы умный/глупый заменил на две другие категории: умеющий/не умеющий решать проблемы и знающий/не знающий.
ПМ>А я вот не понимаю, что такого особенного в программистах, что именно для них надо вносить правки в эту, позиционируемую как универсальную, мудрость.
Это не для программистов и не только в эту мудрость. А людьми, пытающимися докопаться до сути, в любую мудрость.
IT>>В результате станет ясно, что самая плохая комбинация — это активный/знающий/не умеющий решать проблемы. Как правило у таких людей гипертрофированная самоуверенность в собственной экстрординарности, что в купе со знанием и активностью является исключительной разрушительной силой для любого проекта.
ПМ>Опять же не ясно. Как знание и активность могут навредить проекту? (если человек не вредит сознательно)
Не знание и активность, а знание, активносить и неумение решать проблемы. Казалось бы, без последнего первые два понятия просто бесполезны, но на деле там получается из-за активности весьма сильный отрицательный эффект.
Если нам не помогут, то мы тоже никого не пощадим.
ПМ>Примерно так: есть ссылочный объект (не struct) с двумя полями типа Int32. Мы хотим использовать этот объект в качестве ключа в хешь-таблице и хотим, чтобы оба поля в равной степени участвовали в формировании хешь-кода. Как бы вы реализовали getHashCode().
кешью-орехи знаю, хешь-таблиц не знаю
если единственное требование "оба поля в равной степени участвовали в формировании", то очевидно любая симметрическая функция
Здравствуйте, Паблик Морозов, Вы писали: MC>>Я думаю, тебе пора завязывать с википедией. ПМ>Почему это интересно?
Потому что энциклопедические знания глупо проверять и стыдно афишировать. Может знаешь, есть милый анекдот про "напряжометр".
MC>>Интересно, в какой формулировке ты вопросы задаешь. В такой формулировке опять нифига не понятно, что ты хочешь услышать, например. ПМ>Интересно, а если на рельном проекте программисту будет что-то непонятно, он зависнет?
Включит мозг и спокойно подумает за чашкой чая или дома. Вообще, это по-моему клевый вопрос для собеседования, но он на подумать и пообсуждать, а не на ответить и поскакать дальше.
Здравствуйте, jhfrek, Вы писали:
J>Причесать и отрефакторить алгоритм, убрав излишнюю сложность, если это возможно, я и сам могу. А вот построить и решить сложную мат модель — не могу. На кой хрен забивать гвозди микроскопом и сажать мехматянина не на РнД, а на кодинг?
Назвался груздем — полезай в кузов. Не я ему кодить предлагал, он сам написал, что мол сеньёр-архитект.
Здравствуйте, Donz, Вы писали:
D>Вычисление хеша от двух интов вполне можно сообразить на месте. Навряд ли кто будет требовать идеальную функцию, но какое-то решение предложить можно.
С хорошим распределением?
Ну-ка, давайте, сообразите нам на месте без гугла..
Лично у меня математический бэкграунд неплохой, до сих пор не все забыто и БПФ ступора не вызывает. Но пытаться нашлепать функцию с хорошим распределением я бы даже не стал. Возвел бы одно число в степень другого и привел к uint, а дальше пусть собеседователь дрочит, как он хочет.
D>Сложность поиска в неотсортированном списке тоже запоминать не нужно. И в сортированном не нужно. D>На самом деле даже незнание устройства HashMap — это не конец интервью. Один разработчик с наводящего вопроса, как бы сделать o(1), прямо на собеседовании рассказал собственную реализацию этой структуры.
Не соглашусь. Сложность поиска для случаев chaining vs. rehashing отличается впечатляюще сильно.
IT>>Интервью прежде всего должно выявлять людей умеющих решать проблемы. А это не всегда коррелирует с набором заученных знаний у претендента.
D>Человек должен видеть проблему. Вполне вероятно, сложность o(N^2) для него совершенно не проблема. А в реальной работе не будет человека, который намекнет, что o(n) лучше. И проще будет реализовать такую задачу самому, чем потом проводить код-ревью и объяснять, в чем тут дело.
Вы не поверите... но когда, например, получение данных упирается в Remoting, оптимизации на уровне о(n)| o(1) для сотни ссылок на строки таблицы бесполезны, потому что выигрыш микроскопичен и незаметен, а вот логика усложняется на порядок.
Здравствуйте, aleks_mur, Вы писали:
_>Так ты и не чмори человека, может он системы в десятки раз более сложные писал чем вы делаете, а это ему никогда и не надо было. Вот поразительно — уцепятся за какую-то фигню и потом плач ярославны на форуме "а вот они не знают базовых вещей". А ты хорошо в сплайнах разбираешься? А то для нас это незнание основ.
Как он мог делать сложные вещи, если он понятия не имеет как оценивать время работы алгоритма?
Здравствуйте, jhfrek, Вы писали:
J>а это зачем кому-то нужно ? Вот хэш-код для сложной структуры, например графа, это нужная задача, а инты хэшировать...
Вот использовать граф в качестве ключа в хешь-таблице еще не доводилось
Кроме того, боюсь, что если я буду задавать этот вопрос, то я вообще никого не найду. Потому что для 99% былдокодеров, отчаянно возмущающихся в моих темах это mission imposible хотя бы потому, что надо как-то вменяемо обрабатывать изоморфизм графов.
Здравствуйте, Сонный Программист, Вы писали:
СП>1. Способ временного трудоустройства государством огромной массы молодежи СП>2. Простейший способ недопустить большинство до рынка труда и до равных условий конкуренции, а вместо этого разделить население на руководящее меньшинство и большинство испольнительной рабочей массы.
СП>Ты не знал???
Нет. Вообще очень смелые утверждения, прямо какой-то теорией заговора повеяло.
Здравствуйте, StandAlone, Вы писали:
SA>С хорошим распределением? SA>Ну-ка, давайте, сообразите нам на месте без гугла.. SA>Лично у меня математический бэкграунд неплохой, до сих пор не все забыто и БПФ ступора не вызывает. Но пытаться нашлепать функцию с хорошим распределением я бы даже не стал. Возвел бы одно число в степень другого и привел к uint, а дальше пусть собеседователь дрочит, как он хочет.
Нормальный ответ для собеседования.
SA>Вы не поверите... но когда, например, получение данных упирается в Remoting, оптимизации на уровне о(n)| o(1) для сотни ссылок на строки таблицы бесполезны, потому что выигрыш микроскопичен и незаметен, а вот логика усложняется на порядок.
Вы не поверите, но я не утверждаю, надо оптимизировать все абсолютно везде.
Здравствуйте, Паблик Морозов, Вы писали:
MC>>Я бы не хотел показаться невежливым, но зачем ты задаешь вопросы по той области, с которой не имеешь дела и в которой, очевидно, не разбираешься?
ПМ>Я бы не хотел показаться самонадеянным, но что заставляет тебя думать, что я не разбираюсь в данных вопросах?
А в чем ты там разбираешься, если даже не в курсе, что lock — straightforward имплементация примитива синхронизации критическая секция, в отличие от первоначально убогой и наивной через Monitor.Enter\Exit?
Кстати, раз уж ты так хорошо разбираешься, скажи-ка, можно ли делать
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Второй вообще кандидат физ-мат наук, МГУ мех-мат. Писал какие-то алгоритмы для Интеля, позиционуется на должность ведущего разработчика/архитектора. Что такое вычислительная сложность — не знает. Интересно, как он их писал?..
Ну так ему, наверное, давали готовый алкогоритм, а он его кодировал так, чтобы на интеловском камне побыстрее работало. Для этого не надо знать, что такое вычислительная сложность
ПМ>К чему я это всё? Да к тому, что сколько-нибудь вменяемая фильтрация по резюме едва ли возможна. Что бы вы ожидали от людей из ведущих вузов с учёными степенями? Ожидать от них, конечно, можно много чего, но вот незнание теории в данном случае немного неожиданно.
Резюме отфильтровывает лишь тех, кому стоит позвонить от тех, кому и звонить не стоит. Да и то, весьма условно...
Здравствуйте, Сонный Программист, Вы писали:
СП>Что именно гуглить? Масштабы знаний в компьютерной индустрии бесконечны. СП>Гуглить и учить алгоритмы, чтобы снова забыть их к утру следующего дня? Зачем?
Никто не просит доскональное знание всех томов Кнута. Про бинарный поиск и быструю сортировку знать надо. Если не знаете, вот это и гуглите.
СП>Люди, видимо, делятся на два типа: одни работают, другие профессионально готовятся к собеседованиям. Вы ищите профессиональных собеседников, но их не бывает в первой категории. Поэтому вам сидеть со студентами и щеголять друг перед другом "знаниями алгоритмов".
Еще один оценщик эффективности найма людей...
Я за двенадцать лет не видел ни одной компании, где люди бы щеголяли алгоритмами. Хотя их спрашивали на каждом собеседовании. А вот программеров в этом форуме, которые рассказывают про "вот и будете сидеть со студентами, а не профессионалами", встречаю каждый заход в раздел "Работа"
Здравствуйте, Donz, Вы писали:
D>Нормальный ответ для собеседования.
Совсем ненормальный, туча значащих бит будет потеряна. Но думать, как бы их заюзать максимально все — мне тупо в ломы.
Эта задача абсолютно точно была решена, и будет бесконечно более эффективно найти ее готовое, доказано эффективное решение.
D>Вы не поверите, но я не утверждаю, надо оптимизировать все абсолютно везде.
Как показывает практика, алгоритмическая сложность далеко не самая крупная песчинка в презервативе при зачатии нового продукта
При грамотном separation of concerns о ней вообще можно годами не вспоминать.
Здравствуйте, StandAlone, Вы писали:
SA>А в чем ты там разбираешься, если даже не в курсе, что lock — straightforward имплементация примитива синхронизации критическая секция, в отличие от первоначально убогой и наивной через Monitor.Enter\Exit?
Дружыщще, откуда вообще у тебя это? На, почитай http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf пунт 15.12 The lock statement. lock — это синтаксический сахар для вызова Monitor.Enter() и Monitor.Exit(). А Monitor — это именно Monitor. Без Monitor-а ты бы адово запарился реализовывать некоторые схемы синхронизации, впрочем, я уже давал ссылку на википедию, и внимательные мальчики наверняка сами смогут разобраться, зачем нужен именно монитор, а не критическая секция.
SA>Кстати, раз уж ты так хорошо разбираешься, скажи-ка, можно ли делать SA>
Здравствуйте, Сонный Программист, Вы писали:
СП>Я вот слышу мнения некоторых "работодателей" и думаю, что у вас будет всегда кризис на рынке труда. Вы все время будете мучаться искать нужных людей. СП>Люди, видимо, делятся на два типа: одни работают, другие профессионально готовятся к собеседованиям. Вы ищите профессиональных собеседников, но их не бывает в первой категории. Поэтому вам сидеть со студентами и щеголять друг перед другом "знаниями алгоритмов".
Вообще ни разу не готовился к собеседованиям, но откуда-то все вещи, про которые спрашиваю, знаю. Более того, их знали все хорошие программисты, с которыми я просто обсуждал эти вопросы за кружечкой пива. Другое дело, что хороших программистом действительно 1 на 10, указывающих в резюме слова C# или Java. И ни о каких алгоритмах речи, разумеется, не идёт, я не прошу на собеседовании Finger tree реализовывать, а всего лишь простейшие задачки вроде односвязного списка, которые пишутся на уровне common sense, если человек в состоянии удержать в голове 3 переменные.
Здравствуйте, Сонный Программист, Вы писали:
Tom>>в частности читал ли человек Рихтера. СП>Я читал много чего, но об этом человеке не слышал. Так что...
Просыпайся, сонный программист
Рихтер для .NET программиста библия. Да и для Win32 программиста тоже. Хвастаться знанием чего-либо, я понимаю... А вот хвастаться тем, что не читал одну из самых лучших книг, одного из самых лучших авторов...
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Здравствуйте, Tom, Вы писали:
ПМ>>Не нашел тут ответа на вопрос "для предназначено собеседование и кого, и главное почему нужно искать". Тем более, из этого никак не следует, что я чего-то из этого не понимаю. Tom>Вот по этому вам и не нужно заниматься собеседованиями.
По той же логике, вам тоже не нужно заниматься собеседованиями, т.к. вы точно так же не ответили на данный вопрос.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
.
СП>Репутацию ты так не заработаешь, скорее, ты уже набрал антикарму на этом форуме. Продолжать дальше смысла не имеет, с какой стороны не посмотри.
Нужна ли ему эта репутация? Я думаю, ему по барабану. Ему скорее нужен ответ, у него внутренний когнитивный диссонанс. Это нормально. Он ищет ответ. Видимо внутренне у него сомнения в том, что, раз 95% соискателей не могут решить задачу, значит или что-то не так с его подходом или с теми 95% соискателей. Пришел на РСДН за помощью, чтобы, либо опровергнуть свои сомнения или подтвердить. Это нормально, он получил много информации для размышлений, обработав, он найдет ответ. До следующего другого когнитивного диссонанса...
А зарабатывать репутацию, писать тут ради баллов и кармы, это уж точно бред. Боясь выглядеть дураком, можно остаться дураком на всю жизнь.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Здравствуйте, Donz, Вы писали:
D>Про быструю сортировку знать надо.
Зачем? Кому надо? Не, я даже честно писал быструю сортировку, но один раз в жизни, и то, чисто для того, чтобы посравнивать скорость разных сортировок, чисто для общего развития. А на практике мне это знание за 7 лет работы ни разу не пригодилось.
ПМ>МГТУ им. Баумана, информатика и системы управления, параллельные вычисления и прочий рокетсайнс, аспирант. Вскрытие показывает: алгоритмы и структуры данных — o(1) (вплоть до того, что поиск у нас в бинарном дереве O(n) или что-то в этом роде), многопоточность — более-менее знает примитивы ОС, но высокоуровневые паттерны не знает, что такое Монитор — тоже. Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду. Не, в целом всё не так плохо, я даже его рекомендовал, просто не понятно, чем они там в своём МГТУ им. Баумана занимаются на кафедре параллельных вычислений?
Какая-то новая кафедра, что ли? В мою бытность там такой не было.
Ровно как не было ничего на тему "высокоуровневых паттернов" и прочего задротства. По программированию изучались базовые вещи: начиная с Паскаля (Дельфи), через С и С++ (и специальный курс по ООП), и в прикладные области (теория СУБД, построение компиляторов, системное программирование (там о том, как _создавать_ примитивы ОС), распределенная обработка данных, матмоделирование, криптография, вычислительные методы и еще всякое подобное).
Про структуры данных курса точно не было, т.к. предполагалось, кому надо — сам найдет. Ну и бОльшая часть курсов была не про программирование (матан, линал, дискра, и даже черчение под соусом "инженерной графикии"), физика, квантовая физика, и даже, кажется, сопромат. Опять же, это давно было, как сейчас не знаю.
ПМ>К чему я это всё? Да к тому, что сколько-нибудь вменяемая фильтрация по резюме едва ли возможна. Что бы вы ожидали от людей из ведущих вузов с учёными степенями? Ожидать от них, конечно, можно много чего, но вот незнание теории в данном случае немного неожиданно.
Так вот, к чему это все я.
К тому, что задротствовать на тему "а вот я прочитал книгу про паттерны" — антипаттерн. Возможно, кандидат это понял и банально решил не продолжать.
PS: но я вот сейчас вспоминаю, что большинство тех, кто шел в аспирантуру были в основном бездельниками и лопухами. Москвичками. Кому аспирантура была нужна для откоса от армии.
Здравствуйте, aleks_mur, Вы писали:
_>детально вычислять сложность от О (а не мерить реальное время выполнения) надо редко когда.
А оно на современном железе ещё от дофигища факторов зависит. Да и константа у разных алгоритмов разная, может случиться что на рабочих объёмах данных O(n**2) будет на практике быстрее чем O(n log n).
_> И реальную сложность там оценивают профилированием, так как банальное О вообще ни о чем не скажет.
Именно!
_>А вот О(cos ln sin x) эта сложность там, или еще какая муда — никому не сперлось.
Да!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
ПМ>В общем мне тяжело оценивать всяких там физиков и математиков, т.к. я вообще не знаю, чему их учат и как они докатываются до жизни такой (т.е. становятся программистами)
хм, а кем они все должны становиться? профессорами в Америке? Квантами? Начальниками отдела в Газпроме? Бомжами?
Здравствуйте, StandAlone, Вы писали:
SA>А в чем ты там разбираешься, если даже не в курсе, что lock — straightforward имплементация примитива синхронизации критическая секция, в отличие от первоначально убогой и наивной через Monitor.Enter\Exit?
Здравствуйте, SkyDance, Вы писали:
SD>Еще МГУ, МФТИ и МИЭТ тоже исключай — там ситуация такая же. SD>Учат базе и основам. Чай, не обезьянок учат, а будущих специалистов.
ПМ>>В общем мне тяжело оценивать всяких там физиков и математиков, т.к. я вообще не знаю, чему их учат и как они докатываются до жизни такой (т.е. становятся программистами)
D>хм, а кем они все должны становиться? профессорами в Америке? Квантами? Начальниками отдела в Газпроме? Бомжами?
Я тоже ИМХО более прямой и очевидный путь в программисты — это учиться на программиста. Ну разве что человеку было скучно учиться по cs и он пошел на математика или на философа, просто, чтобы получать удовольствие..
_>>А О(cos ln sin x)
ПМ>Не сходится же. Если мне такое кандидат физико-математических наук напишет, я его на пересдачу матанализа направлю, и буду прав.
в таком случае ты будешь категорически неправ, рекомендую тебе самому повторить матанализ
к твоему сведению --
1. сложность не обязана к чему-то сходиться -- вспоминаем О(N) при N->inf
2. сложность не обязана даже монотонно зависеть от параметра
причина этого в том, что алгоритм(N) отнюдь не всегда может быть представлен в виде "алгоритм(N+1) с одним placeholder-ом", хотя практически -- да, часто именно так и бывает
конечно, формула выглядит необычно, но определение сложности и определение О() не нарушает
дальше, вместо О(cos ln sin x) можно написать О(1), но при этом часть информации все же теряется, и можно (хотя и сложно) представить случай, когда сложность будет именно О(cos ln sin x) и это будет существенно при тех х, когда cos ln sin x близок к нулю
ПМ>>>В общем мне тяжело оценивать всяких там физиков и математиков, т.к. я вообще не знаю, чему их учат и как они докатываются до жизни такой (т.е. становятся программистами)
D>>хм, а кем они все должны становиться? профессорами в Америке? Квантами? Начальниками отдела в Газпроме? Бомжами?
ПМ>Я тоже ИМХО более прямой и очевидный путь в программисты — это учиться на программиста. Ну разве что человеку было скучно учиться по cs и он пошел на математика или на философа, просто, чтобы получать удовольствие..
одно из объяснений -- "stay upwind" -- есть в этом эссе http://paulgraham.com/hs.html
грубо говоря, да, потому что это интереснее, а потом оказывается, что нужно зарабатывать деньги..
SA>Ну-ка, давайте, сообразите нам на месте без гугла.. SA>Лично у меня математический бэкграунд неплохой, до сих пор не все забыто и БПФ ступора не вызывает. Но пытаться нашлепать функцию с хорошим распределением я бы даже не стал. Возвел бы одно число в степень другого и привел к uint, а дальше пусть собеседователь дрочит, как он хочет.
я бы (без гугля) сделал что-то вроде
unsigned long long z = ((unsigned long long)x)<<32 + y;
unsigned long long t = z + circle_shift(z, a) + circle_shift(z, b) + circle_shift(z, c);
return t;
константы a,b,c подобрал бы после раздумья, еще может и увеличил число слагаемых -- главное получше перемешать младшие биты
Здравствуйте, kaa.python, Вы писали:
ПМ>> многопоточность — более-менее знает примитивы ОС
KP>для 80% задачь это знание совершенно не вперлось.
Ну кроме задач многопоточности
KP>высокоуровневые паттерны, по моим наблюдениям, это один из способов особо извращенно анонировать на свою крутизну. Особенно хорошо это показывает твой пример с монитором (кстати, впервые слышу про него): всегда можно найти очередной паттерн, про который кто-то не слышал
Если не пользовался монитором, и не знаешь про различные способы написания многопоточного кода — значит просто не очень много писал многопоточных приложений/не изучал данную область. Это примарно как вопрос про виртуальный деструктор — я не знаю, что такое виртуальный деструктор, но из этого следует только то, что я ни разу не интересовался ООП в С++.
KP>Ты про реализацию CRC32, которая берется из какой-нить библиотечки, или надо что-то кривенькое свое придумать? Из твоего описания вообще не понятно.
Я просто прошу написать код для решения такой задачи:
>Примерно так: есть ссылочный объект (не struct) с двумя полями типа Int32. Мы хотим использовать этот объект в качестве ключа в хешь-таблице и хотим, чтобы оба поля в равной степени участвовали в формировании хешь-кода. Как бы вы реализовали getHashCode().
Задача вполне реальная, встречается когда мы хотим реализовать кеширование по составному ключу (если кандидат не называет ответ с ходу, значит ему не доводилось реализовывать кеширование в приложении).
Здравствуйте, dilmah, Вы писали:
D>одно из объяснений -- "stay upwind" -- есть в этом эссе http://paulgraham.com/hs.html D>грубо говоря, да, потому что это интереснее, а потом оказывается, что нужно зарабатывать деньги..
И тут возникает вопрос — а не скушно ли будет такому человеку заниматься тем, что мы ему предлагаем? Он может быть математик в душе, а тут какой-то код писать, который ему нафиг не сдался.
Здравствуйте, m e, Вы писали:
ME>вполне возможно, имеется умный начальник, который видит явную неадекватность паблика, и в воспитательных целях и одновременно чтобы не портить личные отношения с ним поставил его на собеседования
Что он при этом воспитывает и имеет ли смысл ради воспитания простого деплоймент-инженегра терять потенциальных девелоперов? Не проще выкинуть неадеквата из компании и фиг с ними, с отношениями?
Скорее в компании просто такая система набора персонала неадекватная и это говорит вовсе не в пользу ума начальника.
ME>вполне возможно он даже и подталкивает его к обсуждению на рсдн -- не самому же вправлять мозги юноше, в самом деле?
Такое не вправляется разумлениями. Человек неадекватен — такое исправляется только набитием шишек через конфликты ИРЛ и сложные жизненные ситуации. Или не исправляется и получается либо начальник-самодур, либо вечный неудачник-нытик. ИМХО, разумеется.
ME>>вполне возможно, имеется умный начальник, который видит явную неадекватность паблика, и в воспитательных целях и одновременно чтобы не портить личные отношения с ним поставил его на собеседования
_AB>Что он при этом воспитывает и имеет ли смысл ради воспитания простого деплоймент-инженегра терять потенциальных девелоперов? Не проще выкинуть неадеквата из компании и фиг с ними, с отношениями?
думаешь так просто найти человека с академическим бэкграундом и знаниями в области cs? если бы он еще и адекватный был... а собеседования -- это такая вещь, на которую не хотят тратить время квалифицированных кадров, и вдобавок скучно
_AB>Скорее в компании просто такая система набора персонала неадекватная и это говорит вовсе не в пользу ума начальника.
Здравствуйте, Codechanger, Вы писали:
C>Здравствуйте, Сонный Программист, Вы писали:
СП>>Здравствуйте, Codechanger, Вы писали:
C>>>Паблик, если не секрет, каков ваш возраст? (можете, конечно, не отвечать, но это отразится более негативно).
СП>>По некоторым сведениям, ему 23. В соседней ветке он утверждал, что в программировании в 16-18 лет уже умеешь все, к 23 программист достигает потенциала, а с 25 лет начинается отупение мозга, в 30 лет люди еле отвечают на его умные вопросы вообще, а в 35 не отвечают совсем. Вы поосторожней с ним.
C>Спасибо за информацию про возраст. Некоторые особенности поведения(особенно резкое обострения чувства собственной значимости) становятся понятными. Кстати, лет в 30 он попадет на собеседование к такому же Паблику, только из молодых. Интересно, развернет ли он тут полемику по поводу тупых вопросов?
Вот этот момент меня очень веселит. Неужели такие люди искренне полагают, что им всегда будет 23?
Пролетят эти 7 лет, как один день, а дальше роли поменяются. Что тогда?
Здравствуйте, Паблик Морозов, Вы писали:
BBI>>Вот скажи, ты можешь оценить два алгоритма на предмет вычсложности вообще не вспоминая про О? ПМ>М.. нет. Разве что свою систему изобрести, но скорее всего получится то же О.
Т.е. ты всё равно будешь выражать в каком то аналоге О а потом уже сравнивать x и y в О(x) и O(y), так?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Паблик Морозов, Вы писали:
BBI>>Полагаю что у 99% тут сидящих работа уже давно есть. ПМ>Может быть не очень хорошая, раз они сидят в job?
Это ветка "О работе" а не "Работа, предложения от работодателей".
Тут обычно обсуждают всякие рабочие моменты, а не ищут работу.
Встречаются конечно и такие, кто ошибся разделом.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Brutalix, Вы писали:
B>Здравствуйте, Паблик Морозов, Вы писали:
ПМ>>Опять же не ясно. Как знание и активность могут навредить проекту? (если человек не вредит сознательно)
B>Эта мудрость заключена в анекдоте, почему солнце встает на востоке и заходит на западе. Слыхал, небось?
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Думаю, что через 7 лет я буду собеседоваться на должность технического директора, а не программиста на сишарпе.
Самое страшное — что скорее всего будешь. Потому что таких спихивают из коллектива всеми силами, в том числе на повышение в соседние подразделения. По-моему, у Филла Фактора в одном из рассказов описан сей феномен.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Думаю, что через 7 лет я буду собеседоваться на должность технического директора, а не программиста на сишарпе.
И попадешь на такого же, как и ты сам, убежденного, что технический директор вообще должен знать Кнута наизусть.
Вот тебе там и устроят смотрины...
Здравствуйте, gandjustas, Вы писали:
G>Ох сомневаюсь. Ты на форуме уже показал что тебе даже подбором персонала противопоказано заниматься, а уж про руководство не говорю.
Ты не знаешь руководителей, которым, казалось-бы, просто противопоказано руководить?
Здравствуйте, _ABC_, Вы писали:
_AB>Здравствуйте, Паблик Морозов, Вы писали:
ПМ>>Думаю, что через 7 лет я буду собеседоваться на должность технического директора, а не программиста на сишарпе.
_AB>Самое страшное — что скорее всего будешь. Потому что таких спихивают из коллектива всеми силами, в том числе на повышение в соседние подразделения. По-моему, у Филла Фактора в одном из рассказов описан сей феномен.
Российское ИТ не госструктуры. Обычно мало фиктивых руководителей. Фактически есть деление на технических спецов, которые не управляют баблом, и менеджмент, который баблом таки управляет. Техдиректор попадает во вторую категорию.
Project management стоит несколько в стороне, его не рассматриваем.
У техспецов есть иерархия, но повышение в ней незначительно сказывается на получаемых деньгах, а естественного пути перехода из технарей в менеджмент отсутствует. Часто видел путь перехода технарь -> консультант -> сейл -> менеджмент. И именно большинство успешных молодых технических директоров как раз из продаж попадают на эту должность.
Есть еще исключения в виде старперов на таких должностях, тупо потому что выслуга лет большая, а начальство не доверяет людям со стороны.
Так что не светит морозову в ИТ должность техдиректора. Может только в какой-нить банк возьмут и там дослужится, если повезет.
Здравствуйте, _ABC_, Вы писали:
_AB>Здравствуйте, gandjustas, Вы писали:
G>>Ох сомневаюсь. Ты на форуме уже показал что тебе даже подбором персонала противопоказано заниматься, а уж про руководство не говорю.
_AB>Ты не знаешь руководителей, которым, казалось-бы, просто противопоказано руководить?
Я не техническое руководство, а про финансовый менеджмент. Техдиректор как раз в структурах финансового менеджмента состоит.
Иерархию технарей не рассматриваю, там попытка повышения количества уровней подчиненности приводит как раз к созданию фиктивных руководителей. То есть должность у человека есть, но он не руководит, а только деньги за должность получает.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, _ABC_, Вы писали:
G>Так что не светит морозову в ИТ должность техдиректора. Может только в какой-нить банк возьмут и там дослужится, если повезет.
Здравствуйте, _ABC_, Вы писали:
_AB>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, _ABC_, Вы писали:
G>>Так что не светит морозову в ИТ должность техдиректора. Может только в какой-нить банк возьмут и там дослужится, если повезет.
_AB>Так не ИТ одним, как говорится...
Надо понимать что в не-ИТ области столь высокие ЗП как в ИТ с трудом найти можно. Я например до переезда в Москву в своем городе получал в пару раз больше, чем директоры магазинов, ИТ директоры некоторых банков. Был при этом рядовым разработчиком.
Аналогично в москве, кроме как в банках или нефте-газовой отрасли, можно стать фин. менеджером с окладом меньше ведущего программиста в компании-разработчике.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>>>Опять же не ясно. Как знание и активность могут навредить проекту? (если человек не вредит сознательно)
B>>Эта мудрость заключена в анекдоте, почему солнце встает на востоке и заходит на западе. Слыхал, небось?
ПМ>Нет. Расскажи пожалуйста.
Это, конечно, не int32 хешь-код, это просто гуголь, но как пользоваться — стоит понимать. Пригодится. Ну да ладно.
Сидит программист глубоко в отладке. Третий день сидит. Ни.. чего не получается. Подходит к нему сынишка, и говорит:
- Папа, а почему солнце встает на востоке?
- Ты это проверял?
- Да.
- Работает?
- Да.
- Каждый день работает?
- Да.
- Тогда сынок, ради бога, ничего не трогай, ничего не меняй!
Это к вопросу как активновть может навредить проекту, а уж если в дополнение к активности есть нечто зазубренное в универе, но на практике особо не примененное, то вообще.
Здравствуйте, gandjustas, Вы писали:
G>И чем же ты занимаешься "практически консультант"? По твоим сообщениям видно что бы понятия не имеешь о business value. Может ты тщательно это скрываешь, но кроме как ботан-самодур никак себя на форуме не проявил.
Интересно, а какие еще диагнозы ты можешь поставить мне по моим сообщениям?
G>Таким людям категорически нельзя не то что в финансовый менеджмент, но и в техническое руководство.
Когда кто-то очень умный и очень хорошо знает, как и кому можно доверять финансовый менеджмент и техническое руководство, обычно у него спрашивают, почему он при этом настройщик шарепоинта, а не исполнительный директор.
Здравствуйте, Сонный Программист, Вы писали:
СП>Мда... вот вся страна у нас такая, люди ответственны за работу, о которой не имеет ни малейшего понятия.
Да, на примере программистов я это уже заметил — рвутся в сеньёры, при этом даже базовых вещей не знают и элементарную программу написать не могут. Позор да и только.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>И чем же ты занимаешься "практически консультант"? По твоим сообщениям видно что бы понятия не имеешь о business value. Может ты тщательно это скрываешь, но кроме как ботан-самодур никак себя на форуме не проявил.
ПМ>Интересно, а какие еще диагнозы ты можешь поставить мне по моим сообщениям?
Если тебе нужна консультация психолога, то это не ко мне. Но вот от ответа на прямой вопрос ты уже неоднократно ушел.
G>>Таким людям категорически нельзя не то что в финансовый менеджмент, но и в техническое руководство.
ПМ>Когда кто-то очень умный и очень хорошо знает, как и кому можно доверять финансовый менеджмент и техническое руководство, обычно у него спрашивают, почему он при этом настройщик шарепоинта, а не исполнительный директор.
Совершенно необязательно уметь готовить устрицы чтобы судить о их вкусе
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Я поэтому и не занимаюсь программированием, только собеседования с ними провожу. А должность у меня — деплоймент-инженер — это практически консультант.
ПМ>Это к вопросу, почему на надо нанимать быдлокодеров, не знающих элементарных вещей, пусть у них хоть 10 лет опыта и 100 успешных проектов. Потому что они и у вас "решат задачу", а в итоге вместо кода будет кусок говна, в котором если что-то потрогать, то он весь рассыпется как карточный домик. В итоге-то трогать всё равно придётся — т.к. будут возникать новые требования, но авторы этого говна уйдут в другую компанию, попутно сетуя какой Паблик Морозов плохой, заставляет списки на собеседованиях оборачивать, а компании придётся уже нанимать других специалистов, способных в этом говне разобраться и вкладывать другие деньги, чтобы говно исправить, при том, что бюджет проекта к этому времени обычно уже выплачен в виде зарплат его гениальным авторам, считающим, что умение весело жать кнопки заменяет им знания основ.
CodeReview, Unit tests и прочие методики контроля качества спасут отца русской демократии. Да это дорого но увы это бизнес.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Вот это то и умиляет — человек, который наверное ни одного программиста на работу не нанял начинает мне объяснять насколько я не прав, а потом еще что-то втирает про business value.
А где он сказал, что не нанял ни одного программиста на работу?
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Это к вопросу, почему на надо нанимать быдлокодеров, не знающих элементарных вещей, пусть у них хоть 10 лет опыта и 100 успешных проектов. Потому что они и у вас "решат задачу", а в итоге вместо кода будет кусок говна, в котором если что-то потрогать, то он весь рассыпется как карточный домик.
И он будет приносить денег. Столько что тебе и не снилось даже в самых смелых снах. Ибо говнокод, не приносящий денег, выбрасывается очень быстро.
ПМ>В итоге-то трогать всё равно придётся — т.к. будут возникать новые требования, но авторы этого говна уйдут в другую компанию
Придут другие авторы и разберутся в коде, допишут\перепишут что надо. Выкинут что не надо. И снова это будет говнокодом, и снова он будет приносить бабло.
ПМ>попутно сетуя какой Паблик Морозов плохой, заставляет списки на собеседованиях оборачивать, а компании придётся уже нанимать других специалистов, способных в этом говне разобраться и вкладывать другие деньги, чтобы говно исправить, при том, что бюджет проекта к этому времени обычно уже выплачен в виде зарплат его гениальным авторам, считающим, что умение весело жать кнопки заменяет им знания основ.
И ведь они правы, а ты — нет.
Здравствуйте, gandjustas, Вы писали:
G>Мальчик, ты не по адресу. Я много программистов собеседовал и команды разработчиков собирал, причем не только как сотрудник фирмы, но и как прямой работодатель, который деньги платит.
Ну и где можно посмотреть на команду этих разработчиков и результаты их трудов?
ПМ>Ах да, сходил на их сайт, увидел страничку с крокозябрами (кодировка win-1251, но в документе об этом ни слова, мой европейский браузер по-умолчанию использует iso 8859-1). Видимо html-странички в этой колыбели высоких технологий тоже верстать не учат.
Не думаю что этому учат где-то кроме программерских ПТУ.
ПМ>Второй вообще кандидат физ-мат наук, МГУ мех-мат. Писал какие-то алгоритмы для Интеля, позиционуется на должность ведущего разработчика/архитектора. Что такое вычислительная сложность — не знает. Интересно, как он их писал?..
Кандидатская в России IMHO немногого стоит, так как с точки зрения мужчин аспирантура это в первую очередь — беспроблемный способ избежать армии. Ну а там глядишь и защитится. Конечно, есть народ, который делал что-то содержательное, но IMHO такого немного.
ПМ>К чему я это всё? Да к тому, что сколько-нибудь вменяемая фильтрация по резюме едва ли возможна. Что бы вы ожидали от людей из ведущих вузов с учёными степенями? Ожидать от них, конечно, можно много чего, но вот незнание теории в данном случае немного неожиданно.
Лично я при прочих равных позвал бы человека, закончившего матмех (я в Питере), нежели какой-нибудь бонч. Все-таки ВУЗ в России это прежде всего фильтр, хоть и очень слабый, и почему бы не воспользоваться результатами фильтрации нахаляву?
Но вообще цель резюме — заинтересовать работодателя чтобы он позвал на собеседование. Именно так к нему и нужно относиться. Человек, который закончил приличный ВУЗ, работал за границей, работал в той же предметной области вызывает больший интерес, поэтому его позовут с большей вероятностью. Но при этом он тоже может оказаться неподходящим.
Здравствуйте, UA, Вы писали:
UA>CodeReview, Unit tests и прочие методики контроля качества спасут отца русской демократии. Да это дорого но увы это бизнес.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Не верьте всему, что пишут в резюме.
ПМ>В общем мне тяжело оценивать всяких там физиков и математиков, т.к. я вообще не знаю, чему их учат и как они докатываются до жизни такой (т.е. становятся программистами), но вот некоторые программисты-по-специальности меня удивляют.
ПМ>...
ПМ>Второй вообще кандидат физ-мат наук, МГУ мех-мат. Писал какие-то алгоритмы для Интеля, позиционуется на должность ведущего разработчика/архитектора. Что такое вычислительная сложность — не знает. Интересно, как он их писал?..
Интересно, как бы ему в его работе написания алгоритмов для Интела могло помочь знание определения понятия "вычислительная сложность"? Наверняка, в его работе использовались другие более конкретные критерии оценки результатов работы, а не из области "компьютерной лирики".
ПМ>К чему я это всё? Да к тому, что сколько-нибудь вменяемая фильтрация по резюме едва ли возможна. Что бы вы ожидали от людей из ведущих вузов с учёными степенями? Ожидать от них, конечно, можно много чего, но вот незнание теории в данном случае немного неожиданно.
Вам ходячий справочник нужен, или человек способный адекватно решать задачи?
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Паблик Морозов, Вы писали:
ПМ>>Это к вопросу, почему на надо нанимать быдлокодеров, не знающих элементарных вещей, пусть у них хоть 10 лет опыта и 100 успешных проектов. Потому что они и у вас "решат задачу", а в итоге вместо кода будет кусок говна, в котором если что-то потрогать, то он весь рассыпется как карточный домик. G>И он будет приносить денег. Столько что тебе и не снилось даже в самых смелых снах. Ибо говнокод, не приносящий денег, выбрасывается очень быстро.
Хочешь сказать, что качественный код, решающий ту же задачу приносит меньше денег? Если нет, то не понятно, к чему это балабольство.
ПМ>>В итоге-то трогать всё равно придётся — т.к. будут возникать новые требования, но авторы этого говна уйдут в другую компанию G>Придут другие авторы и разберутся в коде, допишут\перепишут что надо. Выкинут что не надо. И снова это будет говнокодом, и снова он будет приносить бабло.
Хочешь сказать, что дописывание качественного кода будет стоить дороже? Если нет, то не понятно, к чему это балабольство.
ПМ>>попутно сетуя какой Паблик Морозов плохой, заставляет списки на собеседованиях оборачивать, а компании придётся уже нанимать других специалистов, способных в этом говне разобраться и вкладывать другие деньги, чтобы говно исправить, при том, что бюджет проекта к этому времени обычно уже выплачен в виде зарплат его гениальным авторам, считающим, что умение весело жать кнопки заменяет им знания основ. G>И ведь они правы, а ты — нет.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, UA, Вы писали:
UA>>CodeReview, Unit tests и прочие методики контроля качества спасут отца русской демократии. Да это дорого но увы это бизнес.
ПМ>В соседней теме можно видеть, как тесты не спасли
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Мальчик, ты не по адресу. Я много программистов собеседовал и команды разработчиков собирал, причем не только как сотрудник фирмы, но и как прямой работодатель, который деньги платит.
ПМ>Ну и где можно посмотреть на команду этих разработчиков и результаты их трудов?
В основном все корпоративные решения, в публичном доступе нету. Из докризисных времен только один сайт дожил http://osv.ru/
Сейчас крупные проекты в банке на С, нефтегазовой компании на Г и опсосе на М. Но детали разглшать не имею права.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Вот это то и умиляет — человек, который наверное ни одного программиста на работу не нанял начинает мне объяснять насколько я не прав, а потом еще что-то втирает про business value.
Ты лучше про тех, кого ты нанял расскажи.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Паблик Морозов, Вы писали:
J>>Причесать и отрефакторить алгоритм, убрав излишнюю сложность, если это возможно, я и сам могу. А вот построить и решить сложную мат модель — не могу. На кой хрен забивать гвозди микроскопом и сажать мехматянина не на РнД, а на кодинг? ПМ>Назвался груздем — полезай в кузов. Не я ему кодить предлагал, он сам написал, что мол сеньёр-архитект.
а зачем брать мехматянина на архитекта? Зачем вообще доводить заведомо неподходящих людей до собеседования? Что бы был повод здесь пожаловаться
Здравствуйте, Паблик Морозов, Вы писали:
J>>а это зачем кому-то нужно ? Вот хэш-код для сложной структуры, например графа, это нужная задача, а инты хэшировать... ПМ>Вот использовать граф в качестве ключа в хешь-таблице еще не доводилось
все наоборот. Граф — это структура, а хеш — это число, позволяющее быстро добираться до похожих графов
ПМ>Кроме того, боюсь, что если я буду задавать этот вопрос, то я вообще никого не найду. Потому что для 99% былдокодеров, отчаянно возмущающихся в моих темах это mission imposible хотя бы потому, что надо как-то вменяемо обрабатывать изоморфизм графов.
изоморфизм — это еще пол беды, желательно еще что бы коды были упорядочены для подграфов
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Второй вообще кандидат физ-мат наук, МГУ мех-мат. Писал какие-то алгоритмы для Интеля, позиционуется на должность ведущего разработчика/архитектора. Что такое вычислительная сложность — не знает. Интересно, как он их писал?..
Может быть, он просто привык к другому термину: "трудность". Вопрос о мониторе наводит на такую мысль
G>>Я вот как раз "для прикола" изучил SharePoint. Технологии вообще говоря монетизируются лучше чем развороты списков. ПМ>Дурак со знанием технологии больше вреда принесёт, чем пользы.
Уважаемый, можете привести пример такой ситуации, когда появляется "дурак со знанием технологии"? Причем не надуманной ситуации, а реальной.
Здравствуйте, jhfrek, Вы писали:
J>а зачем брать мехматянина на архитекта? Зачем вообще доводить заведомо неподходящих людей до собеседования? Что бы был повод здесь пожаловаться
Здравствуйте, Паблик Морозов, Вы писали:
UA>>CodeReview, Unit tests и прочие методики контроля качества спасут отца русской демократии. Да это дорого но увы это бизнес.
ПМ>В соседней теме можно видеть, как тесты не спасли
А у меня вот как-то чаще возникали задачи написать алгоритм по математическим выкладкам, а не сравнивать несколько алгоритмов по скорости.
Те на выходе получается всего один алгоритм, а далее просто считаешь емкость используемых вычислений и вперед оптимизация — деление на 2 заменяешь сдвигом, уменьшаешь число итераций цикла итп...
Именно мат аппаратом O пользоваться не приходилось, хотя это по сути упрощенный подсчет общего числа операций(=времени выполнения). Тут в принципе достаточно арифметику знать.
Здравствуйте, Сонный Программист, Вы писали:
Tom>>в частности читал ли человек Рихтера.
СП>Я читал много чего, но об этом человеке не слышал. Так что...
Рихтер не показатель, но пишет хорошо. Правда уже и не помню о чём .
Здравствуйте, Паблик Морозов, Вы писали:
BBI>>Полагаю что у 99% тут сидящих работа уже давно есть.
ПМ>Может быть не очень хорошая, раз они сидят в job?
Работу ищут в других форумах. Поинтересуйся на досуге для чего job существует.
А то у тебя и 90% людей простейшие вещи не знаю, и сейчас окажется, что ещё и безработных тоже процентов 80.
Здравствуйте, Codechanger, Вы писали:
C>Господа, судя по количеству тем, которые наплодил топик стартер, предлагаю скинуться ему на психолога.
И тут мы незаметно подходим к главной теме — собеседование при устройстве на работу психологом.
И первая задача такого собеседования, на которой срезается 80% собеседуемых — обращение психики.
Здравствуйте, Паблик Морозов, Вы писали:
_>>А О(cos ln sin x)
ПМ>Не сходится же. Если мне такое кандидат физико-математических наук напишет, я его на пересдачу матанализа направлю, и буду прав.
Тебе нельзя проводить собеседования. Категорически нельзя. Чтобы кто-то проверял матан — я первый раз слышу. Надеюсь, у тебя фамилия не Морозов, а то начальство может и уволить.
Здравствуйте, Паблик Морозов, Вы писали:
BBI>>Вот скажи, ты можешь оценить два алгоритма на предмет вычсложности вообще не вспоминая про О?
ПМ>М.. нет. Разве что свою систему изобрести, но скорее всего получится то же О.
Большинство программистов отличат O(N) и O(1000N), хотя разница и невелика.
Здравствуйте, gangof4, Вы писали:
G>Здравствуйте, Паблик Морозов, Вы писали:
ПМ>>Не верьте всему, что пишут в резюме.
ПМ>>В общем мне тяжело оценивать всяких там физиков и математиков, т.к. я вообще не знаю, чему их учат и как они докатываются до жизни такой (т.е. становятся программистами), но вот некоторые программисты-по-специальности меня удивляют. Имён и конкретные данные давать не буду просто парочка примеров.
ПМ>>МГТУ им. Баумана, информатика и системы управления, параллельные вычисления и прочий рокетсайнс, аспирант. Вскрытие показывает: алгоритмы и структуры данных — o(1) (вплоть до того, что поиск у нас в бинарном дереве O(n) или что-то в этом роде), многопоточность — более-менее знает примитивы ОС, но высокоуровневые...
G>Кстати открою вам тайну: поиск в бинарном дереве МОЖЕТ занимать O(n).
Здравствуйте, _ABC_, Вы писали:
_AB>Здравствуйте, Паблик Морозов, Вы писали:
ПМ>>Думаю, что через 7 лет я буду собеседоваться на должность технического директора, а не программиста на сишарпе.
_AB>Самое страшное — что скорее всего будешь. Потому что таких спихивают из коллектива всеми силами, в том числе на повышение в соседние подразделения. По-моему, у Филла Фактора в одном из рассказов описан сей феномен.
У Покровского тоже был такой персонаж офицер в одном из рассказов, придурка двигали всё дальше от себя и по тем же самым мотивам, с глаз долой из сердца вон, лишь бы глаза не мозолил, в конце концов существо задвинули в академию ген. штаба, после чего оно нарисовалось в старом коллективе но в новом обличьи, украшенное позументиками и большой властью
G>Кстати открою вам тайну: поиск в бинарном дереве МОЖЕТ занимать O(n).
Я сначала тоже хотел это написать Паблику, но вовремя сообразил, что ведь тогда придется открывать Кормена, и смотреть, какими буквами что обозначается. Кажется, тета (О с палочкой в середине) — это как раз то, что Паблик по ошибке принимает за О. Про омегу (а это как раз тот случай, когда поиск в бинарном дереве будет W(n)) Паблику и вовсе может быть неизвестно. Короче, заклюет же
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Если не пользовался монитором, и не знаешь про различные способы написания многопоточного кода — значит просто не очень много писал многопоточных приложений/не изучал данную область. Это примарно как вопрос про виртуальный деструктор — я не знаю, что такое виртуальный деструктор, но из этого следует только то, что я ни разу не интересовался ООП в С++.
Я думаю что kaa.python писал многопоточного и сетевого кода и изучил данную область намного больше тебя.
ПМ>Я просто прошу написать код для решения такой задачи:
>>Примерно так: есть ссылочный объект (не struct) с двумя полями типа Int32. Мы хотим использовать этот объект в качестве ключа в хешь-таблице и хотим, чтобы оба поля в равной степени участвовали в формировании хешь-кода. Как бы вы реализовали getHashCode().
ПМ>Задача вполне реальная, встречается когда мы хотим реализовать кеширование по составному ключу (если кандидат не называет ответ с ходу, значит ему не доводилось реализовывать кеширование в приложении).
Это замечательно, что ты дочитал в своей книжке про хешью-кешью. Но ты знаешь, от того что кешь звучит как хешь, не значит что составной ключ используется исключительно в кешях. И да, задача реальная, только не для кеша, и раз уж пошла такая пьянка про переопределение hashCode- ты не указал что еще надо переопределять equals. Садись, два. Гений ты наш.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Я поэтому и не занимаюсь программированием, только собеседования с ними провожу. А должность у меня — деплоймент-инженер — это практически консультант.
Так это тебя спихнули туда, где ты конторе меньше всего вреда принесешь. Смайлика не будет.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ> зависимость времени обработки от количества данных надо хотя бы приблизительно уметь оценивать.
Не верю.
Где, когда и зачем это знание было применено на практике?
03.03.2012 14:42, Паблик Морозов пишет:
> Я поэтому и не занимаюсь программированием, только собеседования с ними > провожу. А должность у меня — деплоймент-инженер — это практически > консультант.
Круто. Хотя, читая тебя здесь, можно было и и не удивляться.
03.03.2012 15:00, Паблик Морозов пишет:
> Да, на примере программистов я это уже заметил — рвутся в сеньёры, при > этом даже базовых вещей не знают и элементарную программу написать не > могут. Позор да и только.
Так им же еще и денег больше платят, чем демлоймент-анжинерам.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду. Не, в целом всё не так плохо, я даже его рекомендовал, просто не понятно, чем они там в своём МГТУ им. Баумана занимаются на кафедре параллельных вычислений?
И как же посчитать этот хэш-код?
Здравствуйте, alzt, Вы писали:
A>Поинтересуйся на досуге для чего job существует.
Для того, чтобы обсуждать, как пройти собеседование в Бинг, какие дурацкие задания дают работадатели на собеседованиях, как податься во фриланс, как вывести из строя монитор, сколько получают программисты на С++, как работается в Target Labs, как приобрести лидерские качества, как завалить девелопера на интервью ну и тому подобное.
Здравствуйте, Tom, Вы писали:
Tom>Я когда про монитор прочитал тоже не понял чего он с ним носится, ну спрашивал про сто нибудь более менее серьёзное, про IO Completion Port, ввод вывод асинхронный или нюансы там какие, а то на ровном месте придумал проблему.
Одно из требований к программисту — работа с многопоточностью в .net. Монитор — основной примитив в .net, под него даже специальная конструкция языка предусмотрена. Если человек не знает, что это такое, значит он вообще ничего не знает про многопоточность в .net. И никаких IO Completion Port там нет, неблокирующий ввод/вывод там делается по-другому.
Здравствуйте, alzt, Вы писали:
A>Большинство программистов отличат O(N) и O(1000N), хотя разница и невелика.
Для того, чтобы отличить O(N) от O(1000N) надо (одно из):
1. Писать алоритм самому, но мы недавно выяснили, что все алгоритмы уже написаны и надо просто вызвать библиотечную функцию (про которую, кстати, не написано O(N) она или O(1000N)).
2. Знать, как внутри устроены стандартные алгоритмы и структуры данных, мы (вроде) тоже выяснили, что на самом деле программисту это не нужно.
3. Запустить программу и посмотреть. Но, во-первых, для этого не надо быть программистом, я могу уборщицу попростить с секундомером постоять. Во-вторых есть некоторая вероятность спутать O(1000N) с O(N^2) и получить интересные результаты через полгода работы, когда в программе накопится достаточно данных.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>3. Запустить программу и посмотреть. Но, во-первых, для этого не надо быть программистом, я могу уборщицу попростить с секундомером постоять. Во-вторых есть некоторая вероятность спутать O(1000N) с O(N^2) и получить интересные результаты через полгода работы, когда в программе накопится достаточно данных.
Исключая тривиальные случаи, запустить и посмотреть (вооруженным профайлером глазом) единственно возможный на _практике_ вариант.
Здравствуйте, okman, Вы писали:
O>И тут мы незаметно подходим к главной теме — собеседование при устройстве на работу психологом.
То есть плавно переходим к тому, что нужно повышать роль HR в собеседованиях. Учитывая, что до черта из них закончили психфак .
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, Паблик Морозов, Вы писали:
ПМ>> зависимость времени обработки от количества данных надо хотя бы приблизительно уметь оценивать. BFE>Не верю. BFE>Где, когда и зачем это знание было применено на практике?
Один из первых вопросов, которые задаёт клиент — это "а какие системные требования"? (как варианты — "а за сколько обработается наша клиентская база?" "сколько времени будут импортироваться документы?" и всё в таком духе)
Здравствуйте, ArtemGorikov, Вы писали:
AG>Я думаю что kaa.python писал многопоточного и сетевого кода и изучил данную область намного больше тебя.
А не надо думать, надо оперировать фактами.
AG>раз уж пошла такая пьянка про переопределение hashCode- ты не указал что еще надо переопределять equals. Садись, два. Гений ты наш.
Профэсор, вы таки ничего про это ничего не спрашивали.
ПМ>И про STM ты наверное тоже ничего не слышал, и про asyn workflows, и про join-calculus и про nested data parallelism и про многое другое. Но если утверждаешь, что имел дело с многопоточностью в .net, то что такое монитор, ты просто не можешь не знать. Почему — написано здесь
А потом эти недоджуниоры уже в /job/ не могут написать алгоритм разворота списка без ошибок и щеголяют своим незнанием примитивов синхронизации. У меня альтернативное предположение — высокая зарплата (более 80 тысяч) привлекает слишком много 35-летних бездельников, которые просиживали штаны в своих конторах, а теперь вдруг увидели возможность получать больше денег и решили, а вдруг прокатит. Думаю, что назначать зарплату выше рыночной — серьёзная ошибка, мотивировать людей надо другими способами.
Здравствуйте, Sharowarsheg, Вы писали:
S>И будет классно, когда окажется, что в практических данных 99% случаев в парах одинаковые числа. Пишите лучше сразу hash = 1, потом профайлер разберется, где сгодится, а где исправить.
Здравствуйте, __lambda__, Вы писали:
___>Просыпайся, сонный программист ___>Рихтер для .NET программиста библия. Да и для Win32 программиста тоже. Хвастаться знанием чего-либо, я понимаю... А вот хвастаться тем, что не читал одну из самых лучших книг, одного из самых лучших авторов...
Нету библии. Наверняка те же самые вопросы разжёваны в массе других книжек. И авторов лучших тоже каждый второй, вот например если с одной стороны Рихтер, а с другой Руссинович и Соломон, кто кого заборет? Если для Win32 программиста и Питрека не читать?
подойдёт? Если нет, то чем плохо, какой вариант предлагается и чем он лучше в данной формулировке (без описания типичных значений этих int32)/
Если распределение исходных данных неизвестно, пойдет что угодно. Хоть a*b, или, для лучшего перемешивания, a & 0xFFFF * b >> 16 + a >> 16 * b & 0xFFFF
Здравствуйте, Паблик Морозов, Вы писали:
S>>И будет классно, когда окажется, что в практических данных 99% случаев в парах одинаковые числа. Пишите лучше сразу hash = 1, потом профайлер разберется, где сгодится, а где исправить.
ПМ>Ну это вообще цикр.
Цикр — это вопрос в стиле "32-битный хеш от двух 32-битных чисел".
Зачем тебе такой красивый хеш с таким красивым количеством коллизий нужен? Что хочешь сделать? Поиск типа быстрый замутить или чего еще?
Здравствуйте, SkyDance, Вы писали:
SD>PS: но я вот сейчас вспоминаю, что большинство тех, кто шел в аспирантуру были в основном бездельниками и лопухами. Москвичками. Кому аспирантура была нужна для откоса от армии.
SD>>PS: но я вот сейчас вспоминаю, что большинство тех, кто шел в аспирантуру были в основном бездельниками и лопухами. Москвичками. Кому аспирантура была нужна для откоса от армии. P>
Сложности с пониманием? Или с русским языком? Какие есть варианты интерпретации выделенного?
Здравствуйте, SkyDance, Вы писали:
SD>>>PS: но я вот сейчас вспоминаю, что большинство тех, кто шел в аспирантуру были в основном бездельниками и лопухами. Москвичками. Кому аспирантура была нужна для откоса от армии. P>> SD>Сложности с пониманием? Или с русским языком? Какие есть варианты интерпретации выделенного?
Хм, и давно это Москва переехала в Израиль? Да и девушке в Израиле вроде не косят от армии...
On 05.03.2012 22:37, Паблик Морозов wrote:
> ПМ>> зависимость времени обработки от количества данных надо хотя бы > приблизительно уметь оценивать. > BFE>Не верю. > BFE>Где, когда и зачем это знание было применено на практике? > > Один из первых вопросов, которые задаёт клиент — это "а какие системные > требования"? (как варианты — "а за сколько обработается наша клиентская > база?" "сколько времени будут импортироваться документы?" и всё в таком > духе)
Хм. Вы не обижайтесь, пожалуйста, но вас всё сложнее воспринимать как
адекватного собеседника.
Абсолютно ничего, практически пригодного к использованию, теоретическими
расчётами на основании "O()" и т.п. вы здесь не получите.
Здравствуйте, landerhigh, Вы писали:
A>>>Большинство программистов отличат O(N) и O(1000N), хотя разница и невелика.
ПМ>>Для того, чтобы отличить O(N) от O(1000N) надо
L>
Это всё в контексте
М.. нет. Разве что свою систему изобрести, но скорее всего получится то же О.
. Для О это может быть и несущественно, но вообще на практике тоже надо учитывать. Особенно, когда на практике N не очень большое, а контанта оказывается значительной.
Здравствуйте, landerhigh, Вы писали:
L>Другое дело, когда нужно оценивать абсолютную сложность конкретной реализации. Тут и алгоритм с O(n^2) может оказаться быстрее O(1) за счет накладных расходов. Но O-нотацию для таких оценок применять уже не стоит.
Понятно, но поскольку другой нотации особо не завезли, регулярно пишут (и я в том числе) O(f(n)) вместо t=f(n). И смотрите, если вы начнете настаивать на правильном использовании O-нотации, опаненты начнут настаивать на правильном использовании термина "монитор"
K>>И как же посчитать этот хэш-код? ПМ>Самый простой вариант — xor.
жги дальше, а то тут без тебя просто не над кем посмеяться — если человек не кидает понты, то и смеяться над ним не хочется
если у тебя оба целых числа ограничены каким-то числом М, что вполне реалистично, то твой xor будет ограничен числом 2М, т.е. твоих хешей будет не больше, чем 2М штук, так что готовься к коллизиям
в то же время хотя бы простейшее перемешивание битов в виде "записываем циклически два инта друг за другом, вырезаем из них несколько сдвинутых кусочков в 32 бита и складываем" дадут уже М*М штук
ME>в то же время хотя бы простейшее перемешивание битов в виде "записываем циклически два инта друг за другом, вырезаем из них несколько сдвинутых кусочков в 32 бита и складываем" дадут уже М*М штук
Дополнительные пересылки "память-память", фу!
Перевести числа в big-endian, если у нас little-endian, или наоборот — а затем поксорить.
ME>>в то же время хотя бы простейшее перемешивание битов в виде "записываем циклически два инта друг за другом, вырезаем из них несколько сдвинутых кусочков в 32 бита и складываем" дадут уже М*М штук
O>Дополнительные пересылки "память-память", фу!
че?! это на какой архитектуре такая жуть?!
long long можно двигать через регистры, и даже если нельзя, то все равно пересылка будет через кэш L1
минимальный вариант это
assert( sizeof(unsigned long long) == 2 * sizeof(unsigned int) ); // static assert я не упомню сходуtemplate<unsigned int n> unsigned long long rotate(unsigned long long x)
{
return (x>>n) | (x<<(sizeof(x)-n));
}
inline unsigned long long dword(unsigned x, unsigned y)
{
unsigned long long xy = x;
xy <<= sizeof(x);
xy |= y;
return xy;
}
unsigned my_hash(unsigned x, unsigned y)
{
return dword(x,y) + rotate<(sizeof(x)/2)>( dword(x,y) ); // можно и xor, если у нас сложение тормозное
}
O>Перевести числа в big-endian, если у нас little-endian, или наоборот — а затем поксорить.
ага, щас еще будем выяснять какая у нас архитектура...
кстати, ты рискуешь так нарваться на то же, что и паблик -- наложение случайных битов друг на друга
х = 0000aAAAAAAa0000
y = 0000cCCCCCCc0000
y' = 0000CCCccCCC0000 <- изменена endiannes
здаесь через 0 обозначены нулевые биты, через a,c — почти гарантированно нулевые, и через A,C — случайные
скажем, если число обозначает зарплату в копейках, то запросто может оказаться, что оно почти всегда заканчивается на 0000 (в десятичной записи) и значит делится на 16
ПМ>МГТУ им. Баумана, информатика и системы управления, параллельные вычисления и прочий рокетсайнс, аспирант. Вскрытие показывает: алгоритмы и структуры данных — o(1) (вплоть до того, что поиск у нас в бинарном дереве O(n) или что-то в этом роде), многопоточность — более-менее знает примитивы ОС, но высокоуровневые паттерны не знает, что такое Монитор — тоже. Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду. Не, в целом всё не так плохо, я даже его рекомендовал, просто не понятно, чем они там в своём МГТУ им. Баумана занимаются на кафедре параллельных вычислений?
В скольких коммерческих проектах у вас это используется и сколько денег на этом вы заработали?
Здравствуйте, m e, Вы писали:
ME>жги дальше, а то тут без тебя просто не над кем посмеяться — если человек не кидает понты, то и смеяться над ним не хочется
ME>если у тебя оба целых числа ограничены каким-то числом М, что вполне реалистично, то твой xor будет ограничен числом 2М
ME>>жги дальше, а то тут без тебя просто не над кем посмеяться — если человек не кидает понты, то и смеяться над ним не хочется
ME>>если у тебя оба целых числа ограничены каким-то числом М, что вполне реалистично, то твой xor будет ограничен числом 2М
L>А разве не M?
Здравствуйте, m e, Вы писали:
L>>А разве не M?
ME>не М; пусть М=8
ME>1000 xor 0111 = 1111
ME>что почти вдвое больше М
Не, ты не так считаешь.
Пусть размер чисел ограничен n битами. Тогда кол-во различных значений (x^y) будет не больше, чем 2 в степени n.
Т.е. по факту ограничен тем же числом, что и изначальные числа.
L>Не, ты не так считаешь. L>Пусть размер чисел ограничен n битами. Тогда кол-во различных значений (x^y) будет не больше, чем 2 в степени n. L>Т.е. по факту ограничен тем же числом, что и изначальные числа.
неверно: ты сначала ухудшил оценку для числа М, а потом якобы обошелся без 2-ки
число М вправе выбрать паблик (по нему неявно задан квантор общности), поэтому твое рассуждение не подходит
если у нас есть 3 числа 00, 01, 10 то в результате ксоров мы получим 4 числа 00, 01, 10, 11
з.ы. да, я сначала подумал именно о битах, но потом его потребовалось переформулировать на язык М, и я это сделал
Здравствуйте, m e, Вы писали:
ME>число М вправе выбрать паблик (по нему неявно задан квантор общности), поэтому твое рассуждение не подходит
ME>если у нас есть 3 числа 00, 01, 10 то в результате ксоров мы получим 4 числа 00, 01, 10, 11
ME>з.ы. да, я сначала подумал именно о битах, но потом его потребовалось переформулировать на язык М, и я это сделал
ME>>з.ы. да, я сначала подумал именно о битах, но потом его потребовалось переформулировать на язык М, и я это сделал
L>Хорошо, проверь свою гипотезу при M=8
то, что моя оценка иногда не оптимальна, и иногда вместо 2М сойдет и 1М — это не моя проблема; я мог бы и 20М зафигачить; а вот то, что у тебя 1М иногда не хватит — это твоя проблема, делающая твое утверждение неверным
впрочем, ты не сформулировал целиком свое утверждение, и предлагаешь что-то вроде патча; если не согласен со мной — сформулируй тогда уж целиком, что ли
Здравствуйте, m e, Вы писали:
ME>то, что моя оценка иногда не оптимальна, и иногда вместо 2М сойдет и 1М — это не моя проблема; я мог бы и 20М зафигачить; а вот то, что у тебя 1М иногда не хватит — это твоя проблема, делающая твое утверждение неверным
ME>впрочем, ты не сформулировал целиком свое утверждение, и предлагаешь что-то вроде патча; если не согласен со мной — сформулируй тогда уж целиком, что ли
ME>>впрочем, ты не сформулировал целиком свое утверждение, и предлагаешь что-то вроде патча; если не согласен со мной — сформулируй тогда уж целиком, что ли
L>
L>(x^y) <= 2 ** ceiling(log2(M))
L>
ок, (x^y) <= 2 ** ceiling(log2(M)) <= 2 ** (log2(M)+1) <= 2*M чтобы не заморачиваться с формулами
и улучшить эту оценку в случае М = 2**К — 1 можно лишь несущественно (несущественно в смысле целей общения с пабликом)
это не лирика.
слишком часто сталкивался с n^n и n^2 там, где должно быть nLog(n).
раз за разом наблюдая прогнозируемые n лет рассчётов крыл матом бездарей (особенно open source касается).
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, kosmik, Вы писали:
K>Все-таки ВУЗ в России это прежде всего фильтр
только не понятно кого отфильтровывает, и кто получается на выходе.
было бы неплохо, если бы они не только "отфильтровывали", но ещё и знания и умения давали
K>и почему бы не воспользоваться результатами фильтрации нахаляву
бесплатный сыр...
(см. программисты в гос. организациях)
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, kaa.python, Вы писали:
ПМ>>В общем мне тяжело оценивать всяких там физиков и математиков, т.к. я вообще не знаю, чему их учат и как они докатываются до жизни такой (т.е. становятся программистами), но вот некоторые программисты-по-специальности меня удивляют. Имён и конкретные данные давать не буду просто парочка примеров.
KP>я уж не знаю кто тебя допустил до собеседований, но этот человек явно желает зла компании где ты работаешь.
ПМ>>МГТУ им. Баумана, информатика и системы управления, параллельные вычисления и прочий рокетсайнс, аспирант. Вскрытие показывает: алгоритмы и структуры данных — o(1) (вплоть до того, что поиск у нас в бинарном дереве O(n) или что-то в этом роде)
KP>плохо
ПМ>> многопоточность — более-менее знает примитивы ОС
KP>для 80% задачь это знание совершенно не вперлось.
ПМ>> но высокоуровневые паттерны не знает, что такое Монитор — тоже.
KP> пример с монитором (кстати, впервые слышу про него)
Like the lock keyword, monitors prevent blocks of code from simultaneous execution by multiple threads. The Enter method allows one and only one thread to proceed into the following statements; all other threads are blocked until the executing thread calls Exit. This is just like using the lock keyword. In fact, the lock keyword is implemented with the Monitor class. For example:
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Я, конечно, понимаю, что ты не читатель, а писатель, но попробуй прочитать хотя бы 2 абзаца из википедии.
Я там всю статью прочитал.
ПМ>1. ты не знаешь, что такое монитор, т.е. не знаешь ничего про многопоточность в .net-е
Да мне всё равно что этот паттерн назвали монитором, и, сюрприз, я вообще не дотнетчик. А многопоточность как ни странно существовала задолго до дотнета, doh!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Ф>только не понятно кого отфильтровывает, и кто получается на выходе.
В нормальные ВУЗы и поступить сложнее и учиться сложнее, так что совсем безнадежные отваливаются.
Ф>было бы неплохо, если бы они не только "отфильтровывали", но ещё и знания и умения давали
Конечно неплохо, только мы же говорим о реальной ситуации.
K>>и почему бы не воспользоваться результатами фильтрации нахаляву
Ф>бесплатный сыр... Ф>(см. программисты в гос. организациях)
Так или иначе подобная фильтрация есть везде. Выпускник Гарварда или МТИ при прочих равных вызовет больший интерес работодателя, чем выпускник ВУЗа из второй десятки.
Здравствуйте, Sharowarsheg, Вы писали:
S>Здравствуйте, landerhigh, Вы писали:
L>>Другое дело, когда нужно оценивать абсолютную сложность конкретной реализации. Тут и алгоритм с O(n^2) может оказаться быстрее O(1) за счет накладных расходов. Но O-нотацию для таких оценок применять уже не стоит.
S>Понятно, но поскольку другой нотации особо не завезли, регулярно пишут (и я в том числе) O(f(n)) вместо t=f(n).
И не надо другой нотации. Все, что от нее нужно — это предоставить возможность сравнивать принципиальную эффективность алгоритмов.
Сравнивать конкретные реализации можно и нужно напрямую.
Здравствуйте, landerhigh, Вы писали:
S>>Понятно, но поскольку другой нотации особо не завезли, регулярно пишут (и я в том числе) O(f(n)) вместо t=f(n). L>И не надо другой нотации. Все, что от нее нужно — это предоставить возможность сравнивать принципиальную эффективность алгоритмов.
L>Сравнивать конкретные реализации можно и нужно напрямую.
Не всегда. Если есть три варианта, каждый из которых сначала кодить, а потом замерять, и при этом отладка от 15 минут на тест, бывает выгоднее заранее прикинуть, что имеет больше шансов.
ПМ>Видимо эта область не имеет отношения к программированию, т.к. как можно писать программы не зная базовых вещей, вроде вычислительной сложности, мне не совсем понятно. Это безотносительно языка ...
Да легко, в целом. Сначала программа пишется (с). Затем она тестируется на тестовых данных, соответствующих тому, что будет при использовании. Затем, если что-то тормозит, запускается такая специальная штука как профайлер, который показывает гда именно тормозит. И если вдруг случилось чудо и тормозит оно потому, что вместо хэша используется список — то контейнер в торжественной обстановке заменяется.
К сожалению, на практике такое случается крайне редко. Большинство попыток преждевременой оптимизации, какие я видел — с хитрыми структурами данных, анализом О(черта лысого) и самописными алгоритмами — в лучшем случае были потеряным временем. Потому что на практике оно тормозит не там (c). Так исторически сложилось. Не получается для более-менее сложных систем предсказывать где оно будет тормозить.
Так что все эти игры с О(йух), ИМХО, от лукавого. Профайлер ответит на этот и многие другие вопросы.
Здравствуйте, Lloyd, Вы писали:
L>На публично доступные поля не рекомендуется lock-аться.
Верно, но не рекомендуется локаться не потому, что кто-то (MS?) так сказал, а потому, что внешний неподконтрольный разработчику код может быть не в курсе данной детали имплементации, и тоже на нём залокаться.
Здравствуйте, Lloyd, Вы писали:
L>Это к чему было написано-то? Да, именно по этой причине MS не рекомендует так делать.
Это к вопросу о знании/понимании Кто-то тупо запоминает рекомендации, а кто-то старается понять, откуда у них растут ноги. Так сказать, наглядная демонстрация для вот этого поста: http://rsdn.ru/forum/job/4636700.1.aspx
Здравствуйте, Stroustrups Cat, Вы писали:
SC>Я 5 лет пишу многопоточные приложения, знаю про мап-редьюс, продюсер-консьюмер, про тредпулы и прочий скам. Про монитор? Нет, не слышал
Я уже давно заметил, что местная публика любит побравировать своей необразованностью. Могу только одно сказать — Вы нам не подходите. Почему — уже несколько раз писал в этой теме, искать или писать заново — лень.
ПМ>>Ну и всякие мелкие задачки вроде посчитать int32 хешь-код от двух int32 — тоже как-то через пень колоду. SC>Сверхсрочно! Если придумаешь, как это сделать без коллизий, то сразу же защищай докторскую, ибо ты придумал, как ужать любые данные в 2 раза!
И это тоже.
SC>Особенную пикантность ситуации придает то, что ищется быдлокодер педалить корпоративные системы за доширак
Нет, нет, Вы нам точно не подойдёте, даже за доширак, спасибо за уделенное время.
Здравствуйте, SkyDance, Вы писали:
SD>Я вступлюсь за контору — к счастью, наличие одного вредного интервьювера не всегда ставит крест на всей конторе.
Очень даже может поставить, если вредному интервьюверу позволят вредничать слишком долго, чтобы накопить критическую массу специалистов по обращению списков.
L>Очень даже может поставить, если вредному интервьюверу позволят вредничать слишком долго, чтобы накопить критическую массу специалистов по обращению списков.
Я так понимаю, вредный интервьюер работает только как отрицательный фильтр (т.е. он не принимает решение "берем", но может принять решение "не берем"). Соответственно, если "обращателей списков" вполне себе найдутся и хорошие программисты. Я, к примеру, список без проблем обращу. Хотя вот на вопросе про "монитор" срезался бы точно
Монитор — это то, куда я сейчас смотрю
Здравствуйте, SkyDance, Вы писали:
SD>где надо столько всего сурового знать _заранее_ — и без возможности подучиться на ходу, въезжая в проект.
практически в любом проекте, от 200 метров кода, особенно если задания разработчикам попадают случайно: сегодня ты пилил DAL, завтра — WEB-сервис, послезавтра гуй.
такое разделение заданий — порочная практика, но периодически встречается
Всё сказанное выше — личное мнение, если не указано обратное.
Пиши. Получить какой-то более-менее надежный в вопросе коллизий хэш длинной в 32 бита нельзя. С учетом того что данных у нас всего 64 бита, то проще всего их будет поксорить и забыть. Еслиу нас данных все же больше, но нам все равно (по каким-то не указанным причинам) хочется уложиться в 32 бита для хэша, то лучше всего взять одну из стандартных реализаций CRC32 (которая не хеш ни разу, но сойдет, раз уж ограничение хеша в 32 бита), коих вагон и маленькая тележка (на память и не знаю ни одной из них). Итого: полагаю что в данном вопросе вопрошающий просто хотел узнать, имеет ли кандидат хоть какое-то представление о хешах. Зачем ему это надо я не знаю, вопрос реально глупый. Но, если спрашивают, почему бы не ответить?
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, Паблик Морозов, Вы писали:
ПМ>> зависимость времени обработки от количества данных надо хотя бы приблизительно уметь оценивать. BFE>Не верю. BFE>Где, когда и зачем это знание было применено на практике?
при выборе между List и LinkedList
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, Eye of Hell, Вы писали:
ПМ>>Видимо эта область не имеет отношения к программированию, т.к. как можно писать программы не зная базовых вещей, вроде вычислительной сложности, мне не совсем понятно. Это безотносительно языка ...
EOH>вместо хэша используется список — то контейнер в торжественной обстановке заменяется.
а ничего, что с хэшем работают совсем не так, как со списком? разверните мне хэш, пожалуйста. заодно объясните в чем все-таки разница. список это элементы А, Б, С. хэш это словарь. А => a, B =>, C => c. бред, короче.
EOH> Большинство попыток преждевременой оптимизации, какие я видел — с хитрыми структурами данных,
это не преждевременная оптимизация. это -- проектирование. следующая стадия -- прототипирование. или давайте строить здание так -- очень просто. сколько будет у нас этажей -- хз и потому фундамент проектировать мы не можем. да он и не нужен. по мере возведения новых этажей, старые будут планомерно погружаться в землю. и у нас автоматически образуется парковка и гараж, о которой мы забыли.
EOH> Потому что на практике оно тормозит не там (c). Так исторически сложилось.
исторически сложилось так, что нормальные инженеры сначала проектируют, а потом прототипируют. "тормозит не там" -- это ошибка в расчетах. а без расчетов можно заточить что-то очень сильно типовое и хорошо известное.
EOH>Так что все эти игры с О(йух), ИМХО, от лукавого. Профайлер ответит на этот и многие другие вопросы.
хороший вы человек. не потерявший веры в чудо. вы знаете сколько стоят комплесы по имитации максимально реалистичного потока данных? поинтересуйтесь.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Паблик Морозов, Вы писали:
A>>Большинство программистов отличат O(N) и O(1000N), хотя разница и невелика.
ПМ>Для того, чтобы отличить O(N) от O(1000N) надо (одно из):
Здравствуйте, SkyDance, Вы писали:
SD>Я так понимаю, вредный интервьюер работает только как отрицательный фильтр (т.е. он не принимает решение "берем", но может принять решение "не берем"). Соответственно, если "обращателей списков" вполне себе найдутся и хорошие программисты. Я, к примеру, список без проблем обращу. Хотя вот на вопросе про "монитор" срезался бы точно SD>Монитор — это то, куда я сейчас смотрю
А как же умное слово паттерн, вот всегда меня оно раздражало. Особенно примеры паттернов, что я видел...
В С++ такие вещи назывались своими именами, а тут в JAVA и С# их обзывают паттернами.
Здравствуйте, Паблик Морозов, Вы писали: ПМ>Здравствуйте, alzt, Вы писали: A>>Большинство программистов отличат O(N) и O(1000N), хотя разница и невелика. ПМ>Для того, чтобы отличить O(N) от O(1000N) надо (одно из): ПМ>1. Писать алоритм самому, но мы недавно выяснили, что все алгоритмы уже написаны и надо просто вызвать библиотечную функцию (про которую, кстати, не написано O(N) она или O(1000N)). ПМ>2. Знать, как внутри устроены стандартные алгоритмы и структуры данных, мы (вроде) тоже выяснили, что на самом деле программисту это не нужно. ПМ>3. Запустить программу и посмотреть. Но, во-первых, для этого не надо быть программистом, я могу уборщицу попростить с секундомером постоять. Во-вторых есть некоторая вероятность спутать O(1000N) с O(N^2) и получить интересные результаты через полгода работы, когда в программе накопится достаточно данных.
ты какой-то феерический идиот. еще и думающий, что все вокруг дураки
Здравствуйте, kaa.python, Вы писали:
KP>Пиши. Получить какой-то более-менее надежный в вопросе коллизий хэш длинной в 32 бита нельзя. С учетом того что данных у нас всего 64 бита, то проще всего их будет поксорить и забыть. Еслиу нас данных все же больше, но нам все равно (по каким-то не указанным причинам) хочется уложиться в 32 бита для хэша, то лучше всего взять одну из стандартных реализаций CRC32 (которая не хеш ни разу, но сойдет, раз уж ограничение хеша в 32 бита), коих вагон и маленькая тележка (на память и не знаю ни одной из них). Итого: полагаю что в данном вопросе вопрошающий просто хотел узнать, имеет ли кандидат хоть какое-то представление о хешах. Зачем ему это надо я не знаю, вопрос реально глупый. Но, если спрашивают, почему бы не ответить?
Спасибо, кэп. Но мой главный вопрос, а именно, кому нафиг сдался 32-битный хеш с 2^32 коллизиями, остался без ответа. А также совершенно непонятно, зачем тут что-то там считать, когда можно просто одно из двух изначальных чисел и использовать в качестве хеша.
Задающему дурацкие вопросы не стоит удивляться, если его самого в ответ совершенно справедливо назовут дураком.
L>Но мой главный вопрос, а именно, кому нафиг сдался 32-битный хеш с 2^32 коллизиями, остался без ответа.
одно из использований хэшей -- это раскидать объекты детерминистически по bucket'ам
И тут не имеет никакого значения сколько коллизий, хоть 2^100500, важно чтобы на том распределении объектов которое есть у тебя, этот хэш раскидывал их по бакетам более менее равномерно
> Спасибо, кэп.
Всегда рад помочь > Но мой главный вопрос, а именно, кому нафиг сдался 32-битный хеш с 2^32 коллизиями, остался без ответа.
Ну значит кому-то нужен. Никогда не знаешь кому и что может понадобиться. Это же не причина не предложить решение, пусть и глупого вопроса? > А также совершенно непонятно, зачем тут что-то там считать, когда можно просто одно из двух изначальных чисел и использовать в качестве хеша.
Так это же вполне себе ответ. Хотя я все-же склоняюсь к идее хоть какую-то операцию над этими числами провести, т.к. про их распределение ничего не известно. > Задающему дурацкие вопросы не стоит удивляться, если его самого в ответ совершенно справедливо назовут дураком.
Так его все так и называют. Но ведь в работе и не такое встречается
D>одно из использований хэшей -- это раскидать объекты детерминистически по bucket'ам D>И тут не имеет никакого значения сколько коллизий, хоть 2^100500, важно чтобы на том распределении объектов которое есть у тебя, этот хэш раскидывал их по бакетам более менее равномерно
А если изначальные значения и так распределены более-менее равномерно?
Здравствуйте, Codechanger, Вы писали: C>Ваще, канеш, Паблик подложил своей конторе большую такую свинью.
а что за контора?
пока искал название меня добило, что он по ходу даже не знает, как слово инженер пишется. у него что в профиле, что в посте иженер
Здравствуйте, Философ, Вы писали:
SD>>где надо столько всего сурового знать _заранее_ — и без возможности подучиться на ходу, въезжая в проект.
Ф>практически в любом проекте, от 200 метров кода, особенно если задания разработчикам попадают случайно: сегодня ты пилил DAL, завтра — WEB-сервис, послезавтра гуй.
И в чем там проблема въехать на ходу? Обычно в таких проектах большинство задач уже ранее встречалось, соответственно новые задачи можно делать по аналогии с ранее написанным кодом. Для этого никаких специфических знаний не требуется, достаточно здравого смысла и общего умения программировать. Плюс есть куча народа, у которого можно проконсультироваться, если какой-то момент непонятен.
Здравствуйте, __kot2, Вы писали:
__>Здравствуйте, Codechanger, Вы писали: C>>Ваще, канеш, Паблик подложил своей конторе большую такую свинью. __>а что за контора?
Ф>если не знаешь чем именно отличается List от LinkedList, то профайлер мало чем поможет. Ф>частенько нужно точно знать, где можно List'ом обойтись, а где требуется Dictionary.
Хорошему разработчику достаточно уметь пользоваться профайлером и гуглом. Если он не понимает почему тормозит ккой-то конкретный фрагмент кода — он спрашивает либо коллег, либо stackoverflow. ИМХО, это намного лучшая практика нежели надеяться на то, что ты великий маг и волшебник и сможешь предвидеть будующее и предсказать где будут тормоза.
Здравствуйте, мыщъх, Вы писали:
EOH>>вместо хэша используется список — то контейнер в торжественной обстановке заменяется. М>а ничего, что с хэшем работают совсем не так, как со списком? разверните мне хэш, пожалуйста. заодно объясните в чем все-таки разница. список это элементы А, Б, С. хэш это словарь. А => a, B =>, C => c. бред, короче.
Коллега, при всем моем уважении. И то и другое — контейнеры. На практике линейностью списка пользуются достаточно редко. А хэш, между прочем, бывает направленный — ordered hash, по нему можно ходить влево-вправо. В ruby 1.9 ввели, очень удобно. Так что не надо придираться к словам, вы же прекрасно меня поняли .
EOH>> Большинство попыток преждевременой оптимизации, какие я видел — с хитрыми структурами данных, М>это не преждевременная оптимизация. это -- проектирование. следующая стадия -- прототипирование. или давайте строить здание так -- очень просто. сколько будет у нас этажей -- хз и потому фундамент проектировать мы не можем. да он и не нужен. по мере возведения новых этажей, старые будут планомерно погружаться в землю. и у нас автоматически образуется парковка и гараж, о которой мы забыли.
Вы, как бы так сказать, передергиваете. Отсутствие архитектуры и отсутствие преждевремменой оптимизации — это разные вещи. Фундамент — это архитектура. А преждевременная оптимизация — это битонирование проводки в стенах "чтобы надежно", вместо того чтобы положить в короба. Со всемы вытекающими.
EOH>> Потому что на практике оно тормозит не там (c). Так исторически сложилось. М>исторически сложилось так, что нормальные инженеры сначала проектируют, а потом прототипируют. "тормозит не там" -- это ошибка в расчетах. а без расчетов можно заточить что-то очень сильно типовое и хорошо известное.
Коллега, при всем момем уважении и прочем воздавании почестей вашему опыту реверсинга. Я как бы про большой софт говорю. Крупный, так сказать. У него есть важный критерий — он живет намного дольше, чем написанная одноразовая числодробилка для вирусной аналитики. И меняется — непредсказуемо. Проблемы с преждевременной оптимизацией возникают уже после того, как все спроектировали и прототипизировали — когда проект начинается эволюционировать под воздействием меняющихся требований. Я — об этом. А простой софт все равно как писать — хоть водопадом, хоть агилой, хоть ООП, хоть процедурно. Как говорил один товарищь, очень легко ходить по воде и писать софт на основании требований — если они заморожены .
EOH>>Так что все эти игры с О(йух), ИМХО, от лукавого. Профайлер ответит на этот и многие другие вопросы. М>хороший вы человек. не потерявший веры в чудо. вы знаете сколько стоят комплесы по имитации максимально реалистичного потока данных? поинтересуйтесь.
Хороший вы человек, но смотрите со своей колокольни. Разная у нас с вами специализация — я разрабатываю тяжелые десктопные продукты с продолжительным сроком жизни и меняющимися требованиям. Вы — специалист по реверсингу и аналитике, у вас производительность, ядро, числодробилки, вспомогательные утилиты.
Здравствуйте, vpchelko, Вы писали:
V>Какая разница. Для меня все языки одинаковы, принципы везде одни и те же, вот печаль, что везде одни и те же вещи обзывают разными словами.
Все языки равны, но некоторые языки равнее других (Джордж Оруэлл, кавер-версия
Здравствуйте, hrensgory, Вы писали:
H>Абсолютно ничего, практически пригодного к использованию, теоретическими H>расчётами на основании "O()" и т.п. вы здесь не получите.
Здравствуйте, kaa.python, Вы писали:
>> Спасибо, кэп. KP>Всегда рад помочь >> Но мой главный вопрос, а именно, кому нафиг сдался 32-битный хеш с 2^32 коллизиями, остался без ответа. KP>Ну значит кому-то нужен. Никогда не знаешь кому и что может понадобиться. Это же не причина не предложить решение, пусть и глупого вопроса?
Тому, кому понадобился 32-битный хеш с 2^32 коллизиями на каждое значение, нужно в качестве решения предлагать живительную эвтаназию, честное слово. Тратить даже минуту своей жизни на решение дурацких проблем, придуманных идиотами, мне банально жалко.
>>> Но мой главный вопрос, а именно, кому нафиг сдался 32-битный хеш с 2^32 коллизиями, остался без ответа. KP>>Ну значит кому-то нужен. Никогда не знаешь кому и что может понадобиться. Это же не причина не предложить решение, пусть и глупого вопроса?
L>Тому, кому понадобился 32-битный хеш с 2^32 коллизиями на каждое значение, нужно в качестве решения предлагать живительную эвтаназию, честное слово. Тратить даже минуту своей жизни на решение дурацких проблем, придуманных идиотами, мне банально жалко.
Может я что-то пропустил, но разве в природе существует 32-битный хэш двух 32-битных int-ов с мее чем 2^32 коллизиями на каждое значение?
On 15.03.2012 23:07, Паблик Морозов wrote:
> H>Абсолютно ничего, практически пригодного к использованию, теоретическими > H>расчётами на основании "O()" и т.п. вы здесь не получите. > > Ну если вы этим инструментом не владеете, это еще не значит, что он > непригоден к использованию <http://bit.ly/xiiIHV>.
Это значит именно это. Если бы из такого подхода было бы реально с
разумными трудозатратами выжимать правдоподобные оценки типа "сколько
времени займёт импорт наших документов" и "какое железо нам понадобится
для нашей базы" — я бы об этом знал.
Здравствуйте, Eye of Hell, Вы писали:
EOH>Здравствуйте, мыщъх, Вы писали:
EOH>Коллега, при всем моем уважении. И то и другое — контейнеры.
вот до чего доводят людей абстракции...
> На практике линейностью списка пользуются достаточно редко.
бинарный поиск требует списка. поиск в с интерполяцией N(log log N). сравните с вашими hashmap. кстати, это в худшем случае
> А хэш, между прочем, бывает направленный — ordered hash,
вы в курсе как это устроено? посчитайте мне сложность вашего упорядоченного хэша
> по нему можно ходить влево-вправо. В ruby 1.9 ввели, очень удобно.
алгоритмическая сложность? положите в него хотя бы 6 млн. элементов потом посмотрим
> Так что не надо придираться к словам, вы же прекрасно меня поняли .
список хранит данные, например, строки. хэш это вообще-то словарь. ключ => данные. что предполагается использовать в качестве ключа? сами данные? тогда извините, у нас сложность будет зависеть и от N (кол-во элементов) и от их длины (хэш строки в сто метров быстро не посчитать), а вот упорядочить такие строки в списке -- все же быстрее, т.к. у нас есть шансы, что различия будут не в последнем символе. да и более продвинутые алгоритмы сравнения строк можно использовать...
EOH>Вы, как бы так сказать, передергиваете. Отсутствие архитектуры и отсутствие преждевремменой оптимизации — это разные вещи. EOH>Фундамент — это архитектура. А преждевременная оптимизация — это битонирование проводки в стенах "чтобы надежно", EOH>вместо того чтобы положить в короба. Со всемы вытекающими.
алгоритмическая сложность -- это архитектура. код -- фигня, код можно переписать. а вот публичный контракт и структуры данных -- это фундамент. их не изменишь. если вы на вход пинимаете список, то тупо заменить его на хэш не получится -- надо менять публичный контракт.
EOH>Коллега, при всем момем уважении и прочем воздавании почестей вашему опыту реверсинга. > Я как бы про большой софт говорю. Крупный, так сказать. У него есть важный критерий > он живет намного дольше, чем написанная одноразовая числодробилка для вирусной аналитики.
и потому крупному софту не нужно считать алгоритмическую сложность? ну-ну...
> И меняется — непредсказуемо. Проблемы с преждевременной оптимизацией возникают > уже после того, как все спроектировали и прототипизировали — когда проект начинается > эволюционировать под воздействием меняющихся требований. Я — об этом.
оценка сложности алгоритмической относится к проектированию, а не реализации. хотя бы на примере мониторов. даже если технически кол-во пикселей по горизонтали и вертикали можно увеличить в десять раз, объем данных возрастет в сто раз, что потребует пропускных способностей шин, объема памяти, скорости обработки... а вот кол-во цветов влияет на сложность обработки как O(log N), из чего следует -- мы можем увеличить кол-во цветов в тысячу раз, но это не сильно скажется на.
сейчас популярны социальные сети. можно написать программу, например, для подбора партнеров. если у этой программы сложность O(N!), это означет, что она будет работать только пока сеть только начинается развиваться, а потом ее придется выкидывать и никакая послеродовая оптимизация не поможет в принципе.
> А простой софт все равно как писать — хоть водопадом, хоть агилой, хоть ООП, хоть процедурно. > Как говорил один товарищь, очень легко ходить по воде и писать софт на основании требований — если они заморожены .
как раз в индустрии безопасности требования меняются чуть ли не каждый день.
EOH>Хороший вы человек, но смотрите со своей колокольни. Разная у нас с вами специализация — я EOH>разрабатываю тяжелые десктопные продукты с продолжительным сроком жизни и меняющимися требованиям.
...у многих таких продуктов нет проблемы алгоритмической сложности, потому что в них нет алгоритмов как таковых. есть "сценарии поведения", а это совсем другое. ваш продукт трассирует платы? ищет оптимальный вариант раскройки листа материала? хотя бы P2P протокол вы разрабатывали и реализовали? это -- из десктопных продктов.
> Вы — специалист по реверсингу и аналитике, у вас производительность, ядро, числодробилки, вспомогательные утилиты.
как раз меня при трудоустройстве спрашивали за сетевые протоколы, регулярные выражения... за сложность -- нет, не спрашивали, но даже написать регулярное выражение без учета алгоритмической сложности нельзя. ибо разные подходы дают разную сложность. от O(log N) до O(c^N).
хотя алгоритмическая сложность -- это только вершина айсберга. моя первая программа давала O(N), там где другие давали O(N*c^M) и под это дело выдали патент. но на практике и O(N) это тормоза. что ли подать патент на O(log N) в худщем случае и O(1) в идеале? моя ошибка была в том, что решив одну проблему я породил другую. это типа как -- ок, придумали самолет и обогнали корабли так, что полет в штаты и австралию стал не проблемой. но не учли, что раньше в штаты из европы летали только по большой нужде, а изобретение самолета изменило правило игры и возникла проблема оптимизации перелетов, ибо не всегда есть возможность вылететь из точки А в точку Б в удобное для вас время, да и кол-во самолетов ограничено и с увеличением кол-ва рейсов стоимость билетов возрастает, т.е. решение масштабируется плохо и нам нужно нечто такое -- принципиально новое, что позволило бы вводить неограниченное кол-во рейсов во все города без линейной стороимости издержек.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Eye of Hell, Вы писали:
EOH>Да легко, в целом. Сначала программа пишется (с). Затем она тестируется на тестовых данных, соответствующих тому, что будет при использовании. Затем, если что-то тормозит, запускается такая специальная штука как профайлер, который показывает гда именно тормозит.
Это уже другая крайность. Преждевременная оптимизация это конечно плохо, но преждевременная пессимизация ничем не лучше. Если из логики задачи вытекает использование словаря, а вместо этого используется массив, то за это надо бить по рукам. Другое дело, что если у человека все нормально с программистскими способностями, то обучить его правильно выбирать вид коллекции под задачу не сложно. При этом для правильного выбора коллекции под задачу знание внутреннего устройства коллекции в общем-то не требуется. Поэтому смысла делать упор на этот вопрос на собеседовании я не вижу.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Паблик Морозов, Вы писали:
G>Напомни, это все еще CRM или как? Если CRM, то они CRM знают или нет? Если знают, то какая разница чем они там в универе занимаются (обычно ничем хорошим в универах не занимаются). Если не знают, то какой смысл оплачивать обучение программиста?
[off]
Любителя (и профессионала тоже) майкрософтовских технологий всегда можно легко отличить по наличию непонятных трёхбуквенных сокращений.
В двух (!) маленьких предложениях три (!!!) раза упомянуто "CRM". Плюс в подписи "MVP". Забаньте меня.
[/off]
U>Это уже другая крайность. Преждевременная оптимизация это конечно плохо, но преждевременная пессимизация ничем не лучше. Если из логики задачи вытекает использование словаря, а вместо этого используется массив, то за это надо бить по рукам. Другое дело, что если у человека все нормально с программистскими способностями, то обучить его правильно выбирать вид коллекции под задачу не сложно. При этом для правильного выбора коллекции под задачу знание внутреннего устройства коллекции в общем-то не требуется. Поэтому смысла делать упор на этот вопрос на собеседовании я не вижу.
Я ни разу не говорил про преждевременную пессимизацию. Если использование словаря вместо списка не увеличивает объем кода в несколько раз и по логике программы искать элементы будут значительно чаще чем добавлять — очевидно, что надо использовать словарь. Это как бы азы программирования, это все знают.