💳 Термінова новина! Trustee Plus — найкраще рішення для розрахунку криптою 👉

50 питань та відповідей щодо програмування для підготовки до технічного інтерв'ю

Готуючись до співбесіди, багато програмістів-початківців поняття не мають, яких питань очікувати від інтерв’юрів — чи це співбесіда в стартап, чи в технологічний гігант на кшталт Amazon, Microsoft або Google. У статті на Hacker Noon розробник Джавін Пол зібрав питання, які люблять ставити на таких інтерв’ю, а також відповіді на них та додаткові ресурси для підготовки.

1 коментар
50 питань та відповідей щодо програмування для підготовки до технічного інтерв'ю

Готуючись до співбесіди, багато програмістів-початківців поняття не мають, яких питань очікувати від інтерв’юрів — чи це співбесіда в стартап, чи в технологічний гігант на кшталт Amazon, Microsoft або Google. У статті на Hacker Noon розробник Джавін Пол зібрав питання, які люблять ставити на таких інтерв’ю, а також відповіді на них та додаткові ресурси для підготовки.

Усі завдання, які з великою ймовірністю запропонують кодеру на технічній співбесіді, можна умовно розділити на дві групи: загальні логічні завдання типу «змінити значення змінних, не використовуючи тимчасову змінну», а також питання структур даних і алгоритмів. Найчастіші з останніх: масиви, зв’язкові списки, рядки, двійкові дерева, а також різні питання алгоритмів — саме вони будуть розглянуті нижче.

Але перш ніж приступити до них, потрібно добре вивчити ці теми, або принаймні освіжити навички вирішення завдань з них. Для цього можна пройти курс з алгоритмів і структур даних Роберта Хорвіка: частина 1 і частина 2 .

Список найбільш поширених питань для співбесід з програмування.

1. Масиви

Масив — це найважливіша структура даних, що зберігає набір елементів у безперервній ділянці пам’яті. Це улюблена тема інтерв’юерів, і багато питань щодо неї можна очікувати в будь-якій співбесіді, наприклад, на реверс, сортування або пошук елементів масиву.

Головний плюс такої структури даних, як масив — він забезпечує швидкий пошук складністю Про (1) при знанні індексів, але додавання та видалення елементів з нього відбувається повільно, тому що не можна змінювати розмір масиву після створення. Щоб збільшити або зменшити масив, потрібно створити новий і скопіювати всі елементи зі старого.

Щоб з легкістю відповідати на питання, пов’язані з масивами, потрібно добре розбиратися як із самими масивами, так і з базовими конструкторами, такі як рекурсія та основні оператори.

Ось найчастіші питання:

  1. Як знайти пропущене число у заданому масиві цілих чисел від 1 до 100? ( Рішення )
  2. Як знайти число, що повторюється, в заданому масиві цілих чисел? ( Рішення )
  3. Як знайти найбільше та найменше число в невідсортованому масиві? ( Рішення )
  4. Як знайти всі пари в масиві цілих чисел, сума яких дорівнює заданому числу? ( Рішення )
  5. Як знайти числа, що повторюються в масиві, якщо їх кілька? ( Рішення )
  6. Як видалити повторювані елементи із заданого масиву Java? ( Рішення )
  7. Як сортувати масив цілих чисел без додаткової пам’яті за допомогою алгоритму швидкого сортування? ( Рішення )
  8. Як видалити елементи, що повторюються, з масиву без додаткової пам’яті? ( Рішення )
  9. Як змінити порядок елементів у масиві на зворотний без додаткової пам’яті в Java? ( Рішення )
  10. Як видалити елементи, що повторюються, з масиву без використання колекцій? ( Рішення )

Ці питання допоможуть не тільки розвинути навички вирішення завдань, а й прокачати знання з масивів. Більш складні питання по темі можна знайти в курсі алгоритмів The Coding Interview Bootcamp: Algorithms + Data Structures, розробленому спеціально для підготовки до співбесід у таких технологічних гігантах, як Google, Microsoft, Apple або Facebook.

Додатково можна вправлятися на цій добірці із 30 питань .

Записатись на курс Java Programming and Software Engineering Fundamentals від Coursera

Мануал для джуна. Чим займається Azure Cloud Engineer:
must have навички початківця та список запитань зі співбесід від сеньйора із SoftServe
Мануал для джуна. Чим займається Azure Cloud Engineer: must have навички початківця та список запитань зі співбесід від сеньйора із SoftServe
По темi
Мануал для джуна. Чим займається Azure Cloud Engineer: must have навички початківця та список запитань зі співбесід від сеньйора із SoftServe

2. Список зв’язків

Ще одна базова структура даних — зв’язковий список. Як і масив, це лінійна структура даних, і елементи у ньому зберігаються лінійно, але на відміну від масиву — на безперервних областях. Вони розкидані в пам’яті та з'єднуються за допомогою вузлів. Зв’язковий список — ніщо інше, як список вузлів, кожен з яких містить власне дані та посилання на наступний вузол.

Завдяки такій структурі додавати та видаляти елементи у зв’язному списку досить легко, тому що потрібно просто змінити посилання без необхідності створювати новий список. При цьому шукати складніші елементи; пошук за однозв’язковим списком займає лінійний час O (n). У цій статті можна докладніше прочитати про відмінності між масивами та списками.

Є різні види зв’язкових списків: однозв’язний список, який дозволяє пересуватися тільки в один бік: на початок або на кінець; двозв’язний перелік, що дає можливість переміщення як вперед, так і назад; кільцевий список, що формує зациклену структуру.

Щоб успішно справлятися з питаннями лінійних списків, важливо добре знати рекурсію. Якщо витягти з зв’язкового списку один вузол, структура, що залишилася, як і раніше, буде зв’язковим списком, і тому для багатьох завдань у цій темі більш простими є рекурсивні рішення, ніж ітеративні.

Запитання для співбесіди:

  1. Як знайти центральний елемент в одному списку за один прохід? ( Рішення )
  2. Як перевірити заданий список на циклічність? Як знайти вихідний вузол циклу? ( Рішення )
  3. Як зробити реверс зв’язкового списку? ( Рішення )
  4. Як зробити реверс однозв’язкового списку без рекурсії? ( Рішення )
  5. Як видалити вузли, що повторюються, з несортованого зв’язкового списку? ( Рішення )
  6. Як знайти довжину списку? ( Рішення )
  7. Як знайти 3-й вузол з кінця в списку? ( Рішення )
  8. Як знайти суму двох зв’язкових списків, використовуючи стек? ( Рішення )

Ці питання допоможуть розвинути вміння вирішувати завдання на зв’язкові списки та поглибити знання цієї структури даних. Якщо вони викликають труднощі, можна оновити знання структур даних і алгоритмів, пройшовши курс Data Structures and Algorithms: Deep Dive Using Java .

Крім того, можна потренуватися на цьому списку із 30 питань .

Записатися на курс Професія Java-розробник від Skillfactory

Мануал для джуна. Що треба знати початківцю аби влаштуватися маркетологом в IT-компанію: 30 запитань і поради від досвідченого фахівця
Мануал для джуна. Що треба знати початківцю, аби влаштуватися маркетологом в IT-компанію: 30 запитань і поради від досвідченого фахівця
По темi
Мануал для джуна. Що треба знати початківцю, аби влаштуватися маркетологом в IT-компанію: 30 запитань і поради від досвідченого фахівця

3. Рядки

Крім масивів та зв’язкових списків, ще однією популярною темою є рядки: питання щодо них незмінно звучать на кожній співбесіді на посади у програмуванні.

Плюсом тут можна вважати те, що знаючи масиви, дуже легко вирішувати завдання на рядки, тому що рядок є масивом символів. Отже, всі методи, засвоєні при вирішенні питань на масиви, можна використовувати і для вирішення питань на рядки.

Ось найчастіші з них:

  1. Як вивести символи, що повторюються, з рядка? ( Рішення )
  2. Як перевірити, чи є два рядки анаграм? ( Рішення )
  3. Як вивести перший символ, що не повторюється, з рядка? ( Рішення )
  4. Як зробити реверс заданого рядка з використанням рекурсії? (Рішення )
  5. Як перевірити, що рядок складається лише із цифр? ( Рішення )
  6. Як знайти символ, що повторюється, в рядку? ( Рішення )
  7. Як порахувати кількість голосних та приголосних звуків у заданому рядку? ( Рішення )
  8. Як порахувати, скільки разів у рядку зустрічається заданий символ? ( Рішення )
  9. Як знайти всі можливі перестановки елементів рядка? ( Рішення )
  10. Як зробити реверс слів у заданому реченні, не використовуючи класи-колекції? ( Рішення )
  11. Як перевірити, чи один рядок є перестановкою іншого? ( Рішення )
  12. Як перевірити, чи є заданий рядок паліндромом? ( Рішення )

Здатність вирішити ці питання свідчить про досить хороший рівень володінь рядками. Більш просунуті завдання можна знайти у книзі « Алгоритми. Посібник з розробки » Стівена Скієни .

Ще 20 питань можна знайти тут .

4. Двійкове дерево пошуку

Усі розглянуті вище структури — лінійні, проте насправді уявити всю інформацію в такий спосіб неможливо, і тут допомагає така структура даних, як дерево.

Дерево дозволяє зберігати дані як ієрархії. Залежно від способу зберігання інформації, існують різні типи дерев, наприклад, двійкове дерево, в якому кожен вузол має не більше двох дочірніх елементів. Поряд із двійковим деревом пошуку, це одна з найпоширеніших деревоподібних структур даних, а значить, по ньому обов’язково попадеться безліч питань, включаючи їх обхід, підрахунок вузлів, визначення глибини та збалансованості дерева.

Секрет успішного проходження питань, пов’язаних із двійковим деревом — ґрунтовне знання теорії, наприклад, що таке розмір чи глибина двійкового дерева, що таке лист та вузол, а також розуміння основних алгоритмів обходу дерева: у прямому, симетричному та зворотному порядку.

Найпоширеніші питання щодо бінарних дерев:

  1. Як реалізується двійкове дерево пошуку? ( Рішення )
  2. Як виконати обхід у порядку в заданому двійковому дереві? ( Рішення )
  3. Як обійти задане двійкове дерево без рекурсії? ( Рішення )
  4. Як виконати симетричний обхід у заданому двійковому дереві? ( Рішення )
  5. Як вивести всі вузли заданого двійкового дерева за допомогою симетричного обходу без рекурсії? ( Рішення )
  6. Як застосовується алгоритм обходу у зворотному порядку? ( Рішення )
  7. Як обійти задане двійкове дерево у зворотному порядку без рекурсії? ( Рішення )
  8. Як вивести на друк усі листи двійкового дерева пошуку? ( Рішення )
  9. Як порахувати кількість листя у заданому двійковому дереві? ( Рішення )
  10. Як виконати двійковий пошук у заданому масиві? ( Рішення )

Якщо ці питання самостійно даються занадто складно, не завадить пройти який-небудь якісний курс структур даних і алгоритмів, наприклад From 0 to 1: Data Structures & Algorithms in Java. Ось ще два списки книг та курсів на цю тему.

Мануал для джуна. Що треба знати початківцю в DevOps: 30 запитань і поради досвідченого ліда
Мануал для джуна. Що треба знати початківцю в DevOps: 30 запитань і поради досвідченого ліда
По темi
Мануал для джуна. Що треба знати початківцю в DevOps: 30 запитань і поради досвідченого ліда

5. Інші алгоритми та питання

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

Дуже важливо добре підготуватися на ці теми, тому що на реальних співбесідах з них часто трапляються несподівані каверзні питання. Якщо вирішувати їх заздалегідь, вони не викличуть проблем, а це додасть впевненості в собі, пояснюючи рішення інтерв’юеру.

  1. Як реалізується сортування бульбашкою? ( Рішення )
  2. Як реалізується ітеративне швидке сортування? ( Рішення )
  3. Як реалізується сортування вставками? ( Рішення )
  4. Як реалізується сортування злиттям? ( Рішення )
  5. Як реалізується блокове сортування? ( Рішення )
  6. Як реалізується сортування підрахунком? ( Рішення )
  7. Як реалізується порозрядне сортування? ( Рішення )
  8. Як змінити місцями значення двох змінних без використання третьої? ( Рішення )
  9. Як визначити, чи перетинаються два прямокутники? ( Рішення )
  10. Як спроєктувати торговельний автомат? ( Рішення )

Понад 189 питань для проходження співбесіди з програмування з відповідями можна знайти у книзі « Кар'єра програміста » (6-е видання) Гейл Лакман Макдауелл .

Тут можна переглянути ще 50 питань щодо програмування для проходження співбесід по телефону; закріпити навички можна за допомогою цих добірок книг і курсів .

Мануал для джуна. Що треба знати початківцю у Project Management в GameDev: 30 питань та приклади тестових завдань
Мануал для джуна. Що треба знати початківцю у Project Management в GameDev: 30 питань та приклади тестових завдань
По темi
Мануал для джуна. Що треба знати початківцю у Project Management в GameDev: 30 питань та приклади тестових завдань
Мануал для джуна. Що треба знати початківцю у fullstack-розробці: 30 питань та приклади тестових завдань
Мануал для джуна. Що треба знати початківцю у fullstack-розробці: 30 питань та приклади тестових завдань
По темi
Мануал для джуна. Що треба знати початківцю у fullstack-розробці: 30 питань та приклади тестових завдань
Читайте головні IT-новини країни в нашому Telegram
Читайте головні IT-новини країни в нашому Telegram
По темi
Читайте головні IT-новини країни в нашому Telegram
УЧАСТЬ В АЗАРТНИХ ІГРАХ МОЖЕ ВИКЛИКАТИ ІГРОВУ ЗАЛЕЖНІСТЬ. ДОТРИМУЙТЕСЯ ПРАВИЛ (ПРИНЦИПІВ) ВІДПОВІДАЛЬНОЇ ГРИ.
Ліцензія видана ТОВ "СЛОТС Ю.ЕЙ." на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 15.09.23 (рішення КРАІЛ №245 від 31.08.2023); ТОВ "СЛОТС Ю.ЕЙ." – на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 26.04.2021 (рішення КРАІЛ №150 від 12.04.2021); ТОВ «СПЕЙСИКС» – на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 08.02.2021 (рішення КРАІЛ №34 від 02.02.2021); ТОВ «ГЕЙМДЕВ» – на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 16.02.2021 (рішення № 47 від 10.02.2021).
Читайте також
Roosh запускає нову освітню платформу AI HOUSE CLUB для ML/AI-спеціалістів та дата сайнтистів. Розповідаємо, як подати заявку та чому навчатимуть
Roosh запускає нову освітню платформу AI HOUSE CLUB для ML/AI-спеціалістів та дата сайнтистів. Розповідаємо, як подати заявку та чому навчатимуть
Roosh запускає нову освітню платформу AI HOUSE CLUB для ML/AI-спеціалістів та дата сайнтистів. Розповідаємо, як подати заявку та чому навчатимуть
Мануал для джуна. Що треба знати новачку у frontend-розробці перед співбесідою на проєкт мрії: запитання для інтерв'ю та приклади тестових
Мануал для джуна. Що треба знати новачку у frontend-розробці перед співбесідою на проєкт мрії: запитання для інтерв'ю та приклади тестових
Мануал для джуна. Що треба знати новачку у frontend-розробці перед співбесідою на проєкт мрії: запитання для інтерв'ю та приклади тестових
Створювати ІТ-продукти можна на різних рівнях і вдосконалювати їх як зсередини, (backend), так і ззовні (frontend). Візьмемо, наприклад, сайт. Спеціаліст може працювати із завданнями «під капотом», а може розвивати інтерфейс сайту, застосунку чи спеціальне програмне забезпечення для бізнесу, щоб вони були зручними, зрозумілими та функціональними. Останнім якраз займається frontend-інженер. Що ще треба знати джунам про frontend-розробку, що не варто робити перед співбесідою та на які запитання відповісти, щоби бути готовим на 100% — Frontend Engineer у Levi9 Олексій Горбунов розклав все по поличках у цьому матеріалі. 
«Після випуску про IT-Generation хочеться зробити тред про те, як IT-школи вас най**ують». Відомий IT-блогер Діма Малєєв розповів, що думає про IT-освіту
«Після випуску про IT-Generation хочеться зробити тред про те, як IT-школи вас най**ують». Відомий IT-блогер Діма Малєєв розповів, що думає про IT-освіту
«Після випуску про IT-Generation хочеться зробити тред про те, як IT-школи вас най**ують». Відомий IT-блогер Діма Малєєв розповів, що думає про IT-освіту
Відомий IT-блогер Діма Малєєв розповів своє ставлення до IT-курсів, які наразі продукуються в Україні. «Після сьогоднішнього випуску про IT-Generation, хочеться зробити невеликий тред про те, як IT-школи вас най**ують, продаючи курси, які вам ніяк не допоможуть. І навіть якщо ви виграєте грант від програми — ви просто згаєте час», — написав він у Twitter. Публікуємо його допис із частковою цензурою.
1 коментар
Ким хочуть стати IT-абітурієнти 2022: топ-вузів та IT-спеціальностей
Ким хочуть стати IT-абітурієнти 2022: топ-вузів та IT-спеціальностей
Ким хочуть стати IT-абітурієнти 2022: топ-вузів та IT-спеціальностей

Хочете повідомити важливу новину? Пишіть у Telegram-бот

Головні події та корисні посилання в нашому Telegram-каналі

Обговорення
0

Дякую за цікавий матеріал. Скажіть будь-ласка задачіз теорії графів такі як пошук дерева мінімальної ваги (https://www.mathros.net.ua/znahodzhennja-najkorotshogo-shljahu-v-orijentovanomu-grafi-za-algorytmom-dejkstry.html), пошук в гдибину (ширину), алгоритми розмальовки графа і так далі, стануть у пригоді на співбесіді по програмуванню чи ні?