Співбесіда з Embedded розробником. 200+ запитань для Junior, Middle та Senior

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

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

Більше матеріалів у рубриці — за посиланням.

Аби швидко перейти до бажаного грейду, скористайтесь рубрикатором:

— Junior
— Middle
— Senior
— Бонус: запитання по Java Core

💡 Junior

С

1.Що таке вказівник?
2.Скільки байтів пам’яті займає вказівник?
3.Чим відрізняється stack від heap?
4.Чим відрізняється malloc від calloc?
5.Як звільнити пам’ять в С?
6.Які проблеми можуть виникнути, якщо не звільнити пам’ять?
7.Яке призначення ключового слова static?
8.Опишіть використання модифікатора static в мовах С і С++.
9.Яке призначення ключового слова const?
10.Які проблеми можуть виникнути, якщо функція повертає вказівник на локальну змінну?
11.Опишіть використання модифікатора volatile.
12.Які існують бітові операції?
13.Як працювати з void?

Embedded

14.В чому полягає різниця між мікропроцесором і мікроконтролером?
15.Як відбувається завантаження програми в мікроконтролері?
16.З якими типами мікроконтролерів вам доводилося працювати?
17.Що таке GPIO?
18.Що таке UART?
19.Як відбувається комунікація через UART?
20.Як працює комунікація RS232?
21.Що таке SPI?
22.Що таке I2C?
23.Що таке PWM?
24.Яка різниця між ОС загального призначення та ОС реального часу?
25.В чому різниця між polling і interrupt?
26.Які типи постійної пам’яті використовуються в Embedded?
27.Що таке watchdog?
28.Які типи сегментів пам’яті ви знаєте?
29.Що таке переривання?

Linux

30.Що таке system call?
31.Які системні виклики ви знаєте?
32.Що таке spinlock?
33.Що таке device tree?
34.Що таке POSIX?
35.Що таке файловий дескриптор?
36.Чим відрізняється процес від потоку?
37.Опишіть використання модифікатора volatile.

Класифікація систем контролю версій

38.Які три основні стани має git?
39.Назвіть основні команди git.
40.В чому полягає різниця між merge та rebase?
41.Що таке інтерактивний rebase?

Практичні завдання

42.Ви маєте зібраний пакет і намагаєтеся запустити його на ARM (наприклад, на Raspberry Pi), але пакет не стартує. Що може бути не так і як розв’язувати цю проблему?
43.Ми працюємо з мікроконтролером, до якого підключено світлодіоди з відповідними розв’язками. Мікроконтролер отримує команду на запалення і вимкнення певної кількості діодів. Як би ви реалізували цю команду, яка надходить мікроконтролеру, і який найшвидший алгоритм для керування діодами відповідно до цієї команди?
44.У нас є мікроконтролер з 8 вільними ногами. Задача — підключити 128 пристроїв (наприклад, світлодіодів) і керувати ними. Як це можна реалізувати?

💡 Middle

С

1.Для чого потрібне вирівнювання структур?
2.Що таке little endian та big endian?
3.Які проблеми можуть виникнути, якщо привести масив байтів до структури?
4.Як репрезентується Union Type в пам’яті?
5.Як працює виділення пам’яті?
6.Як malloc виділяє пам’ять?
7.Як реалізувати ООП, використовуючи C?
8.Які основні принципи ООП ви знаєте?
9.В чому різниця між поліморфізмом та успадкуванням?
10.Яка різниця між статичною та динамічною бібліотекою?
11.Як працює Cmake?
12.Для чого використовують ключові слова static, const, volatile, restrict? Чи можна їх поєднувати? У яких випадках?
13.Порівняйте вказівники та масиви.
14.Як визначити порядок байтів в системі?
15.Що таке бітові поля? Для чого вони використовуються?
16.Як задається розмір бітового поля при описі його в структурі?
17.Для чого використовується вказівник на вказівник?
18.Порівняйте struct та union. Який розмір struct та union?
19.Етапи компіляції. Як зберегти інформацію кожного етапу?
20.Поясніть, як працює утиліта make та makefile.
21.У чому відмінності стандартів C99 та С11?
22.Які існують класи пам’яті в С?
23.Що таке linker?
24.Що таке bootloader?
25.Що таке таймер?
26.Які функції watchdog ви знаєте?
27.Що таке область видимості?
28.Як працює зв’язування?
29.Для чого потрібне ключове слово typedef?
30.Як відбувається виклик функції?
31.Як передаються значення параметрів при виклику функції?
32.Що таке EABI (Embedded Application Binary Interface)?
33.Який розмір цілочисельних типів (знакових і беззнакових) в архітектурі AVR8?
34.В чому суть використання віртуальних деструкторів?

Embedded

35.Для чого потрібна віртуальна пам’ять?
36.Що таке MMU?
37.Як комунікують пристрої, підключені по I2C?
38.Як працюють переривання?
39.Що таке DMA?
40.Яка різниця між UART vs SPI?
41.В чому перевага інтерфейсів з сигналом синхронізації?
42.Як налагоджувати код, використовуючи мікроконтролер?
43.Який розмір цілочисельних типів (знакових і беззнакових) в архітектурі AVR8?

Linux

44.Як комунікує User Space and Kernel Space?
45.В чому різниця між блокуючими і неблокуючими операціями?
46.Які типи IPC ви знаєте?
47.Які способи синхронізації потоків ви знаєте?
48.Що таке сокет?
49.Що таке Mutex?
50.Що таке Semaphore?
51.Що таке Copy on Write?

Операційні системи

52.Що таке операційна система реального часу (ОСРЧ)?
53.З яких частин складається ОС? Поясніть на прикладі Linux.
54.Що таке interrupt latency?
55.Які особливості компіляції статичних та динамічних бібліотек?
56.Що таке файл формату ELF?
57.Що таке міжпроцесова взаємодія (IPC)?
58.Що таке bash?
59.Наведіть приклади абстрактних типів даних.
60.Що таке процес та потік (thread)?
61.Що таке одиниця трансляції?
62.Що таке конвеєр команд? Наведіть приклади.
63.У чому різниця між архітектурою фон Неймана та архітектурою Гарварда?
64.Що таке кроскомпіляція?

Protocols

65.Як відбувається перше підключення до інтернету?
66.Опишіть роботу стеку протоколів TCP/IP.
67.Опишіть різницю між MQTT, RMQ, WebSocket. В якому випадку який протокол краще обрати для передачі даних з IoT-пристрою у хмару?
68.Як працює Bluetooth? Поясніть загальні концепції.
69.Що таке TLS?
70.Що таке SSH?
71.Що таке TCP handshake?
72.Яка різниця між TCP та UDP?

Практичні завдання

73.Контролер керує мотором, але виникає ситуація, коли при старті або роботі мотора контролер зависає або перезавантажується. Що може бути причиною цього і як розв’язати проблему?
74.У вас є енкодер з 1000 імпульсами на оберт, який підключений до мікроконтролера. При низьких обертах (10 обертів на хвилину) все працює належним чином, але при високих обертах (100 обертів на хвилину) мікроконтролер зависає. Зависання відбувається повністю, і мікроконтролер відновлюється лише при зниженні обертів енкодера. Що може бути причиною цього і як виправити цю ситуацію?
75.Обладнання працює через USB-шину, відстань між обладнанням і контролером становить 5-10 метрів. Обладнання постійно викликає помилки та працює нестабільно. Що може бути причиною цього і як це можна виправити?
76.У нас є мікроконтролер з 8 вільними ногами, необхідно зчитати дані з 256 каналів. Як це можна реалізувати?

💡 Senior

C

1.Як ви проводите code review?
2.Як ви тестуєте ваш код?
3.Як написати unit test для коду на мікроконтролері?
4.Які засоби для статичного аналізу коду ви використовуєте?
5.Які засоби для динамічного аналізу коду ви використовуєте?
6.Як ви працюєте з кодом для різних платформ?
7.Як вказати компілятору оптимізувати код?
8.Які є типи оптимізації коду?
9.Як працювати з залежностями в С?
10.Як можна використати Cmake для залежностей?
11.Як реалізована команда «delay»?
12.Що таке ISR?
13.Як відбувається передача параметрів в ISR?
14.Чи можливе повернення результату з ISR?
15.Як працюють таймери?
16.Що таке регістри? Як вони працюють?

CI

17.Чи доводилося вам працювати з Docker?
18.Як налаштувати CI для компіляції коду під різні платформи?
19.Розкажіть про побудову білд-системи.

Linux

20.Які є типи пристроїв у ядрі?
21.Як написати драйвер для ядра Linux?
22.Що таке вектор переривання?
23.Які фреймворки для збірки ядра ви знаєте?
24.Розкажіть про алгоритми планування задач в операційних системах.

Embedded

25.Як забезпечити Continuous Delivery для MCU?
26.Як працює RTOS?
27.Що таке задача в RTOS?
28.Які засоби синхронізації є у RTOS?
29.Як працює комунікація через RS485?
30.Boot sequence на мікроконтролерах.
31.Назвіть особливості периферійних інтерфейсів UART, USART, I2C, SPI.

Мережі

32.Як працює BLE?
33.Що таке OSI model?
34.В чому різниця між Bluetooth Classic and BLE?
35.Як працює Wi-Fi?
36.Які способи існують для оновлення прошивки?
37.Що таке OTA?
38.Розкажіть про протокол ARP.
39.Як працює протокол TCP?
40.Що таке маска мережі?
41.Що таке шлюз за замовчуванням?
42.Що таке комутатор L2? Які його функції?
43.Що таке маршрутизатор L3? Назвіть його функції.
44.Розкажіть про інкапсуляцію пакетів при проходженні по рівнях моделі OSI.
45.Яке призначення протоколу ICMP?
46.Що таке Ethernet Frame?
47.Що таке фаєрвол? Як налаштувати його на Linux?
48.Що таке DHCP та DHCP relay?
49.Які види та алгоритми маршрутизації ви знаєте?
50.Що таке NAT?
51.Що таке MQTT, і як він використовується?
52.Розкажіть про автомобільні шини даних CAN, LIN, MOST, FlexRay.

Практичні завдання

53.Контролер працює на операційній системі Linux (без значення, яка конкретно версія або ядро). В певний момент контролер зависає. Програми і сервіси, які вже були запущені, продовжують працювати, але нові не можуть бути запущені. Для входу на контролер можливо використовувати лише захищений режим (режим відновлення). Під час входу на контролер ви отримуєте повідомлення від сервісу або демона, що вільне місце на диску закінчилось. Однак команда df -h показує, що вільного місця на диску є досить багато. Що може бути причиною цієї проблеми і як її виправити?
54.Необхідно вирішити проблему завади, яка виникає при знятті сигналу з сенсора і відображається на осцилографі. Ця завада перешкоджає нам отримати дані при переході з 0 на 1. Який метод захисту від цієї завади є найпростішим?

💡 Бонус: запитання по Java Core

Ці питання винесені в окремий блок, оскільки вони не є типовими для усіх співбесід на позицію Embedded розробника, однак це базові запитання для позицій, які передбачають роботу зі стеком Java, зокрема mobile development.

Junior

1.Що таке об’єкт в Java?
2.Поясніть різницю між JDK, JRE та JVM.
3.Яка різниця між абстрактним класом та інтерфейсом в Java?
4.Поясніть концепцію успадкування в Java.
5.Яка різниця між оператором «==» та методом «equals()»?
6.Опишіть призначення та використання ключового слова static в Java.
7.Поясніть принципи об’єктно-орієнтованого програмування (ООП) і як вони реалізовані в Java.
8.У чому різниця між TreeSet і HashSet в Java?
9.Яка різниця між конструктором і методом?
10.Яка різниця між ArrayList і LinkedList?
11.Яка різниця між HashMap і HashSet?
12.Яка різниця між синхронізованим та несинхронізованим методом?
13.Що таке спроба з ресурсами (try with resources)?
14.Які види виключень ви знаєте?
15.Поясніть відмінності між перевіреними та неперевіреними виключеннями в Java. Наведіть приклади кожного.
16.Для чого використовуються методи equals() та hashCode() в Java?
17.Як створити потік в Java?
18.Як реалізована багатопотоковість в Java?

Middle

19.Яка різниця між серіалізацією та десеріалізацією в Java?
20.Яка різниця між стеком та купою (heap) в Java?
21.Яка різниця між синхронізованим методом та несинхронізованим методом в Java?
22.Яка різниця між однопотоковим застосуванням та багатопотоковим застосуванням в Java?
23.Патерни проектування GoF (наприклад, поясніть, як реалізувати Singleton).
24.Чи є випадки, коли блок «finally» не буде виконаний (try-catch-finally)?
25.Лямбда-вирази в Java та як вони спрощують код? Наведіть приклади їх використання.
26.Що таке mock?

Senior

27.Поясніть, як би ви оптимізували перфоманс у Java?
28.Як працює Java Garbage Collection?
29.Як кешувати об’єкт у Java?
30.Що таке JVM в Java?
31.Що таке Mbean? Які типи інформації можна отримати з їхньою допомогою?
32.Як контролювати віддалену JVM за допомогою VisualVM?


📝 Дякуємо за технічну рецензію Вікторії Таранюк (Manager in Embedded systems domain, GlobalLogic) та Олексію Вишневському (Senior Software Engineer, SoftServe), за надані запитання Михайлу Майдану (Team Lead в Yalantis), Юрію Глотову (Embedded Software Engineer у TEKTELIC), Сергію Марчуку (Senior Embedded Engineer в Intellias) та Ярославу Клочнику (Java Web Architect у SoftServе, ментор на бакалаврській програмі IoT у Львівському політехнічному Університеті).

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

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


73 коментарі

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Із 200 питаннячок, понад 50 — просто й.ануті. Й.аний стид і крінж.

Пішов читати про

Mbean

, дякую, цінно

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

Запитання про RS485 аж для рівня Senior😯, а у випадку мого досвіду робота з UART і через інтерфейс RS485 — це запитання для Trainee, ... і взагалі це один із базових інтерфейсів, що використовується в PLC.

Один із найпопулярніших відкритих і стандартизованих протоклів зв’язку через інтерфейс RS485 — це Modbus, але про нього немає згадки в статті.

Якщо зв’язок через Ethernet, може трендовими є запитання про TCP/IP протокол, але про UDP лише одне запитання із теоретичним порівнянням, хоча цей протокол має досить велике застосування і практиці також треба було виділити запитання.

Можна було ще додати запитання про особливості ARM архітектури в порівнянні із просто RISC, як варіант на прикладі популярних мікропроцесорів від STM та Atmel.

Практичні запитання можуть також включати необхідність знання цифрової та аналогової схемотехніки, аналіз і моделювання із використанням осцилографа та за допомогою MATLAB, доменні знання по теорії автоматичного керування (наприклад, опишіть принципи роботи ПІД-регулятора на прикладі певної системи).

І не знаю наскільки актуально для Embedded бонусні запитання саме по Java, якщо вже так пішло, то можна було додати щось олдскульного по Assembler та машинному коду. 🤷🏻‍♂️

Це просто сам термін став розмитим — ембеддедом, тобто, «вбудованим у залізо софтом» одинаково можна назвати що PLC на заводській лінії, що .apk під Android чи Qt на QNX, що у якомусь автомобілі чи осцилографі буде відмальовувати GUI, що дрібні датчики на STM32/AVR.

Це просто сам термін став розмитим

Не став, а майже завжди Embedded-розробка була для широкої різноманітності доменів, наприклад, можете проаналізувати, яке поширення було в прірві між базовою промисловою автоматизацією та космонавтикою навіть 50 років тому, і відповідно яка доменна експертиза могла вимагатися від інженера-програміста.

Ключове, що даний список запитань від спеціалістів із т.з. аутсорс/аутстаф «галер», але зараз на DOU в р-ні половини Embedded вакансій — це продукт, де запити стосовно скілів і відповідно запитання можуть суттєво відрізнятися, тому це можна сказати упущення, що список не розбавлений запитанями від спеціалістів компаній типу Infineon Technologies, SQUAD, Nvidia, Ajax Systems, а також якоїсь компанії розробника дронів, хоча дані спеціалісти на DOU присутні і можуть додати свої 5 коп. в коментарях.

Як мінімум дві компанії з перелічених Вами з’явилися в Україні якраз завдяки експертизі, напрацьованій на аутсорс/аутстаф «галерах», і основний кістяк спеціалістів у цих компаніях з цих «галер», тож там питання ті ж самі що і на «галерах», бо запитують їх спеціалісти, які на цих «галерах» сформувалися як професіонали в галузі ембедед.

ті ж самі

Ви відчуваєте навіть загальну відмінність в розробці продакт/аутсорс, наприклад, є певний network controller розроблений Intel, коли ви в аутсорс компанії лише пишете під нього прошивку, ... або для порівняння повний цикл розробки в продукті певного модуля (зі схемотехнікою і PCB, а також нюансами тестування для подальшого серійного виробництва)? В продукті від вас скоріше-всього буде вимагатися більш широка експертиза.

Також різниця в наймові, наприклад, в GlobalLogic може менеджер написати вимоги для вакансії, які йому здалися актуальними, але технічне інтерв’ю буде проводити trusted-interviewer розробник, в якого буде погоджений загальний список запитань на його департаменті, ... а в продуктову компанію будуть конкретні вимоги до вакансії та запитання на інтерв’ю (найм під новий проект чи на заміну когось) від Team Lead чи Senior Engineer, ... яка релевантність і ефективність таких підходів до найму буде? І наскільки корисний список із даної статті та який % запитань може бути індивідуальним для певного проекту? А також говорячи про теорію та релевантність практичного досвіду, чи є нормою, що пересічний Senior Embedded Engineer може не відповісти на більшість приведених тут запитань?

П.С. як я написав вище стосовно даних запитань, що «актуальність суттєво відрізняється від домену», бо Embedded-розробка — це поняття ДУУЖЕ широке.

А що це таке РСВ?
У клієнтів, які мають команди розробників ПЗ в аутсорсі (і співпрацюють з цими командами роками), теж повний цикл, просто спеціалісти в Україні пишуть і тестують ПЗ для продукту, а спеціалісти за кордоном крім розробки ПЗ для продукту займаються також усим іншим — схемотехнікою і РСВ, подальшим серійним виробництвом. Оскільки таких розробників ПЗ в Україні, які пишуть та тестують ПЗ для продуктів, завдяки аутсорсу стало достатньо багато, то продуктові компанії, в тому числі і ті, про які Ви згадали, зайшли в Україну, адже тут можна найняти достатню кількість спеціалістів для розробки ПЗ для нових продуктів і підтримки ПЗ для старих. І додаткової експертизи на зразок розробки схемотехніки чи організації серійного виробництва ці продуктові компанії від українських спеціалістів не очікують. Нещодавно один дописувач на доу шукав спеціаліста, який може і схемотехніку проектувати, і ПЗ, і йому не вдалося такого спеціаліста знайти, пішов шукати в Пакистані. Це не означає, що таких спеціалістів, які вміють і в розробку схемотехніки і в розробку ПЗ, в Україні немає, це означає, що їх не настільки багато як тих які вміють тільки в розробку ПЗ. Ну а можливо тому, що заробітну плата, яку він пропонував, тут отримують за одну лише розробку ПЗ, і якби він підняв рівень оплати, відгукнулися б супер спеціалісти які вміють і те і інше. Хоча, з іншого боку, можливо зараз, коли ситуація з кількістю нових вакансій значно гірша ніж була у 2021 році, декому з тих, хто вміє лише розробляти ПЗ, доведеться згадати свої університетські спеціальності і стати універсальними спеціалістами.

наскільки корисний список із даної статті та який % запитань може бути індивідуальним для певного проекту?

Список дуже корисний і доволі універсальний. На багатьох проектах, зокрема (більшою мірою) в автомотіві та (меншою мірою) на проектах з обробкою відео буде більше питань по C++, в тому числі і сучасному C++.

чи є нормою, що пересічний Senior Embedded Engineer може не відповісти на більшість приведених тут запитань?

Як не дивно, нормою є те, що пересічний Senior Embedded Engineer не зможе відповісти на деякі питання з частини Embedded та не вирішить деяких практичних завдань. Очікується, що на інші питання він зможе відповісти. Ну і Java то трішки інша тема.

різниця в наймові, наприклад, в GlobalLogic може менеджер написати вимоги для вакансії, які йому здалися актуальними, але технічне інтерв’ю буде проводити trusted-interviewer розробник, в якого буде погоджений загальний список запитань на його департаменті, ... а в продуктову компанію будуть конкретні вимоги до вакансії та запитання на інтерв’ю (найм під новий проект чи на заміну когось) від Team Lead чи Senior Engineer, ... яка релевантність і ефективність таких підходів до найму буде?

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

таких спеціалістів, які вміють і в розробку схемотехніки і в розробку ПЗ, в Україні немає, це означає, що їх не настільки багато як тих які вміють тільки в розробку ПЗ

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

Ну скажемо так, приклади, які Ви навели, це не зовсім той досвід, який мають спеціалісти за кордоном, які роками, а іноді і десятки років розробляють схемотехніку чи радіотракти для пристроїв, що випускаються серійно. Та припускаю, що такі спеціалісти рідко займаються ще й розробкою ПЗ, тому і мають хорошу експертизу саме в своїй галузі. З іншого боку, в Україні є підприємства які і схемотехнікою займаються, і радіотрактами. Чому випускники радіотехнічних факультетів та факультетів електроніки йдуть в розробку ПЗ, а не на ці підприємства, мені зрозуміло — через те що в аутсорсі більше платять, та і поріг входу в розробку ПЗ нижчий — менше коштують помилки. Чому в аутсорсі немає розробки схемотехніки та радіотрактів, можу лише припустити:
1. Це чисто з технічних причин важче віддати на аутсорс.
2. Є країни, в яких кількість досвічених експертів у цій галузі значно більша- Тайвань, Китай.
3. Схемотехніка, цифрова обробка сигналів та радіотракти це те, де легше зробити патенти і зробити напрацювання в цій сфері конкурентними перевагами компанії.

Чому в аутсорсі немає розробки схемотехніки та радіотрактів, можу лише припустити

Перелічені причини не настільки критичні, як дві наступні:
1. Санкційні і експортно-контрольні ризики. Торгівлю авіаносцями з Китаєм чи постачання ППО Іраку захід пам’ятає, середньозважені політичні настрої теж відчуває, деякі остаточні санкції діють ще з радянських часів. Формально, навіть нещасну STM32 чи блютуз-модуль нам так просто не продадуть без заповнення ECCN-форм, або не із списку виключень для товарів масового вжитку: www.federalregister.gov/...​mputing-and-semiconductor
Це автоматично робить більш зручним і вигідним споживання готової, виключеної з обмежувальних реєстрів продукції, ніж спроби налагодження власного виробництва.
2. Митні обмеження вбивають розробку, роблять її дорожчою і надзвичайно затягують по часу і зусиллям на непрофільні активності. В країнах заходу розробник просто експортує BOM з EDA , скормлює в Mouser/Arrow/Digi-key, і отримує через кілька днів повний комплект деталей, можна по аджайлу робити швидкі спрінти і доробки. У нас, навіть якщо старанно добирати неп підпадаючі під експортний контроль, доведеться дробити посилки до безмитного ліміту, возити деталі як русня в ручній поклажі, або писати від руки багато паперів у митницю: imgur.com/a/FNP24DC . Також доводиться тримати у себе цілі склади закешованих деталей, тулити замість технічно оптимального те що є у наявності, і напирати на планування розробки, замість можливості оптимально підігнати щось по результатам випробувань.

Перше питання тісно пов’язано з (не)вступом до НАТО, друге — з ЄС, але, на жаль, мало хто усвідомлює ці взаємозв’язки.

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

На мою думку ви пишете про якусь відносно дрібну ситуацію, бо при R&D та виробництві в Україні є робочі схеми вигідного імпорту комплектуючих в крупних об’ємах, ... але за умови серійного виробництва іноді деякі модулі чи мікроконтролери вигідніше замовити виробництво PCB та пайку SMD-елементів в Китаї, а в Україні просто допаювати DIP, програмувати та закінчувати збірку.

А у випадку аутсорсерів — це як раз дуже негативний фактор, бо вони менш «гнучкі» на місцевому ринку, якщо потрібно завезти якесь дороге обладнання чи в крупних об’ємах, то іх наша митниця обілечує по повній, а потім ще СБУ може поцікавитися, що таке вони завезли, тобто додаткові витрати і ризики, якщо аутсорсити комплексну Embedded-розробку в Україні.

при R&D та виробництві в Україні є робочі схеми вигідного імпорту комплектуючих в крупних об’ємах

R&D — це за означенням фаза до крупного об’єму, і це далеко не тільки галерам шкодить.

Конкретний приклад з аспірантського минулого: є фізичний процес у напівпровідниковій структурі, який проявляється як зміна ємності у діапазоні порядку 99.98 -> 99.99 пФ за час порядку 10 мкс, треба заміряти графік зміни цієї ємності у часі. Нескладно придумати, як малу зміну ємності перетворити у малу зміну частоти, але готові мікросхеми, що можуть оцифрувати періоди одиночних коливань на цій релаксації з потрібною роздільною здатністю мають Military класифікацію: www.ti.com/product/THS788

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

Можна звичайно, скажімо, купити Virtex чи аналогічну жирну FPGA з не сильно кращою доступністю і сильно більшою ціною, або канібалізувати який-небудь магістральний роутер чи інший девайс, де подібне може стояти, стати senior verilog developer-ом і вбухати роки розробки власного Time-to-digital перетворювача на її базі. Але з таким підходом до власного часу і економіки, процес стає нескінченно довгим, кінцева задача приречена на провал, а причетні до проекту — на свіч у щось примітивно-аутсорсне, лише з рідкою ностальгією у топіках типу цього.

за умови серійного виробництва іноді деякі модулі чи мікроконтролери вигідніше замовити виробництво PCB та пайку SMD-елементів в Китаї

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

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

Це помилкова стратегія, бо ви не Apple щоб бути пріоритетним клієнтом в TSCM і Foxconn, будете працювати із відносно малою компанією-партнером, для них ви ніхто і звати вас ніяк, навіть через посередництво юр.особи в Гонконгу можете забути про британське право в наш час. Вам будуть китайці періодично зривати терміни, при цьому будуть брехати про стан справ і вибачатися, про компенсації можете забути.
Розробка схемотехніки та PCB в Україні для певного контролера і з подальшим виробництвом PCB та запайкою SMD-елементів в Китаї має сенс, якщо у вас в штаті є розробники для найкращої компоновки розводки, перевірки силових навантажень, правильності заземлення та ін., а також серійності всіх застосованих елементів, бо надіятися на китайців — це елементарно можуть застосувати роз’єм, який через декілька місяців зникне з продажу і загалом переносити ризики на сторону, яку ви погано можете контролювати, ... але це дешевша альтернатива при частковому аутсорсі, якщо у вас в компанії ручна пайка та застаріле обладнання для автоматичної, а замовити цикл => зробити PCB та автоматичну пайку SMD на умовному Радарі — це отримати великий % браку із-за закороток і не найкращу ціну при серійному виробництві в порівнянні із китайцями.

Це помилкова стратегія

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

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

Нуу, держава не повинна диктувати бізнесу, який % алокації ресурсів повинен бути в Україні, ... наприклад, компаніям типу Pocketbook треба бути вдячним за R&D в Україні, а як організований процес виробництва — це питання стратегічного менеджменту приватного бізнесу.

Ви можете жалкувати, що виробництва типу Квазар і Пілар провалилися, але вони просто стали неконкурентними, а підтримувати їх за білоруською моделлю було б тільки відкладеним колапсом.🤷🏻‍♂️

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

а ты там был? )) я там был мёд пиво пил по усам текло да в рот не попало (к) (тм)

... не было ни какого «пула дешёвых образованых радянского впк» его не было уже в конце 80-х а в начале 90-х тех которых были они как раз начали активно валить потому что «оттуда» уже знали за

пул дешевих освідчених кадрів з радянської оборонки

и уже активно вели рекрутинг и возможности свалить тогда были сильно много проще кстати

... как раз тогда только только открыли американскую h1b и «индопакистанского вайти» ещё не было как принципа )) потом в 2000-м подтянулись немцы со своим гринкартом но на самом деле они лишь формализовали бюрократию по конкретным категориям упростив принцип а сам принцип работал и в 90-е

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

то что ты говоришь

не зміг створити конкурентну перевагу

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

сделать внутри они ни чего не могли не было ни возможностей ни спроса всё это надо было создавать с нуля или точнее с минуса потому как ещё и было сопротивление

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

не зміг створити конкурентну перевагу

если кто и оставался тогда в Родине то либо безрукие и безголовые (а коих было таки большинство во всём том же ж впк советского отрицательного отбора) либо такие же ж безрукие и безголовые но к тому же ж ещё и «патриотически политически упоротые»

... то что ты имеешь наблюдать уже сейчас наши дни это просто следствие всё этого же ж всё того же ж советского отрицательного отбора и он будет продолжаться и далее селяви ))

... включая вот это всё ровно то же ж самое только теперь уже всё по другому потому что теперь всё на отечественном языке ))

понятно что всё это крайне способствует решению проблем

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

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

Суть це не змінює, замість акценту на кількість і якість кадрів, краще б дивились на умови для роботи і виробництва, тоді б може і ззовні могли мігрувати...

А що це таке РСВ?

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

виробництво PCB та пайку SMD-елементів

зрозумів що йдеться про printed circuit board

В продакті спеціаліст може бути залучений до повного циклу розробки, його експертиза може буде корисною починаючи від формування вимог, і загалом більше процесів буде, ... а знайти таких розробників складніше не загалом через вищі вимоги, а через поширений в українських продуктових компаніях і R&D-офісах західних компаній присутніх в нас => режим роботи «тільки офіс», саме через це найбільше їхні рекрутери отримують відмови останні декілька років, ... і це також інша ситуація з точки зору менеджменту, бо в продакт переважно наймають PMів із певним технічним бекраундом, бо пересічні PMи із аутсорсу будуть некомпетентними.

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

знайти таких розробників складніше не загалом через вищі вимоги, а через поширений в українських продуктових компаніях і R&D-офісах західних компаній присутніх в нас => режим роботи «тільки офіс», саме через це найбільше їхні рекрутери отримують відмови останні декілька років

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

Немає такої залежності: «Спеціалісти в продуктовій компанії — це ті ж спеціалісти, які до цього працювали в GlobalLogic»

Ну, я помітив таку залежність, коли в Україну прийшли дві з тих чотирьох продуктових компаній, які Ви перерахували, і іще одна, яку Ви не згадали. Ці продуктові компанії зайшли в Україну приблизно в один і той же час і взяли до себе на роботу велику кількість досвічених розробників ПЗ з ембедед проектів українських аусторс компаній, зокрема з GlobalLogic.

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

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

чи повернеться такий спеціаліст потім із умовної GlobalLogic в продакт

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

Ну, я помітив таку залежність, коли в Україну прийшли дві з тих чотирьох продуктових компаній, які Ви перерахували, і іще одна, яку Ви не згадали. Ці продуктові компанії зайшли в Україну приблизно в один і той же час і взяли до себе на роботу велику кількість досвічених розробників ПЗ з ембедед проектів українських аусторс компаній, зокрема з GlobalLogic.

Я такого не спостерігаю серед згаданих мною продуктових компаній, бо «захід» Nvidia — це купили іншу компанію, в якої був офіс в Україні, з Infineon аналогічно, а у випадку SQUAD — купівля Амазоном стартапу із R&D в Україні, ... і навіть GlobalLogic, як найкрупніша аутсорсингова компанія в українській Embedded-розробці — це не просто відкриття офісу в Україні і активний найм, а стартували на нашому ринку із купівлі української аутсорсингової компанії.

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

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

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

От прийшли до пріоритетів для роботи в ІТ, якщо це зп, то ось, наприклад, остання агітація за Embedded, яка закінчилася контрагітацією, що це туфта і потрібно йти в Backend, бо там вакансій значно більше і стеля зп вище, а також менше напружуватися потрібно dou.ua/forums/topic/43717

Влітку на Джині були вакансії на 10к. Мережі або нутрощі Андроїду.

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

Я такого не спостерігаю серед згаданих мною продуктових компаній, бо «захід» Nvidia — це купили іншу компанію, в якої був офіс в Україні,

Називалася та компанія Mellanox, виробляла мережеве обладання. Зайшла в Україну через те, що в Україні завдяки аутсорсу з’явилося багато експертів з розробки ПЗ для мережевого обладнання. Частину з цих експертів Mellanox і найняла — мій колишній співробітник з GlobalLogic був одним з перших найнятих розробників ПЗ в українському офісі цієї компанії.

у випадку SQUAD — купівля Амазоном стартапу із R&D в Україні

А до того SQUAD називався Ring, і зайшов в Україну майже одночасно з Mellanox, оскільки в Україні з’явилося багато експертів з розробки ПЗ для відеокамер, частину яких (експертів) Ring успішно найняв.

GlobalLogic, як найкрупніша аутсорсингова компанія в українській Embedded-розробці — це не просто відкриття офісу в Україні і активний найм, а стартували на нашому ринку із купівлі української аутсорсингової компанії.

Так, та це сталося задовго до того, як в Україну зайшли Mellanox та Ring, і завдяки цьому і з’явилася така велика кількість експертів у розробці ПЗ для мережевого обладнання.

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

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

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

О, дякую, почитаю.

Називалася та компанія Mellanox, виробляла мережеве обладання. Зайшла в Україну через те, що в Україні завдяки аутсорсу з’явилося багато експертів з розробки ПЗ для мережевого обладнання. Частину з цих експертів Mellanox і найняла — мій колишній співробітник з GlobalLogic був одним з перших найнятих розробників ПЗ в українському офісі цієї компанії.

дай вгадаю як діло було )) одного гарного сонячного дня «аккаунт» одного великого галєри внєзапно рішив шо право імєєт і просто відділився від материнської галери створивши той самий рівно «аккаунт» тілько назвавши його «компанія імярєк» який раніше називався «аккаунт» усередині великої галери

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

а ну і тепер то є не bloody outsourcing но честний продукт ))

всі совпадєнія з реальністю є художня случайность ))

А до того SQUAD називався Ring, і зайшов в Україну майже одночасно з Mellanox

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

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

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

ЗЫ: доречі Mellanox наче як не злетів саме вітчизняний офіс нє?

дай вгадаю як діло було )) одного гарного сонячного дня «аккаунт» одного великого галєри внєзапно рішив шо право імєєт і просто відділився від материнської галери створивши той самий рівно «аккаунт» тілько назвавши його «компанія імярєк» який раніше називався «аккаунт» усередині великої галери

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

а ну і тепер то є не bloody outsourcing но честний продукт ))

всі совпадєнія з реальністю є художня случайность ))

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

то я сплутав з іншою назвою також на «м» тіко існувавшою багато раніше

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

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

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

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

доречі Mellanox наче як не злетів саме вітчизняний офіс нє?

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

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

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

Круті питання! Цікаво їх пропрацювати

якщо спробувати зробити з цього бодай щось серьозне...

... отже усі питання по сі можуть бути тільки на джуніора і там можуть бути питання _виключно_ по сі і ні яких

Що таке EABI (Embedded Application Binary Interface)?

так само там не може бути ні яких cmake

далі так само теоретичні питання академічного курсу з теорії комп’ютера та програмування (як теорії) та операційних систем

Для чого потрібна віртуальна пам’ять?
Що таке MMU?
Як працюють переривання?
Що таке DMA?

це все теоретичні питання академічного курсу їх має знати саме джун

(як те саме зокрема знати що є sram та dram і у чому різниця)

це все лише загальна теорія комп’ютера

далі пішли вже більш конкретні питання заліза

Як комунікують пристрої, підключені по I2C?
Яка різниця між UART vs SPI?
В чому перевага інтерфейсів з сигналом синхронізації?

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

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

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

зокрема оті ваші «сіньорські питання з сішечки»

Що таке ISR?
Як відбувається передача параметрів в ISR?
Чи можливе повернення результату з ISR?

то є на справді загальна теорія комп’ютера для джуна

далі джун (теоретично) має мати теоретичні знання за інші теоретичні предмети з комп’ютера зокрема усі ті питання з комп’ютерних мереж

Як працює протокол TCP?
Що таке маска мережі?
Що таке шлюз за замовчуванням?
Що таке комутатор L2? Які його функції?
Що таке маршрутизатор L3? Назвіть його функції.
Розкажіть про інкапсуляцію пакетів при проходженні по рівнях моделі OSI.
Що таке OSI model?

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

... а от ці вже ні ))

Як працює BLE?
В чому різниця між Bluetooth Classic and BLE?
Як працює Wi-Fi?

а чому власне вай-фай а не 2-3-4-5ж? а вай-фай який? а чого саме вайфай та блютуз як бездротові? чого не dsl/adsl/vdsl/xdsl/atm ?

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

далі те ж саме стосується спеціальних знань які тут занесені у категорії «лінукс»

усе це відноситься саме до спеціальних знань за межами загальної теорії операційних систем яку вже має знати джун

спеціальними знаннями має володіти лише людина з конкретним записом у резюме про такі спеціальні знання і тут немає відношення між «сіньор» та «міддл»

більшість мережевих протоколів буде відноситися до спеціальних знань

http? так це загальне знання так само як і https
а от ssl/tls це вже спеціалізовані знання окремо від того що така штука взагалі існує і називається саме так і що https це той самий http просто збудований поверх tls

... а як що до http/2? а http/3? а от скажімо як що до websocket ? який там у ваших «питаннях» уже «доречно» згаданий там ви що мали на увазі? докладне знання RFC?

www.rfc-editor.org/rfc/rfc6455

MQTT? RMQ? деталі останнього? бо то є лише імплементація іншого протоколу нє? а чого тоді не OPC-UA?

а як ви збираєтеся його порівнювати з тим самим websocket якщо останній лише frame протокол але не message протокол?

так ці всі «питання» лише покажуть реальний рівень реальної розробки вашого реального проекту

... отже будь які спеціалізовані питання можуть задаватися лише конкретним спеціалізованим спеціалістам і не залежно сіньор чи мідл ну а джун такого «знати» і не повинен бо чого тоді він усе ще лише «джун» )) а ну так щоби зрізати кости на з.п.

... і так до речі у вас взагалі нема питань на щось вище джуна і ви якраз намагаєтеся це приховати «спеціалізованими типу крутими питаннями»

отже що має знати мідл на відміну від джуна

№ 1 у мідла мають бути вже ті самі спеціалізовані знання які він узяв з практичного досвіду практичної роботи над практичним проектом

№ 2 у мідла має бути саме практичний досвід практичної роботи і тут вже цікаве питання що ви не навели жодних практичних питань саме з ембеду

... але виходячи з п.п. № 1 ви й не можете цього зробити бо цей досвід буде прямо залежати саме від проекту ... просто ви про це не знаєте ))

тож № 3 ключовий досвід який має бути універсальним вже у міддла це вміння розібратися у проекті як новому проекті з конкретним фізичним оточенням включно це вміння вже саме як практичний досвід

... зокрема саме тут вже можна було би б питати за той самий mqtt websocket а як саме мідл з ними працював (а часто може прямо й не працював а просто на проекті воно є просто давно загорнуте у абстракції)

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

працював з осцилографом? чудово! що за модель? може й не суттєво... що за стенд? вже цікавіше... а може емулятор? теж добре а як є ще й досвід налаштування усього цього стенду то взагалі супер (означає що людина може сама зібрати той самий стенд або з наявного заліза/софту або запитавши конкретні запити на що купити)

... сіньор )) як на мене з цього місця починаються 2 важливі пункти

№ 1 траблшутінг
№ 2 людський фактор

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

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

Як написати драйвер для ядра Linux?

сірьозно? LDD3 має усього 600 сторінок

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

Не знаю, як зараз, а колись мене взяли в ембедед світчером без знань комп’ютерних наук:

принципів роботи обчислювальної техніки, операційних систем та мереж

. Ще й не вмів (і досі не вмію) паяти та працювати з осцилографом, та читати схеми.

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

Не знаю, як зараз,

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

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

У Вас перед іншими світчерами була вагома перевага — Ви навчалися у фізико-математичному ліцеї з топ-20 рейтингу ЗНО, який може похвалитися призерами міжнародних олімпіад з точних наук.

не вмів (і досі не вмію) паяти та працювати з осцилографом, та читати схеми

Так ці уміння до комп’ютерних наук не відносяться.

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

Оце мене завжди вражало. На спібесідах запитують лише комп’ютерні науки (в тому числі і у сіньйорів), але на кожному проекті знаходяться кілька умільців, які майстерно працюють з паяльником, а зачасту ще й з осцилографом, ну і іноді трапляються ті, хто вміють читати схеми. Хоча, можливо, це в мене на співбесідах ніколи не питали нічого по осцилографу бо в мене в резюме нічого не написано про вміння працювати з ним.

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

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

так само там не може бути ні яких cmake

Дозвольте доколупатися: офіційний Raspberry Pi Pico C/C++ SDK весь побудований на cmake, тож це питання цілком нормальне.

Сподіваюся, ніхто не заперечуватиме, що RP2040 це повноцінний embedded?

І, до речі, якщо в списку вже є питання по Java, то можна додати розділ про MicroPython :)

MicroPython

Хто-небудь де-небудь таке ставить в продакшн?

Сподіваюся, справжні embedded-розробники не використовують MicroPython в продакшні.

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

(Якщо шо, я не справжній сварщик).

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

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

а яка мета цих питань?

В чому полягає різниця між мікропроцесором і мікроконтролером?

ну от скажімо класичне яке мало сенс певно 80-ті минулого століття intel 8051 і то скоріше виключно у срср «та сумісних державах» бо у нас ні чого не було

Необхідно вирішити проблему завади, яка виникає при знятті сигналу з сенсора і відображається на осцилографі. Ця завада перешкоджає нам отримати дані при переході з 0 на 1. Який метод захисту від цієї завади є найпростішим?

ви помітили що це єдина згадка осцилографа в усьому «тесті»? а чому? ... (дається 5 хвилин на відповідь)

... бо ви ніх. не знаєте за осцилограф )) бо ви ніх. не знаєте за сучасний хардварний стенд

Як відбувається завантаження програми в мікроконтролері?

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

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

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

там хоч спеки були на КР1816ВЕ51

Senior
C
Як працюють таймери?
Що таке регістри? Як вони працюють?

що сірьозна? у сі є таймери? у сі є регістри? шо вапчє таке значить «як працюють регістри»?

Embedded
Для чого потрібна віртуальна пам’ять?
Що таке MMU?

а чого воно в ембедед а не в лінукс? ))

Junior
Яка різниця між ОС загального призначення та ОС реального часу?
Middle
Що таке операційна система реального часу (ОСРЧ)?

а хіба це не одне й те саме питання? ))

Які є типи оптимізації коду?

0 1 2 3 ? ))

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

це ми все ще за ембедед? ))

Як відбувається перше підключення до інтернету?

це типу зайти на сайт київстар дізнатися чи можливе підключення за вказаною адресою? ))

Етапи компіляції. Як зберегти інформацію кожного етапу?

на вашому місці я би казав би «не знаю але дякую за цікаве питання я обов’язкого його вивчу і вам передзвоню» і тікав би б звідти міняючи адреси та номери телефону щоб бува не знайшли опять ))

Enbedded це не про те що буде як що не віддавати пам’ять, навіть не про те що буде коли віддаватимеш, це про те що робити коли пам’яті нема! :))) Як в новому тігуані — як що глюкануло — заглуши та знову заведи мотор! :))))
Офігенне питання про проблеми зв’язку (USB 5-10-20м), але частіше так: все робить на столі і глючить в полі — що/як/кому/чим?!
Питання про микроконтроллер та микропроцессор — огонь! 50 років, а це питання досі актуальне. В ємбед потрібно розуміти — те що зовні мало того що може здохнути в любу хвилину, так воно ще малосекьюрне.
Про світлодіоди на Linux — пусте. Як що є Linux — це не embedded, як і Windows Embedded — не embedded. Поморгати светіком це максімум, а як що треба с частотою та скважністтю — облом.
Питання з RS485 — супер, це полу-дуплекс і треба переключати драйвер шини (микросхему наприклад ADM485) на прийом після передачі, як це зробити із Linux, коли воно реально закінчило передавати — питання не для Linux, а на голому залізі чи на FreeRTOS — без проблем.

Накатали трохи критики в t.me/embeddedkyiv

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

Це щоб не платити зп синьйора нікому-нікому? Бо нормальний ембедер не буде тратити свій час на непрофільні задачі

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

А в нас на цирку EtherCAT і EtherNet.

Але я б ніколи не вимагав від ембедера такої нішевої екзотики.

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

а чого тоді у списку нема питань типу «що стоїть між мережею та мікро контролером»? ))

Зазвичай вони заходять в ті країни, де достатньо експертів

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

Нетворкінг на глобальному рівні і високорівневі протоколи справді виглядають дивно, але скажімо така штука en.wikipedia.org/...​wiki/Audio_Video_Bridging — це самий натуральний ембеддед.

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

А є FPD Link-III. Ну і MIPI CSI

Знову ж таки, це нішеві технології, на які треба потратити до року життя

Згоден. Подібні списки взагалі варто було б розглядати не як вичерпний чекліст, а скоріше як меню в ресторані, скажімо можна запросто мати хх років досвіду, але вживу жодного разу не працювати зі стандартами свіжіше С99, або не використовувати Bluetooth. Чи наприклад, я ось зараз працюю з вищезгаданим IEEE1722, писав з нуля парсер тестування стабільності стрімів, з розбором всіх полів ethernet-фреймів, деякі речі типу double vlan tagging випадково відкрив сам і використовував в продакшні для практичних цілей, потім здивовано дізнавшись що це виявляється такий тип хакерської атаки, але про теоретичне дрочево з розкладом по рівнях OSI я б нічого сказати не зміг окрім процитувати вікіпедію, бо ніхто адресаціями, сесіями і іншою хрінню з IP-стеку у цьому домені не оперує. Більше того, у знайомих з глобальним нетворкінгом чомусь питань по роботі системи виникало навіть більше, ніж у тих, хто починав працювати з нею без бекграунду.

Я лідив розробку VoIP gateway для WiFi роутерів, але з цих питань, може, на 10-20% відповім.

Перелік питань класний, але деякі пункти, типу

В чому полягає різниця між мікропроцесором і мікроконтролером?

— доволі срачогенні. Наприклад, на Intel Coffee Lake можна мигати світлодіодами на GPIO чи питати температуру по I2C з noMMU апки, використовуючи кеш як рам, і формально це не дуже-то відрізняється від якогось GD32F103, де теж немає вбудованого флешу, він наліплений окремим кристалом під одним корпусом по QSPI. Границя між мікропроцессором і мікроконтроллером нині доволі умовна і розмита.

Контролер керує мотором
Обладнання працює через USB-шину, відстань між обладнанням і контролером становить 5-10 метрів.

Питання загального дизайну силової електроніки, signal integrity i power integrity — це бездонна прірва задач і проблем, які чомусь зараз звалюють на програмістів, замість профільних хардварних інженерів (чи навпаки, хардварні інженери, щоб замість 300 баксів отримувати в 3000 записуються у програмісти). По досвіду співбесід кандидатів, таке суміщення зазвичай є там, де одна людина витягує все, і це іде на шкоду софт-скіллам і вмінню користуватись CI/CD, номінально хороші результати тесту як чекліста знань обертаються поганим перфомансом у командній роботі.

Питання загального дизайну силової електроніки, signal integrity i power integrity — це бездонна прірва задач і проблем, які чомусь зараз звалюють на програмістів

Тут програміст софтварно мало що може зробити. Хоча якщо пофантазувати, то в принципі можна перед запуском двигуна зберігати стан всіх важливих змінних в EEPROM, щоб у випадку перезавантаження MCU міг відновити роботу з того ж місця :) Ще можна brown-out detector вимкнути. Disclaimer: це жарт, не робіть так, робіть нормальну схемотехніку або хоча б конденсаторів додайте.

Оптичну або гальванічну розв’язку

Підвисший ШІМ у силовій електроніці може призвести не просто до зависання, а до вигорання заліза, багато власників ДБЖ Volt Polska можуть розповісти як це виглядає. Саме фізика процесів, як працюють дроселі/трансформатори/електромагніти, як аналізувати схеми з точки зору перехідних процесів при включенні-виключенні, до коду не відноситься зовсім ніяк, і методом проб і помилок дебажити коштує дуже дорого.

Скажімо, якщо мікроконтролер тактується кварцевим генератором, то просто по фізиці процесів (швидкості звуку у кварці, ступені затухання коливань) його частота буде в діапазоні одиниць-десятків мегагерц, а швидкість розкачки до робочої амплітуди — десятки-сотні тисяч коливань, тому boot time системи з таким мікроконтролером ніяким кодом не можна зробити швидше одиниць мілісекунд. Брати за тактову частоту вбудований RC-генератор для багатьох задач неприйнятно, тому якщо мікроконтролер рулить ШІМом скажімо двигуном чи інвертором напруги з типовими робочими часами імпульсів в десятки мікросекунд і нижче (щоб не попадати у акустичний діапазон і голосно не пищати) , рішення безпечного старту системи може бути виключно аппаратним.

Те саме можна написати про роботу USB-шини на 10 метрів — можна поблистати ерудицією і запропонувати поставити порожнистий жорсткий твінаксіальний кабель, щоб показник заломлення діелектрика був близьким до 1 і працювало на 15 метрів, можна накостилити хабів кожні 3-5 метри, але ще краще загуглити граничну робочу відстань і відразу закласти якийсь більш пристосований до великих відстаней протокол. Якщо на проекті реально виникають такі затики, мене б це насторожило, з точки зору компетентності архітекта...

а доречі жодного питання по шинах окрім загально відомих diy інтерфейсів бо якщо є питання за віртуальну пам’ять mmu та task schedulers то де ж питання за pci / pcie ? а як що до заліза самої оперативки? жодного питання шо за dram і шо за sram?

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

вони бльо стандартні і надаються в даташитах на чіп самим виробником чіпа просто у срср ні хто не читає документацію а програміст заправляє принтер та проводить інтернет ))

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

Якщо на проекті реально виникають такі затики, мене б це насторожило, з точки зору компетентності архітекта...

welcome to the real world of self-made programmers neo ))

вони бльо стандартні і надаються в даташитах на чіп самим виробником чіпа

Ну всіляке буває, скажімо під MPPT-контролер для grid-tie сонячного інвертора, чи якого-небудь електроерозійного станка готовий чіп навряд чи знайдеться. Але там, зазвичай, спочатку проектують топологію і схемотехніку силової частини, потім теоретичними розрахунками і моделюваннями на всіляких SimuLink-ах відпрацьовують алгоритми керування, далеко не факт що обраний в результаті буде PWM, а не PFM, Constant On-time, частотна модуляція резонансного кола чи ще десяток можливих варіантів, потім вибір між FPGA, DSP чи MCU загального призначення, а може і взагалі простіше буде обв’язати аналоговий типовий контролер типу TL494/SG3525 потрібними зворотніми зв’язками, і лише після цього ембеддерам буде куди підступатись до роботи.

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

готовий чіп навряд чи знайдеться

(закочує очі та робить дивні паси руками) ... ти в курсі що проектування чіпів то є не ембедед вже?

і лише після цього ембеддерам буде куди підступатись до роботи.

а от і ні бо «ембедери» там з’явилися вже отут

потім теоретичними розрахунками і моделюваннями на всіляких SimuLink-ах відпрацьовують алгоритми керування

просто «наші» «ембедери» про це не знають навіть теоретично ))

ЗЫ: зокрема величезна популярна сфера «ембеду» це взагалі не код як такий чисто сішечка як то навіть на ардуїні а знання конкретної системи CAD яка сама за заданими параметрами і генерить прошивку тої самої сішечки вже не суттєво бо у 99.99% туда внутрь згенерованої ні хто більш не лізе (окрім самих розробників тої CAD у свою чергу)

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

ти в курсі що проектування чіпів то є не ембедед вже?

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

а от і ні бо «ембедери» там з’явилися вже отут

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

О, SCADA!.. Так мене на Елекс заманили...

А прототипувати чіпи можна на FPGA

По тій причині що 300 баксів хардвару і немає.

Дякую за запитання. Дуже корисно періодично проходити такі типи питань

В цілому цікаво, дякую.

25. В чому різниця між pulling і interrupt?

Може polling?

44. Як комунікує User Space and Kernal Space?

Kernel? Kerbal!

75. Обладнання працює через USB-шину, відстань між обладнанням і контролером становить 5-10 метрів. Обладнання постійно викликає помилки та працює нестабільно. Що може бути причиною цього і як це можна виправити?

Я навіть не знаю, чи можна таке питати :)

А OLE for Process Control хтось ще з динозаврів застав?

Припускаю, що в запитаннях для Junior замість

Класифікація систем контролю версій

Там де

30.Що таке system call?
31.Які системні виклики ви знаєте?
32.Що таке spinlock?
33.Що таке device tree?
34.Що таке POSIX?
35.Що таке файловий дескриптор?
36.Чим відрізняється процес від потоку?
37.Опишіть використання модифікатора volatile.

Малося на увазі

Linux

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

Наш прокол, дякую ґречно, виправили

Будь ласка!
Дякую Вам за цікавий список запитань для підготовки до співбесід)

Я не embedded розробник, але матеріал дуже цікавий та якісний. Колосальна робота. Ви круті!

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