Medium-rare wrote:
Зачем знать и уметь рассказать, "почему оно упадёт" на интервью? О! Вначале казалось, что они к вам несправедливы. Конечно, когда точно неизвестно почему именно упадёт, то вопрос как-бы тухлый. Но имея в виду, что отвечаешь тоже человеку, а не роботу, можно версий накидать.
Как-то, Unitialized variable causes non-deterministic program code behavior.
1) If the garbage pointer variable points to the memory mapped for this process (in the OS), we can never know what type of data there, so we don't know how the code behaves.
2) If the garbage pointer variable does not point to the memory mapped for this process we have some Page Exception Fault or General Protection Fault, that executes standard OS process crash procedure.
Тут можно порассуждать, как возбуждается GPF в OS, как Kernel вступает. Это всё очень прямые свидетельства качества системного программиста. C/C++ программеры должны это знать и понимать.
Типа отбрехаться знанием страшных слов? Меня попросили по шагам рассказать что происходит при запуске функции, откуда берется ее адрес, и откуда она берет доступ к данным. Действительно, падать не должно. Но по опыту-то падало!
Опыт работы с чужим кодом такой пример не раскрывает нисколько: если я увижу такой код, я уже на уровне рефлекса распознаю ошибку, а не буду рассуждать: один фиг оно не упадет, т.к. функция не виртуальная, пойдет и так.
Вообще же поднатаскатся на таких задачах проблем не вижу - кол-во каверзных вопросов ограниченно, и еще чуть подготовившись можно быстро отвечать на все. Но что же делать с MFC, COM, WinAPI и прочим? Каждая из книг по этим технологиям занимает страниц 900. И если к кавернзным вопросам по С++ еще можно подготовится, то от мысли о том, что нужно зубрить эти фолианты мне становится совсем дурно.