N>Ок, допускаю что решение я понял неправильно, но мысли свои об этом варианте всеже выскажу.
F>>Неважно, на четность или нечетность они договаривались. N>Им важно на чтото договориться изначально. Либо "четность", либо "нечетность".
Вобщем погуглил на это тему и признаю решение я действительно понял неправильно (надо сказать из вашего поста и непонятно) в части о том насчет чего именно они должны были договориться, и что будут означать слова "белый" и "красный". А так да, решение верное
Здравствуйте, justinian, Вы писали:
J>К разработке программного обеспечения эта задача не имеет никакого отношения. Успешное ее решение доказывает только умение решеать такие дурацкие задачи. J>В общем, это из серии — "6 ног, 7 хвостов — кто такой?". Правильный ответ — "шестиногий семихвост".
+1
J>Вряд ли я бы захотел работать в такой компании.
Если не сможешь ответить, но тебя берут, то значит не так это для них и важно и можно потом за кружкой чаю потребовать "разъяснений"
... << RSDN@Home 1.2.0 alpha rev. 717>>
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, ggg, Вы писали:
A>>Мне очень интересно наблюдать как по одной фразе вырванной из контекста, ты хочешь восстановить весь ход интервью. ggg>Не нужно передергивать, не по одной. По тому, что тут рассказали в нескольких постах (Anatolix, DenRaskovalov). ggg>А если не понравился мой первый пост, то повторю. Если бы в блоге было написано "мы послали кандидата, который ничего не сказал внятного про PageRank", это совсем другое. Впрочем, может, такое лучше не писать в публичных блогах, а.
Извини, но мне кажется, что от того, что человек написал в своем блоге несколькими часами позже уже никак не зависит что было на собеседовании.
То что лучше не писать ты конечно же прав.
ggg>Кстати, Anatolix, очень удобно цитируете. Пропустили кусок про то, что один человек не должен проверять математику и программирование, пропустили про "европейские" отказы и т.д. Про то, что квалификацию математика не оценишь, как в С++ — "ошибся в к-ре коп-ия, все, слабый уровень". ggg>Да и 24-летний математик, оценивающий других математиков, — это нонсенс. В программировании 24 года — нормально, но не в математике.
A>>Т.е. ты поручишься за то, что все 100% людей с физтех-а знают математику, к окончанию ВУЗ-а ее не забыли и такой ситуации просто быть не могло? Отличное предположение и тоже очень удобное для того, чтобы наезжать. Молодец.[/b] ggg>Извините, Вы читать умеете? 100% людей с физтеха это вовсе не "человек, закончивший ф-т ФУПМ с оценками, близкими к отличным".
Ну что за глупые придирки к словам. Хорошо, ты поручишься за то, что факультет угадал правильно, и все его выпускники с оценками близкими к обычными знают все чему их научили?
ggg>Я могу не писать длинных текстов, раз их так трудно прочесть.
лучше веди дискуссию как культурный человек не передергивая фактами и фразами.
A>>Ты меня с кем то путаешь — такие советы я не даю. ggg>Это было обращение к читающим скорее, а не лично к Вам.
ok.
ggg>Кстати, как там Ваше необоснованное "Это ложь"? Ведь слова "разработка багтрекера" взяты из названия вакансии, написанной сотрудником Яндекса. Почему тогда там не было "Это ложь", а к моим словам Вы прицепились.
Я по-моему там уже ответил.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[3]: Комментарий про собеседование + тестируем Anatolix
Собеседования в Яндекс мне напомнили ежегодные аттестации в институте, когда я работал там аспирантом. Надо было
рассказать, что сделано за последний год по своей теме и ответить на вопросы профессоров по subj.
Так вот, вопросы превращались в аттестацию наоборот. Так как я, естественно, знал и понимал в своей теме больше
аттестующих, то мои ответы показывали некомпетентность уважаемых ученых в моей узкой специализации,
хотя они и работали в смежных областях.
Так и в Яндекс задачи ставятся из родной для аттестующих области и тут любой "аспирант" завалит "профессора" со
стороны.
Предлагаю участникам дискуссии, ради справедливости, "потестировать" господ из Яндекса (Anatolix et al) вопросами из своей
области.
Наверняка г-да из Яндекса знакомы с Berkeley DB и с Apache. Мои три вопроса такие:
1) Почему в BDB для кеша лучше использовать shared memory, а не mmap, которая используется там по умолчанию?
2) В BDB в исходниках есть вставка ассемблерного кода, хотя в целом программа написана на С. Зачем она могла
понадобиться? Разве средствами C/C++ нельзя было обойтись? Просьба в исходники не смотреть, так как вопрос на
понимание проблем бд
3) Пусть есть прикладная программа, подлинкованная к Apache в качестве модуля. Пусть она считает какую-то статистику
и заносит данные в ту же BDB. Серверу в целом надо обрабатывать одновременно порядка 30000 соединений по 1000 запросов
в секунду. Вопрос: какое значение MaxClients вы бы установили в конфиге Apache, чтобы сервер в целом справился с этой нагрузкой?
Здравствуйте, Дмитрий В, Вы писали:
ДВ>Здравствуйте, machine3000, Вы писали:
M>>Досадно лишь то, что не понятно, где же ещё искать достойную работу. ДВ>А чем интересно яндекс принципиально отличается от того же рамблера, мейлр.ру и прочих контор, делающих бизнес в вёбе
они не так сильно пропиарены и трудно потешить своё самолюбие фактом "я работаю в самой распиаренной конторой в рунете"?
Здравствуйте, ggg, Вы писали:
A>>Только ты "разработка багтрекера" превратил в "разработка собственного багтрекера", и еще написал от себя замечательную фразу "И остальные по их мнению не подходят". Которая является явной ложью(и именно об этом я выразился). Кстати обрати внимание, ты уже не первый раз в этом дискусии пользуешься приемом "Сам какую-нибудь фигню придумаю, а потом на основе этой придуманной фигни докажу оппоненту, что он идиот" ggg>Я ещё на вот это наткнулся ggg>http://anatolix.livejournal.com/31526.html
Вот так совершенно случайно отлистал мой блог аж до 2005 года и наткнулся на сообщение где нет ни слова про багтракинг, а есть учет времени по задачам с гранулярностью в 1 день.
ggg>тут как раз тоже про Jira было, подумал, что "ноги" вакансии про разработку багтрекера отсюда растут.
Еще раз:
1) Ни одна из сылок которые ты привел, не позволяет сделать заключение, что "Мы делаем собственный багтрекер, т.к. остальные нам не подходят".
2) Ни одна из ссылок не позволяет тебе писать о том что нам подходит, а что нет, в особенности без слова imho или аналогов.
3) Вообще говоря информацию которая имеет примерно нулевой уровень достоверности принято сначала уточнять, а потом уже делать из нее выводы.
ggg>Послушайте, Анатоликс, я выводы делаю вовсе не на основе одной фразы, мне надо было раскрывать всю цепочку поисков?
Это конечно мое imho, но помоему ты что-то неправдивое сказал, а сейчас пытаешься срочно сфабриковать цепочку поисков, вместо того, чтобы просто сказать, что ты ошибся или перегнул палку, и притягиваешь записи совершенно не в тему. Выводы я сделал из того, что запись 2005 года в блоге нужно специально найти, т.к. запомнить ее с 2005 года нужно иметь очень хорошую память. Допущений при всех этих выводах сильно меньше сделано, чем в твоих объяснениях.
ggg>А "придуманная фигня, доказать оппоненту, что он идиот" — это невежливо. Более того, я никому не доказываю, что он идиот, и в мыслях не было. Странно, что Вам так показалось. Если такое агрессивное восприятие того, что Вам пишут (просто пишут в форуме), то неудивительно, что находятся люди, которых Ваше поведение оскорбляет при личных собеседованиях.
Тем не менее если посмотреть на историю account-а ggg, он на RSDN используется исключительно для наездов. Я на самом деле ничего не имею против логичной полемики, но последнее время приемы, которые ты используешь мне кажутся гораздо более неэтичными. В частности в этой дискуссии ты 2 раза применил один и тот же "запрещенный" прием полностью додумав сцену из вырванной из контекста фразы. Я просто тебе на это указал, без всякой агрессии. Ну вот хочется мне только за свои слова отвечать, а не за придуманные.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте, frogkiller, Вы писали:
C>>А задачка с гномами мне понравилась — на следующих собеседованиях попробую F>Имхо она уже стала очень известной, и есть большая вероятность, что кандидат знает её решение. F>Лучше уж задавать её сразу в виде коррекции кодов, проверите абстрактность мышления кандидата и в то же время его знакомство с нужной вам отраслью.
У меня потом будет вопрос читает ли человек RSDN
Здравствуйте, the_impish_one, Вы писали:
__>Предложение: А может быть массово заслать в Яндекс просьбу временно сменить человека на нелёгком посту принятия новых кандидатов? (Как наблюдение, недавно проходила конференция High Load — Anatolix скорей всего помнит ), и мой коллега (не тот, что в Яндексе) также отрицательно отозвался о манере вести себя Анатолия. В то же время его профессионализм опять же не ставился под сомнение.
__>В конце концов те вопросы, которые задавал Anatolix, могут осилить и десяток-другой сотрудников Яндекса. Может быть у них лучше получится в плане общения с кандидатами? А Anatolix отдохнёт, и может быть сделает для себя какие-то выводы.
На самом деле мнение о том, что я нанимаю всех кандидатов в Яндекс не верно. Я провел не больше 10-15(ну максимум 20) собеседований за последний год, это наверное меньше 5% людей. И давно хочу это кому-нибудь сплавить — времени очень много уходит. То что я просто зверь на собеседованиях не согласен.
А можно мне в anatolix at yandex[-team].ru описание того что именно вашему коллеге не понравилось?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте, Awaken, Вы писали:
L>>Так уж и в пользу? Уверен, что хороший программист вообще способен спросить "а какой тип наследования нужен"?
A>хароший программист скажет что наследование это плохо а агрегация это круто. и объяснит почему
Композиция еще круче
... << RSDN@Home 1.2.0 alpha rev. 772>>
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
Re[4]: Комментарий про собеседование + тестируем Anatolix
Здравствуйте, oraz, Вы писали:
O>Предлагаю участникам дискуссии, ради справедливости, "потестировать" господ из Яндекса (Anatolix et al) вопросами из своей O>области. O>Наверняка г-да из Яндекса знакомы с Berkeley DB и с Apache. Мои три вопроса такие:
Я не из Яндекса. Попробую ответить.
O>1) Почему в BDB для кеша лучше использовать shared memory, а не mmap, которая используется там по умолчанию?
А без разницы. Если база не разделяется между процессами — то вообще пофиг, механизм в shm и mmap один и тот же (в Линуксе).
O>2) В BDB в исходниках есть вставка ассемблерного кода, хотя в целом программа написана на С. Зачем она могла O>понадобиться? Разве средствами C/C++ нельзя было обойтись? Просьба в исходники не смотреть, так как вопрос на O>понимание проблем бд
Вероятно, кривые руки программистов или premature optimization (a.k.a. the root of all evil). Потому как PostgreSQL, MySQL и SQLite обходятся без ассемблера.
Заглянул в исходники BDB-4.6.21 — файл на ассемблере всего один, uts4_cc.s Еще ассемблерные вставки в mutex_int.h Используются для самодельных мьютексов, которые можно класть в shmem. Мда.
И уж к "проблемам БД" это никоим боком не относится.
O>3) Пусть есть прикладная программа, подлинкованная к Apache в качестве модуля. Пусть она считает какую-то статистику O>и заносит данные в ту же BDB. Серверу в целом надо обрабатывать одновременно порядка 30000 соединений по 1000 запросов O>в секунду. Вопрос: какое значение MaxClients вы бы установили в конфиге Apache, чтобы сервер в целом справился с этой нагрузкой?
Ответ: выкинуть Апач или переделать приложение. Нафиг не надо использовать для статистики BDB с ее никакой конкуррентностью. Или проще запустить ее в отдельном потоке, куда будут перекачиваться записи статистики.
Вообще, идиотские вопросы. На второй так вообще без телепатии не ответить. В общем, пиши ещё.
Добрый день
DR>>В этой теме уже засветилась задачка про гномов, к примеру.
КЛ>Предположим, Кандидат решил задачку про гномов и еще некоторые подобные задачки. Какой вывод из этого вытекает? Чем, по Вашему мнению, отличаются Кандидаты, которые решили, от Кандидатов, которые не решили? Что в рабочей деятельности они будут делать эффективнее или лучше?
КЛ>Конкретизирую вопросы: являются ли следующие утверждения следствиями решения задачки про гномов:
КЛ>Иное. Что?
Люди, которые в yandex'е "жгут" почти все замечательно решают задачи про гномов, пишут radix sort за по-часа на незнакомом ноуте, понимают, что в констукторах бывают исключения и вообще. И наоборот, люди, с которыми мы расстаемся, как правило, обладают противоположным свойством. Иными словами, опыт показывает, что данный способ отбора довольно эфективен. Такая формула собеседования появилась недавно и доказала свое право на жизнь.
Здравствуйте, AntZ, Вы писали:
AZ>Мне кажется что неприятие вызвал именно тот факт, что приговор вынес единственный человек и привел его в исполнение — изгнал кандидата.
Да не единственный он конечно был.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
N>к | б б б к к к N>7 | 6 5 4 3 2 1
N>7й гном видит впереди 3 белых, 3 красных, оба нечетные, но договорились на четность. Называет например "белый". Гнома съели. N>6й гном помнит, что они всей компанией договорились называть "четность". Видит впереди себя 2 белых и с уверенностью говорит "красный". Съели гнома. 7й гном падлец, всех обманул. Остальные гномы в панике... выживаемость под вопросом
Ладно, еще раз. Перечитал свои посты и понял, что я не совсем полно описал договоренность между гномами. Итак, гномы должны договориться так: последний гном говорит "белый", если число белых шляп перед ним четное, и "красный" — если число белых шляп перед ним нечетное.
В приведенном примере гном говорит "красный" (видит 3 белых шляпы) и спасается. 6-й гном знает, что кол-во белых шляп нечетное, видит пере собой 2 белые и говорит "белая" и т.п.
Вот.
<< Самое главное — это деньги, а здоровье приходит и уходит. >>
DR>Люди, которые в yandex'е "жгут" почти все замечательно решают задачи про гномов, пишут radix sort за по-часа на незнакомом ноуте, понимают, что в констукторах бывают исключения и вообще. И наоборот, люди, с которыми мы расстаемся, как правило, обладают противоположным свойством. Иными словами, опыт показывает, что данный способ отбора довольно эфективен. Такая формула собеседования появилась недавно и доказала свое право на жизнь.
Логично! Как могут жечь в Yandex люди с которыми вы расстаетесь? Их же поди в Яндекс не пускают, чтобы чего-нибудь пожечь. Логика просто железная!
Здравствуйте, AntZ, Вы писали:
__>>Предложение: А может быть массово заслать в Яндекс просьбу временно сменить человека на нелёгком посту принятия новых кандидатов? (Как наблюдение, недавно проходила конференция High Load — Anatolix скорей всего помнит ), и мой коллега (не тот, что в Яндексе) также отрицательно отозвался о манере вести себя Анатолия. В то же время его профессионализм опять же не ставился под сомнение.
AZ>Я тоже почитал. Столько дерьма друг на друга вылили. Вот что реально не понравилось, что Anatolix не один раз использовал выражение "ты лжешь". Получается все врут, а Anatolix выводит всех на чистую воду?
Ты знаешь я вообще спокойный человек, но вот бывает раздражаюсь. Здесь это было 2 раза — оба раза просто по поводу того, что человек приписал мне некоторые действия которые я не совершал, или слова которые я не говорил. Да я считаю, что данного человека уместо вывести на чистую воду. Или ты тоже считаешь что, то что я работаю в Яндексе не позволяет мне себе защищать, или иметь чувство собственного достоинства?
P.S. Все-таки конечно же было не "ты лжешь", а "это ложь". Это маленько разные фразы.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[4]: Комментарий про собеседование + тестируем Anatolix
Здравствуйте, oraz, Вы писали:
O>Наверняка г-да из Яндекса знакомы с Berkeley DB и с Apache. Мои три вопроса такие:
Сразу оговорюсь, что никогда не работал с berkley db, поэтому ответов у меня нету — только предположения. Тем не менее поскольку здесь вроде все согласны, что хорошее собеседование не на знание, а на понимание — попробую:
O>1) Почему в BDB для кеша лучше использовать shared memory, а не mmap, которая используется там по умолчанию?
Вообще неплохо было бы сказать, что именно за кэш, где он лежит, что от него хочется и стирается ли/синхронизируется ли он, например, при кончине процесса. Буду угадывать телепатически. Я не знаю как именно используется shared memory в BDB, знаю только, что такое вообще shared memory.
Могу предположить 2 варианта:
1) Чтобы кэш был только в памяти, и не писался на диск(для этого imho memcached лучше подходит).
2) Чтобы процесс с кэшом висел отдельно и к нему можно было цепляться клиентами которые дохнут часто.
Что здесь эффективность как-то при чем сомневаюсь — на системах с которыми я работаю(и работает значительное количество всех остальных людей) shared memory реализован через mmap. За все системы не поручусь.
O>2) В BDB в исходниках есть вставка ассемблерного кода, хотя в целом программа написана на С. Зачем она могла O>понадобиться? Разве средствами C/C++ нельзя было обойтись? Просьба в исходники не смотреть, так как вопрос на O>понимание проблем бд
Без понятия. Обычно так работают с какими нибудь Atomic-ами без системного вызова. Много где видел собственные atomic-и реализованные как asm {lock: cmpxchg }. Еще это могут быть инструкции типа типа SSE которые компилятор написать внятно не может, а человек может. Есть некоторые сомнения, что без ассемблера таки совсем нельзя их написать. Я думаю можно, просто менее эффективно. Плюс BDB работает на многих системах, у части из них ассемблер разный. Сомневаюсь, что там есть универсальная вставка на ассемблере для всего.
O>3) Пусть есть прикладная программа, подлинкованная к Apache в качестве модуля. Пусть она считает какую-то статистику O>и заносит данные в ту же BDB. Серверу в целом надо обрабатывать одновременно порядка 30000 соединений по 1000 запросов O>в секунду. Вопрос: какое значение MaxClients вы бы установили в конфиге Apache, чтобы сервер в целом справился с этой нагрузкой?
O>а) 300 O>б) 3000 O>в) 30000 O>г) другое
Для начала нужно все-таки сказать какой apache — 1.x или 2.x — вернее с тредами он или с процессами, т.к. второй вроде как и процессами умеет. Опять угадываю телепатически. Судя по классическому вопросу подразумевается классический ответ для первого апача с процессами. Расскажу для него.
Первый apache использует fork() для размножения, поэтому каждый apache это честный процесс. Соотвественно это приводит к тому, что тебя реально будет запущено столько же процессов с BDB сколько apache-ей расфоркано. Ставить в запредельное количество процессов я бы просто не стал, т.к. если каждый процесс например по 100M то много их просто не влезет. Возможно у BDB есть настройка с той самой shared memory которая позволяет это обходить(но я про нее не знаю), но тем не менее тысячи процессов я бы точно ставить не стал, даже если бы там никакой BDB не было.
Т.е. методом исключения я бы оставили 300 или другое. 300 наверное на современном сервере нормальное число, остальные клиенты подождут в очереди.
Тем не менее я бы поверх такого apache поставил nginx или лайти, потому как 30000 клиентов и всего 1000 запросов в секунду клиентов все-таки предполагают keep-alive. Т.е. правильный ответ "другое". В этом случае количество процессов апача я бы подобрал "до упора" самого прогруженного ресурса системы, т.е. если они все только CPU жрут и нигде не блокируются — то про количеству ядер. Если памяти не хватает — по количеству памяти. Если на диске блокируются, то до 95% загрузки диска.
P.S. Куда я собеседование сдавал(и почему мне заранее не рассказали про проект )? Сдал? Какая зарплата ?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Вообще полностью согласен, и более того именно так и делаем.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[7]: Комментарий про собеседование + извинения за часть пу
Здравствуйте, Checkist82, Вы писали:
C>Здравствуйте, LazyWorker, Вы писали:
C>Честный отзыв направленный на понижение самооценки человека и развитие его комплексов принесет больше вреда, чем пользы.
C>По-моему это ерунда и сопли для слабаков. Когда мне сказали:"Парень ты ноль, при чём с издёвкой." (а сказали после того, как я два года отработал программистом и имел в багаже релиз ПО, используемого на реальных объектах), я стиснул зубы, закупил кофе и сидел после работы по ночам до полного одурения, высыпаясь только раз в неделю в выходные, не стесняясь перечитывать самые простые базовые вещи, щупать ручками самые простейшие операции с контейнерами. К настоящему моменту я имею пусть и небольшую, но твёрдую базу знаний в голове, за которую могу досконально отвечать. А люди, которые расклеиваются из-за того, что видишь ли кто-то сказал ему нулец — просто слабаки, тепличные домашние сопляки со скорее всего завышенной самооценкой, базирующейся на бабушкином: "Ты у меня самый умненький в мире, вот тебе булочка".
Вот стишнешь ты зубы еще раз этак 10, выпьешь цистерну кофе
и потом скажешь кому-нибудь (естественно тоже с издевкой, а иначе такое сказать невозможно): "Парень ты ноль".
И будет это называться "преемственность поколений"
Здравствуйте, Кирилл Лебедев, Вы писали:
DR>>В этой теме уже засветилась задачка про гномов, к примеру. КЛ>Предположим, Кандидат решил задачку про гномов и еще некоторые подобные задачки. Какой вывод из этого вытекает? Чем, по Вашему мнению, отличаются Кандидаты, которые решили, от Кандидатов, которые не решили? Что в рабочей деятельности они будут делать эффективнее или лучше?
Это:
КЛ>Получив документ с описанием архитектуры модуля, Кандидат может грамотного его реализовать на заданном языке программирования?
Здравствуйте, CreatorCray, Вы писали:
CC>АААА!!! CC>Это ж как так? Никакого STL. Даже CRT! Даже WinAPI и NTAPI нельзя???? И ОС под себя писать самому? CC>