Інтервʼю без заспокійливих: підготовка, питання на логіку, Chat GPT, red та green flags

💡 Усі статті, обговорення, новини для початківців — в одному місці. Приєднуйтесь до Junior спільноти!

Привіт! Мене звати Ганна Ліхтман, я вже понад 10 років в IT. Я пройшла шлях, як то кажуть, «From Zero to Hero». Від створення сайтів за допомогою WordPress та верстки чистим HTML та CSS до лідерської ролі як Software Engineer з розумінням повного процесу розробки й хмарних технологій. Тепер я рухаюсь у бік інжиніринг-менеджменту та архітектури.

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

  1. Здається, співбесіда зараз — це більше стрес, ніж раніше, чи не так? Розберемося з підвищенням вимог на ринку.
  2. Як не нервувати під час інтерв’ю та що допоможе заспокоїтись (спойлер — нічого).
  3. Підготовка з Chat GPT: корисно чи не дуже? Chat GPT — це чудовий інструмент, якщо ним правильно користуватися. Як я чула від одного спікера на конференції: «Chat GPT та AI не замінять людину, але людина, яка вміє ними користуватися, замінить інших».
  4. Red та Green flags під час інтерв’ю: на що варто звернути увагу (як для кандидата, так і для інтервʼюера).

Чому важко знайти роботу

Зараз дуже висока конкуренція. Якщо раніше варто було пройти курс по React за три місяці та все, в принципі, вас були готові брати на роботу, то зараз треба бути майстром на всі руки та ноги. Вміти не тільки React, а ще зверху Vue, Angular, і можна Python туди ж долучити, знати бази даних, вміти спілкуватися з племенами Конго, варити проводи й борщі, ну і щось ще... Коротше купу різних речей, щоб отримати бажану роботу.

AI, Chat GPT і син маминої подруги завжди знайде, як вас обскакати. Багато речей, які робили люди, були вже замінені штучним інтелектом. І поки ви шукаєте роботу, таке відчуття, що у вас просто її забирають. І це, на жаль, наші реалії.

Глобальна криза, яку ми не можемо не помітити, змусила компанії переглянути найм. Не тільки в IT, але в усіх галузях. Зараз доволі важко знайти роботу не тільки айтівцям, а й лікарям, юристам, абсолютно будь-яким іншим професіям, і не лише в Україні.

Чому підвищуються вимоги до найму

Всі ці курси «ввійти в IT», які нам обіцяли легкий старт, «через три місяці ми знайдемо вам проєкт (навіть два, три, десять), і ви будете заробляти 5000 доларів». Але це міф. Кожного дня такі курси випускають по 300 людей, які вміють писати Hello world. Але коли їх садиш за реальний проєкт — вони зіштовхуються з реальністю та губляться. І курси створюють все більше і більше таких випускників, серед яких губляться реальні кандидати.

Вакансій стало менше, багато бізнесів закрились. А вимоги — стали вищими. Чимало компаній шукають собі універсальних людей, які можуть і фронтенд, і бекенд, і devops, і готувати каву.

Масове скорочення, навіть для гігантів галузі. 50% незамінних людей насправді були дуже замінними. Є такий термін — інженери-привиди. Це люди, які просто сиділи, робили, наприклад...нічого, але постійно казали, що вони зайняті. Або малювали одну кнопку три місяці чи додавали поле в MongoDB пів року. І ці «незамінні» люди насправді мають дуже низький потенціал. І дуже мало знань. Зараз важко знайти кандидата, бо після масових скорочень приходять саме такі інженери-привиди та шукають роботу, плюс люди з пункту 1.

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

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

Рівень задач дуже сильно виріс. Який у нас був набір виживання на 2024 рік?

Це обов’язково широкий стек технологій. Як я казала, якщо раніше треба було вивчити один React і цього було достатньо, то зараз на співбесідах можуть спитати: «А яка різниця з іншими фреймворками? А ви порівнювали?» І більшість скаже, що ні.

  • А чому ви вибрали React?
  • Ну, він модний.

Хороша відповідь, дійсно...

Якщо ви фронтенд, вам треба знати, як фронтенд спілкується з бекендом. Якщо ви користуєтесь REST — прекрасно! Розкажіть про CRUD, розкажіть про додаткові OPTIONS та HEAD, навіщо вони потрібні. Google Meet постійно відправляє якісь OPTIONS — що це таке? Більшість не дасть відповіді, хоча і працюють з браузером. Вам треба розуміти бази даних. Якщо ви backend — це 100% must have. Обидві бази даних — і Rest, і GraphQL. А ще Docker, кубер та хмарні технології. Вам треба розуміти хоча б поверхнево, як працює ВСЕ. Щоб у випадку чого ви могли сказати, що проблема не на вашій стороні, ви в цьому щось розумієте.

І, звичайно, хмарні сервіси. Вони стали стандартом для багатьох компаній. Вже давно відходять від on-premise, від залізячки, яка стоїть десь в центрах або у нас під столом. Ви також маєте розуміти базові концепти. Але якщо ви претендуєте на позицію Senior і вище, маєте ними ще й користуватися.

Алгоритми та структури даних. Більшість хороших кандидатів погоджуються, що це потрібно. Суперкандидати це знають. А бувають такі кандидати, які починають казати «Та навіщо мені той computer science, мені взагалі воно не треба, де я буду це використовувати». А потім пише функцію reduce, де робить чотири рази spread акумулятора...

Смішні, але показові задачі, які можна почути на інтервʼю

Задачі чи питання на інтервʼю не завжди спрямовані на перевірку ваших знань. Частіше це може бути логіка. Розберемось на прикладі двох таких завдань:

  • Для джуніора — «Поясни, будь ласка, SOLID принципи на прикладі бутерброда».
  • Middle — «Напиши власну систему керуваннями базами даних».

Прекрасні питання, але є «але». Вам важливо зрозуміти суть, а не зависнути над згадуванням правильної відповіді. Ми не в школі, ми ведемо діалог і хочемо побачити розуміння ваших слів, а не «зубрьож».

Тобто, що таке SOLID? Пояснюємо суть!

S — це Single responsibility principle. Розберімо на принципі бутерброда. Кожен компонент бутерброда має свою роль. Хліб тримає все разом, сир додає смак, ковбаса відповідає за ситність. І ось сам принцип: якщо хліб вирішить бути ковбасою, то все розвалиться. У кожного своя відповідальність. Вам треба зрозуміти суть і перенести це на компоненти. Якщо компонент, наприклад, кнопка, буде одночасно ще й інпутом і формою, це вже руйнує принцип Single responsibility.

Далі буква О — Open/closed principle. Бутерброд готовий до змін, але не до переписування з нуля. Ви можете додати помідор, листя салату, огірок, соуси — все, що хочете, але хліб ламати не можна. Бо це єдина структура, entity. Тобто він відкритий для розширення, але закритий до модифікації основної структури. Те саме можна сказати про кнопку. Ви можете додати туди якусь Fancy Icon, але не можете, наприклад, прибрати onclick, бо це перестане просто бути кнопкою (так-так, є ще disabled, я знаю, але це теж база кнопки).

Наступна буква L, підстановка Ліскова. Це вона нам каже, що, якщо ви зможете замінити один інгредієнт іншим, але основна функція залишається за ним, то все окей і нічого не має бути порушено. Ви змінюєте сир на плавлений сирок — і це все ще бутерброд. Але якщо ви замість хліба покладете зверху тарілку супа — то у вас якась неправильна буде заміна. І неправильний бутерброд. Кнопка може бути лінкою, але це все одно кнопка.

Далі I — Interface segregation, розподіляй і володарюй. Кожен, хто їсть бутерброд, має свої вимоги. І ковбаса може бути різною. Вона може бути веганською, салямі — якою хочете, і це все має міститися в маленьких інтерфейсах, які ви будете імплементувати до ковбаси, дивлячись, що хоче ваш гість, ваш їдець, ваш клієнт. Тобто набір інтерфейсів = варіанти ковбаси. Кнопка може імплементувати анімацію, види та інші фічі, а може просто залишатися кнопкою.

І остання літера — D. Коли я питаю SOLID під час інтерв’ю, я ніколи не питаю про S і O — ці дві букви знають усі абсолютно. Я питаю, що таке буква D — Dependency inversion principle. Зазвичай на цьому питанні сиплються всі, одиниці відповідають. Тому зрозумієте суть бутерброда — зрозумієте суть SOLID. Від чого в нас dependency inversion залежить? Бутерброд не залежить від конкретних інгредієнтів, а від їхніх абстракцій. Що це може бути? Ви можете використовувати будь-який хліб, абстрактний хліб завжди залишиться хлібом. Він може бути білий, чорний, безглютеновий — який завгодно коржик, але він має походити від абстрактного класу хліба. Кнопці все одно, якою вона буде, абстрактна кнопка має свою реалізацію, яка не залежить від нащадків.

Друге було «Напиши власну систему керування базами даних». Окей, давайте просто зрозуміємо, як воно працює.

1. ACID. Система повинна забезпечувати ACID: нам просто треба зрозуміти, що таке атомарність, стабільність, ізоляція і довговічність. Зрозуміємо це на простих речах...так-так, на бутербродах.

  • Атомарність забезпечує повністю зібраний бутерброд — якщо ми перенесемо це в сторону бази даних, у нас має бути весь бутерброд (не шматочок, і не тільки хліб), вся база даних або нічого. Весь бутерброд.
  • Стабільність — всі бутерброди мають бути їстівними. Навіть після помилки. Сир з пліснявою, отже так задумано! База впала? То в нас є репліка!
  • Ізоляція — ваша база даних має бути ізольована, а бутерброд має бути бутербродом, не перетинатися з іншими речами. До роботи з базою даних є свої функції й більше нічого. Це десертна ложка для бутерброда? Ви що, знущаєтесь?
  • Довговічність — ваша база даних має бути готовою до того, що буде падати та відтворювати репліки. Дивіться пункт 2 :)

2. Ефективність доступу до даних. Індекси в системі керування базами даних — це як різати бутерброд навпіл, щоби швидше дістатися до потрібного шматочка. А кешування — це тримати улюблений бутерброд під рукою, а не бігати до холодильника.
3. Масштабованість і відмовостійкість. Якщо на вечірку прийшло більше людей, ви робите більше бутербродів (горизонтальна масштабованість). Якщо один з них зʼїли, у вас є запасний у холодильнику (реплікація). А для економії часу — можна готувати різні види бутербродів на різних столах (шардінг).

Як не нервувати під час інтерв’ю

Насправді існує дуже багато порад. Ви можете заспокоїти себе медитаціями, привести думки до ладу, зосередитись. Можете зробити зарядку, щоб скинути це напруження і нагнати серотонін в кров. Ви можете заручитись підтримкою ваших друзів, які скажуть «давай, в тебе все вийде, ти молодець». Або перед інтерв’ю просто швидко пробігтись матеріалами та все повторити. І як це допоможе вам? Ніяк. Чому?

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

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

— Ви читали про вакансію?
— Та в мене 10 таких вакансій.
— Ви пам’ятаєте, які в нас умови, і які технології ми будемо вас питати?
— Та зараз розберемося.

Ні, так не вийде, не розберетесь. Бо ви можете проґавити якісь моменти, які вам реально не підходять, якісь технології, які ви не використовуєте.

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

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

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

Підготуйтеся до питань «Що... якщо...?». Їх дуже багато, і невизначеність вганяє в стрес. Що, якщо ви помиляєтесь? Це нормально, всі помиляються, ніхто не знає всього. Зазвичай інтерв’юери дають підказки, намагаються вас направити, і це може вам допомогти. Але якщо ви помиляєтесь — нічого страшного. «Що, якщо я забуду?» — просто скажіть «Мені треба хвилинка на подумати» або «Чи можете ви допомогти / Чи можете ви направити?». Якщо ви чогось зовсім не знаєте — в цьому випадку використовуйте логіку. Можете сказати «я ніколи з цим не працював, але давайте подумаємо. Якщо це відноситься до цієї сфери, то воно має працювати отак і отак».

Але нервувати — це нормально, ми всі нервуємо, ми всі боїмося. Ми хочемо, щоб у вас не залишилось поганого враження про нас і про компанію в цілому. Ми хочемо, щоб вам було комфортно і ви змогли розкрити свій потенціал. У нас немає цілі вас завалити. Ми хочемо знайти хорошого кандидата на цю посаду, і ми теж нервуємо (уявіть собі!).

Підготовка з Chat GPT

Поговоримо про базову підготовку — це найпростіший її вид.

Ви даєте чату GPT пояснення, що у вас буде інтерв’ю на таку-то позицію: «Давай уявимо, що ти проводиш мені інтерв’ю». Далі даєте чату GPT завдання ставити питання, а самі будете на них відповідати. А чат буде казати, чи вірно ви відповіли, чи ні. Також ви додаєте йому умови, які вам потрібні. Наприклад, «Якщо я не знаю відповіді або відповідаю неправильно — пояснюй мені правильну відповідь». І я ще додала умову «Якщо я відповідаю правильно, розширюй мою відповідь». Ось із таким запитом ви можете влаштувати базову підготовку.

Як бачите, мені чат GPT ставить питання, що таке Virtual Dom, як він працює і чому використовується в React. Здається, це супербазове питання, яке трапляється на всіх інтерв’ю React-розробника. Тому я на нього відповіла легко. Сказала, що це дерево елементів, які використовуються для швидкого порівняння з Real DOM і перерендерингу. Я дала неповну, але правильну відповідь, і він мені розписав доповнення. На скріншоті — ще не все його пояснення. Це може додати вам знань і дати змогу вразити не тільки інтерв’юера, але й себе.

Наступний варіант: він ставить питання «що таке use Effect?». Знову ж таки дуже базове питання.

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

Ви можете попросити його придумати практичні задачі, наприклад, з використанням Use Effect. Чат пише умову, дає якийсь базовий код, ви собі копіюєте, вирішуєте і скидаєте йому. Він перевірить і скаже, чи правильно ви вирішили. І, звісно, він може допомогти підібрати матеріали для навчання.

Коли треба і коли не треба використовувати чат GPT

Коли ТРЕБА:

  • Для практики інтерв’ю. Але не треба це робити за 5 хвилин до нього.
  • Для створення навчальної програми, Learning Path. Ви приходите і кажете: «Я вирішив стати архітектором, зараз в мене позиція Ліда. Як думаєш, які знання підійдуть? Проаналізуй, будь ласка, ринок, які знання вимагають на архітекторів? Перевірмо, чого я не знаю, і створимо мені структурований план навчання». Також задаєте часові рамки.
  • Покращення коду через пояснення. (!) Ви написали код самостійно. Після цього можете віддати його чату GPT і попросити розібрати, як покращити. Чому потрібно покращити саме так? Чому ці зміни корисні? Також він може розібрати ваш код на логічні уривки, знайти оптимізації або потенційні проблеми.
  • Аналіз задач і підхід до вирішення. Просто сказати чату GPT розв’язати проблему буде передусім погано для вас. Варто провести дискусію про різні підходи до розв’язання цієї задачі. Наприклад, мені треба розробити таке-то рішення, у мене є варіанти А, B і С. Давай створимо порівняльну таблицю, поговоримо. Влаштуйте дискусію з чатом GPT. Якщо у вас немає колег (а зазвичай колеги зайняті), чат GPT — це ваш найкращий друг.

Коли НЕ ТРЕБА використовувати чат GPT (прям, будь ласка, не робіть цього):

  • Коли ви виконуєте роботу без розуміння процесу. Даєте йому таску — зроби, даєте йому код — зроби. І це дуже погано, що ви просто копіюєте і не заглиблюєтеся в суть. Це призводить до залежності від інструмента і втрати ваших навичок.
  • Автоматичне створення контенту без перевірки. Ви просите чат GPT створити великий текст — це може бути техрайтинг, ваша дипломна робота, резюме, — перевіряйте, що він робить. Коли ви створюєте технічну документацію, він може вам такого написати, що ви будете в шоці.
  • Покладання на Chat GPT у важливих завданнях. Це секʼюрні задачі, або такі, де навіть незначна помилка буде мати наслідки — бухгалтерія, фінанси, юридичні питання, консультації з фахівцями, клієнтами, медична галузь тощо. Покладатись на чат GPT у цих завданнях, по-перше, небезпечно, по-друге — може призвести до великої біди та страшних наслідків. Уявляєте, скільки буде коштувати 1 мілісекунда зупинки банку. Дякую, чат GPT :)

Підсумуємо:

YES to Chat GPT

NO to Chat GPT

Розуміння концепцій: отримати пояснення складних тем або приклади для навчання

Для імітації знань: використання відповідей для співбесід чи тестів без реального засвоєння

Пошук ідей: структурувати думки або отримати підказки для розвʼязання задач

У критично важливих задачах: довіра до відповіді без перевірки (фінанси, безпека, медицина)

Оптимізація: поліпшити ваші рішення, але з поясненням, чому це краще

Для виконання роботи за вас: генерація коду, тестів або конфігурацій без вашого розуміння

Red і Green flags на інтервʼю

Один з колег GlobalLogic у напрямі JS поділився Red Flag від себе:

«Red flag — це якщо кандидат не прийшов на інтерв’ю, п’яний, накурений, голий вище пояса, без камери (навіть якщо голий), хамить, свариться матом, катує маленьких каченят»

Насправді всі ці речі, окрім каченят, були так чи інакше у нас на інтерв’ю. Тому досвіду багато :)

Як ви, будучи кандидатом, можете одразу отримати червоний прапорець від інтерв’юера? Якщо ви неорганізовані. Ви запізнились і не попередили, або попередили постфактум, коли пройшло вже 20-30 хвилин. Або ви обрали місце, де доволі гучно, на фоні люди кричать, телевізор працює, друзі в PS грають. Таке в мене було. Також якщо ви не зацікавлені — дивитесь в телефон, щось клацаєте, замовляєте в офіціанта пиво і так далі.

Коли ви занадто формальні або занадто неформальні. Треба тримати золоту середину. Перше питання, яке ми задаємо зазвичай, це «на ти або на ви?». Нам не принципово, ми можемо і на «ви», але коли формальність доходить до «Вельмишановна, вітаю вас, Ганна Леонідівна, мені індиферентно це все, але давайте продовжимо...». Можна бути трішки більш людяним. З іншого боку — занадто неформальне ставлення. Коли починають «Що ти, голова? Ну що, красавчик, ща я тобі все розкажу» — red flag.

Коли є недоречна поведінка та зовнішній вигляд. Коли курять, вживають алкоголь або їдять. Я хочу тут додати — йдеться про такі речі без попередження. Якщо мені кажуть на інтерв’ю: «Можна я перекурю?», зазвичай я кажу: «Можна», бо знаю, що це стрес. «Можна я чаю собі візьму, піду зроблю ромашку?» — я кажу: «Так, звичайно». Але коли починають хизуватися: «Зараз докурю сигаретку й починаємо» — ні, дякую.

Як отримати червоний прапорець після перших хвилин? Це можливо, коли у вас відсутня підготовка. Важливо дуже добре підготуватися завчасно, дізнатись про вакансію, компанію, не плутати назви компанії. Похибки в цьому можуть дати червоний прапорець. Або ж коли у вас немає ніяких запитань до інтерв’ювера про компанію, чи роль, немає бажання продовжувати, — це також «дзвіночок».

Якщо у вас в резюме написано, що ви працюєте з мікросервісною архітектурою, а як тільки зайдуть питання — починаєте сипатись, то це red flag. Агресивність, неввічливість, фальшива самовпевненість, сарказм, зверхнє ставлення — це red flag. Коли ми ставимо питання про алгоритми, про security, ми можемо спитати про тести, або колупатися в Git-і. І у відповідь можемо чути «Що ви думаєте, це треба так на роботі? Я ніколи таким не користувався, отже воно не треба». Якщо ми питаємо, то для цієї позиції це треба.

Ще топ-1 red flag для інтерв’ювера — це відсутність професійної поваги та готовності до співпраці. Інтервʼю — це діалог. І якщо ви навіть суперкруті технічно, це не компенсує всіх редфлегів, софт скілів. З такою людиною не захочуть працювати колеги чи мати справу менеджери. Або якщо ви не сприймаєте поради про гепи, які варто підтягнути. «Пффф, та я і так все знаю, не розповідай тут мені!»

Коли критикують наші запитання, це також red flag. «Це академічні знання і вони не потрібні, реальні задачі важливіше». Реальні задачі дійсно важливіше, коли на рівні junior ви пишете код і у вас горять очі — так. Але коли ти маєш мідлом пояснити джуну, або джуном пояснити трейні якісь речі — саме академічні знання врятують. Академічні знання потрібні, щоб повʼязати все між собою, вміти розповісти, чому саме так ми використовуємо цю технологію, а не «на минулому проєкті ми так робили, значить так треба робити всюди».

І коли є зневажливий тон до інтерв’юера. «А у вас є достатньо досвіду, щоб мене оцінювати?» І така ситуація в мене була. Був дуже технічно професійний кандидат, я його оцінила як strong senior, але через нахабну поведінку його не взяли.

Про хороше, green flags — це просто протилежне поганому, але по пунктах.

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

Тож, ми розібралися:

  • які задачі можуть спіткати вас на інтервʼю та чому найважливіше — це показати власне розуміння суті питання;
  • як заспокоїтися на інтервʼю та налаштуватися до нього;
  • у яких випадках Chat GPT може допомогти при підготовці, а в яких краще на нього не спиратись;
  • які існують червоні прапорці на інтервʼю для інтервʼюера, в перші пʼять хвилин та в міру розгортання діалогу. Так само не забуваємо про green flags :)

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

Всім успіху!

👍ПодобаєтьсяСподобалось15
До обраногоВ обраному4
LinkedIn

Найкращі коментарі пропустити

Вибачте ДОУ, ви схоже хотіли представити сильних розробниць, але матеріалами такої якості ви підставляєте справді толкових жінок в R&D і тільки укорінюєте стереотипи.

На майбутнє раджу хоч мінімальне рев’ю статей експертами перед публікацією.

Про ACID краще переписати або видалити. Те що написано є небезпечно невірним.

Друге було «Напиши власну систему керування базами даних». Окей, давайте просто зрозуміємо, як воно працює.

І дальше пре повна маячня, але я прокоментую.

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

Ні, атомарність — це про виконання роботи, яка складається з багатьох кроків, як одна логічна одиниця роботи. На прикладі з бутербродом це скоріше «я їм бутер, а насправді я їм салат, м’ясо та хліб».

Стабільність — всі бутерброди мають бути їстівними. Навіть після помилки. Сир з пліснявою, отже так задумано! База впала? То в нас є репліка!

Ні, consistency — це не стабільність, а послідовність чи узгодженість. Ви бутер їсте і він нормально засвоюється (коміт без помилок) або виригується назад (ролбек). Реплікація тут взагалі мимо. Коли ми реплікуємо бінлог чи вал, то там уже буде тільки те, що успішно закомітилось.

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

До чого тут взагалі ізоляція бази? Ізоляція на прикладі бутера це коли ми хочем бургер (котлету) вел дан, а не мідіум. Тоді ми беремо (лок for update) саму котлету і досмажуємо її до потрібної прожарки, а потім суємо назад між булки.

Довговічність — ваша база даних має бути готовою до того, що буде падати та відтворювати репліки. Дивіться пункт 2 :)

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

Індекси в системі керування базами даних — це як різати бутерброд навпіл, щоби швидше дістатися до потрібного шматочка.

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

Якщо на вечірку прийшло більше людей, ви робите більше бутербродів (горизонтальна масштабованість).

Скоріше кожна репліка — це новий гриль для приготування бургерів.

А для економії часу — можна готувати різні види бутербродів на різних столах (шардінг)

Мабуть, все таки, шардінг — це розрізати бургер на n кусочків.

До того ж, на нормальній співбесіді по RDMS в нормальну компанію ACID — це така незначна частина того, що потрібно знати, що про це навіть не варто вивалювати таку стіну тексту. Краще б попробувал на прикладі з бутером пояснити optimistic/pessimistic locking — це також класика інтерв’ю, але хоч не така заїзжена як ACID (особливо в епоху MVCC та snapshot isolation).

Короче, вам потрібно підтягнути ваші fundamentals. І не тільки по базам.

Цю статтю треба забанити як шкідливу або скидати своїм колегам, яких ви не любите

Спочатку пройшов повз статтю, але коментарі про rest i graphql змусили аж глянути, що там. Розумію, що суть статті не в технічних деталях, але дозвольте доколупатися.
По-перше, монга при апдейті структури документа не вимагає написання міграції, відповідно «додати поле в монгу» дуже різонуло слух. Звісно, можливо, ця особливість і має підкреслювати комічний ефект, але щось по базам там в цілому дивні речі написані.
Далі цитата:

Зараз недостатньо знати, як робити формочки або як зробити базу даних.

Зробити базу даних? Думаю, тут мало би бути щось накшталт «зробити мапінг з бази даних», бо рівень складності нинішніх бд настільки високий, що соло розробник вгатить десятиліття на те, щоб наздогнати нинішніх вендорів. Тут треба мати на увазі і тип бази (реляційна, документна, колонкова, олап, графова), і індекси (а це СС-таблиці, B, АВЛ, ЛСМ і тд дерева), і ефективна взаємодія з пам’яттю і диском (в частині рандомного доступу і бандвіча, а не просто витоків пам‘яті), і всілякі трейдофи в області fault tolerance, перформансу і консистентності даних. А ще локи, бекапи, і це все ще має працювати, щоб база встигала опрацьовувати вхідні запити. Ну і згадана вже реплікація і шардування.
В контексті цього, питання

Middle — «Напиши власну систему керуваннями базами даних».

якось прям занадто. І далі при розборі цього питання була якась стандартна фігня про асід і кеші, ніяких прикладів, ніякого коду, взагалі не зрозуміло, чого саме очікує інтерв‘юер. Якщо ви хочете послухати про всю цю стандартну лабуду, краще переформулюйте питання типу: «Які, на ваш погляд, фічі обов’язкові для сучасної субд».

Якщо ми питаємо, то для цієї позиції це треба.

Дуже добре, що у вас є кореляція між питаннями і реальною роботою (це далеко не всюди так), але не варто зразу думати, що ви начальник, а кандидат дурень, можливо це саме ви використовуєте застарілий або не оптимальний процес. Одного мого друга дуже ганяли на співбесіді по фтп бо як виявилося у них реліз відбувався через копіювання файлику на фтп. Або, якщо у вас часто користуються чері-піками, можливо, у вас є проблеми з бранчуванням. Конструктивно буде якраз таки обговорити, чому ви використовуєте щось, а кандидат — ні.

Коли критикують наші запитання, це також red flag.

Як бачите, до питань є питання, тому зразу казати, що це ред флег — трохи контр-продуктивно. Кандидати можуть дати цінний зворотній зв‘язок, яким з точки зору найму, можна і знехтувати (бо на вулиці ще черга стоїть), однак з інженерної точки зору це може бути цікаво

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Це обов’язково широкий стек технологій. Як я казала, якщо раніше треба було вивчити один React і цього було достатньо, то зараз на співбесідах можуть спитати: «А яка різниця з іншими фреймворками? А ви порівнювали?» І більшість скаже, що ні.
А чому ви вибрали React?
Ну, він модний.
Хороша відповідь, дійсно...

Я так і не зрозумів, чи були «інші фреймворки» в описі саме цієї вакансії ?

Панове, що ви такі злі? Я бачу що є певні... специфічні оцінки, але вцілому,людина намагалась як могла. Якщо у вас є 10 хвилин на коментування, чому б не зробити розбір?

Там внизу є багато розборів технічної складової. Одна річ, якої я зовсім не розумію (може це стали питати на інтерв’ю останнім часом, я там давно не був): нафіга взагалі до ООП і БД приплітати якісь бутерброди. Я це все можу пояснити на реальних прикладах, а от якби мене попросили пояснити це на прикладі бутерброда, я б певно завис па пару хвилин з думкою WTF

Погоджуюсь. Оці всі real-life порівняння тільки плутають. Можливо на самому ентрі левел, коли тільки вчиш щось воно підходить. Але на інтерв’ю коли вже розмовляєш з кандидатом і очікуєш від нього конкретних знань це дивно.

А що не так з бутербродами? Так, мабуть це не найкраща аналогія. Проте хтось мислить бутербродами, а хтось котиками та песиками. Сказати що пояснення на бутербродах зовсім невірна сказати не можна. Якби я був на співбесіді і почув таке, то мабуть прийняв би відповіді. От про обидві бази данних rest і graphql це насмішило, хоча можливо це описка і стаття погано вичитана. А все інше... Ну може хтось почитає голодний і добре запам’ятає пояснення транзакцій через призму їжі) це ж добре))

Так, мабуть це не найкраща аналогія. Проте хтось мислить бутербродами, а хтось котиками та песиками.

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

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

І у відповідь можемо чути «Що ви думаєте, це треба так на роботі? Я ніколи таким не користувався, отже воно не треба». Якщо ми питаємо, то для цієї позиції це треба.

нажаль, але зазвичай це як раз тому що — «сам просто вчора тільки в інеті прочитав що це таке, треба і кандидата спитати» :))

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

Middle — «Напиши власну систему керуваннями базами даних».

фігасє мідли зараз пішли

S — це Single responsibility principle. Розберімо на принципі бутерброда. Кожен компонент бутерброда має свою роль. Хліб тримає все разом, сир додає смак, ковбаса відповідає за ситність. І ось сам принцип: якщо хліб вирішить бути ковбасою, то все розвалиться. У кожного своя відповідальність. Вам треба зрозуміти суть і перенести це на компоненти. Якщо компонент, наприклад, кнопка, буде одночасно ще й інпутом і формою, це вже руйнує принцип Single responsibility.

Ашо тоді Separation of Concerns? Або навіщо SRP і SoC існують одночасно, якщо вони про одне й те ж? (Спойлер — ні, вони не, але щоб насправді влізти в порушення справжнього SRP та його наслідки, треба працювати з інфраструктурою довшого життєвого циклу, ну або читати Мартіна, а не Вікі, до дядя Боб в Clean Architecture це показує)

Топік не читав...
Коли бачу фразу співбесіда та питання на логіку в мене око сіпатись починає )))
Зоазу асоціація про пачку листочків з загадками про горящіє вєрьовочкі і як відміряти 4 літри двома чайними ложечками....
В кошмарах сниться ))))

дізнатись про вакансію, компанію, не плутати назви компанії. Похибки в цьому можуть дати червоний прапорець. Або ж коли у вас немає ніяких запитань до інтерв’ювера про компанію, чи роль, немає бажання продовжувати, — це також «дзвіночок».

автор может подсказать 5 отличий глобала от остальных бодишопов? чтобы в следующий раз не дай бог не перепутать названия

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

І не курив, і не бухав, і не матюкався, і голий по пояс не сидів — а ось такі от нюанси бувають ))

Коли критикують наші запитання, це також red flag. «Це академічні знання і вони не потрібні, реальні задачі важливіше».

это значит что ваши вопросы технически устарели или неактуальны, или сформированы ошибочными практиками, на проекте жуткое легаси или чуваки с синдромом «я все пишу правильно, все должны делать только так, а вы все делаете неправильно»

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

одну хорошу вакансію часто десятки, сотні та тисячі кандидатів, т

На Джинне есть такой замечательный счётчик отзывов на вакансию. Я редко видел там больше пяти-семи. Очень часто ноль на протяжении многих недель.

Джин, напевно, найгірша платформа для пошуку роботи, яку тільки уявити можна. Тому я говорю за нормальні, стабільні платформи типу індід та лінкдін.

А як вам таке www.linkedin.com/jobs/view/4034192144 ?
І це тільки ті, хто після апплая повернувся назад на лінкдін і натиснув кнопочку, що він подався на позицію (ніколи так не роблю). Та й верхня межа там, скоріше за все, зафіксована на 100, щоб не рвати юайку.

І це лід позиція в звичайний оракл, в країні, де айтішка дуже так собі.

А тут к гадалке не ходи — бригада индусов, которая долбит по площадям, без учёта не только стека, но и права на работу в стране.
Сам когда-то разбирал такой фидбек, 80% сразу в мусор.

плюсом сюда же, если у тебя premium акк кто при открытии окажется что по факту на вакансию подалось 1-2К а не сотня)

То я за це і говорю. І це аж на ліда. На сеньйора, мідла і тд там взагалі страх і ненависть.

Так ви статтю читали? В них людина яка Rest за базу даних вважає інтерв’ю проводить.

эта статья вообще похоже сгенерирована в чатжпт, поэтому я сильно и не вчитывался. Понятно что уровень безграмотности превышает разумные мерки

«Red flag — це якщо кандидат не прийшов на інтерв’ю, п’яний, накурений, голий вище пояса, без камери (навіть якщо голий), хамить, свариться матом, катує маленьких каченят»

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

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

Цікаво, як це взагалі було, просто на співбесіду прийшов чувак під кайфом?

ну да, то на умняки пробивало, то на ха-ха над моїми питаннями. добре, що на хавку не пробивало ще, я б може і не витримав

а, нюанс, конкретно ця співбесіда не онлайн була, доковідні часи

Або ж коли у вас немає ніяких запитань до інтерв’ювера про компанію, чи роль, немає бажання продовжувати, — це також «дзвіночок».

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

Якщо ми питаємо, то для цієї позиції це треба.

Брехня, більшість технічних питань не має відношення до роботи.

Кандидат дякує за інтерв’ю, за час — це дуже приємно.

Так ви ж витратили мій час, а не я ваш.

Кандидат ознайомився з описом позиції та зробив попереднє опитування деталей у HR.

В описі зазвичай тупо автоген текст, як у всіх, щоб попасти в алгоритми майданчика.

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

Лити воду обов’язково, так і запишем.

що співбесіда — це можливість, а не іспит, і це діалог, а не допит

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

Обидві бази даних — і Rest, і GraphQL.

?

та вона мабуть мала на увазі SQL-NoSQL, якщо подивитися профіль автора, там Postgers та MongoDB ))

це вже Маяковський якийсь
мы говорим Ленин, подразумеваем — партия,
мы говорим партия, подразумеваем — Ленин.

Ще в профілі є “I’m currently learning Docker and Kubernethes”

щас каждый умник на собесе с листочка зачитывает вопрос про солид, только когда вопрос обратную сторону, пишут ли на его проекте по солиду большинство начинает мычать, что «не совсем» или «по историческим особенностям» нет. Солид это вообще рекомендации, а не законы, которые нужно каждо каждый день повторять

странная крайность. говнокод и плохие решения есть на любых проектах, это же не значит, что горит сарай — гори и хата

понимание каких-то идей софтвер дизайна не определяет же, будет ли в системе говнокод или нет. Оно скорее влияет на его количество и как широко по системе он расползется

Как бы так помягче сказать... SOLID это про проектирование, а не кодирование и даже сеньор разраб просто следует архитектуре заданной отцами проекта.

дерзкий 23-летний сеньор хотел создать класс но был жестоко наказан отцами проекта 18+ красный флаг смотреть без регистрации

Вибачте ДОУ, ви схоже хотіли представити сильних розробниць, але матеріалами такої якості ви підставляєте справді толкових жінок в R&D і тільки укорінюєте стереотипи.

На майбутнє раджу хоч мінімальне рев’ю статей експертами перед публікацією.

Дякуємо за фідбек, врахуємо у майбутньому.

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

Приклади з бутербродами та схожим ООП «на пальцях» з тваринками та машинами нічого не навчають.
1. Вони не створюють реального розуміння. Людина може запам’ятати аналогію, але не навчиться застосовувати принципи в реальному коді.
2. Вони не відображають реальних проблем програмування. Код працює за чіткими правилами, а аналогії часто занадто спрощують або спотворюють суть концепцій.

розуміти хоча б поверхнево, як працює ВСЕ

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

Приклад гарних статей на тему соліда тут solidbook.vercel.app

автору вже написали, що рест і графкуель — це не бази, а лісков — це тьотя?

Про ACID краще переписати або видалити. Те що написано є небезпечно невірним.

ну автор ж фронт! там все по другому! не як у нас інженерів

Фронт не є діагнозом. Я працював (і працюю) з сильнющими інжеренарми-фронтовиками (не на реальному фронті..). Я більше звинувачую chatGPT, бо може просто галюцинації винні. Ну чи то може жаба автора задушила на преміальну підписку.
В будь якому видпаку, таке навчання — це жах (і тут скруглені оченята вашої першої вчительки).

Наступна буква L, підстановка Ліскова

en.wikipedia.org/...​ov_substitution_principle — Barbara Liskov не повинна перетворись на підстановку Ліскова, чи це я щось не так розумію?

Middle — «Напиши власну систему керуваннями базами даних»

Ага, сейчас вам какой-нибудь SQL Server на коленке за двадцать минут напишу. Вы в адеквате вообще?

Был в ukr.nodes дядька который написал свой прокси, вебсервер, «сервер баз данных» и кажется почтовый сервер. Очень ими гордился.

У нас тут в сусідньому топіку дядька якийсь «створив» «нову» криптографічну систему, де закритий ключ передається між пірами на листку паперу і він тепер всім розказує, що таку систему неможливо зламати)))))

ну почтовый прокси и вебсервер это не СУБД все таки — это как сравнивать ПО для самолетов и Microsoft Flight Simulator..

ну до речі до MFS можна підключити справжню авіоніку гармін і літати як в житті.

спасибо за ваше время, мы решили двигаться дальше с другим кандидатом
удачи!

Я, доречі, не дуже проти таких питань. Хоча його варто замінити на щось типу «Спроєктуй...», «Опиши як би ти підходив до розробки...». Такі питання корисні для того щоб зрозуміти наскільки кандидат розуміє саму технологію, інструмент, протокол тощо. Не просто вивчив базовий апі умовного монгуза.

Во-первых, это тогда вопрос не для миддла.
Во-вторых, автор статьи сформулировал именно как сформулировал.

Во-первых, это тогда вопрос не для миддла

А я от хз. Залежить що розуміти під «мідлом». Наприклад кандидат, що закінчив профільний вуз по профільній спеціалізації і пропрацював, скажімо, рік-два мідл? А такий кандидат цілком може відповісти на питання як підійти до розробки СУБД. Хоча погоджуся, що в широкоукраїнському розумінні мідл на таке питання не відповість.

Тогда вопрос, что мы понимаем под «як підійти» — чтобы не было ответа «ногами».
Например (в предположении, что речь идет об обычной реляционке), помимо вышеупомянутого ACID я бы ожидал описания структур памяти, словаря данных, реализации кэширования, cost-based optimizer... Причем не в стиле «ну вот есть такое», а именно «как реализовать».
Если выпускник технического ВУЗа с парой лет опыта будет в состоянии развернуто ответить — ну, честь ему и хвала.

Відповідь кандидата може бути будь якою. Ціль такого запитання не отримати конкретну всеосяжну відповідь. А визначити як кандидат мислить, які додаткові запитання задає. Та власне це може бути досить типовим запитанням для System design секції.
І не варто чіпатися до СУБД. Можна варіювати такі запитання щодо DNS, CDN, Reverse Proxy, Load Balancers тощо.

А вы считаете, что system design — это уровень миддл-разработчиков?

Я вважаю, що system design — це рівень навіть джуніор але інженерів. Навіть вони повинні вміти в базові патерни клієнт-сервер і т. д.

Дискусії викликає (як то часто буває) сама термінологія per se: в залежності від того хто що вкладає в «system design» — будуть різні відповіді на одне і те саме питання

Да не це вона мала на увазі, це ж жінка.

А підорозуміває саме схему бази даних на абсрактний проект — таблички, поля, зв’язки, зовнішні ключі, і тому подібне

а якщо далі піти в такому дусі з натуралізмом абстракцій, для прикладу візьмемо ШІ (якщо не всю логіку зразу) — вважаєте що логіка може/має бути від ШІ мен і від ШІ вумен, і як їх розпізнаєте?

ChatGPT — яскравий приклад чоловічого ШІ, який мені допомагає із проходженням Postal II із задоволенням. а типовий бабський ШІ — це Gemini, з ним можна говорити про манікюр

і бази даних використовуєте тільки «для ріал мен» офкос, а не якісь там «бабські» ?)

ось що сексистський ChatGPT каже. і я використовю PostgreSQL ))

PostgreSQL — для тих, хто любить складні та витончені рішення, стабільність і строгий контроль за даними. Можливо, його можна порівняти з незалежною, аналітичною людиною, яка любить порядок і глибокий аналіз.

MySQL — швидкий, простий у використанні, популярний вибір для багатьох веб-проєктів. Підходить для тих, хто цінує практичність і ефективність.

Не бачу що в цій логіці порівнянь можна знайти чоловічого чи жіночого, і навіть більше, користуючись тим же немоїм натуралізмом — postrgesql можна булоб віднести до «жіночих» баз даних — бо в першому випадку згадується «яка любить порядок», а в другому «швидкий і простий» )

Інтерв’ю без заспокійливих — це
1. інтерв’ю без HR-ів;
2. без ссикунів, котрих набрали по невідомим параметрам, і їх мета тільки затрекати час, що витратив на читання питань з листків та самоствердження;
3. Інтерв’ю, що йде чисто з замовником без всього того цирку.

Самый большой красный флаг, это когда интервьювер страшно вращая глазами загадочным тоном спрашивает: «а знаешь ли ты (ты, обязательно ты, даже если у тебя уже голова седая), что такое... сокет (многопоточность, виртуальный деструктор, хэш-мэп....)»

Red flag — це якщо кандидат не прийшов на інтерв’ю, п’яний, накурений, голий вище пояса, без камери (навіть якщо голий), хамить, свариться матом

мабуть саме через це Ілон Маск тепер мститься всьому світу, наче той німецький художник Адольф

Попрошу приоритет Австрии не нарушать.

Красный флаг — это когда тебя на интервью начинают спрашивать про крышки от люков или про SOLID в бутербродах.

А мені сподобалась ідея використати ChatGPT як віртуального інтервьювера. Спробував — дійсно цікаво.

Цю статтю треба забанити як шкідливу або скидати своїм колегам, яких ви не любите

Нет-нет, это чудесный образчик мышления тех мелких начальников, которые с первой минуты интервью смотрят на тебя, как солдат на вошь.
Нередкое явление к сожалению.

Стаття наповнена певними «неточностями», як вже помітили інші коментатори. І якимось суб’єктивними упередженнями, наприклад:

Масове скорочення, навіть для гігантів галузі. 50% незамінних людей насправді були дуже замінними. Є такий термін — інженери-привиди. Це люди, які просто сиділи, робили, наприклад...нічого, але постійно казали, що вони зайняті. Або малювали одну кнопку три місяці чи додавали поле в MongoDB пів року. І ці «незамінні» люди насправді мають дуже низький потенціал. І дуже мало знань. Зараз важко знайти кандидата, бо після масових скорочень приходять саме такі інженери-привиди та шукають роботу, плюс люди з пункту 1.
Це люди, які просто сиділи, робили, наприклад...нічого, але постійно казали, що вони зайняті. Або малювали одну кнопку три місяці чи додавали поле в MongoDB пів року.

но это же правда ))

Якісь масові скорочення в гігантах, 50% незамінних людей що стали замінними, інженери-привиди, які нічого не роблять, мають мало знань, низький потенціал і посміли ще й на співбесіди ходити. Набір упереджень.

Взагалі кажучи тенденція техно.прогресу виглядає так, що таксисти і програмісти це одні з перших професій на заміну чим-небудь більш продуктивним. Десь вже було в якомусь інтерв’ю — що інтернет (як input) для ші вже практично закінчився, і єдине що стримує масове впровадження це соціальний фактор.

p.s. на заміну офкос не всі, йшлось про основну масу в різних індустріях

Jason Fried (фаундер 37signals та автор такої мега-параші як Rework) пару днів тому в своєму 卍 (ex-X, ex-Twitter) написав цікавий пост. Процитую:

True test for an AI agent...

There’s a domain name I want, but it’s taken.

Find out who owns it, reach out via email, see if it could be had, negotiate (max budget $25k, don’t spend it all on the first volley — spend it like its your own money), set up the transaction with an escrow service. Then get back in touch with me to let me know when and where to wire the money.

You have 30 days to make it happen.

That’s the kind of busy work I want to replace. Not designing, not writing, not coding, not strategy, not dreaming up new products, not emailing with customers, not guiding a team. That’s pleasure work. But getting a domain name that’s already taken — that’s busy work. Please.

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

Я це до того, що, так, сучасні моделі надрочили видавати класні синтетичні відповіді, прямо як із підручника. Це також непогано скорочує затрати по часу, бо тепер тобі не потрібно вечорами вбиватися перебираючи літературу, щоб знайти якусь інформацію. Ще моделі непогано виконують one shoot задачі, коли, наприклад, потірбно перефразувати написани чи знайти помилки в тексі (привіт і пока грамарлі). Але комплексні задачі, які складаєються з 2-3+ кроків, де потрібна взаємодія з зовінішнім світом, а не вичинення синтетичних відповідей з книг, тут уже тільки руками. І не схоже, що AI в тому вигляді, що зараз, зможе вирішити цю проблему найближчим часом.

Тут я наврядчи можу дискутувати (бо навіть не чув про Fried і не цікавлюсь hunting за доменами). Відносно ж приблизного напрямку розвитку і можливостей ші — це з інтерв’ю когось відомого з Гугл (якщо не помиляюсь), про стримуючий соціальний фактор — десь було зовсім недавно коли порівнювали що типу «ми думали що ші тільки для repetitive tasks як нормальні машини, але виявилось що вже може виконувати деякі креативні завдання (хоча й недосконало поки в багатьох випадках)». Про ці тенденції в обговореннях що я бачив я і відмітив.

p.s. спиратися на окремі випадки задач на 2-3 кроки, то вже зайве. Сам факт існування цього топіку і обговорення ші в його контексті — вже сам по собі маркер.

Часткова. Виставити когось важливого і вже потім розбиратися, нині теж тренд.

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

тем что автор учит тому чего не знает, причем то что он рассказывает — неправильно!

Друге було «Напиши власну систему керування базами даних». Окей, давайте просто зрозуміємо, як воно працює.

І дальше пре повна маячня, але я прокоментую.

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

Ні, атомарність — це про виконання роботи, яка складається з багатьох кроків, як одна логічна одиниця роботи. На прикладі з бутербродом це скоріше «я їм бутер, а насправді я їм салат, м’ясо та хліб».

Стабільність — всі бутерброди мають бути їстівними. Навіть після помилки. Сир з пліснявою, отже так задумано! База впала? То в нас є репліка!

Ні, consistency — це не стабільність, а послідовність чи узгодженість. Ви бутер їсте і він нормально засвоюється (коміт без помилок) або виригується назад (ролбек). Реплікація тут взагалі мимо. Коли ми реплікуємо бінлог чи вал, то там уже буде тільки те, що успішно закомітилось.

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

До чого тут взагалі ізоляція бази? Ізоляція на прикладі бутера це коли ми хочем бургер (котлету) вел дан, а не мідіум. Тоді ми беремо (лок for update) саму котлету і досмажуємо її до потрібної прожарки, а потім суємо назад між булки.

Довговічність — ваша база даних має бути готовою до того, що буде падати та відтворювати репліки. Дивіться пункт 2 :)

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

Індекси в системі керування базами даних — це як різати бутерброд навпіл, щоби швидше дістатися до потрібного шматочка.

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

Якщо на вечірку прийшло більше людей, ви робите більше бутербродів (горизонтальна масштабованість).

Скоріше кожна репліка — це новий гриль для приготування бургерів.

А для економії часу — можна готувати різні види бутербродів на різних столах (шардінг)

Мабуть, все таки, шардінг — це розрізати бургер на n кусочків.

До того ж, на нормальній співбесіді по RDMS в нормальну компанію ACID — це така незначна частина того, що потрібно знати, що про це навіть не варто вивалювати таку стіну тексту. Краще б попробувал на прикладі з бутером пояснити optimistic/pessimistic locking — це також класика інтерв’ю, але хоч не така заїзжена як ACID (особливо в епоху MVCC та snapshot isolation).

Короче, вам потрібно підтягнути ваші fundamentals. І не тільки по базам.

Саме страшне це якщо якийсь джун буде вчитись на таких бутербродах...

Ну, ця так звана «стаття» — це яскравий приклад до висловлювання «Той, хто може, робить. Хто не може, повчає інших». Якщо це писалось для тих, хто реально перериває 45-ти хвилинне інтерв’ю на те, щоб збігати зробити собі чаю, то це вже клініка.

Про индексы вообще запутывает все. В индексе почему-то «режем сущность которую храним». Но шардинг наверное все же хранение разных бутербродов на разных столах.
Но все же пример выбран такой, что только ухудшает понимание.
Помесь бутербродов.

Ну, я так собі прикинув, що якщо автор_иня намазує ACID на бутери, то тоді бутер — це стрічка в таблиці(-цях), а на вся база (було б дуже тупо кожен бутер класти в нову базу). Тоді шардинг — це чорні булки на одному столі, білі — на іншому; котлета яловична на одному столі, курина — на іншому (а-ля гео-шардинг по локації, тільки тут по категорії хавки).

Під

розрізати бургер на n кусочків

я мав на увазі partitioning (той, що всередині самої RDBMS).

Довго скролити до коментарів...😎

Коли є недоречна поведінка та зовнішній вигляд. Коли курять, вживають алкоголь або їдять. Я хочу тут додати — йдеться про такі речі без попередження. Якщо мені кажуть на інтерв’ю: «Можна я перекурю?», зазвичай я кажу: «Можна», бо знаю, що це стрес. «Можна я чаю собі візьму, піду зроблю ромашку?» — я кажу: «Так, звичайно». Але коли починають хизуватися: «Зараз докурю сигаретку й починаємо» — ні, дякую.

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

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

Про славнозвісні бази даних REST і GraphQL вже писали, але після них і бутербродного соліду пасаж про

«А у вас є достатньо досвіду, щоб мене оцінювати?»

сприймається смішніше.

Спочатку пройшов повз статтю, але коментарі про rest i graphql змусили аж глянути, що там. Розумію, що суть статті не в технічних деталях, але дозвольте доколупатися.
По-перше, монга при апдейті структури документа не вимагає написання міграції, відповідно «додати поле в монгу» дуже різонуло слух. Звісно, можливо, ця особливість і має підкреслювати комічний ефект, але щось по базам там в цілому дивні речі написані.
Далі цитата:

Зараз недостатньо знати, як робити формочки або як зробити базу даних.

Зробити базу даних? Думаю, тут мало би бути щось накшталт «зробити мапінг з бази даних», бо рівень складності нинішніх бд настільки високий, що соло розробник вгатить десятиліття на те, щоб наздогнати нинішніх вендорів. Тут треба мати на увазі і тип бази (реляційна, документна, колонкова, олап, графова), і індекси (а це СС-таблиці, B, АВЛ, ЛСМ і тд дерева), і ефективна взаємодія з пам’яттю і диском (в частині рандомного доступу і бандвіча, а не просто витоків пам‘яті), і всілякі трейдофи в області fault tolerance, перформансу і консистентності даних. А ще локи, бекапи, і це все ще має працювати, щоб база встигала опрацьовувати вхідні запити. Ну і згадана вже реплікація і шардування.
В контексті цього, питання

Middle — «Напиши власну систему керуваннями базами даних».

якось прям занадто. І далі при розборі цього питання була якась стандартна фігня про асід і кеші, ніяких прикладів, ніякого коду, взагалі не зрозуміло, чого саме очікує інтерв‘юер. Якщо ви хочете послухати про всю цю стандартну лабуду, краще переформулюйте питання типу: «Які, на ваш погляд, фічі обов’язкові для сучасної субд».

Якщо ми питаємо, то для цієї позиції це треба.

Дуже добре, що у вас є кореляція між питаннями і реальною роботою (це далеко не всюди так), але не варто зразу думати, що ви начальник, а кандидат дурень, можливо це саме ви використовуєте застарілий або не оптимальний процес. Одного мого друга дуже ганяли на співбесіді по фтп бо як виявилося у них реліз відбувався через копіювання файлику на фтп. Або, якщо у вас часто користуються чері-піками, можливо, у вас є проблеми з бранчуванням. Конструктивно буде якраз таки обговорити, чому ви використовуєте щось, а кандидат — ні.

Коли критикують наші запитання, це також red flag.

Як бачите, до питань є питання, тому зразу казати, що це ред флег — трохи контр-продуктивно. Кандидати можуть дати цінний зворотній зв‘язок, яким з точки зору найму, можна і знехтувати (бо на вулиці ще черга стоїть), однак з інженерної точки зору це може бути цікаво

це якщо кандидат не прийшов на інтерв’ю, п’яний, накурений, голий вище пояса,

мрія справжнього задрота — прийти на співбесіду накуреним і голим по пояс і його візьмуть бо він найкращий в тому що робить.

прохожу собеседования накуренным чтобы потом по ходу работы не вызывать подозрений

Вже давно відходять від on-premise

на самом деле, уже который год маятник пошел в обратную сторону от 100% в облаке к гибридным решениям. Ибо облака — это дорого.

Ибо облака — это дорого

залежить від проекту і локації. Трійко SRE на ротації може бути дорожче за рахунок від ажуру. Може звісно бути і навпаки.

Очень сильно зависит от. Возьми кровавый ентерпрайз, где закупка нового железа планируется минимум на год вперед, и если ты не угадал с нагрузкой, то либо тебе обьясняют, что ты неэффективно потратил деньги компании на ненужный хард, нагрузка на который минимальна, либо все ппц, хард не справляется, надо срочно искать какие то воркэраунды и ты опять таки виноват в том что неправильно рассчитал нагрузку и компания попадает на деньги из-за нерабочих бизнес процессов. Сравни это с возможностью изменить шейп банальной ЕС2 за 5 минут и все работает. Да, в чистых попугаях ЕС2 дороже, но в реальной жизне все очень сильно зависит от.

ну так потому и гибрид, а не чистый онпремис. Во всех крупных компаниях есть условный набор загрузки, ниже которого никогда не падает. Теже лаб енвы. Они стабильны, они нужны всегда, а смысла платить за них в облаке нет никакого.
а тех лаб енвов бывает и поболе продакшена. дев енв для команды (даже если усеченный), регрессионый енв, стеейдж, уат, и тд. еще возможно по енву для больших партнеров.

Ну вот я повторюсь, все зависит от.
В клаудах те же нон-прод енвы можно отключать на 12 часов в сутки скриптом и прайс уже в 2 раза ниже. Некоторые сервисы можно покупать provisioned заранее, года на 3 и там еще процентов 30 экономить. В результате может получиться дешевле чем свое железо.
В общим в третий раз повторю — надо смотреть каждый конкретный кейс, и в завивсимости от специфики выбирать между он прем, гибридом и клаудом. Или гибридом он према и нескольких клаудов, прости господи и покарай тех манагеров которые сочинили, что этот гибрид будет дешевле альтернатив.

Також останні роки 2 бачу тренд на bare metal або просто на vps-ки. Купувати клауди продовжують тільки жирні компанії або ранні стартапи, які нахваталися бабла на сід раунді.

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

А що для раннього стартапа вистачить RaspberryPi банально — не знають.

Я зібрав вдома кластер з 3хПі3 + 3хПі4. На кожну пішку накинув шапку ПоЕ, нормальне активне охолодження та невеликий дисплей для загальної інформації. Так от, ця байда повільна як мамонт, у якого запор. Повільна в плані рами, і в плані доступу до стореджа. Як прикинув скільки мені обійдеться пісіай шапка для кожної + нормальний диск, то в результаті взяв собі 2 «міні пк» від білінк з повноцінним інтел кор 5, ддр5, підтримкою нвме та 1.5 гбітним інтерфейсом. Навалив на це все діло проксмокс кластер і не знаю горя. На пішках з потугами підняв кубер кластер, але так його і не використовую.

А для раннього стартапу краще взяти впс десь на хетзнері чи хостінгері за 10бачів в місяць з статичним айпі та бекапами і не морочити собі голову.

в моїх випадках ранній стартап це RPS десь 0.005 (500 запитів на добу) — один нещасний RasberryPI model B нормально фуричив. це, коли він вже є, канішло. да, за статичний IP 100 грн я плачу.

а так, да, впс за 10 доларів із головою вистачить. І паритись ні про що не треба, тіпа відключень електрики — купувати на GPON і роутера ДБЖ іще.

Так ранній стартап — це лендінг на шейред хостингу для генерування лідів, а все інше раниться в локальному докері у тебе на ноуті)))

в мене докер на распбері.. ноут звик на ніч вимикати якось.

Вам треба розуміти бази даних. Якщо ви backend — це 100% must have. Обидві бази даних — і Rest, і GraphQL.

— щось змінилось в світі? відколи це і Rest, і GraphQL стали базами даних

Обидві бази даних — і Rest, і GraphQL

На этом я сломался.

Дякуємо за таку детальну статтю! Дуже пізнавально навіть для представників інших професій :)

Ця стаття — це приклад галюцинації ШІ.

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

Гарна стаття, дякую.

— Скільки часу ви витрачаєте на ’Middle — "Напиши власну систему керуваннями базами даних".’?
— Чи виділяєте ви окремий раунд під це?
— Яку глибину відповіді ви очікуєте (і саме від мідла)?

Це питання максимально обширне насправді та схоже насправді на популярні західні System Design (у нас менш поширене), де на даний тип виділяють окрему сесію.

Підписатись на коментарі