P
prepair.app
Пройти інтерв'ю →
EnglishУкраїнськаРусский
🔷

Junior C++Питання на співбесіді C++

Junior · без досвіду / до 1 року

Співбесіда з C++ перевіряє три речі: чи розумієте ви обʼєктну модель, чи можна довірити вам памʼять і чи знаєте ви, чого коштує стандартна бібліотека. Нижче питання, які ставлять найчастіше, кожне з еталонною відповіддю. Junior: базова теорія, визначення та прості практичні кейси.

Теми для підготовки

Памʼять, вказівники та RAII
ООП, віртуальні функції та vtable
Move-семантика і правило пʼяти
Шаблони та метапрограмування
Контейнери STL і складності
Багатопотоковість і гонки даних

7 питань рівня Junior з відповідями

1

Чим вказівник відрізняється від посилання?

Відповідь

Посилання привʼязується один раз, не буває нульовим і не перепризначається; вказівник буває нульовим, перепризначається і підтримує арифметику. Посилання беруть, коли обʼєкт мусить існувати, вказівник — коли може бути відсутнім. Оскільки посилання це псевдонім, а не обʼєкт, &ref дає адресу того, на що воно посилається.

2

Де живуть змінні — стек, купа чи статична памʼять?

Відповідь

Локальні живуть на стеку і вмирають у кінці області видимості. Усе, що прийшло з new, живе в купі, доки хтось не видалить. Глобальні і static живуть у статичній памʼяті всю програму. Розуміння, де саме ви перебуваєте, закриває більшість питань про час життя, включно з тим, чому повертати адресу локальної змінної зламано.

3

Що означає `static` у C++?

Відповідь

Три різні речі залежно від місця. У локальної змінної — один екземпляр, що переживає виклики. У глобальної змінної або функції на рівні файлу — внутрішній звʼязок, невидимість для інших одиниць трансляції. У члена класу — один спільний екземпляр, що належить класу, а не обʼєкту, і в статичного методу немає this.

4

Чим `const`-вказівник відрізняється від вказівника на `const`?

Відповідь

const int* p вказує на те, що змінювати не можна, — сам вказівник рухати можна. int* const p — вказівник, який не можна перенаправити, але значення за ним писати можна. Читання оголошення справа наліво перетворює це на механіку замість вправи на памʼять, а const int* const p — обидва одразу.

5

Чим `delete` відрізняється від `delete[]` і що таке витік памʼяті?

Відповідь

delete парний до new, delete[] — до new[]; переплутати їх — невизначена поведінка, бо масивна форма зобовʼязана викликати деструктор кожного елемента. Витік — памʼять, яку виділили і не звільнили: програма продовжує її тримати, і довгоживучий процес росте, доки не помре. Розумні вказівники існують саме для того, щоб жодна з цих помилок не була можливою.

6

Чим `class` відрізняється від `struct`?

Відповідь

Лише доступом за замовчуванням: у struct члени публічні, у class — приватні. І те, і те може мати конструктори, методи та успадкування. Різниця угодою: struct для простих наборів даних, class — коли є інваріанти, які треба захищати.

7

Що таке поліморфізм і як його дає `virtual`?

Відповідь

Поліморфізм — це виклик одного інтерфейсу і отримання поведінки фактичного типу. Позначка методу як virtual означає, що виклик розвʼязується за динамічним типом обʼєкта під час виконання, а не за статичним типом вказівника. Без virtual виклик через вказівник на базовий клас виконає базову версію — найчастіше джерело здивування в тих, хто вивчає мову.

🦎

Прочитати відповіді недостатньо

На співбесіді ти говориш вголос під тиском. Кем поставить ті самі питання, оцінить кожну відповідь і покаже, що саме підтягнути.

Пройти інтерв'ю Junior C++ →
Безкоштовно · 3 інтерв'ю на місяць

Інші рівні — C++

Middle C++Senior C++Усі питання C++

Інші спеціалізації

🔍Junior QA Manual🤖Junior QA AutomationJunior Java Backend🐍Junior Python Backend🐘Junior PHP Backend🦫Junior Go Backend🟢Junior Node.js Backend💎Junior Ruby on Rails🟨Junior JavaScript⚛️Junior React Frontend