ISD. Information Systems Development
 | Eng  | Rus  | 
    Главная  |   Наши клиенты   |   Наши структурные подразделения   |   Вакансии  |   Задания  |   Тестирование  |   Вопросы  |  

Вопросы по C++

  • Объясните разницу между понятиями  виртуальная функция  и  виртуальное наследование .
  • Объясните, чем отличаются глобальные статические функции от статических функций, членов классов.
  • Что общего, и чем обычно отличаются реализации конструкторов копирования, инициализации и перегруженной операции присваивания?
  • Сравните 2 способа перегрузки операций: как метод класса и как внешнюю  функцию-друг .
  • Как создать в классе виртуальные конструкторы и деструктор?
  • Может ли шаблонный (темплэйтный) класс быть абстрактным? Почему?
  • В чем специфика перегрузки операций "sizeof", "typeid", "new" и "delete"? Чем она вызвана?
  • Сравните особенности перегрузки операций "()" и "[]".
  • Дайте развернутое сравнение работы со строками в стиле С (char*) и С++ (string).
  • Дайте развернутое сравнение работы с динамической памятью в С и С++.
  • Дайте развернутое сравнение стандартных средств ввода-вывода в С и С++.
  • Что означает оператор throw без параметра?
  • Расскажите, какие бывают итераторы и чем они отличаются.
  • В чем различие между модификаторами register, const и volatile?
  • Как написать функцию, принимающую заранее неизвестное число аргументов?
  • В чем разница между конструкциями "extern" и "extern "C""?
  • В чем, в рамках традиционного С++, различие между using и include?
  • Сравните использование макросов, inline-функций и template-функций.
  • Как грамотно организовать нетривиальную сортировку средствами стандартных библиотек С и С++ (сравните подходы)?
  • Расскажите, что и как нужно сделать, что бы объекты написанного Вами класса можно было помещать в cout и читать из cin?
  • Сравните различные формы операций приведения типа (в стиле С и в стиле С++). Расскажите о перегрузке этих операций.
  • У каждого класса есть некоторые особые функции-члены, вызовы которых могут вставляться компилятором в код без явного на то указания программиста. Перечислите такие функции, члены и случаи, когда могут возникать неявные вызовы.
  • Как задать значения аргументов функций по умолчанию? Каковы плюсы и минусы использования этой возможности С++? Каковы ее альтернативы?
  • При написании оператора catch мы можем в качестве типа его аргумента написать непосредственно тип исключения, указатель на тип исключения либо ссылку на тип исключения. Сравните эти подходы.
  • В каком порядке вычисляются аргументы функции при ее вызове: слева направо, справа налево или еще как-нибудь? Например, в каком порядке будут вычислены аргументы в следующем примере: f(5+I, ++I); ?
  • Если при создании переменной программист ее явно не инициализировал, то, в некоторых случаях, компилятор сам даст ей некое, заранее известное начальное значение, а в некоторых случаях начальное значение будет непредсказуемо. От чего это зависит?
  • От чего зависит порядок создания (последовательность вызова конструкторов) глобальных переменных? Какие практические выводы из этого следуют?
  • Есть код:
      f(){return 3.5;}
          ...
      double d = f()
    Чему равно значение d ? Почему?
  • Объясните разницу между понятиями "анонимное пространство имен" и "анонимное перечисление".
  • Что произойдет, если исключение будет выброшено изнутри конструктора?
  • Что из себя представляет и для чего применяется специализация шаблонов?
  • В чем специфика применения операции delete к указателям на функции?
  • Что такое и как используется this ?
  • Для чего применяется предварительное объявление (forward declaration) классов?
  • Какие директивы препроцессора обычно используются для предотвращения повторного включения заголовочного файла?
  • Какие конструкции для организации ветвления предоставляет программистам С++?
  • Какие конструкции для организации циклов предоставляет программистам С++?
  • Что такое полиморфизм? Наличие какие конструкций в С++ позволяет утверждать, что этот язык поддерживает полиморфизм? Для чего используется полиморфизм?
  • Что такое lvalue ?
  • Для чего в C++ используется ключевое слово finaly ?
  • Сравните операторы continue и break.
  • Что такое и для чего нужны триграфы?
  • В чем отличие и что общее в специфике перегрузки конструкторов и деструкторов?
  • Что такое и как используется анонимное объединение?
  • Можно ли в С++ (если да - то как) написать такой класс, от которого нельзя пронаследовать в дальнейшем никакой другой класс?
  • Даны два класса, один из которых является наследником от второго. Напишите, как должны выглядеть конструкторы копирования-инициализации для этих классов (составьте пример).
  • В чем специфика операций || и && ? В чем специфика перегрузки этих операций?
  • Сравните понятия "статическая переменная" и "статическая переменная - член класса".
  • В чем опасность использования макросов? Приведите примеры.
  • Сравните операторы throw и return.
  • Как инициализировать переменную, являющуюся приватным статическим членом класса?
  • Для чего нужен и как используется класс auto_ptr ?


Данный материал представляет собой список вопросов по С++, наиболее часто задаваемых на техническом интервью претендентам, желающим поступить на работу в фирму ISD. Они составлены не в форме тестовых вопросов, предполагающих выбор одной из нескольких альтернатив, но как открытые вопросы, дающие возможность понаблюдать за ходом мысли испытуемого и подталкивающие к дальнейшему, более глубокому обсуждению. При этом для ответа, в большинстве ситуаций, испытуемому необходимо продемонстрировать знания одновременно из нескольких тематических разделов. Часто вопросы сформулированы в несколько провокационной форме. Они не предполагают наличия простого ответа. Они призваны послужить поводом для некой дискуссии, постепенно углубляющейся в заявленную в вопросе тематику. Часть вопросов достаточно сложна, и предполагает наличие знаний по С++, выходящих за рамки средних. Большинство из вопросов предполагает дальнейшее развитие темы уточняющими вопросами типа: "Почему вы так считаете?", "Чем вы обосновываете ваш ответ?", "Где (в каких ситуациях) это может применяться?" и т.п.

Наилучшим способом подготовки к техническому интервью по С++ является решение ВСЕХ заданий из ТРЕТЬЕГО (!) издания книги Б.Страуструпа "Язык программирования С++".

  |  Up Наверх