Re[6]: Только что с интервью...
От: Слава  
Дата: 28.03.17 16:05
Оценка:
Здравствуйте, IT, Вы писали:

IT>Давай без using. Нет его. Влияют ли скобки на время жизни объекта? С областью видимости переменной всё понятно. А как с объектом?


Нет, не влияют. Я вообще сомневаюсь, что MSIL со скобками и без них будет хоть чем-то отличаться.
Re[6]: Только что с интервью...
От: Michael7 Россия  
Дата: 28.03.17 16:07
Оценка:
Здравствуйте, IT, Вы писали:

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


M>>GC вычистит ненужный более объект (ушедший из поля видимости). Только using для этого не обязателен, это уже я поспешил замечание сделать. using нужен был, если требовалась очистка, даже при словленном исключении, то есть, это фактически аналог try{}finally{}


IT>Давай без using. Нет его. Влияют ли скобки на время жизни объекта? С областью видимости переменной всё понятно. А как с объектом?


По идее тоже заканчивается за блоком, если только не static.
Re[2]: Только что с интервью...
От: StandAlone  
Дата: 28.03.17 16:24
Оценка:
Здравствуйте, sharpcoder, Вы писали:

S>Прикинь, она идеально знает алгоритмы, структуры данных, паттерны, машинленинг и т.п.


Что, кстати, вполне вероятно. Алгоритмы не требуют знания идиомы Disposable, это чисто специфика прикладного кодера.
Но, с другой стороны, тогда бы и вопросы были другие. Предложили бы, например, на доске написать нейросеть, которая будет прогнозировать стоимость бензина по РФ в 2017 году.
Человеку, способному это сделать, тупых вопросов про using и Mutex задавать не будут.
Re[5]: Только что с интервью...
От: fmiracle  
Дата: 28.03.17 16:25
Оценка: +1
Здравствуйте, Mishka, Вы писали:

A>>Я уверен что человек знал что такое using. Более того, я уверен что любой кто 9 лет писал на C# знает что такое using.

M>Кстати, я более чем уверен, что этот конкретный человек наврал про 9 лет и вообще на C# никогда не писал. Прикинь такие тоже встречаются, не все кто в тельняшках моряки.

А бывает, что человек работал годами, но условно говоря юниором, которому серьезной работы не доверяется, а он главным образом пишет через какой-то готовый фреймворк код, в котором ошибки не критичны. Последний человек, который мне сказал, что Dispose — для очистки памяти, занимаемой объектом, работал несколько лет в создании разных приложений, с плотной работой с БД. Дальнейшие вопросы после этого выявили, что в компании был какой-то самописный ДАЛ, которым человек собственно и пользовался. А как оно там работает внутри — он так и остался без понятия.
Re[7]: Только что с интервью...
От: Mishka Великобритания  
Дата: 28.03.17 16:26
Оценка:
Здравствуйте, Michael7, Вы писали:

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


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


M>>>GC вычистит ненужный более объект (ушедший из поля видимости). Только using для этого не обязателен, это уже я поспешил замечание сделать. using нужен был, если требовалась очистка, даже при словленном исключении, то есть, это фактически аналог try{}finally{}


IT>>Давай без using. Нет его. Влияют ли скобки на время жизни объекта? С областью видимости переменной всё понятно. А как с объектом?


M>По идее тоже заканчивается за блоком, если только не static.


На коленке :

{
    var o = new MyClassWithFinilizer();
}
GC.Collect
GC.WaitForPendingFinilizers()
GC.Gollect


Упадёт объект? Нет студии под рукой проверить
Re[5]: Только что с интервью...
От: StandAlone  
Дата: 28.03.17 16:26
Оценка: :)
Здравствуйте, Mishka, Вы писали:

M>P.S. Вопрос 2 — что есть mutex и зачем он? Это тоже "о боже мой, вы совсем о..уели в своих банках"?


А тебя какой интересует, системный объект Винапи или его дотнет обертка? Их поведение различается, кстати.
И это все тоже чисто специфика прикладного кодера невысокого уровня.
Re[7]: Только что с интервью...
От: IT Россия blogs.rsdn.ru
Дата: 28.03.17 16:27
Оценка:
Здравствуйте, Слава, Вы писали:

IT>>Давай без using. Нет его. Влияют ли скобки на время жизни объекта? С областью видимости переменной всё понятно. А как с объектом?


С>Нет, не влияют. Я вообще сомневаюсь, что MSIL со скобками и без них будет хоть чем-то отличаться.


Вряд ли это MSIL. Это зависит чего там компилятор нагенерирует.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Только что с интервью...
От: IT Россия blogs.rsdn.ru
Дата: 28.03.17 16:29
Оценка:
Здравствуйте, Michael7, Вы писали:

IT>>Давай без using. Нет его. Влияют ли скобки на время жизни объекта? С областью видимости переменной всё понятно. А как с объектом?

M>По идее тоже заканчивается за блоком, если только не static.

Не думаю. Указатель под переменную выделяется в стеке и вряд ли он зачищается при выходе из области видимости переменной. Следовательно, объект будет существовать до момента выхода из метода.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Только что с интервью...
От: StandAlone  
Дата: 28.03.17 16:34
Оценка: 14 (3) :)
Здравствуйте, fmiracle, Вы писали:

F>Я не собеседую в Лондоне в большой банк, а только в РФ в небольшую компанию. И я часто спрашиваю что такое метод Dispose, для чего применяется, и уже не раз получал ответ, что он нужен для того, чтобы сборщик мусора теперь мог собрать этот объект


Меня однажды собеседовали в один небольшой немецкий банк. Собеседующих было 2, добрый и злой, как положено. Ну в общем на третий час они малость подустали( а я как раз тогда проштудировал от корки до корки Нэша по наисвежайшему C# 4.0 и прорешал все задачки из Сэджвика). И один из собеседующих, наморщив лоб, небрежно обронил — "а расскажите-ка нам, как в машинной памяти устроена ссылка на объект в .NET... ШТАААААА???? ВЫ ЭТОГО НЕ ЗНАЕТЕ И СМЕЛИ К НАМ ПРИЙТИ?!!!!...".
Даже не знаю, насколько гневную тему на каком-нибудь форуме тиснул тем вечером один из тех разгневанных программистов.

F>При этом человек может работать с C# уже несколько лет, в т.ч. с базами данных.


P.S. Да, самое смешное. Несмотря на знания Нэша и Сэджвика, кодил я тогда откровенно говенно. Опыта не хватало, умения сосредоточиться на нужном или запомнить все важное из структуры проектов в несколько сотен kloc.
Щас, правда, ситуация не особо улучшилась, зато я стал намного наглее.
Отредактировано 28.03.2017 16:35 StandAlone . Предыдущая версия .
Re[3]: Только что с интервью...
От: _Raz_  
Дата: 28.03.17 16:46
Оценка:
Здравствуйте, StandAlone, Вы писали:

S>> она идеально знает ... паттерны ...

SA> Что, кстати, вполне вероятно. Алгоритмы не требуют знания идиомы Disposable, это чисто специфика прикладного кодера.

А если не вполне вероятно, а совершенно точно, то Dispose — это паттерн.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[8]: Только что с интервью...
От: Michael7 Россия  
Дата: 28.03.17 16:55
Оценка:
Здравствуйте, Mishka, Вы писали:


M>
M>{
M>    var o = new MyClassWithFinilizer();
M>}
M>GC.Collect
M>GC.WaitForPendingFinilizers()
M>GC.Gollect
M>


M>Упадёт объект? Нет студии под рукой проверить

Не должен, а с чего бы? Студии тоже нет под рукой, но проверил на mono, ничего не упало. Использовал StreamReader для класса с финализатором
Re[8]: Только что с интервью...
От: Michael7 Россия  
Дата: 28.03.17 16:58
Оценка:
Здравствуйте, IT, Вы писали:

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


IT>>>Давай без using. Нет его. Влияют ли скобки на время жизни объекта? С областью видимости переменной всё понятно. А как с объектом?

M>>По идее тоже заканчивается за блоком, если только не static.

IT>Не думаю. Указатель под переменную выделяется в стеке и вряд ли он зачищается при выходе из области видимости переменной. Следовательно, объект будет существовать до момента выхода из метода.


Засомневался, глянул сейчас в https://msdn.microsoft.com/ru-ru/library/30k8f0kc.aspx

Идентификатор, объявленный без спецификатора класса хранения static, имеет автоматическую длительность хранения, если он объявлен внутри функции. Идентификатор с автоматической длительностью хранения ("локальный идентификатор") имеет выделенную память и определенное значение только внутри блока, в котором он определен или объявлен. Автоматическому идентификатору выделяется новая память при каждом входе программы в соответствующий блок; при выходе программы из этого блока память (и значение) идентификатора освобождается. Идентификаторы, объявленные в функции без компоновки, также имеют автоматическую длительность хранения.


Естественно, на практике GC может сохранять какое-то неопределенное время память за объектом.
Re[2]: Только что с интервью...
От: ylp  
Дата: 28.03.17 17:04
Оценка: 9 (2) +6 :))) :))
Здравствуйте, antropolog, Вы писали:

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


Объясните свою логику.
Если у кандидата 9 лет опыта, это отменяет необходимость знать, зачем нужен using?
Если да, то начиная со скольки лет опыта необязательно знать, зачем нужен цикл while?
Re[9]: Только что с интервью...
От: IT Россия blogs.rsdn.ru
Дата: 28.03.17 17:11
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Засомневался, глянул сейчас в https://msdn.microsoft.com/ru-ru/library/30k8f0kc.aspx


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

M>Естественно, на практике GC может сохранять какое-то неопределенное время память за объектом.


Это понятно.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Только что с интервью...
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 28.03.17 17:16
Оценка:
Здравствуйте, StandAlone, Вы писали:

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


F>>Я не собеседую в Лондоне в большой банк, а только в РФ в небольшую компанию. И я часто спрашиваю что такое метод Dispose, для чего применяется, и уже не раз получал ответ, что он нужен для того, чтобы сборщик мусора теперь мог собрать этот объект


SA>Меня однажды собеседовали в один небольшой немецкий банк. Собеседующих было 2, добрый и злой, как положено. Ну в общем на третий час они малость подустали( а я как раз тогда проштудировал от корки до корки Нэша по наисвежайшему C# 4.0 и прорешал все задачки из Сэджвика). И один из собеседующих, наморщив лоб, небрежно обронил — "а расскажите-ка нам, как в машинной памяти устроена ссылка на объект в .NET... ШТАААААА???? ВЫ ЭТОГО НЕ ЗНАЕТЕ И СМЕЛИ К НАМ ПРИЙТИ?!!!!...".

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

Посылать надо подальше таких работодателей!
Два с лишним часа собеседовать людей--это слишком!
Re[10]: Только что с интервью...
От: Michael7 Россия  
Дата: 28.03.17 17:17
Оценка:
Здравствуйте, IT, Вы писали:

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


M>>Засомневался, глянул сейчас в https://msdn.microsoft.com/ru-ru/library/30k8f0kc.aspx


IT>Я бы глянул не в документацию, а декомпилированный код. По-моему там никто ссылки в стеке после выхода из блоков не зачищает.


Тут я пас, MSIL еще не изучал. В принципе, логично просто счетчик ссылок уменьшить до нуля после выхода из блока, а зачищать лишь при необходимости или по расписанию.
Re: Только что с интервью...
От: bazis1 Канада  
Дата: 28.03.17 17:22
Оценка: 2 (2) +10
Здравствуйте, Mishka, Вы писали:

M>Ответ:

M>
M>using 
M>{
M>  var o = new Object();
M>}
M>// здесь GC будет знать что объект свободен и его можно убрать
M>

Ну спросил бы, что будет, если using убрать. Поговорили бы, зачем нужен garbage collector. Если цель — именно нанять полезного человека, а не самоутвердиться — то надо смотреть, способен ли он понимать, что к чему, с разумным количеством подсказок. Иначе вы наймете только тех, кто целенаправленно зубрил "100 вопросов для собеседования по %TechnologyName%", что никак не коррелирует с полезностью.
Re[11]: Только что с интервью...
От: IT Россия blogs.rsdn.ru
Дата: 28.03.17 17:33
Оценка: +1
Здравствуйте, Michael7, Вы писали:

M>Тут я пас, MSIL еще не изучал. В принципе, логично просто счетчик ссылок уменьшить до нуля после выхода из блока, а зачищать лишь при необходимости или по расписанию.


Какой ещё счётчик ссылок?
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re: Только что с интервью...
От: LaptevVV Россия  
Дата: 28.03.17 17:37
Оценка:
M>Итак, Лондон, большой банк, всё серьёзно. Встречаю соискательницу с чётким CV, 9 лет опыта С#, WPF, сервер, в общем на бумаге всё что надо.
M>Вопрос: using в С# где и зачем
Это еще что...
Боб Мартин писал, что беседовал с претенденткой на серьезную программистскую должность,
которая не написала НИ ОДНОЙ программы за 6 лет обучения...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[12]: Только что с интервью...
От: Michael7 Россия  
Дата: 28.03.17 17:56
Оценка: :))) :)
Здравствуйте, IT, Вы писали:

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


M>>Тут я пас, MSIL еще не изучал. В принципе, логично просто счетчик ссылок уменьшить до нуля после выхода из блока, а зачищать лишь при необходимости или по расписанию.


IT>Какой ещё счётчик ссылок?


Я не знаю как точно сделан GC в C#, но по идее самое простое — это завести в памяти кроме данных еще и счетчик ссылок на эти данные. Каждый новый объект, ссылающийся на них увеличивает счетчик. И наоборот счетчик уменьшается с ликвидацией объекта.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.