Собеседование в Microsoft. Как готовиться?
От: Ilias  
Дата: 04.03.12 10:33
Оценка: -4
Они скоро опять приезжают (говорят, что с 30 марта). Хочется поготовиться к собеседованию.

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

1. На рассуждение. Типа "сколько шариков от пинг-понга поместится внутрь самолета" и т.д.
Тут, как я понимаю, готовиться особо нечего, надо просто уметь рассуждать, предлагать варианты, рассматривать проблему с разных сторон и т.д.

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

3. На программирование. Не менее любимая задачка о развороте списка и т. д.
Вот тут самое сложное — не очень понятно в какие области смотреть, что вспоминать, насколько глубоко.
Структуры данных — списки, деревья, хеш-таблицы, графы — что про них надо знать, насколько глубоко в детали имеет смысл влезать?
Алгоритмы — сортировка, поиск, динамическое программирование, жадные алгоритмы, оценки быстродействия, что-то еще? Что тут надо уметь?

Очень нравится эта
Автор: De-Bill
Дата: 22.09.11
тема с похожими вопросами, но про "mathematical questions" — уж очень четко там темы накидали в ответах.

Спасибо
microsoft interview questions
Re[5]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 16:39
Оценка: -3 :)
Здравствуйте, blackhearted, Вы писали:

B>Здравствуйте, мыщъх, Вы писали:


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


B>какие проверки выполняет команда деления? в каком языке?

main(){ return 1/0;}

$cl 1.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

1.c
1.c(1) : error C2124: divide or mod by zero

учите мат чать матъ вашу.
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.
Re: Собеседование в Microsoft. Как готовиться?
От: qqqqq  
Дата: 07.03.12 03:08
Оценка: 1 (1) +2
А вот интересно, если в микрософте все такие эксперты в алгоритмах, сортировках, деревьях, и гномах, то почему когда в Outlook надо отсортировать емейлы по другому, типа было по дате а хочешь по фамилии отправителя, то он частенько конкретно так задумывается, прочем когда и сообщений в списке не так уж и много. И не только Оутглюк, даже и explorer за этим замечен. Алгоритмы там только на собеседовании что-ли нужны?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Собеседование в Microsoft. Как готовиться?
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 05.03.12 17:50
Оценка: 4 (2)
Здравствуйте, Ilias, Вы писали:
I>Они скоро опять приезжают (говорят, что с 30 марта). Хочется поготовиться к собеседованию.
I>Насколько я понимаю, на очном интервью могут быть три типа задач.
вообще типов задач может быть бесконечно много , все зависит от интервьевера

I>1. На рассуждение. Типа "сколько шариков от пинг-понга поместится внутрь самолета" и т.д.

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

я не слышал ниразу задачи такого плана. это гугло задачи. готовится можно, есть отменная книга, которая читается очень интересно
Are You Smart Enough to Work at Google?
http://www.amazon.com/Are-Smart-Enough-Work-Google/dp/031609997X/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1330969473&amp;sr=1-1

я получил удовольствие от ее чтения


I>2. На сообразительность, на умение решать головоломки.


ту да же куда и предыдущий вопрос.

I>3. На программирование. Не менее любимая задачка о развороте списка и т. д.


1. Cracking the Coding Interview: 150 Programming Questions and Solutions
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X/ref=pd_bxgy_b_text_c

2. Algorithms For Interviews
http://www.amazon.com/Algorithms-Interviews-Adnan-Aziz/dp/1453792996/ref=pd_sim_b_5

3. The Algorithm Design Manual
http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ref=pd_sim_b_7

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

самое интересное что часто встречаются задачки отсюда:
Programming Pearls
http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880/ref=pd_sim_b_4


как-то так. знаю человека которые прошел книжки из нумерованного списка за месяц и получил оферы из МС, Циско, Амазон и пр.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[7]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 18:37
Оценка: :)
Здравствуйте, blackhearted, Вы писали:

B>Здравствуйте, мыщъх, Вы писали:


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


B>>>Здравствуйте, мыщъх, Вы писали:


М>>1.c(1) : error C2124: divide or mod by zero

М>>учите мат чать матъ вашу.
B>Команда деления или компилятор?
процессор выбросит исключение. язык может его обрабатывать самостоятельно или игнорировать, но тогда его обработает ось и приложение помрет.

1>>------ Build started: Project: test, Configuration: Release Win32 ------

офигеть. а ключи компиляции кто показывать будет? показывайте весь код с ключами компиляции. есть подозрение, что если вы не используете результат деления, то его выкинул оптимизатор. проверяется это просто — при запуске программы не будет исключения. кстати, на результат деления на нуль я бы посмотрел...
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.
Re[4]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 18:59
Оценка: +1
Здравствуйте, anomander, Вы писали:

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


A> Это все конечно здорово, но, думаю, что не ошибусь, если скажу, что в большинстве мест,

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

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

так же имеет смысл обсуждать возможность "натянуть" на дерево список. в этом случае его обход -- тривиален. и гибридные структуры данных по типу "список-дерево" очень даже рулят. список делает обход нересурсоемкой операцией не требующей выделения памяти, а если еще список является гибридом списка с массивом, то исключаются и циклические ссылки, т.к. мы пребираем только индексы.

> возможные проблемы (в зависимости от используемых языков, технологий и других факторов).

вот-вот. разворот списка сильно зависит от языка и от наличия в нем тех или иных средств.

> Где-то, возможно, пройдет ваш подход, но я бы посчитал его увиливанием от ответа

> и сначала вывел бы на прямой ответ, а затем уже обсуждал особенности.
если вы хотите меня завалить, то я даже не буду сопротивляться -- валите. если вам нужен специалист, который пишет программы, которые работают 24/7 -- по моим "увиливаниям" вы поймете, что я уже сталкивался с такими проблемами и для меня не будет новостью, что дерево каталогов это не дерево и что алгоритмы обхода дерева работают только в ms-dos, да и то при условии целостности файловых структур.
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.
Re[2]: Собеседование в Microsoft. Показуха
От: Klatu  
Дата: 07.03.12 07:14
Оценка: +1
Здравствуйте, qqqqq, Вы писали:

Q>А вот интересно, если в микрософте все такие эксперты в алгоритмах, сортировках, деревьях, и гномах, то почему когда в Outlook надо отсортировать емейлы по другому, типа было по дате а хочешь по фамилии отправителя, то он частенько конкретно так задумывается, прочем когда и сообщений в списке не так уж и много. И не только Оутглюк, даже и explorer за этим замечен. Алгоритмы там только на собеседовании что-ли нужны?


У микрософтовцев можно найти еще много примеров, где они слажали при решение довольно тривиальных задач.
Потому что эти собеседования — показуха. Один спрашивает вызубренные вопросы, другой отвечает такие же вызубренные ответы.
Re[6]: Собеседование в Microsoft. Как готовиться?
От: Privalov  
Дата: 07.03.12 07:44
Оценка: :)
Здравствуйте, мыщъх, Вы писали:

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


С чего при делении на ноль должна быть бесконечность?

Если x/0 = ∞, то ∞*0 = x, где x — произвольное заранее определенное значение. И теперь если задавать значения x, что мы получим при проверке деления умножением?
Re[3]: Собеседование в Microsoft. Как готовиться?
От: sql13 США  
Дата: 08.03.12 18:03
Оценка: +1
Здравствуйте, SingleUseAccount, Вы писали:

SUA>Насколько мне известно, для MS важнее не подход, а именно факт решения плюс способность доказать его корректность. Так что вполне себе экзамен.


Для принятия решения делать или не делать оффер важны вердикты hire/no hire всех участвующих. А уж они могут быть основаны на чем угодно: подходе, факте решения, или great potential. Хочется верить, что большинство интевьюеров все-таки больше смотрит на подход (ну и отсутствие грубых ошибок в решении), а не на факт "самого правильного решения". Хотя все они — разные люди, и каждый сам выбирает задачу, которую он/она хочет дать. Так что как уже тут было замечено, все зависит от того, кто интервьюирует. И если эти люди не очень адекватны, то наверное, в эту команду и идти не стоит.

По поводу гномиков и прочих гор Фудзи: насколько мне известно, официально такие задачи более не рекомендуются. Хотя кто знает, может кто-то все еще практикует
Re: Собеседование в Microsoft. Как готовиться?
От: SemiCoder США  
Дата: 04.03.12 20:03
Оценка:
Здравствуйте, Ilias, Вы писали:

I>3. На программирование. Не менее любимая задачка о развороте списка и т. д.

I>Вот тут самое сложное — не очень понятно в какие области смотреть, что вспоминать, насколько глубоко.
I>Структуры данных — списки, деревья, хеш-таблицы, графы — что про них надо знать, насколько глубоко в детали имеет смысл влезать?
I>Алгоритмы — сортировка, поиск, динамическое программирование, жадные алгоритмы, оценки быстродействия, что-то еще? Что тут надо уметь?
I>

I>Очень нравится эта
Автор: De-Bill
Дата: 22.09.11
тема с похожими вопросами, но про "mathematical questions" — уж очень четко там темы накидали в ответах.


Вот что меня спрашивали — для примера:
1. Напишите код для организации Стека. Интересуют функции Push & Pop.
2. Сделайте их thread-safe с помощью http://msdn.microsoft.com/en-us/library/windows/desktop/ms683609%28v=vs.85%29.aspx.
У вас есть не более 10 минут — нужно прочитать страничку msdn (есть ноут.), посмотреть на свой код на бумажке и применить.
Re[2]: Собеседование в Microsoft. Как готовиться?
От: Ilias  
Дата: 05.03.12 10:38
Оценка:
Здравствуйте, SemiCoder, Вы писали:

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


SC>Вот что меня спрашивали — для примера:

SC>1. Напишите код для организации Стека. Интересуют функции Push & Pop.
SC>2. Сделайте их thread-safe с помощью http://msdn.microsoft.com/en-us/library/windows/desktop/ms683609%28v=vs.85%29.aspx.
SC> У вас есть не более 10 минут — нужно прочитать страничку msdn (есть ноут.), посмотреть на свой код на бумажке и применить.

И это всё что там было? На 3-5 интервью всего две задачи? Просто эти ну совсем простые. Как-то ожидал гораздо более сложных.
Re: Собеседование в Microsoft. Как готовиться?
От: demi США  
Дата: 05.03.12 18:51
Оценка:
Здравствуйте, Ilias, Вы писали:

Тык careercup.com
Не стыдно попасть в дерьмо, стыдно в нём остаться!
Re[2]: Собеседование в Microsoft. Как готовиться?
От: abibok  
Дата: 05.03.12 19:39
Оценка:
SC>2. Сделайте их thread-safe с помощью http://msdn.microsoft.com/en-us/library/windows/desktop/ms683609%28v=vs.85%29.aspx.

Задача с уловкой: если вы сумели сделать класс контейнера thread-safe, то это минус.
Re[3]: Собеседование в Microsoft. Как готовиться?
От: 4msg  
Дата: 06.03.12 01:56
Оценка:
Здравствуйте, abibok, Вы писали:

SC>>2. Сделайте их thread-safe с помощью http://msdn.microsoft.com/en-us/library/windows/desktop/ms683609%28v=vs.85%29.aspx.


A>Задача с уловкой: если вы сумели сделать класс контейнера thread-safe, то это минус.


А здесь
Автор: Шахтер
Дата: 29.10.03
пишут, что таки можно сделать. Или я что то не так понял?
Re[4]: Собеседование в Microsoft. Как готовиться?
От: abibok  
Дата: 06.03.12 02:05
Оценка:
Вот задача объяснить почему этого делать нельзя (т.е. технически возможно, но лучше не надо) — куда более интересный вопрос для обсуждения на интервью, чем написание стека. Это как с наследованием эллипса от круга: если вы сумели, то показали свое знание основ языка программирования, а если не сумели — то показали глубокое понимание ООП и реальный опыт.
Re[3]: Собеседование в Microsoft. Как готовиться?
От: __lambda__ Россия http://zen-hacker.blogspot.com/
Дата: 06.03.12 03:13
Оценка:
Здравствуйте, Ilias, Вы писали:

SC>>Вот что меня спрашивали — для примера:

SC>>1. Напишите код для организации Стека. Интересуют функции Push & Pop.
SC>>2. Сделайте их thread-safe с помощью http://msdn.microsoft.com/en-us/library/windows/desktop/ms683609%28v=vs.85%29.aspx.
SC>> У вас есть не более 10 минут — нужно прочитать страничку msdn (есть ноут.), посмотреть на свой код на бумажке и применить.

I>И это всё что там было? На 3-5 интервью всего две задачи? Просто эти ну совсем простые. Как-то ожидал гораздо более сложных.


Самое интересное, что в соседних ветках от Паблика Морозова, сертифицированный MVP от MS с пеной у рта доказывает, что задача с переворотом списка слишком сложна для собеседований В то время, как в соседних ветках, обсуждают, что для поступления в этот же MS нужно написать thread-safe Stack.

Несколько лет назад слышал, что кому-то попалась задачка, где нужно было применить RB-tree.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 04:08
Оценка:
Здравствуйте, Ilias, Вы писали:

I>Они скоро опять приезжают (говорят, что с 30 марта). Хочется поготовиться к собеседованию.


I>1. На рассуждение. Типа "сколько шариков от пинг-понга поместится внутрь самолета" и т.д.

I>Тут, как я понимаю, готовиться особо нечего, надо просто уметь рассуждать, предлагать варианты, рассматривать проблему с разных сторон и т.д.
Cracking the Coding Interview: 150 Programming Questions and Solutions
книга очень хорошая. т.к. у меня есть богатый опыт собеседований чуть ли не по всему миру, то могу подтвердить, что примеры в книге даны вполне релевантные. так же в ней объясняется как интевьер будет направлять ваши мысли в поток создания, падающий дампом стремительного домкрата. в ms устроится относительно просто. у них самые базовые требования. никаких изысков.

I> 2. На сообразительность, на умение решать головоломки. Та самая любимая задача про гномов и тому подобные.

это не гномы, а коды коррекции ошибок. базовая матчать.

I> 3. На программирование. Не менее любимая задачка о развороте списка и т. д.

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

I> Вот тут самое сложное — не очень понятно в какие области смотреть, что вспоминать, насколько глубоко.

совсем недавно обсуждалась dos атака на разные языки программирования путем генерации post'а. вом вам и разница между "в среднем" и "в худшем" случае. вот такая подлость на ровном месте, да. а вы еще спрашиваете зачем нужно знать как устроен HashMap и насколько глубоко копать.

I> Структуры данных — списки, деревья, хеш-таблицы, графы — что про них надо знать, насколько глубоко в детали имеет смысл влезать?

I> Алгоритмы — сортировка, поиск, динамическое программирование, жадные алгоритмы, оценки быстродействия, что-то еще? Что тут надо уметь?
иметь общее представление. обход дерева могут спросить -- очень популярный вопрос. иногда в нем есть подвох -- где гарантия, что в дереве нет циклических ссылок? мы же зависнем тогда или отвалимся по исключению. с другой стороны на каждую хитрую жопу найдется свой мыщъх. и на этот вопрос я ответил -- не буду я обходить дерево. у меня на подлежащем уровне есть карта памяти. и пока вы будете ходить зиг-загами, я линейно пробегусь по списку, т.к. на самом фундаментальном урове дерево -- это список блоков памяти (правда это не дает ответа на вопрос как обойти поддерево).

I> Спасибо

да вы не волнуйтесь. ms компания большая и потому нужно плясать не от гномов, а от ваших сильных сторон, которые и будут искать на интерьвю. перед тем как пытать вас спросят куда наносить удар. так что нет смысла распыляться по всему периметру.
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.
Re[2]: Собеседование в Microsoft. Как готовиться?
От: anomander  
Дата: 06.03.12 06:32
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>иметь общее представление. обход дерева могут спросить -- очень популярный вопрос. иногда в нем есть подвох -- где гарантия, что в дереве нет циклических ссылок?

Если они есть, то это уже не дерево.
Re[3]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 07:12
Оценка:
Здравствуйте, anomander, Вы писали:

A>Здравствуйте, мыщъх, Вы писали:


М>>иметь общее представление. обход дерева могут спросить -- очень популярный вопрос. иногда в нем есть подвох -- где гарантия, что в дереве нет циклических ссылок?

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

обходить дерево без учета наличия циклических ссылок можно только если мы гарантируем целостность дерева, а это нереально. даже если API не дает прямого доступа к дереву и отлавливает попытки создания циклических ссылок -- ошибки типа "удара по памяти" разрушат это дерево из соседнего модуля.
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.
Re[2]: Собеседование в Microsoft. Как готовиться?
От: AndrewJD США  
Дата: 06.03.12 11:33
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>обход дерева могут спросить -- очень популярный вопрос. иногда в нем есть подвох -- где гарантия, что в дереве нет циклических ссылок?


По определению дерево — это ациклический граф.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[3]: Собеседование в Microsoft. Как готовиться?
От: anomander  
Дата: 06.03.12 11:48
Оценка:
Здравствуйте, AndrewJD, Вы писали:

AJD>По определению дерево — это ациклический граф.


Комменты не читай — комменты пиши

A>Здравствуйте, мыщъх, Вы писали:


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

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

Это все конечно здорово, но, думаю, что не ошибусь, если скажу, что в большинстве мест, где зададут этот вопрос, захотят сначала услышать ответ, а потом уже, возможно, обсудить возможные проблемы (в зависимости от используемых языков, технологий и других факторов). Где-то, возможно, пройдет ваш подход, но я бы посчитал его увиливанием от ответа и сначала вывел бы на прямой ответ, а затем уже обсуждал особенности.
Re[4]: Собеседование в Microsoft. Как готовиться?
От: AndrewJD США  
Дата: 06.03.12 12:13
Оценка:
Здравствуйте, мыщъх, Вы писали:

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

А не лучше ли будет на этапе загрузки проверить целостность дерева, а потом использовать простой обход дерева?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[3]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 14:07
Оценка:
Здравствуйте, AndrewJD, Вы писали:

AJD>Здравствуйте, мыщъх, Вы писали:


М>>обход дерева могут спросить -- очень популярный вопрос. иногда в нем есть подвох -- где гарантия, что в дереве нет циклических ссылок?


AJD>По определению дерево — это ациклический граф.

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

короче, вам передали дерево как аргумент функции. аргументы мы не проверяем, да? тогда объясните мне тупому, почему команда деления таки выполняет такие проверки, ведь на ноль делить нельзя -- это вам любой математик скажет.
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.
Re[5]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 14:15
Оценка:
Здравствуйте, AndrewJD, Вы писали:

AJD>Здравствуйте, мыщъх, Вы писали:


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

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

даю вводную.
винда (проверял хрюшу, что под рукой), NTFS. FAR.
F7, "demo_1", cd demo_1, Alt-F6, "demo_1\demo_2".

работает! можно бесконечно входить в demo, спускаясь все глубже и глубже (в FAR'e). а теперь посмотрите сколько программ развалится, если их попросить обработать директорию с под-директориями.
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.
Re[4]: Собеседование в Microsoft. Как готовиться?
От: blackhearted Украина  
Дата: 06.03.12 14:19
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


какие проверки выполняет команда деления? в каком языке?
Re[4]: Собеседование в Microsoft. Как готовиться?
От: SemiCoder США  
Дата: 06.03.12 15:35
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


Строго говоря, иногда на ноль делить-таки можно. И это скажет любой математик. Другое дело в наших с вами программках — да, там лучше этого не делать.
Я помню лет десять назад в одном моем графическом движке, в линуксе, gcc при делении на ноль помещал специально значение NaN в переменную. Отлаживать в динамике я тогда не умел и найти источник было очень трудно, а сдавать проект надо было сегодня. Выход нашелся удивительный:
if (foo — foo == 0.0)
// good value — draw!
else
// NaN — skip drawing element
И ведь работало. Любой математик наверное сразу бы застрелился. Проект был сдан, и только много позже я-таки разобрался как все это делается по-человечески.
Re[5]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 16:50
Оценка:
Здравствуйте, SemiCoder, Вы писали:

SC>Здравствуйте, мыщъх, Вы писали:


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


SC> Строго говоря, иногда на ноль делить-таки можно. И это скажет любой математик.

что такое деление? это многократное вычитание. например, 7/3.

1) 7 — 3 == 4;
4 > 3 делим дальше

2) 4 — 3 == 1;
1 < 3 — конец деления

итого, два и один в остатке.

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

SC> Я помню лет десять назад в одном моем графическом движке, в линуксе, gcc при делении

SC> на ноль помещал специально значение NaN в переменную.
float a,b; main(){; printf("%f\n", a/b);}
сl 1.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

1.exe
-1.#IND00

как бы предсказуемо.

SC>if (foo — foo == 0.0)

SC> // good value — draw!
SC>else
SC> // NaN — skip drawing element
SC>И ведь работало. Любой математик наверное сразу бы застрелился.
а если так:

float a = 333; float b = 0; float zero = a/b;
float x = 11; float y = 0;
if (x/y == zero) printf("ops");
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.
Re[6]: Собеседование в Microsoft. Как готовиться?
От: blackhearted Украина  
Дата: 06.03.12 18:11
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


B>>Здравствуйте, мыщъх, Вы писали:


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


B>>какие проверки выполняет команда деления? в каком языке?

М>main(){ return 1/0;}

М>$cl 1.c

М>Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
М>Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

М>1.c

М>1.c(1) : error C2124: divide or mod by zero

М>учите мат чать матъ вашу.


Команда деления или компилятор?

#include <iostream>

int main(int argc, char** argv)
{
    int i=1;
    std::cin >> i;

    return 1/i;
}


1>------ Build started: Project: test, Configuration: Release Win32 ------
1>Compiling...
1>test.cpp
1>.\test.cpp(7) : warning C4100: 'argv' : unreferenced formal parameter
1>.\test.cpp(7) : warning C4100: 'argc' : unreferenced formal parameter
1>stdafx.cpp
1>Linking...
1>Generating code
1>Finished generating code
1>Embedding manifest...
1>test — 0 error(s), 2 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========


Re[4]: Собеседование в Microsoft. Как готовиться?
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 06.03.12 19:16
Оценка:
Здравствуйте, __lambda__, Вы писали:
___> В то время, как в соседних ветках, обсуждают, что для поступления в этот же MS нужно написать thread-safe Stack.
___>Несколько лет назад слышал, что кому-то попалась задачка, где нужно было применить RB-tree.

а что применить RB-tree это ужас-ужас?
что до thread safe Stack — так никто не просит вылизывать, главное показать знания, а не написать безупречный
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[5]: Собеседование в Microsoft. Как готовиться?
От: Ilias  
Дата: 06.03.12 19:26
Оценка:
Здравствуйте, Denis, Вы писали:

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

___>> В то время, как в соседних ветках, обсуждают, что для поступления в этот же MS нужно написать thread-safe Stack.
___>>Несколько лет назад слышал, что кому-то попалась задачка, где нужно было применить RB-tree.

D>а что применить RB-tree это ужас-ужас?

D>что до thread safe Stack — так никто не просит вылизывать, главное показать знания, а не написать безупречный

ну вот и я пытаюсь примерный уровень сложности понять всего-то. но мне уже за что-то -4 влепили
Re[5]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 19:33
Оценка:
Здравствуйте, Denis, Вы писали:

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

___>> В то время, как в соседних ветках, обсуждают, что для поступления в этот же MS нужно написать thread-safe Stack.
___>>Несколько лет назад слышал, что кому-то попалась задачка, где нужно было применить RB-tree.

D>а что применить RB-tree это ужас-ужас?

D>что до thread safe Stack — так никто не просит вылизывать, главное показать знания, а не написать безупречный
а это в принципе возможно? тут же синхронизация на другом уровне требуется. допустим, есть несколько потоков. они кладут в стек. допустим, стек thread safe. это как бы не вопрос на счет safe. вопрос в том -- как вытащить оттуда элементы в порядке строго обратном их поклаже? а если порядок неважен, так это и не стек вовсе.

x = Stack.push(a);
...
y = Stack.pop();

что мы снимем если между push и pop в стек что-то положил другой поток?
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.
Re[4]: Собеседование в Microsoft. Как готовиться?
От: m e  
Дата: 06.03.12 19:59
Оценка:
___>Самое интересное, что в соседних ветках от Паблика Морозова, сертифицированный MVP от MS с пеной у рта доказывает, что задача с переворотом списка слишком сложна для собеседований В то время, как в соседних ветках, обсуждают, что для поступления в этот же MS нужно написать thread-safe Stack.

и что, ты хочешь сказать, что в MS платят столько же, сколько у паблика?

подозреваю, что начальная зарплата там раза в 2 больше
Re[8]: Собеседование в Microsoft. Как готовиться?
От: blackhearted Украина  
Дата: 06.03.12 20:01
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


B>>Здравствуйте, мыщъх, Вы писали:


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


B>>>>Здравствуйте, мыщъх, Вы писали:


М>>>1.c(1) : error C2124: divide or mod by zero

М>>>учите мат чать матъ вашу.
B>>Команда деления или компилятор?
М>процессор выбросит исключение. язык может его обрабатывать самостоятельно или игнорировать, но тогда его обработает ось и приложение помрет.
Язык?

1>>>------ Build started: Project: test, Configuration: Release Win32 ------

М>офигеть. а ключи компиляции кто показывать будет? показывайте весь код с ключами компиляции. есть подозрение, что если вы не используете результат деления, то его выкинул оптимизатор. проверяется это просто — при запуске программы не будет исключения. кстати, на результат деления на нуль я бы посмотрел...

Всё отлично падает с access violation, если ввести 0.
Как оптимизатор мог его выбросить, если он возвращается как результат выполнения?
Чем тут помогут ключи компиляции?
Re: Собеседование в Microsoft. Как готовиться?
От: hokkaido  
Дата: 06.03.12 20:02
Оценка:
Пожалуй стоит еще раз сказать, что интервью (даже в МС) — это не ЕГЭ.

Т.е. важно даже не то, правильно ли вы решили задачу, а то, КАК вы ее решаете. Интервьюера не интересует как разворачивать список, его инетерсует — понимаете ли Вы как подходить к задаче. Побольше говорите, объясняйте почему выбрали тот или иной подход.

По алгоритмам и стурктурам данных задачи будут такие, чтобы решение (или аутлайн решения) поместился на доске. Т.е. (условно говоря) реализовывать красно-черные деревья вам не надо будет (но надо знать зачем они нужны!).

В общем — расслабьтесь, все будет ОК.
Re[6]: Собеседование в Microsoft. Как готовиться?
От: m e  
Дата: 06.03.12 20:03
Оценка:
М>даю вводную.
М>винда (проверял хрюшу, что под рукой), NTFS. FAR.
М>F7, "demo_1", cd demo_1, Alt-F6, "demo_1\demo_2".

М>работает! можно бесконечно входить в demo, спускаясь все глубже и глубже (в FAR'e). а теперь посмотрите сколько программ развалится, если их попросить обработать директорию с под-директориями.


подозреваю, что там есть апи для отличания такой ссылки от честной директории

под линуксом, афайк, ext2/ext3 не дает создать настоящие хардлинки на директорию; симлинки пожалуста, но их при желании можно отличить
Re[6]: Собеседование в Microsoft. Как готовиться?
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 06.03.12 21:23
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


М>x = Stack.push(a);

М>...
М>y = Stack.pop();

М>что мы снимем если между push и pop в стек что-то положил другой поток?


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

завайте вопросы, смотрите на реакцию интервьювера.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[6]: Собеседование в Microsoft. Как готовиться?
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 06.03.12 21:23
Оценка:
Здравствуйте, Ilias, Вы писали:

I>ну вот и я пытаюсь примерный уровень сложности понять всего-то. но мне уже за что-то -4 влепили

про минусы не справшивайте, я не понимаю за что, видимо у господ Klatu, blackhearted, asktomsk, dilmah чесотка рук

у первых двух точно (мне тоже поставили на безобидный ответ )http://rsdn.ru/forum/RateList.aspx?mid=4622970
Автор: Denis
Дата: 18.02.12
а ответить не смогли, когда спросил.


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

имхо, подготовится немного стоит (я список привел в этом треде), что бы на мелочах типа перевернуть список не обжигаться. но дальше опыт поможет и фортуна.

я спрашиваю обычно дизайн и многопоточность. головоломки не спрашиваю вообще, прочитав много книг про интервью так и не понял в чем их прелесть (так же как и наняв несколько человек, которые их раскусили и вообще были круты, но вот с просто кодом были проблемы )
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[9]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 21:46
Оценка:
Здравствуйте, blackhearted, Вы писали:

B>Здравствуйте, мыщъх, Вы писали:


B>>>Команда деления или компилятор?

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

1>>>>------ Build started: Project: test, Configuration: Release Win32 ------

М>>офигеть. а ключи компиляции кто показывать будет? показывайте весь код с ключами компиляции. есть подозрение, что если вы не используете результат деления, то его выкинул оптимизатор. проверяется это просто — при запуске программы не будет исключения. кстати, на результат деления на нуль я бы посмотрел...

B>Всё отлично падает с access violation, если ввести 0.

B>Как оптимизатор мог его выбросить, если он возвращается как результат выполнения?
я ж не видел целиком вашего проекта.

B>Чем тут помогут ключи компиляции?

без ключей компиляции (т.е. с настройками по умолчанию) ms vc возвращает ошибку. во всяком случае у меня. а у вас даже предупреждения нет. странно все это.
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.
Re[7]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 21:58
Оценка:
Здравствуйте, m e, Вы писали:

М>>работает! можно бесконечно входить в demo, спускаясь все глубже и глубже (в FAR'e). а теперь посмотрите сколько программ развалится, если их попросить обработать директорию с под-директориями.

ME>подозреваю, что там есть апи для отличания такой ссылки от честной директории
и тут мы подходим к вопросу как решать такие задачи в общем виде. нам нужно либо API, которое позволит установить что узел А и узел Б в действительности является одним и тем же узлом. такое есть в ntfs, но это сильно нестандартное и непортируемое. а хардлинки есть много где. и що делать? как альтернатива -- можно создавать в каждой директории которую мы посетили специальный файл и не входить в директорию если он там есть (но это требует прав записи).

другой способ -- если у каждого узла дерева (ну директории) есть некая уникальная характеристика, которую можно считать документированными средствами -- при наличии доп. памяти можно заносить эти характеристики в базу и смотреть -- посещали мы этот узел или нет. и тут всплывает интересная проблема. при решении задачи "в лоб" мы храним _все_, но это ж сколько памяти требуется?! немного подумав, мы соображаем, что все хранить необязательно и в определенный момент от части инфы можно избавляться, поскольку она гарантированно нам не нужна и расходы на память резко сокращаются.

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


ME>под линуксом, афайк, ext2/ext3 не дает создать настоящие хардлинки на директорию;

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

я как бы молчу, что можно так испортить MBR, чтобы винда зацикливалась при монтировании диска, а так как она это делает автоматически, то автоматически виснет. флеха с таким MBR вгоняла w2k в синий экран. XP SP0 (другую не проверял) на однопроцессорной машине просто зависала где-то в ядре. на двух цп хрюша выживала, но жутко тормозила и показывала 100% загрузку ядра одного ЦП.

а все потому что в MBR можно создавать циклические ссылки и их никто не проверял.
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.
Re[5]: Собеседование в Microsoft. Как готовиться?
От: __lambda__ Россия http://zen-hacker.blogspot.com/
Дата: 06.03.12 22:14
Оценка:
Здравствуйте, Denis, Вы писали:

D>а что применить RB-tree это ужас-ужас?

D>что до thread safe Stack — так никто не просит вылизывать, главное показать знания, а не написать безупречный

Relax, мы на одной стороне баррикад Это я прикалываюсь над теми, для кого переворот списка сверх сложная задача на собеседовании
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re[7]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 22:34
Оценка:
Здравствуйте, Denis, Вы писали:

D>Здравствуйте, мыщъх, Вы писали:


М>>x = Stack.push(a);

М>>...
М>>y = Stack.pop();
М>>что мы снимем если между push и pop в стек что-то положил другой поток?
D>зависит от того что хотим добиться . можно спросить определение стека у собеседующего и приватно его...
гм, а если собеседующий спросит: "как?! вы не знаете что такое стек?! нууууу....". вообще, такое очень даже можно сделать. только нужно ввести дополнительные условия.

1) всякий поток может юзать обший стек, но об этом он должен сигнализировать всем остальным;
2) после того как поток поюзал стек он должен снять все, что туда поклал;
3) между (1) и (2) доступ к стеку всем остальным потокам блокируется

4) разновидность (3) -- доступ не блокируется, но результат временно сохраняется в другом месте;

5) развитем идеи (4) будет предоставление каждому потоку своего стека. это можно делать "прозрачно" для потоков. например, компиляторы могут при необходимости ложить глобальные и статические переменные в раздельные области памяти, которые у каждого потока свои и программисту не нужно парится об этом явно. ну так почему не создать объект стек с функциями push и pop, где смотреть ID потока и юзать персональный стек? но для этого нам нужно API для взятия ID потока, причем для быстрого взятия, а совсем не то API, которое нам дают. впрочем, если извратиться, то ID потока можно определять косвенным путем по адресу локальных переменных.

D> завайте вопросы, смотрите на реакцию интервьювера.

так ведь уже ответили, что технически реализовать safe возможно и даже тривиально, но это будет не стек, или это будет стек, но он не будет работать. по русски стек это стопка. стек не допускает адресации. адресация локальных переменных к стеку никакого отношения не имеет. в общем случае стек не предоставляет такой фичи. а потому между push и pop никто не может трогать стек иначе все рухнет. кто писал резиденты под дос -- тот знает.

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

а если наш собеседник хотел очередь, а просил нас реализовать стек -- такое не лечится.
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.
Re[7]: Собеседование в Microsoft. Как готовиться?
От: dilmah США  
Дата: 06.03.12 22:35
Оценка:
ME>подозреваю, что там есть апи для отличания такой ссылки от честной директории

ME>под линуксом, афайк, ext2/ext3 не дает создать настоящие хардлинки на директорию; симлинки пожалуста, но их при желании можно отличить


но в юниксах ты можешь размножать директории многократным монтированием
Re[2]: Собеседование в Microsoft. Как готовиться?
От: umnik  
Дата: 06.03.12 23:06
Оценка:
Здравствуйте, hokkaido, Вы писали:

H>Т.е. важно даже не то, правильно ли вы решили задачу, а то, КАК вы ее решаете. Интервьюера не интересует как разворачивать список, его инетерсует — понимаете ли Вы как подходить к задаче. Побольше говорите, объясняйте почему выбрали тот или иной подход.


H>По алгоритмам и стурктурам данных задачи будут такие, чтобы решение (или аутлайн решения) поместился на доске. Т.е. (условно говоря) реализовывать красно-черные деревья вам не надо будет (но надо знать зачем они нужны!).


В целом согласен, но когда я проводил интервью здесь, по крайней мере для простых задач вроде "развернуть список", я ожидал что человек напишет работающее решение от и до. Вы не представляете сколько людей не могут найти простые баги в своем коде на 20 строчек — а ведь им потом code review делать для чужого...
Re[8]: Собеседование в Microsoft. Как готовиться?
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 06.03.12 23:38
Оценка:
Здравствуйте, мыщъх, Вы писали:
М>гм, а если собеседующий спросит: "как?! вы не знаете что такое стек?! нууууу....".

1) если собеседующий дебил, это не лечится. радуйтесь, что вам с ним не работать
2) задавать вопрос надо так, что бы минимизировать неправильное понимание вопроса
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[9]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 07.03.12 01:18
Оценка:
Здравствуйте, Denis, Вы писали:

D>Здравствуйте, мыщъх, Вы писали:

М>>гм, а если собеседующий спросит: "как?! вы не знаете что такое стек?! нууууу....".
D>1) если собеседующий дебил, это не лечится. радуйтесь, что вам с ним не работать
так он и есть дебил, хотя без оригинальной формулировки задачи трудно заочно судить человека. кстати, есть стек не мутабельный, то ситуация упрощается. еще круче, если сделать стек write-only. зачем нам нужен такой стек с инженерной точки зрения? а зачем нам нужен разделяемый мутабельный стек? в обоих случаях очень трудно представить себе практическую задачу. это что-то очень сильно нетипичное. если это из области фантастики -- держите write-only стек. если это специфичная задача -- не зная задачи трудно предложить решение. как минимум нужно знать -- блокировать ли остальные потоки на время захвата стека одним из них или нет. вполне возможно, что необходимо обеспечить, чтобы поток А ложил один элемент и тормозился пока поток Б его не извлечет, затем поток А ложит еще один элемент и поток Б его снова извлекает. а, возможно, элементы должен извлекать только тот поток, который их туда поклал.

D>2) задавать вопрос надо так, что бы минимизировать неправильное понимание вопроса

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

вообще, о терминах не спорят. о них договариваются. для меня стало открытием, что в питоне стороки не мутабельны. и конструкция s[idx] = '*' не работает. s += '*' работает, но жутко тормозит. и потому приходится извращаться не по детски. объявлять массив размера N. питон под него аллоцирует память. затем этот массив мы быстро-быстро заполняем по индексу и делаем s.append(sub_array). такой кусковой подход раз в десять (!) быстрее. если в питоне строки не мутабельные и никто от этого не умирает, почему мне нужно реализовать мутабельный стек, если меня об этом не просят явно?
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.
Re[3]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 07.03.12 01:27
Оценка:
Здравствуйте, umnik, Вы писали:

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


U>В целом согласен, но когда я проводил интервью здесь, по крайней мере для простых задач вроде "развернуть список", я ожидал что человек напишет работающее решение от и до. Вы не представляете сколько людей не могут найти простые баги в своем коде на 20 строчек — а ведь им потом code review делать для чужого...


а code review чужого кода делать обязательно?
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.
Re[4]: Собеседование в Microsoft. Как готовиться?
От: qqqqq  
Дата: 07.03.12 02:59
Оценка:
Здравствуйте, мыщъх, Вы писали:
М>а code review чужого кода делать обязательно?
предлагаешь делать review своего собственного кода, вообще его не делать, зааутсорсить сей процесс, или заставить начальника этим заниматься?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Собеседование в Microsoft. Как готовиться?
От: Undying Россия  
Дата: 07.03.12 09:05
Оценка:
Здравствуйте, m e, Вы писали:

ME>и что, ты хочешь сказать, что в MS платят столько же, сколько у паблика?

ME>подозреваю, что начальная зарплата там раза в 2 больше

И толку? Все равно благодаря такому подходу набирают кого попало.
Re[6]: Собеседование в Microsoft. Как готовиться?
От: m e  
Дата: 07.03.12 09:09
Оценка:
ME>>и что, ты хочешь сказать, что в MS платят столько же, сколько у паблика?
ME>>подозреваю, что начальная зарплата там раза в 2 больше

U>И толку? Все равно благодаря такому подходу набирают кого попало.


че правда?

что-то мы не видим тут на форуме представителя МС, который плакался бы нам в жилетку насчет того, что кандидаты список не могут обратить и категорически отказываются решать задачи про гномиков
Re[7]: Собеседование в Microsoft. Как готовиться?
От: Undying Россия  
Дата: 07.03.12 10:35
Оценка:
Здравствуйте, m e, Вы писали:

ME>что-то мы не видим тут на форуме представителя МС, который плакался бы нам в жилетку насчет того, что кандидаты список не могут обратить и категорически отказываются решать задачи про гномиков


Кого попало это тех, кто на собеседовании прекрасно обращает списки и спасает гномиков, но реальные задачи решать не умеет.
Re[2]: Собеседование в Microsoft. Как готовиться?
От: Sash_xp  
Дата: 07.03.12 13:00
Оценка:
Здравствуйте, qqqqq, Вы писали:

Q>А вот интересно, если в микрософте все такие эксперты в алгоритмах, сортировках, деревьях, и гномах, то почему когда в Outlook надо отсортировать емейлы по другому, типа было по дате а хочешь по фамилии отправителя, то он частенько конкретно так задумывается, прочем когда и сообщений в списке не так уж и много. И не только Оутглюк, даже и explorer за этим замечен. Алгоритмы там только на собеседовании что-ли нужны?


Детский вопрос задаете. Тормозит потому, что навернули 100300 слоев абстракции. Если бы разработчику просто надо было написать сортировку тестовых документов — она бы летала у него. Проблема ведь не в том, что не умеет. Проблема либо в архитектурных ошибках, либо в том, что приоритеты были расставлены не в пользу быстродействия.
Re[3]: Собеседование в Microsoft. Как готовиться?
От: Banned by timid anonimous  
Дата: 07.03.12 13:04
Оценка:
Здравствуйте, abibok, Вы писали:

A>Задача с уловкой: если вы сумели сделать класс контейнера thread-safe, то это минус.

"Слишком умный чтоб у нас работать" (С) ?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Собеседование в Microsoft. Как готовиться?
От: Трололоша  
Дата: 07.03.12 22:49
Оценка:
Здравствуйте, m e, Вы писали:

М>>работает! можно бесконечно входить в demo, спускаясь все глубже и глубже (в FAR'e). а теперь посмотрите сколько программ развалится, если их попросить обработать директорию с под-директориями.

ME>подозреваю, что там есть апи для отличания такой ссылки от честной директории
Разумеется. Будет стоять как минимум аттрибут Reparse point

ME>под линуксом, афайк, ext2/ext3 не дает создать настоящие хардлинки на директорию; симлинки пожалуста, но их при желании можно отличить

В NTFS на каталог хардлинк создать нельзя. Только Symbolic link или mount point
... << RSDN@Home>>
Да, йа зелёный тролль!
Re[2]: Собеседование в Microsoft. Как готовиться?
От: hpux100  
Дата: 08.03.12 16:12
Оценка:
Здравствуйте, hokkaido, Вы писали:

H>Пожалуй стоит еще раз сказать, что интервью (даже в МС) — это не ЕГЭ.


H>Т.е. важно даже не то, правильно ли вы решили задачу, а то, КАК вы ее решаете. Интервьюера не интересует как разворачивать список, его инетерсует — понимаете ли Вы как подходить к задаче. Побольше говорите, объясняйте почему выбрали тот или иной подход.


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

H>По алгоритмам и стурктурам данных задачи будут такие, чтобы решение (или аутлайн решения) поместился на доске. Т.е. (условно говоря) реализовывать красно-черные деревья вам не надо будет (но надо знать зачем они нужны!).


H>В общем — расслабьтесь, все будет ОК.
Re[4]: Собеседование в Microsoft. Как готовиться?
От: minorlogic Украина  
Дата: 08.03.12 16:23
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>а code review чужого кода делать обязательно?


В роботоспособных командах , обязательно.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Собеседование в Microsoft. Как готовиться?
От: SingleUseAccount  
Дата: 08.03.12 17:39
Оценка:
Здравствуйте, hokkaido, Вы писали:

H>Пожалуй стоит еще раз сказать, что интервью (даже в МС) — это не ЕГЭ.


H>Т.е. важно даже не то, правильно ли вы решили задачу, а то, КАК вы ее решаете. Интервьюера не интересует как разворачивать список, его инетерсует — понимаете ли Вы как подходить к задаче.


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

H>Побольше говорите, объясняйте почему выбрали тот или иной подход.


Меня отвлекает чужая болтовня или даже собственная. Предпочитаю молча поковырять разные способы решения, решить, а уже только потом могу объяснить со всех сторон, почему именно такой подход выбран. Хотя да, нужно напоказ для интервьюера бы флудить о чем-нибудь, чтобы имитировать прогресс работы над задачей — молчунов не сильно любят
Re[5]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 08.03.12 20:19
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Здравствуйте, мыщъх, Вы писали:


М>>а code review чужого кода делать обязательно?

M>В роботоспособных командах , обязательно.
у нас в команде это не практикуется. более того, наши скилзы совершенно не перекрываются и ревью кода не проводится. при этом мы очень даже профитабельны (как раз из-за неперекрывающихся скилзов и минимальных штатов) и код работает в режиме 24/7/386.
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.
Re[6]: Собеседование в Microsoft. Как готовиться?
От: minorlogic Украина  
Дата: 08.03.12 20:24
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>у нас в команде это не практикуется. более того, наши скилзы совершенно не перекрываются и ревью кода не проводится. при этом мы очень даже профитабельны (как раз из-за неперекрывающихся скилзов и минимальных штатов) и код работает в режиме 24/7/386.


Вы не команда вообще?
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[7]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 09.03.12 01:18
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Здравствуйте, мыщъх, Вы писали:


M>Вы не команда вообще?

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

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

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

если у вас ревью кода в порядке вещей, то это значит, что у вас работает много специалистов одного профиля в одном направлении. это ни хорошо, ни плохо. но бывает не только так, а сильно иначе. вот, скажем, есть механик, логистик и водитель. по вашему они не команда?
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.
Re[8]: Собеседование в Microsoft. Как готовиться?
От: minorlogic Украина  
Дата: 09.03.12 09:12
Оценка:
Я понял о чем речь, я имел в виду именно командную работу с общим владением кода и т.п.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[9]: Собеседование в Microsoft. Как готовиться?
От: мыщъх США http://nezumi-lab.org
Дата: 09.03.12 14:35
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Я понял о чем речь, я имел в виду именно командную работу с общим владением кода и т.п.

с общим владением кода -- согласен. если А правит исходники Б, то последний должен смотреть на код А, который в свою очередь смотрит на код Б и отмечает все непонятные ему места, т.к. даже если написано правильно, но с выкрутасами -- Б не может править код, смысла которого до конца не понимает. так что ревью в таких условиях обязателен.

вы такую ситуацию имели ввиду?
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.
Re[10]: Собеседование в Microsoft. Как готовиться?
От: minorlogic Украина  
Дата: 09.03.12 15:30
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>вы такую ситуацию имели ввиду?


Примерно да.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[5]: Собеседование в Microsoft. Как готовиться?
От: WPooh США  
Дата: 09.03.12 17:50
Оценка:
Здравствуйте, abibok, Вы писали:

A>Вот задача объяснить почему этого делать нельзя (т.е. технически возможно, но лучше не надо) — куда более интересный вопрос для обсуждения на интервью, чем написание стека. Это как с наследованием эллипса от круга: если вы сумели, то показали свое знание основ языка программирования, а если не сумели — то показали глубокое понимание ООП и реальный опыт.

Для стека с его двумя операциями push и pop, смысл есть. Остальное — да, от лукавого.
Но как задачка на собеседование — достаточно хороша, и многопоточность обсудить можно и как код пишет человек, и дополнительные вопросы позадавать можно (в том числе про ООП), и пр.
Правда, она уже заезженная, хорошо известна. В этом и проблема, хорошую задачу придумать не так просто.

Вот еще задачка: обойти дерево по контуру. Но она не такая лаконичная и на собеседовании от идеи до конечного кода времени, скорее всего, не хватит, если в лоб идти. До изящного решения надо додуматься, а на собеседовании обстановка не всегда позволяет. Но задачка неплоха сама по себе.
К этому моменту у меня внутри 0.5, 0.7, 0.33 (с) НС
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.