Не шпаргалка і не сухий чекліст. Це навчальний маршрут: теорія людською мовою, науковий сенс, аналогії з життя, приклади коду, схеми пам'яті й пастки реальних тестів.
Головна ідея: не зазубрити відповідь, а впізнати механізм питання.
1. Знайти дієслово: обрати, визначити, НЕ є, найточніше. 2. Підкреслити ознаку. 3. Відкинути сусідні поняття. 4. Обрати найвужчу відповідь.
Питання: яка програма збирає об'єктні модулі в один виконуваний модуль?
Ознака: збирає об'єктні модулі
Відповідь: компонувальник / linker
Для кожного терміна треба мати три гачки: коротке визначення, життєву аналогію і тестову пастку.
Hash = відбиток пальця файлу.
Encryption = сейф із ключем.
Signature = підпис і печатка.
Пастка: hash не розшифровують.
Підписуємо розряди справа наліво: 1, 2, 4, 8, 16. Додаємо тільки ті, де стоїть 1.
10110₂
розряди: 16 8 4 2 1
біти: 1 0 1 1 0
сума: 16 + 4 + 2 = 22₁₀
Беремо найбільший степінь двійки, який влізає, ставимо 1, віднімаємо, повторюємо.
25₁₀
25 = 16 + 8 + 1
розряди 16 8 4 2 1
біти 1 1 0 0 1
25₁₀ = 11001₂
1 byte = 8 bits. Один байт може мати 256 комбінацій, бо 2⁸ = 256.
00000000 = 0
11111111 = 255
Тому unsigned byte часто має діапазон 0..255
Колір у RGB часто має канали 0..255. IP-адреса IPv4 складається з 4 байтів. Права файлів у Linux теж зручно думати як біти.
read=4, write=2, execute=1
7 = 4+2+1 = rwx
5 = 4+1 = r-x
Праворуч рахуємо зі старим значенням, потім записуємо результат у змінну.
let x = 2;
x = x + 3;
// старе x було 2
// нове x стало 5
Цикл повторює дію. Щоб не помилитися, треба вести таблицю: i, значення змінної, умова.
let volume = 3;
for (let i = 0; i < 2; i++) {
volume = volume + 1;
}
// i=0: volume 3→4
// i=1: volume 4→5
// відповідь: 5
У багатьох мовах перший елемент має індекс 0. Це одна з найчастіших пасток.
const a = [10, 20, 30];
a[0] = 10
a[1] = 20
a[2] = 30
Рекурсія має базовий випадок і крок, який наближає до базового випадку.
function fact(n) {
if (n === 1) return 1;
return n * fact(n - 1);
}
fact(4) = 4*3*2*1 = 24
Компілятор перекладає код у нижчий рівень. Інтерпретатор виконує поступово. Компонувальник/linker збирає об'єктні модулі в виконуваний файл.
main.c → compiler → main.o
math.c → compiler → math.o
main.o + math.o → linker → app.exe
Клас — креслення, об'єкт — конкретна річ за кресленням.
class Button {
constructor(label) { this.label = label; }
}
const save = new Button('Save');
// Button = клас
// save = об'єкт
Користувач тисне кнопку гучності, але не бачить аудіодрайвер, системний мікшер і внутрішнє поле level.
class Volume {
#level = 5;
up() { if (this.#level < 10) this.#level++; }
value() { return this.#level; }
}
Один виклик, різна поведінка. Це корисно, коли код хоче працювати з різними об'єктами однаково.
apps.forEach(app => app.play());
// MusicApp.play() → звук
// VideoApp.play() → відео
// GameApp.play() → сцена
API — контракт між програмами. Клієнт знає, що попросити і який формат відповіді чекати.
GET /users/42
→ { id: 42, name: 'Anna' }
Використовувати, коли дочірній клас справді є різновидом базового.
class Vehicle {}
class Scooter extends Vehicle {}
class Car extends Vehicle {}
// Scooter is a Vehicle
Частина належить цілому й зазвичай не має сенсу без нього.
class Phone {
constructor() {
this.battery = new Battery();
}
}
// battery є частиною phone
Об'єкт містить посилання на інший об'єкт, але той може існувати окремо.
class University {
constructor(students) {
this.students = students;
}
}
// student може перейти в інший university
Unit test перевіряє маленьку функцію. Integration test перевіряє взаємодію частин. System test перевіряє всю систему.
unit: add(2,3) === 5
integration: API + database
system: user login flow
O(1) — приблизно однаково швидко. O(n) — пройти всі n елементів. O(log n) — щоразу зменшувати задачу в кілька разів. O(n²) — часто два вкладені цикли.
for item in items:
print(item)
# один прохід → O(n)
for a in items:
for b in items:
compare(a, b)
# вкладені цикли → O(n²)
Працює тільки на відсортованих даних. Якщо дані не відсортовані, середина не дає інформації, яку половину відкидати.
[1,3,5,7,9], шукаємо 7
middle = 5 → 7 більше → права половина
middle = 7 → знайдено
Stack: останній зайшов, перший вийшов. Queue: перший зайшов, перший вийшов.
stack: push A, push B, pop → B
queue: add A, add B, take → A
BFS обходить граф шарами і часто використовує queue. DFS іде вглиб і часто використовує stack або рекурсію.
BFS: спершу всі сусіди 1-го рівня
DFS: один шлях до кінця, потім назад
Швидкість і місткість обмінюються: ближча пам'ять швидша, але менша й дорожча.
registers: дуже швидко, дуже мало
cache: швидко, мало
RAM: середньо, більше
SSD/HDD: повільніше, дуже багато
CPU бере інструкцію, декодує її і виконує.
fetch: взяти інструкцію з пам'яті
decode: зрозуміти команду
execute: виконати операцію
Input/Output — взаємодія з зовнішніми пристроями або файлами.
keyboard input
screen output
file read/write
network request
Концептуальна модель описує світ словами. Логічна — таблицями і зв'язками. Фізична — як це зберігається в конкретній СУБД.
Концептуально: студент записується на курс.
Логічно: Student, Course, Enrollment.
Фізично: індекси, типи колонок, storage.
Primary key — паспорт рядка. Foreign key — посилання на паспорт в іншій таблиці.
users(id PRIMARY KEY, name)
orders(id PRIMARY KEY, user_id REFERENCES users(id))
WHERE фільтрує рядки до групування. GROUP BY збирає групи. HAVING фільтрує групи після агрегатів.
SELECT city, SUM(total)
FROM orders
WHERE status = 'paid'
GROUP BY city
HAVING SUM(total) > 10000;
GRANT видає права доступу до об'єктів БД.
GRANT SELECT ON students TO analyst;
Багато INSERT/UPDATE, важлива цілісність кожної операції.
INSERT INTO orders(user_id, total)
VALUES (42, 250);
Багато SELECT з GROUP BY, SUM, AVG, зрізами за вимірами.
SELECT region, year, SUM(total)
FROM sales
GROUP BY region, year;
Dimensions — за чим дивимось: дата, місто, товар. Measures — що рахуємо: сума, кількість, середнє.
dimensions: date, region, product
measures: revenue, quantity
y = kx + b. Графік — пряма. У Big-O це схоже на O(n).
x: 1 2 3 4
y: 2 4 6 8
кожен крок додає однаково
y = x². Росте швидше за лінійну. У задачах це часто асоціація з вкладеними циклами O(n²).
x: 1 2 3 4
y: 1 4 9 16
форма: U-подібна парабола
y = 1/x. Коли x росте, y зменшується. Часто питають як форму графіка або залежність швидкості/часу.
x: 1 2 4 10
y: 1 0.5 0.25 0.1
2^x росте дуже швидко. log₂(n) відповідає на питання: скільки разів поділити/подвоїти.
2^5 = 32
log₂(32) = 5
binary search ≈ log₂(n) кроків
Hash односторонній. Його не розшифровують назад. Його використовують для перевірки, чи змінилися дані.
hash('hello') → 2cf24d...
hash('Hello') → 185f8d...
маленька зміна → інший відбиток
Шифрування має зворотну операцію з ключем: encrypt/decrypt.
cipher = encrypt(message, key)
plain = decrypt(cipher, key)
Купина — hash-функція. Калина, Струмок, AES/Rijndael — шифри.
Питання: який алгоритм є криптографічною hash-функцією?
Відповідь: Купина.
DNS перетворює домен на IP. DHCP видає IP-адресу пристрою в мережі.
DNS: example.com → 93.184.216.34
DHCP: laptop отримав 192.168.1.20
TCP надійний і стежить за доставкою. UDP швидший, але без гарантій.
TCP: web, files, email
UDP: video call, games, DNS query
Process — запущена програма. Thread — лінія виконання всередині процесу.
Browser process:
UI thread
network thread
rendering thread
Driver — програмний посередник між ОС і пристроєм.
app → OS API → driver → printer
Frame живе на L2 і має MAC-адреси. Packet живе на L3 і має IP-адреси. У тесті це часто плутають.
Ethernet frame: src MAC, dst MAC, payload
IP packet: src IP, dst IP, payload
Switch дивиться MAC; router дивиться IP.
Switch працює всередині локальної мережі, router з'єднує різні мережі.
Laptop A -> switch -> Laptop B у тій самій LAN
LAN 192.168.1.0/24 -> router -> Internet
ARP знаходить MAC за IP у LAN. NAT перетворює приватні адреси на публічну. Port показує конкретну службу на хості.
ARP: 192.168.1.5 -> AA:BB:CC...
NAT: 192.168.1.5 -> 203.0.113.10
HTTPS port: 443
SSH — захищений доступ до сервера. Firewall фільтрує трафік. CI/CD автоматично збирає, тестує і доставляє зміни. Container пакує застосунок із залежностями.
git push -> CI build -> tests -> container image -> deploy
load balancer -> server A / server B
Frame живе на канальному рівні й містить MAC-адреси. Packet живе на мережевому рівні й містить IP-адреси. TCP/UDP segment/datagram живе на транспортному рівні й працює з портами.
Ethernet frame: src MAC -> dst MAC
IP packet: src IP -> dst IP
TCP segment: src port -> dst port
HTTP: GET /page
Hub працює дуже низько й просто ретранслює сигнал. Switch дивиться на MAC. Router дивиться на IP. Firewall може фільтрувати за IP, port, protocol, rules.
MAC? -> switch
IP route? -> router
port 443 allowed? -> firewall
GET /api? -> application/server
У реальному інтернеті частіше говорять TCP/IP stack: link, internet, transport, application. Це коротша практична модель, але ідея шарів та сама.
Link: Ethernet/Wi-Fi
Internet: IP
Transport: TCP/UDP
Application: HTTP/DNS/SSH
Якщо питають про URL, HTTP, DNS name - це application. Якщо питають про IP - network. Якщо питають про port - transport. Якщо питають про MAC - data link.
URL -> application
IP -> network
port -> transport
MAC -> data link
Classification дає клас. Regression дає число.
email → spam/not spam // classification
flat → predicted price // regression
Features — вхідні ознаки. Target — те, що модель має передбачити.
X = [hours_studied, mistakes]
y = exam_score
SVM шукає гіперплощину, яка розділяє класи з максимальним відступом до найближчих точок.
class A | margin | class B
найближчі точки = support vectors
PCA зменшує розмірність: багато ознак стискає до кількох головних компонент.
100 features → PCA → 2 components
Якщо треба обрати один варіант із кількох груп: або A, або B — додаємо.
кава: 3 види
чай: 2 види
обрати один напій → 3 + 2 = 5
Якщо треба виконати кілька кроків: A і B — множимо.
3 напої і 4 десерти
набір напій+десерт → 3 * 4 = 12
Якщо ролі різні або порядок важливий — перестановка. Якщо просто група без порядку — комбінація.
голова і секретар з 5 людей: 5*4=20
команда з 2 людей: 5*4/2=10
Кожен відсоток рахується від поточної бази.
100 +20% = 120
120 -20% = 96
не 100
Команда з 2 людей із 5: Анна+Богдан те саме, що Богдан+Анна.
5*4 / 2 = 10
ділимо на 2, бо кожна пара порахована двічі
Голова і секретар з 5 людей: Анна голова, Богдан секретар — не те саме, що навпаки.
5 варіантів на голову
4 залишилось на секретаря
5*4 = 20
Якщо частина позицій уже зайнята або деякі варіанти заборонені, спочатку фіксуємо обмеження.
3 місця, A вже на першому.
Залишилось 2 людини на 2 місця:
2*1 = 2
Якщо цифри/літери можна повторювати, кількість варіантів не зменшується після вибору.
PIN з 4 цифр, повтори дозволені:
10*10*10*10 = 10000
Якщо повтори заборонені, після кожного вибору варіантів менше.
4-значний код з різних цифр:
10*9*8*7
Обираємо один шлях із кількох альтернатив. Результат не складається з двох частин.
3 перші страви або 6 других
беремо одну страву
3 + 6 = 9
Один результат складається з кількох частин. Кожен варіант першої частини поєднується з кожним варіантом другої.
5 сиропів і 4 присипки
кава = сироп + присипка
5 * 4 = 20
Голова і заступник — це різні бейджі. Якщо люди помінялися бейджами, результат змінився.
8 людей
голова: 8 варіантів
заступник: 7 варіантів
8 * 7 = 56
Якщо всі рівноправні, порядок усередині групи не створює новий результат.
2 гравці з 10 на перевірку
10 * 9 = 90 рахує А-Б і Б-А
90 / 2 = 45
Капітана не обираємо. Він уже сидить у команді. Треба лише добрати решту.
Команда з 3 із 7.
Капітан уже входить.
1 місце зайняте капітаном.
Залишилось 2 місця.
Кандидатів без капітана: 6.
C(6,2) = 6 * 5 / 2 = 15
Тут “капітан” — роль, яку ще треба видати комусь. Роль важлива, тому порядок/призначення важливе.
Із 7 людей обрати:
капітан, спікер, секретар.
капітан: 7
спікер: 6
секретар: 5
7 * 6 * 5 = 210
Коли заборонено “разом”, часто найпростіше порахувати всі команди й відняти ті, де заборона порушена.
Команда з 3 із 7.
А і Б не можуть бути разом.
Усі команди:
C(7,3) = 35
Погані команди:
А і Б уже всередині,
треба добрати 1 із решти 5:
C(5,1) = 5
Добрі:
35 - 5 = 30
Цей спосіб довший, але добре навчає логіки.
Випадок 1: немає ні А, ні Б
C(5,3) = 10
Випадок 2: є А, немає Б
C(5,2) = 10
Випадок 3: є Б, немає А
C(5,2) = 10
Разом:
10 + 10 + 10 = 30
Входить А або Б, але не обидва. Спершу обираємо, хто саме з двох, потім добираємо решту.
Команда з 3 із 7.
Рівно один із А/Б.
хто з двох: 2 способи
добрати ще 2 із решти 5:
C(5,2)=10
2 * 10 = 20
Може входити один, а можуть входити обидва. Найлегше: усі мінус жодного.
Усі команди:
C(7,3)=35
Погані: немає ні А, ні Б.
Тоді обираємо 3 із решти 5:
C(5,3)=10
35 - 10 = 25
Фокус на об'єкті, який отримує дію.
Active: The team wrote the report.
Passive: The report was written by the team.
pattern: be + V3
Third conditional описує нереальну минулу умову.
If I had studied, I would have passed.
if + past perfect, would have + V3
Деякі слова треба запам'ятовувати парами.
depend on
responsible for
pay attention to
interested in
Inference — висновок із тексту, а не фантазія.
Text: She left without taking her umbrella.
Careful inference: it probably was not raining at that moment.
Є 3 часові зони: past, present, future. Є 4 аспекти: simple, continuous, perfect, perfect continuous.
Present Simple: I study.
Present Continuous: I am studying.
Present Perfect: I have studied.
Present Perfect Continuous: I have been studying.
Past Simple — завершена дія в минулому. Future Simple — will + V. Going to — план або очевидний намір.
I studied yesterday.
I will study tomorrow.
I am going to revise SQL tonight.
Zero — загальна істина. First — реальна майбутня умова. Second — нереальна теперішня/майбутня. Third — нереальна минула.
0: If water boils, it evaporates.
1: If I study, I will pass.
2: If I studied more, I would pass.
3: If I had studied, I would have passed.
У reading відповідь часто ховається в маркерах контрасту, причини, наслідку, прикладу.
contrast: however, although, whereas
cause: because, since, due to
result: therefore, as a result
example: for instance, such as
Ці пари часто трапляються у cloze/use of English.
depend on
responsible for
interested in
capable of
similar to
different from
pay attention to
take part in
Процедурне програмування, ООП, алгоритми, структури даних, API, тестування.
must know: loops, arrays, recursion, OOP, Big-O, unit/integration testsSQL, ключі, нормалізація, OLTP/OLAP, Data Warehouse, права доступу, індекси.
must know: SELECT/JOIN/GROUP BY/HAVING, GRANT, PK/FK, ETL/ELTОС, процеси, мережі, DNS/DHCP, SSH, firewall, CI/CD, containers, load balancing.
must know: process/thread, ports, TCP/UDP, SSH, Docker, deploy pipelineHash vs encryption, authentication/authorization, TLS/HTTPS, permissions, least privilege.
must know: hash != encrypt, Kupyna=hash, AES/Kalyna=cipher, authn/authzClassification/regression/clustering, overfitting, train/test split, PCA, SVM, metrics.
must know: class vs number, margin, dimensionality reduction, imbalanceТрасування коду, граничні випадки, unit/integration/e2e, логіка умов, читання вимог.
must know: edge cases, expected vs actual, test levels, requirements trapsBinary, loops, OOP, Big-O, SQL, networks, OS, security, ML.
1) 33 -> 100001
2) WHERE before GROUP BY, HAVING after
3) switch=MAC, router=IP
4) hash one-way, encryption reversible
5) classification=class, regression=numberСума/добуток, порядок, повторення, обмеження, відсотки, множини, must be true.
OR -> add
AND/sequence -> multiply
order matters -> arrangements/permutations
order not matters -> combinations
at least one -> complementTenses, conditionals, linkers, prepositions, reading evidence.
depend on
responsible for
similar to
although + clause
despite + noun/gerund
had + V3 -> would have + V3Не просто дивитися score. Виписати тип пастки: термін, порядок, формула, граматика, reading evidence.
Wrong because:
[ ] confused terms
[ ] missed keyword
[ ] counted wrong base
[ ] guessed grammar
[ ] no evidence in textЛогіка висловлювань, комбінаторика, відсотки, таблиці, графіки, висновки з тексту. Головне питання: що саме дозволено умовою, а що ми додумали самі?
Grammar in context, Use of English, reading for evidence, linkers, collocations. Головне питання: яка граматична роль слова в реченні і де доказ у тексті?
Програмування, ООП, алгоритми, архітектура, ОС, мережі, БД, безпека, ML/Data Science. Головне питання: яку роль виконує об'єкт, команда або технологія?
Використовуємо, коли треба обрати один варіант з кількох неперетинних груп: A або B. Варіанти не виконуються разом.
a можна вибрати 6 способами, b - 4 способами.
Обрати один: a або b.
Разом: 6 + 4 = 10Використовуємо, коли вибір складається з кількох кроків: спочатку A, потім B. Кожен варіант A може поєднатися з кожним варіантом B.
3 напої і 4 десерти.
Обрати напій і десерт.
Разом: 3 * 4 = 12Порядок важливий, і використовуються всі об'єкти. Якщо 4 людини стають у чергу, А-Б-В-Г і Б-А-В-Г - різні варіанти.
4 людини в чергу:
4! = 4 * 3 * 2 * 1 = 24Порядок важливий, але використовуються не всі об'єкти. Наприклад, з 8 людей треба обрати президента і секретаря.
A(8,2) = 8 * 7 = 56
бо перша роль має 8 варіантів,
друга - 7 після першого виборуПорядок не важливий. Комісія {А, Б, В} - це та сама комісія, що {В, Б, А}. Тому ділимо на кількість перестановок усередині групи.
C(8,3) = 8 * 7 * 6 / (3 * 2 * 1) = 56Спочатку рахуємо всі варіанти, потім віднімаємо ті, які порушують умову. Це часто найпростіший шлях.
Комісія з 3 людей із 8, А і Б не можуть бути разом.
Усі: C(8,3)=56
Погані: А і Б уже взяті, третій з решти 6
Правильні: 56 - 6 = 50Умова каже: обрати один: a або b. Слово 'або' означає, що ми не будуємо пару (a,b), а відкриваємо дві окремі доріжки.
доріжка A: 6 варіантів
доріжка B: 4 варіантиЯкщо треба було б обрати a і b, тоді було б 6*4. Але тут треба обрати будь-який один об'єкт з двох типів.
не пара: (a,b)
а один вибір: або a, або bКоли доріжки альтернативні, додаємо. Коли кроки послідовні, множимо.
6 + 4 = 10Тест часто дає варіант 24, бо мозок бачить два числа і хоче множити. Але множення - тільки коли обидва вибори потрібні одночасно.
обрати a або b -> +
обрати a і b -> *Фраза 'якщо P, то Q' хибна тільки в одному випадку: P істинне, а Q хибне. Обіцянка порушена лише тоді, коли умову виконали, а результат не дали.
Якщо прибереш кімнату (P), отримаєш цукерку (Q).
P=true, Q=false -> брехня.
Інші випадки -> правило не порушено.Потрібно вибрати те, що неминуче випливає з умови. Не те, що ймовірно, знайомо або звучить розумно.
Якщо A>B і B>C,
то A>C обов'язково.
А от 'A найбільше у світі' не випливає.Спершу читаємо назви рядків і колонок, потім одиниці виміру. Пастка: порівняти відсотки з різних баз.
20% від 100 = 20
20% від 50 = 10
Однаковий відсоток не означає однакову кількість.Лінійна функція дає пряму. Квадратична - параболу. Обернена пропорційність y=1/x має дві гілки. Експонента швидко росте або спадає.
y=x -> пряма
y=x^2 -> парабола
y=1/x -> гіпербола
y=2^x -> експонентаЛогарифм питає: до якого степеня треба піднести основу, щоб отримати число. Це обернена дія до експоненти.
2^3 = 8
log2(8) = 3Завжди питай: від якої бази рахуємо? Збільшення і зменшення на той самий відсоток не повертає до початкового числа.
100 + 20% = 120
120 - 20% = 96Час обираємо не за перекладом, а за маркером і логікою події. Present Perfect - результат до тепер. Past Simple - завершений час у минулому. Past Continuous - дія в процесі в минулому.
I have already finished.
I finished yesterday.
I was reading when he called.Якщо важливий об'єкт дії, а не виконавець, часто потрібен passive: be + V3.
The report was prepared yesterday.
The data are stored in a database.Умовні речення перевіряють реальність ситуації: реальна, малоймовірна, минула нереальна.
If it rains, we will stay home.
If I knew, I would tell you.
If I had known, I would have told you.must - внутрішня необхідність або сильний висновок. have to - зовнішнє правило. should - порада. may/might - можливість.
You must be tired. -> сильний висновок
You have to submit the form. -> правилоa/an - один із багатьох, the - конкретний або вже відомий. Нульовий артикль часто з абстрактними/загальними поняттями.
a database -> якась база
the database -> конкретна базаНа тесті часто треба знати не переклад, а природну пару слів: make a decision, do research, depend on, responsible for.
make a mistake
do homework
depend on
interested inhowever - контраст, therefore - наслідок, although - контраст усередині речення, because - причина, despite - після нього noun/gerund.
Although it was late, we continued.
Despite being tired, we continued.Не шукай 'красиву' відповідь. Шукай рядок-доказ. Якщо відповідь ширша за текст або додає припущення, вона підозріла.
Question asks: why?
Find because / reason / caused by.
Then compare wording, not emotion.Програма організована як послідовність команд і процедур. Дані й функції часто існують окремо.
function volumeUp(device) {
device.volume += 1;
}Клас - шаблон. Об'єкт - конкретний екземпляр. Інкапсуляція ховає внутрішній стан і дає керований доступ.
class Speaker {
volume = 10;
up() { this.volume++; }
}
const jbl = new Speaker();Новий клас отримує властивості й методи базового класу. Це 'is-a': ноутбук є пристроєм. Пастка: не плутати з композицією, де об'єкт має інший об'єкт.
class Device {}
class Laptop extends Device {}
// Laptop is a DeviceОдна команда викликає різну поведінку залежно від об'єкта. Як кнопка гучності: на телефоні змінює звук дзвінка, у плеєрі - медіа, у навушниках - локальний рівень.
devices.forEach(d => d.volumeUp());
// method name same,
// behavior can differBig-O описує, як росте час/пам'ять при збільшенні входу. O(1) - стало, O(log n) - дуже повільний ріст, O(n) - лінійно, O(n²) - вкладені порівняння.
binary search -> O(log n)
linear scan -> O(n)
nested loops -> O(n^2)Array швидко бере за індексом. Stack - останній зайшов, перший вийшов. Queue - перший зайшов, перший вийшов. Hash table шукає за ключем.
stack.push(x); stack.pop();
queue.enqueue(x); queue.dequeue();SELECT читає, JOIN з'єднує таблиці, WHERE фільтрує рядки до групування, HAVING фільтрує групи після GROUP BY, GRANT дає права.
SELECT user_id, COUNT(*)
FROM orders
WHERE status='paid'
GROUP BY user_id
HAVING COUNT(*) > 3;Концептуальна модель описує сутності бізнесу. Логічна - таблиці, ключі, зв'язки. Фізична - як це зберігає конкретна СУБД.
student - course - enrollment
PK: student_id
FK: enrollment.student_idOSI - модель із 7 рівнів. Для тесту важливо не вивчити все як вірш, а прив'язати приклади: фізика, кадр, пакет/IP, TCP/UDP, HTTP/DNS.
L2: Ethernet, MAC, switch
L3: IP, router
L4: TCP/UDP, ports
L7: HTTP, DNS, SMTPНа L2 часто говорять frame і MAC. На L3 - packet і IP. На L4 - segment/datagram і ports. Пастка: switch не маршрутизує за IP як router.
switch -> MAC table
router -> routing table / IP
DNS -> domain to IPКористувачі, права, процеси, журнали, служби, резервні копії, оновлення. На тесті питають роль: хто керує ресурсами і доступом.
Linux:
ps aux
systemctl status nginx
chmod 640 file
journalctl -u serviceDevOps - не тільки 'деплой'. Це CI/CD, автоматизація, контейнери, моніторинг, інфраструктура як код.
git push -> CI tests -> build -> deploy
Dockerfile -> image
Kubernetes -> orchestrationОС керує процесами, пам'яттю, файловою системою, пристроями та доступом. Kernel - ядро, shell - інтерфейс команд.
process -> scheduler
RAM -> memory manager
file -> filesystem
USB -> driverHash - односторонній відбиток. Encryption - можна розшифрувати ключем. Digital signature - підтверджує автора й цілісність.
Kupyna -> hash
AES/Rijndael -> symmetric encryption
RSA/ECDSA -> signatures / asymmetricClassification передбачає клас, regression - число, clustering - групи без міток. SVM шукає гіперплощину з максимальним margin.
classification: spam / not spam
regression: price
clustering: customer groupsДля екзамену не треба йти вглиб професії, але корисно бачити роль: SQL, сховища, ETL/ELT, якість даних, права доступу, моніторинг пайплайнів.
source -> extract -> transform -> warehouse
quality checks -> dashboard