Здравствуйте, __kot2, Вы писали:
__> я москву вообще никогда не рассматривал — я себя там как по колено в навозе в циганском таборе ощущаю. все страшно дорого и жутко некачественно.
Мда. Похоже ненависть к москве и москалям ты впитал с молоком матери
Здравствуйте, mucks, Вы писали: M>Здравствуйте, __kot2, Вы писали: __>> я москву вообще никогда не рассматривал — я себя там как по колено в навозе в циганском таборе ощущаю. все страшно дорого и жутко некачественно. M>Мда. Похоже ненависть к москве и москалям ты впитал с молоком матери
нет у меня ненависти к москве. как нет ненависти, например, к тонне навоза. я по делам прохожу мимо этой кучи навоза раз в несколько лет, зажав нос и ес-но не хочу переезжать поближе к ней, хотя, говорят, что чем ближе к вершине кучи, тем больше платят. нет, не стоит оно того.
Здравствуйте, Олег К., Вы писали:
ОК>Это где ты тут проблемы увидел? Я говорил о простом списке автором которого бы ты являлся.
В твоем первом посте на эту тему говорилось о том, что нечего выделываться, очевидное решение — это в лоб с добавлением флажка в список. И ничего не говорилось о предположении, что ты — автор списка. И ты даже не спросил: а кто создает/использует список? Так что ты сходу предложил решение в лоб, даже не узнав требования и ограничения в задаче...
ОК>Ты лучше ответь на последний вопрос. При каких таких обстоятельствах у тебя может получиться зацикленный список в памяти?
1) если тебе нужен пример конкретного ответа, пожалуйста: p->next = p; // tell me that this is technically impossible
2) а реально, какая разница, что за задача на интервью. Еще раз повторюсь, главное оценить мышление и подход кандидата. Что он принимает во внимание, как принимает решения, насколько обдуманы и обоснованы они и т.п.
ОК>>Это где ты тут проблемы увидел? Я говорил о простом списке автором которого бы ты являлся.
S>В твоем первом посте на эту тему говорилось о том, что нечего выделываться, очевидное решение — это в лоб с добавлением флажка в список. И ничего не говорилось о предположении, что ты — автор списка.
Повторюсь еще раз. Ты как бы пишешь функциональность для своего класса а не для какого-то чужого с непонятно каким интерфейсом.
S>И ты даже не спросил: а кто создает/использует список? Так что ты сходу предложил решение в лоб, даже не узнав требования и ограничения в задаче...
Ты уже доводишь задачу до маразма. Когда я слышу задачу о связанном списке, то я понимаю что имеется в виду мой список в памяти а не какой-нибудь чужой да еще и на диске, например. Если ты хочешь услышать какое-то конкретное решение, то и ставь задачу соответствующим образом.
Вообще мне эти твои измышления напоминают задачу о доме где интервьюироемого просят задизайнить дом и в ответ ожидают услышать список вопросов для какой семьи, сколько комнат, какой бюджет и прочий маразм.
ОК>>Ты лучше ответь на последний вопрос. При каких таких обстоятельствах у тебя может получиться зацикленный список в памяти?
S>1) если тебе нужен пример конкретного ответа, пожалуйста: p->>next = p; // tell me that this is technically impossible
Ты не считаешь что это все-таки логическая ошибка и при правильном коде такого быть просто не может?
S>2) а реально, какая разница, что за задача на интервью. Еще раз повторюсь, главное оценить мышление и подход кандидата. Что он принимает во внимание, как принимает решения, насколько обдуманы и обоснованы они и т.п.
Ну вот я об этом же и говорю. Интервью это two way process. По задачам которые задает интервьюер тоже можно сказать что из себя представляет спрашивающий. Или ты думал что только интервьюируемого оценивать можно?
Ищу напарника для совместной подготовки к technical interview.
Если ваша цель устроится в Microsoft или другую крупную US компанию и вы работаете в этом направлении то мы пригодимся друг другу.
Пишите на почту мой_никнейм_на_форуме@gmail.com
Здравствуйте, Олег К., Вы писали:
S>>Если ты не знаешь про два поинтера — это же здорово! Есть возможность подумать. ОК>Это именно что не здорово. Это изврат. Самое просто решение это с дополнительной переменной в узле либо заносить адреса пройденых нодов в какой-нибудь сет. Все. Думать больше не надо. Вместо этого какие-то извращенцы хотят изврат в виде двух пойнтеров.
Такое простое решение имеет вполне очевидные недостатки.
std::set потребует дополнительной памяти. Если узлов в списке много (а речь идёт о MS Ads, там могут быть вполне приличные объёмы данных), то это может оказаться существенным. Я не смотрел, что там внутри std::set, но подозреваю что там дерево. Т.е. на хранение каждого значения потребуется хранить ещё два указателя на нижележащие элементы. Тогда поиск циклов в списке на 100 Млн узлов потребует 2.4 Гб памяти (24 байта на каждый элемент) на размещение std::set на 64-битной системе.
Дополнительная переменная также имеет очевидные недостатки. Во-первых, лишняя память, во-вторых — появляется проблема инициализации этой переменной в значение false перед обходом. Эту проблему уже описывали где-то выше. У вас есть решение?
ОК>Ты не понял моего пойнта. Мой пойнт в том что эта задачка уж никак не проверяет как человек может думать.
Здесь соглашусь. Если человек не смог найти оптимальное решение за 5 минут на глазах интервьюера — это вовсе не значит, что он не сможет найти это решение во время работы. Пусть не за 5 минут, а за час — разницы особой нет. Плюс, эффект обучаемости — один раз столкнувшись с такой проблемой и поняв суть её решения, в следующий раз человек решит её сходу. Но это не значит, что он стал умнее — это уже просто опыт.
S>>>Если ты не знаешь про два поинтера — это же здорово! Есть возможность подумать. ОК>>Это именно что не здорово. Это изврат. Самое просто решение это с дополнительной переменной в узле либо заносить адреса пройденых нодов в какой-нибудь сет. Все. Думать больше не надо. Вместо этого какие-то извращенцы хотят изврат в виде двух пойнтеров.
_>Такое простое решение имеет вполне очевидные недостатки.
Это уже trade-off между понятностью решения и потребностью к памяти. Все это, разумеется, понятно.
_>std::set потребует дополнительной памяти. Если узлов в списке много (а речь идёт о MS Ads, там могут быть вполне приличные объёмы данных), то это может оказаться существенным. Я не смотрел, что там внутри std::set, но подозреваю что там дерево.
Говоря сет, я говорил о неком абстрактном сете, не имя в виду конкретный std::set. Тут человек привел решение в котором выделил по биту для своей конкретной задачи.
_>Т.е. на хранение каждого значения потребуется хранить ещё два указателя на нижележащие элементы. Тогда поиск циклов в списке на 100 Млн узлов потребует 2.4 Гб памяти (24 байта на каждый элемент) на размещение std::set на 64-битной системе.
Неплохой такой связанный список в памяти.
_>Дополнительная переменная также имеет очевидные недостатки. Во-первых, лишняя память, во-вторых — появляется проблема инициализации этой переменной в значение false перед обходом. Эту проблему уже описывали где-то выше. У вас есть решение?
Я тут уже пару раз повторил что это надуманная проблема. Ну а какое решение может у надуманной проблемы?
И bool на каждый узел списка не так уж и много. Можно еще битовые поля использовать если нужны другие флаги.
ОК>>Ты не понял моего пойнта. Мой пойнт в том что эта задачка уж никак не проверяет как человек может думать.
_>Здесь соглашусь. Если человек не смог найти оптимальное решение за 5 минут на глазах интервьюера — это вовсе не значит, что он не сможет найти это решение во время работы. Пусть не за 5 минут, а за час — разницы особой нет. Плюс, эффект обучаемости — один раз столкнувшись с такой проблемой и поняв суть её решения, в следующий раз человек решит её сходу. Но это не значит, что он стал умнее — это уже просто опыт.
Я не согласен с этим параграфом но по другим причинам (которые описал в других постах).
Здравствуйте, techgl, Вы писали:
T>Здравствуйте, Denis, Вы писали:
D>>значит вы просто не работаете с графами. T>Как раз в алгоритмах на графах происходит раскраска вершин, потому что это понятно интуитивно. Если же ты говоришь про смежные списки для представления графа, то там список будет использоваться библиотечный, и откуда там цикл возьмется?
я не знаю что там возьментся, я про то, что это как раз задача очень похожая на ту, что я решал недавно. да и вообще разговор, что не ту задачу дали, разговор в пользу бедных. что хотят то и дают, не нравится, не работай у них, вроде как рабство отменили. мне данная задача помогает найти как раз таких нытиков
D>>>значит вы просто не работаете с графами. T>>Как раз в алгоритмах на графах происходит раскраска вершин, потому что это понятно интуитивно. Если же ты говоришь про смежные списки для представления графа, то там список будет использоваться библиотечный, и откуда там цикл возьмется?
D>я не знаю что там возьментся, я про то, что это как раз задача очень похожая на ту, что я решал недавно. да и вообще разговор, что не ту задачу дали, разговор в пользу бедных. что хотят то и дают, не нравится, не работай у них, вроде как рабство отменили. мне данная задача помогает найти как раз таких нытиков
Ты прав. Пусть что хотят то и дают но, почему-то, те кто давали мне эту задачу давали также задачи типа как обменять содержимое двух переменных через XOR или сложение/вычитание.
ОК>Решение в лоб — добавить в каждый узел bool visited и проверять при обходе, но нет, нужен какой-то изврат с двумя пойнтерами.
ну-ну. ты под каждый алгоритм собрался структуру данных изменять и подгонять?
ОК>В общем ничего вторая задачка не демонстрирует кроме глупости ее спрашивающего.
зато твое "решение" очень многое демонстрирует.
ОК>>Решение в лоб — добавить в каждый узел bool visited и проверять при обходе, но нет, нужен какой-то изврат с двумя пойнтерами. M>ну-ну. ты под каждый алгоритм собрался структуру данных изменять и подгонять?
А ты кто такой чтобы ну-нукать тут?
Этот алгоритм, хоть и для надуманной задачи, является частью общего абстрактного типа под названием связанный список. Поэтому вполне естественно добавить в него вспомогательные переменные которые помогут решить задачу.
ОК>>В общем ничего вторая задачка не демонстрирует кроме глупости ее спрашивающего. M>зато твое "решение" очень многое демонстрирует.
Один из любителей задавать этот идиотизм? Посмотри тут остальные ответы прежде чем писать. Ничего нового ты тут сейчас не сказал.
ОК>>Я тут уже пару раз повторил что это надуманная проблема. Ну а какое решение может у надуманной проблемы?
D>тут уже пару раз упоминали, что ненадуманная вариация этой проблемы -- это найти период последовательности псевдослучайных чисел
И для решения этой твоей проблемы непременно нужен связанный список?
D>>тут уже пару раз упоминали, что ненадуманная вариация этой проблемы -- это найти период последовательности псевдослучайных чисел
ОК>И для решения этой твоей проблемы непременно нужен связанный список?
зачем? Я же пишу вариация, а не частный случай.
Общая задача формулируется так -- по объекту ты можешь получить следующий объект. И ты можешь сравнить 2 объекта на равенство. И у тебя есть последовательность -- начальный объект, следующий, следующий за следующим и т.д.
Найти период цикла.
Установить зациклен ли связный список это один частный случай этой проблемы. Найти период псевдослучайных чисел -- другой.
(Если список не зациклен то это означает что он попадает в конце в терминальное состояние NULL и дальше все время NULL -- то есть период равен 1 и состоит из одного NULL).
Здравствуйте, Denis, Вы писали:
D>я не знаю что там возьментся, я про то, что это как раз задача очень похожая на ту, что я решал недавно. да и вообще разговор, что не ту задачу дали, разговор в пользу бедных. что хотят то и дают, не нравится, не работай у них, вроде как рабство отменили.
Дело в том, что я в ответ на просьбу написал свое мнение об собеседовании. Оно не было восторженно-одобрительным и тут же налетела толпа белых рыцарей что-то там доказывать.
D>мне данная задача помогает найти как раз таких нытиков
Детектор? Да за ради бога. Только есть нюанс, я не ныл, а просто написал свое впечатление. И таки представь себе, иногда впечатления бывают негативными. Не получается, понимаешь, у Microsoft всем угодить
Меня послали после второго интервью.
Задачи были atoi, угол между стрелками в часах, поиск циклов в связном списке, и удаления дубликатов из отсортированного массива.
После сбс отправил expense reimbursement форму но никаких ответов от микрософта больше не было кроме стандартного письма с отказом.
Наверное добавили в спам фильтр...70 баксов очень жалко... кому так оффер дали! суки, скиньтесь мне по полтиннику!
Короче HR'ы везде исключительные говноеды. это печально
Здравствуйте, bot1984, Вы писали:
B>После сбс отправил expense reimbursement форму но никаких ответов от микрософта больше не было кроме стандартного письма с отказом.
Интересовался на эту тему, ибо сумма для меня значительная была. Сказали что от 4 до 6 недель ждать. Так что еще рано.
Здравствуйте, yoriсk.kiev.ua, Вы писали:
YKU>Да конечно ничего нет плохого. Еще освежить в памяти работук с графикой, обход графов двумя поинтерами, контролы(хотя-бы сандартные), протоколы ну и мат. бекграунд подвспомнить... Что-бы на новой работе на 3-5 лет засеть за разработку каких-то внутренних компонентов системы.
Вспоминается мое собеседование в ABBYY: штук шесть олимпиадных задачек на входе (из которых только одна была довольно интересной, две знал еще со школы, одну читал здесь в Этюдах) чтоб узнать что меня предпологается засадить писать ГУЙ для Симбиана (который я лично терпеть не мог и упомянул только в списке вторичных скиллов).
Здравствуйте, bot1984, Вы писали:
B>Меня послали после второго интервью. B>Задачи были atoi, угол между стрелками в часах, поиск циклов в связном списке, и удаления дубликатов из отсортированного массива. B>После сбс отправил expense reimbursement форму но никаких ответов от микрософта больше не было кроме стандартного письма с отказом. B>Наверное добавили в спам фильтр...70 баксов очень жалко... кому так оффер дали! суки, скиньтесь мне по полтиннику!
B>Короче HR'ы везде исключительные говноеды. это печально
вредный ты какой-то.
я написал своему HR по поводу reimburesement. Она ответила через неделю — прислала формы для заполнения.
Заполнил, отослал. Через пару недель или вроде того ко мне приехал курьером чек от Citi Bank.
Вот тут началось интересное.
В общем, надо завести счет в Ситибанке (никакой другой банк в Петербурге, который бы смог обналичить этот чек, я не нашел).
Без счета не обналичат.
Через 2-3 дня после открытия счета принес им чек.
Они отправляют его назад в US (на инкасо?).
Примерно через месяц зачисляется бабло на твой счет.
Комиссия — 25 баксов.
Так что расчитывай, что деньги получишь месяца через 2.
Здравствуйте, Константин Л., Вы писали:
КЛ>Здравствуйте, bot1984, Вы писали:
B>>Меня послали после второго интервью. B>>Задачи были atoi, угол между стрелками в часах, поиск циклов в связном списке, и удаления дубликатов из отсортированного массива. B>>После сбс отправил expense reimbursement форму но никаких ответов от микрософта больше не было кроме стандартного письма с отказом. B>>Наверное добавили в спам фильтр...70 баксов очень жалко... кому так оффер дали! суки, скиньтесь мне по полтиннику!
B>>Короче HR'ы везде исключительные говноеды. это печально
КЛ>вредный ты какой-то.
КЛ>я написал своему HR по поводу reimburesement. Она ответила через неделю — прислала формы для заполнения. КЛ>Заполнил, отослал. Через пару недель или вроде того ко мне приехал курьером чек от Citi Bank. КЛ>Вот тут началось интересное. КЛ>В общем, надо завести счет в Ситибанке (никакой другой банк в Петербурге, который бы смог обналичить этот чек, я не нашел). КЛ>Без счета не обналичат. КЛ>Через 2-3 дня после открытия счета принес им чек. КЛ>Они отправляют его назад в US (на инкасо?). КЛ>Примерно через месяц зачисляется бабло на твой счет. КЛ>Комиссия — 25 баксов.
КЛ>Так что расчитывай, что деньги получишь месяца через 2.
Да ладно вредный. Просто перед интерью отвечали в течении дня. А после, совсем не отвечают вот что не приятно.
Форму отправил месяц назад.