Здравствуйте, Dog, Вы писали:
L>>Редактору студии до возможностей и удобства vim как до Парижа ползком через Антарктиду. Dog>Ага, только разница в том, что редактор студии находится в Париже, а vim в Антарктиде. И ползти туда никакого желания нет.
Ну, в Антарктиде я пока не бывал, но смею предположить, что общество пингвинов в некотором смысле может быть приятнее общества парижских албанцев
L>Ну, в Антарктиде я пока не бывал, но смею предположить, что общество пингвинов в некотором смысле может быть приятнее общества парижских албанцев
Точно-точно. А аскетизм антарктических снегов придает неповторимый колорит этому самому обществу.
Нет уж, спасибо, мы уж лучше в Париже как-нибудь, с вынужденными командировками в Антарктику.
Здравствуйте, SkyDance, Вы писали:
SD>Точно-точно. А аскетизм антарктических снегов придает неповторимый колорит этому самому обществу. SD>Нет уж, спасибо, мы уж лучше в Париже как-нибудь, с вынужденными командировками в Антарктику.
Антарктические снега и отрицательная температура большую часть года означает отсутствие всяких насекомых и вирусов. Почти стерильная обстановка.
Да и командировка из Антарктиды в Париж выглядит привлекательнее, нежели наоборот
Здравствуйте, aik, Вы писали:
aik>Гы. Там даже workspace нету, чтоб можно было искать "только по файлам в workspace". Не, это ну совсем не IDE.
Эээ.
У вас не совсем верная информация.
Здравствуйте, FSerdukov, Вы писали:
FS>Каков корректный ответ на этот вопрос?
В таких случаях я отвечаю так: в последнее время я часто использовал контролы A, B, C, немного реже X, Y, Z. А в случае сомнений я сверяюсь с MSDN, читаю рекомендации по использованию, оцениваю применимость.
Если такого ответа недостаточно, собеседующий идет лесом. Если распрашивает меня про A, B, C подробней — я только рад.
Раз пошла такая пьянка, прокомментируйте следующие вопросы по базовой части .NET (отвечать не надо, просто оцените адекватность )
1. Скомпилируется ли код, и что происходит "за кулисами", если написать object o = 1;?
2. Что возвращает медот int SomeMethod(int i) { return i++; }
3. В каких случаях экземпляр value-type может оказаться в куче? А наоборот, экземпляр reference-type в стеке?
4. В чем разница между простой передачей параметра в функцию и передачей c модификатором ref для структур? А для классов?
5. Какова судьба экземпляра класса, у которого в конструкторе было выкинуто исключение (создастся/не создастся, будет доступен или нет, сборка мусора и т.д.)
6. Паттерн реализации IDisposable
7. Все знают, что catch(Exception) — это плохо, а расскажите почему плохо?
Вопросов на самом деле много, это малая часть из них, и используются они для нахождения тем, интересных собеседнику, т.е. для развития дискусии.
Здравствуйте, SE, Вы писали:
SE>1. Скомпилируется ли код, и что происходит "за кулисами", если написать object o = 1;?
Слишком неконкретно.
SE>2. Что возвращает медот int SomeMethod(int i) { return i++; }
Не удивлюсь, если приличный разработчик без плюсового бэкграунда на этот вопрос не ответит.
SE>3. В каких случаях экземпляр value-type может оказаться в куче? А наоборот, экземпляр reference-type в стеке?
Касательно первой части — не очень удачный, имхо, вопрос. По второй части — хм, ну теоретически я знаю, как реф-тип запихнуть в стек, но спрашивать подобное на собеседовании?
SE>4. В чем разница между простой передачей параметра в функцию и передачей c модификатором ref для структур? А для классов?
Более менее
SE>5. Какова судьба экземпляра класса, у которого в конструкторе было выкинуто исключение (создастся/не создастся, будет доступен или нет, сборка мусора и т.д.)
Нормально
SE>6. Паттерн реализации IDisposable
Наизусть? Зачем? Лучше проб\демонстрировать паттерн и попросить объяснить, где, что и почему.
SE>7. Все знают, что catch(Exception) — это плохо, а расскажите почему плохо?
Негодная формулировка. "Все знают" выкинуть.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, SE, Вы писали:
SE>>1. Скомпилируется ли код, и что происходит "за кулисами", если написать object o = 1;?
AVK>Слишком неконкретно.
Имеющий опыт на жабе запутается. Хотя в шарпе (вроде) код корректный. Если мне не изменяет трехгодовая память, и ничего не поменялось, произойдет боксинг "1" в объект инт(а вот тут не помню, какой, 32, наверное).
В жабе это некомпилируемый код.
SE>>2. Что возвращает медот int SomeMethod(int i) { return i++; }
AVK>Не удивлюсь, если приличный разработчик без плюсового бэкграунда на этот вопрос не ответит.
Да ну, тут многие ответят. Благо, сишный синтаксис постоператора ++ весьма распространен. Хотя сам пример абсолютно бессмысленен, не смог представить, как бы его применить. Вот тупо спросить, в чем отличие ++i от i++ еще можно, но тоже не особо осмысленно. По большому счету, если кто-то напишет i = i + 1, никто не пострадает.
SE>>3. В каких случаях экземпляр value-type может оказаться в куче? А наоборот, экземпляр reference-type в стеке?
AVK>Касательно первой части — не очень удачный, имхо, вопрос. По второй части — хм, ну теоретически я знаю, как реф-тип запихнуть в стек, но спрашивать подобное на собеседовании?
Вот тут бы я завалился. Мало знаком с value-type(но я жавист по большей части, там нет структур).
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Eugeny__, Вы писали:
E__>Имеющий опыт на жабе запутается.
Да дело не в этом. Все эти вопросы с подковыркой непойми что тестируют. Почему нельзя просто спросить что такое автобоксинг и попросить привести пример, этот самый автобоксинг демонстрирующий?
E__>Да ну, тут многие ответят.
Тут это где? Вот я лично ++i за 5 лет в продакшн коде, кажется ни разу не применял, и кода, который полагается на значение, возвращаемое i++ стараюсь избегать.
AVK>>Касательно первой части — не очень удачный, имхо, вопрос. По второй части — хм, ну теоретически я знаю, как реф-тип запихнуть в стек, но спрашивать подобное на собеседовании?
E__>Вот тут бы я завалился. Мало знаком с value-type(но я жавист по большей части, там нет структур).
На самом деле все тривиально — структуры расположены в куче, если они являются полем реф-типа либо забоксены. Просто опять вопрос сформулирован косвенно. А вот что касается второй части — хотелось бы услышать от автора его вариант ответа.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
Здравствуйте, AndrewVK, Вы писали:
E__>>Имеющий опыт на жабе запутается. AVK>Да дело не в этом. Все эти вопросы с подковыркой непойми что тестируют. Почему нельзя просто спросить что такое автобоксинг и попросить привести пример, этот самый автобоксинг демонстрирующий?
Ну это понятно почему. Ответ на "что такое автобоксинг" можно выучить по книжке.
Я в собеседованиях подобным образом поступаю — знание концепций проверяю с помощью косвенных вопросов.
E__>>Да ну, тут многие ответят. AVK>Тут это где? Вот я лично ++i за 5 лет в продакшн коде, кажется ни разу не применял, и кода, который полагается на значение, возвращаемое i++ стараюсь избегать.
Ну не знаю. Я часто использую что-то типа:
А "++i" — это в С++ правильный способ работы с итераторами.
Вот i +++++ i — это да, за такое пинать надо на собеседованиях.
AVK>На самом деле все тривиально — структуры расположены в куче, если они являются полем реф-типа либо забоксены. Просто опять вопрос сформулирован косвенно. А вот что касается второй части — хотелось бы услышать от автора его вариант ответа.
Может имелся в виду escape analysis?
Здравствуйте, Cyberax, Вы писали:
C>Ну это понятно почему. Ответ на "что такое автобоксинг" можно выучить по книжке.
Пример с объяснением легко этот вопрос выясняет. Да и, в любом случае, человек зазубривший книжку легко распознается без приемчиков аля Торквемада.
C>Ну не знаю.
А я знаю. И код вроде твоего часто вижу у старых сишников. А вот сам стараюсь такого избегать.
C>А "++i" — это в С++ правильный способ работы с итераторами.
Но мы же не про С++ говорим, не так ли?
C>Может имелся в виду escape analysis?
В дотнете???
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
Здравствуйте, AndrewVK, Вы писали:
C>>Ну это понятно почему. Ответ на "что такое автобоксинг" можно выучить по книжке. AVK>Пример с объяснением легко этот вопрос выясняет. Да и, в любом случае, человек зазубривший книжку легко распознается без приемчиков аля Торквемада.
Ну так "object obj=42;" — это как раз и есть пример. Программист обязан его распознать и объяснить.
C>>Ну не знаю. AVK>А я знаю. И код вроде твоего часто вижу у старых сишников. А вот сам стараюсь такого избегать.
У меня просто много динамического GUI, а там такое часто встречается.
C>>А "++i" — это в С++ правильный способ работы с итераторами. AVK>Но мы же не про С++ говорим, не так ли?
Просто сразу старого С++-ника не таком можно узнать.
C>>Может имелся в виду escape analysis? AVK>В дотнете???
А чем он хуже Java? По крайней мере, хороший вопрос на знание теории.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Eugeny__, Вы писали:
E__>>Имеющий опыт на жабе запутается.
AVK>Да дело не в этом. Все эти вопросы с подковыркой непойми что тестируют. Почему нельзя просто спросить что такое автобоксинг и попросить привести пример, этот самый автобоксинг демонстрирующий?
Я против, что-ли?
Нужен реальный пример. Автобоксинг часто используется в коллекциях. Вот на него и можно простейший пример привести. Да и кроме этого немало возможностей. Тупо присваивание... Ни разу такого не использовал.
E__>>Да ну, тут многие ответят.
AVK>Тут это где? Вот я лично ++i за 5 лет в продакшн коде, кажется ни разу не применял, и кода, который полагается на значение, возвращаемое i++ стараюсь избегать.
Аналогично. Предпочту явно написать, пусть это будет не ++i(с определенной конструкцией), а пару строчек. Компилер и так соптимизирует, а человеку понятнее. Также, предпочитаю всегда писать скобки в условиях и выражениях, так как знаю, что не все наизусть знают приоритеты операций(ага, кто скажет вот так сразу приоритеты ВСЕХ операций, включая булевские?). Скобки всем понятны. А конструкции типа [a * b & с * ~e || с + b & a / e] напряжны по определению.
AVK>>>Касательно первой части — не очень удачный, имхо, вопрос. По второй части — хм, ну теоретически я знаю, как реф-тип запихнуть в стек, но спрашивать подобное на собеседовании?
E__>>Вот тут бы я завалился. Мало знаком с value-type(но я жавист по большей части, там нет структур).
AVK>На самом деле все тривиально — структуры расположены в куче, если они являются полем реф-типа либо забоксены. Просто опять вопрос сформулирован косвенно. А вот что касается второй части — хотелось бы услышать от автора его вариант ответа.
Да я знаю. Придется извратно использовать структуры — я внимательно прочту доки. Но обычно они используются по назначению(как стековые структуры внутри области видимости, обычно метода). Согласен, что вопрос не очень помогает понять что-то о кандидате — нужны, опять же, знания о нужных в работе вещах, а не о извратах.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Напишу про такие случаи, и что может быть, когда буду трезвее, сегодня суббота, которую я проспал до 6 вечера, а сейчас немого нетрезв...
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Eugeny__, Вы писали:
E__>>Имеющий опыт на жабе запутается.
AVK>Да дело не в этом. Все эти вопросы с подковыркой непойми что тестируют. Почему нельзя просто спросить что такое автобоксинг и попросить привести пример, этот самый автобоксинг демонстрирующий?
Да нет, наоборот, народ бодро говорит "боксинг". Я спрашиваю что такое боксинг... ну и пошло-поехало, с примерами на коллекции и особенности работы со структурами через интерфейсы.
E__>>Да ну, тут многие ответят.
AVK>Тут это где? Вот я лично ++i за 5 лет в продакшн коде, кажется ни разу не применял, и кода, который полагается на значение, возвращаемое i++ стараюсь избегать.
Да, вопрос наверно не очень удачный, но не спрашивать же чему равно int i = i++; (кстати в С# поведение такого кода определено стандартом). А ответ "за такое по рукам надо бить" принимается как правильный тоже
Может уберу этот вопрос.
AVK>>>Касательно первой части — не очень удачный, имхо, вопрос. По второй части — хм, ну теоретически я знаю, как реф-тип запихнуть в стек, но спрашивать подобное на собеседовании?
E__>>Вот тут бы я завалился. Мало знаком с value-type(но я жавист по большей части, там нет структур).
AVK>На самом деле все тривиально — структуры расположены в куче, если они являются полем реф-типа либо забоксены. Просто опять вопрос сформулирован косвенно. А вот что касается второй части — хотелось бы услышать от автора его вариант ответа.
Еще структура оказывается в куче как часть массива. Удивительно, но мне попадались кандидаты с парой лет опыта в .NET, уверенные, что массивы хранятся в стеке, и даже что стринг — велью-тип
По поводу второй части ответа — я знаю только очень специфический способ с помощью stackalloc, поэтому ответы "не знаю", "нет такого способа" вполне принимаются.
Вообще никогда не провожу собеседования в виде "щас я его завалю". Вопросы потому и косвенные, что хочется втянуть в дискуссию. А на каждый свой вопрос я стараюсь объяснить ответ, если человек затрудняется ответить. Времени не жалко, зато 1) позволяет устранить недопонимание 2) оставляет хорошее впечатление о конторе в целом
Кроме того, я ж не принимаю решение hire/no-hire, за исключением случаев, когда ну совсем "увы и ах" по знаниям, или человек антипатичен (такое очень редко, но бывает). Я даю техническую оценку уровня опыта и знаний и общее впечатление. Иногда даже, приписываю что-то вроде "я очень хочу работать в команде с этим человеком!!!"
Громадное спасибо за ответы. Обязательно учту и постараюсь сформулировать вопросы поточнее.
P.S. За кадром еще остались вопросы по GC, витруальным методам, в том числе и в контрукторах, синхронизации потоков и простенькие по базам данных вроде того, что и почему вернет SELECT 1 WHERE NULL = NULL
Здравствуйте, AndrewVK, Вы писали:
SE>>6. Паттерн реализации IDisposable
AVK>Наизусть? Зачем? Лучше проб\демонстрировать паттерн и попросить объяснить, где, что и почему.
Конечно не наизусть. Хотя многие сами брали и писали наизусть на бумажке. Если человек говорил, что не реализовывал IDisposable, то тоже принимается. Для тех, кто плавет в вопросе, обычно задаю вопросы на тему, что будет если "забыть" использовать using, освободятся ли ресурсы, и когда они освободятся.
SE>>7. Все знают, что catch(Exception) — это плохо, а расскажите почему плохо?
AVK>Негодная формулировка. "Все знают" выкинуть.
Согласен, судя по коду, который к нам с новым проектом "приехал", выкинул "все знают"
Я еще задаю доп. вопрос: а есть ли место в программе, где catch(Exception) все же нужно писать.
Здравствуйте, Cyberax, Вы писали:
C>Ну так "object obj=42;" — это как раз и есть пример. Программист обязан его распознать и объяснить.
Не на собеседовании. Потому что цель собеседования — не подловить на чем нибудь, а выяснить уровень. В конце концов, даже если не произносить слово автобоксинг, то можно привести пример с каким нибудь спецэффектом и попросить его объяснить. А не заставлять работать за компилятор да догадываться, что же собеседующий имел в виду.
AVK>>А я знаю. И код вроде твоего часто вижу у старых сишников. А вот сам стараюсь такого избегать. C>У меня просто много динамического GUI, а там такое часто встречается.
У меня тоже есть места, где его много, но кода там такого нет.
AVK>>Но мы же не про С++ говорим, не так ли? C>Просто сразу старого С++-ника не таком можно узнать.
Так я об этом и говорю.
C>>>Может имелся в виду escape analysis? AVK>>В дотнете??? C>А чем он хуже Java?
Ничем. Только, ЕМНИП, и в релизной джаве его пока нет. Так что спрашивать такое на собеседовании неразумно.
C> По крайней мере, хороший вопрос на знание теории.
Теории чего? Построения оптимизирующих компиляторов? Совершенно бесполезный вопрос, если только целью не является завалить или продемонстрировать, что собеседующий умнее.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
Здравствуйте, SE, Вы писали:
SE>Да нет, наоборот, народ бодро говорит "боксинг". Я спрашиваю что такое боксинг... ну и пошло-поехало, с примерами на коллекции и особенности работы со структурами через интерфейсы.
Ну и зачем идти окольными путями? Суть ведь не в том, что боксинг, а в том, что он делает и какие от этого результаты. Так почему сразу не спросить нужное?
SE>Да, вопрос наверно не очень удачный, но не спрашивать же чему равно int i = i++;
Вообще не надо это спрашивать, знание/незнание сего почти никак не сказывается на уровне разработчика.
SE>Еще структура оказывается в куче как часть массива.
Вот поэтому вопрос и неудачный. Спрашивать надо не где оно окажется, за бесполезностью сего знания, а о том, где окажется массив структур. У тебя почти все такие вопросы в стиле "догадайся что я имел в виду". Зачем?
SE> Удивительно, но мне попадались кандидаты с парой лет опыта в .NET, уверенные, что массивы хранятся в стеке, и даже что стринг — велью-тип
Ну так и спрашивай конкретно — где храняться массивы и является ли string value-типом.
SE>По поводу второй части ответа — я знаю только очень специфический способ с помощью stackalloc, поэтому ответы "не знаю", "нет такого способа" вполне принимаются.
На МC++ было можно, не знаю, оставили ли эту фичу в C++/CLI. Но зачем такое спрашивать на собеседовании, если даже сам точного ответа не знаешь?
SE>Вообще никогда не провожу собеседования в виде "щас я его завалю". Вопросы потому и косвенные, что хочется втянуть в дискуссию.
Честно говоря, не увидел я в твоих вопросах втягивания в дисскуссию. Для дисскуссии нужно что то вроде "что ты думаешь ..." или "как считаешь, ...".
SE> А на каждый свой вопрос я стараюсь объяснить ответ, если человек затрудняется ответить.
Слушай, ты попросил оценить вопросы, а не твой способ проведения собеседования. Я тебе ответил.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
Здравствуйте, Roman Odaisky, Вы писали:
RO>Редактор MSVS и на самом деле сильно уступает Vim (на всякий случай: и Emacs), из чего, впрочем, не следует, что MSVS плохо использовать для разработки.
Здравствуйте, The Lex, Вы писали:
TL>Здравствуйте, StandAlone, Вы писали:
SA>>А может, важнее знать хотя бы ... SA>>или важнее перечислить за пять минут содержимое вкладки All Windows Forms?
TL>На собеседовании "собеседуются" _обе_ стороны...
У меня на эту тему теперь байка есть:
Когда я проходил собеседование в последний раз, интервьювер, закончив ,пожаловался другому сотруднику:
"Я не понял, кто кого собеседовал? "
То есть бывает что и кандидат тестирует компанию на проф. пригодность.
Тут надо сотруднику компании правильно все рассказать чтобы зинтерисовать потенциального сотрудника.