Друкарня від WE.UA

Middle/Middle+/Senior

Intro

  • Розкажи коротко про себе і свій професійний досвід (з чим працював, зараз працюєш), яку роль виконував на цих проєктах

  • Які найскладніші задачі ти виконував або просто що тобі найбільше запам’яталось як розробнику

  • Чи пишеш/писав для себе пет-проєкти? Найцікавіший?

  • Чи доводилось тобі керувати командою / менторити молодших розробників?

  • Чи виникали конфліктні ситуації з іншими розробниками, як ти їх вирішував?

  • Уточнюючі питання по досвіду, стеку → відповідно попередніх відповідей відбирати найбільш доцільні питання із нижчеперелічених

Java Core (основне)

  • як працює хешмапа

  • що таке колізія

  • чи може елемент в хешмапі змінити свій бакет за якихось обставин?

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

  • яким чином може виникнути меморі лік в хешмапі?

  • *на подумати – яким чином хешмапа перебудовує елементи з лінкедліста в дерево, якщо ключі не є Comparable

  • hashmap vs treemap (використання, особливості кожної)

  • що таке імутабельний об’єкт

  • Дженерики

  • що таке класлоудер, для чого потрібен і чому їх 3 (чи зможеш назвати)

  • JVM – ділянки памяті (stack, heap(+metaspace)) (string pool, integer pool)

  • як працює GC? Чув за Stop-the-World pause?
    (чи може нагрузитися CPU якщо в нас проблеми тільки з пам’яттю? Чому?)

  • чому важливо перевизначати equals разом із hashcode?

  • розкажи за hashcode все що ти знаєш

  • колекції, ексепшини, стріми, файлові потоки, серіалізація

  • Java NIO. Channel, Buffer, etc

  • AOP. Що краще використовувати рефлексію, чи АОП?

  • Lombok & AspectJ

  • Методології розробки, поясни + і - ООП/ФП

  • Jar types Fat/Uber/Lightweight різниця і приклади використання

Networking

  • Що таке сокет в контексті мереж?

  • Чи можемо ми працювати в джава з сокетами?

  • Які основні протоколи існують в мережевому стеці? (http, ssl, tcp/ip)

  • Чи ти чув щось за модель OSI?

  • TCP handshake

  • Connection timeout

  • WebSocket

Tests / CI/CD

  • Які методології, практики написання та інтеграції тестів ти знаєш?

  • Наведи бест практіс використання тест контейнерів

  • Які методології, практики CI/CD ти знаєш для забезпечення надійної системи?

  • Для чого потрбіно агрегувати метрики по часу?

Security

  • Що таке аутентифікація vs авторизація

  • Що таке сервлет фільтри

  • SecurityFilterChain, DelegatingFilteProxy

  • Як підсунути свій фільтр

  • Типи шифрування (симетричне асиметричне)

  • JWT, токени загалом, OIDC, OAuth2

  • SSL сертифікати

  • HTTP/HTTPS

  • Поясни процес аутентифікації у Spring Security. Як відбувається взаємодія з SecurityContextHolder? Чому він тредлокал? Що було б, якщо б він був не threadsafe?

  • Authentication/Principal objects

J2EE

  • Що таке томкат, його архітектура, флоу обробки запиту

  • Сервлет (чи є threadsafe), структура HTTP запиту

  • поняття ідемпотентності та як реалізувати ідемпотентність http запиту

  • Як би ти реалізував свій менеджмент сесій? (кукі, etc)

Spring

  • Для чого потрібен спрінг бут і в чому його особливості?

  • Для чого потрібен @Conditional?

  • Можливо ти щось чув за @ConfigurationProperties?

  • Як працює Spring MVC. Що таке MVC? (DispatcherServler -> /get -> invoke Controller getMapping using reflection passing needed arguments)

  • Різниця Controller vs RestController

  • Що таке RESTful API

  • Як працює анотація @Transactional?

  • Transaction propagation and isolation

  • Як працює/що робить анотація @EnableSmth?

  • Як працює анотація @Scheduled, який тредпул юзає? Чи можемо ми це конфігурувати?

  • Spring плагіни для Maven, як модифікувати конфігурації збірки Spring project

  • Що таке dependencyManagement plugin, призначення

  • Як обробляти помилки на рівні Spring? (ExceptionHandler’s)

Multithreading

  • Різниця потоку і процесу

  • Що таке потік

  • Для чого потрібні потоки

  • Чому не можна створювати потоки через new Thread() – які аналоги? Кращі підходи?

  • Які основні проблеми виникають при роботі з багатопотоковістю?

  • Як можна вирішати дані проблеми? (синхронізація – sync, locks)

  • Чи знаєш, що таке монітор?

  • Що таке volatile? Для чого він потрібен? Чув щось за JMM? (*happens-before, operation reordering)

  • Різниця між synchronized і locks

  • Асинхронний код. CompletableFuture. Як обробляти помилки?

  • Що таке дедлок

  • *усна задачка: є в тебе 2 потоки, які одночасно інкрементують змінну. Чи допомже в такому випадку volatile? (зрозуміти, чи кандидат розуміє для чого взагалі volatile і чи він розуміє як працює взаємодія з пам’яттю – інкрементація не є атомарною операцією)

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

  • Які знаєш багатопотокові колекції? Як працюють?

  • ThreadLocal

Docker & k8s & клауди

  • Чи використовував докер і кубернетес? Для чого це потрібно?

  • Для чого нам клауди? Які сервіси юзав і для чого? (EC2, S3, SQS, SNS)

  • Де б ти зберігав конфіденційну інформацію? (api ключі, токени, паролі, для внутрішньої роботи застосунку) 

  • Перечисли API k8s і для чого вони потрібні?

  • Що таке ingress?

  • Як і для чого використовувати kube secrets?

  • Які типи масштабування забезпечує k8s?

  • Як призупинити под?

  • под vs контейнер

SQL & JDBC & Hibernate

  • Як ми можемо працювати з БД використовуючи Java? Чи є в нас якийсь відповідний API?

  • Як створити запит і отримати результат в JDBC?

  • Які основні класи є на рівні JDBC?

  • Які основні проблеми і для чого нам потрібен Hibernate?

  • Як сконфігурувати Hibernate і які там основні класи?

  • Що таке Session/SessionFactory/Transaction?

  • Чи використовує Hibernate кешування?

  • Життєвий цикл сутності в Hibernate?

  • Чому виникає LazyInitializationException

  • Чув щось за HQL?

  • Як нам витягнути лише декілька полів з нашої сутності? (projections). Які нюанси такого підходу?

  • В нас дуже багато даних в таблиці, нам потрібно їх якось обробити. Якщо ми просто викличемо findAll(), в нас впаде застосунок. Як би ти це вирішив? Що б використовував? (Streaming Query — Stream<Entity> fetchBlaBla(..))

  • QueryDSL, Criteria, etc?

  • Що таке транзакція?

  • Міграція

  • Тупить SQL. З чого почнеш дебаг і оптимізацію? :)

  • Рівні ізоляції транзакцій?

  • Чому просто не використовувати serializable?

  • Знаєш щось за ACID?

  • *локи в БД – optimistic, pessimistic

  • Що таке партиціювання в БД? Для чого потрібно?

  • Що таке шардинг БД?

  • Опиши що буде відбуватися при видаленні великої к-ті рядків в БД

Microservices

  • Які інструменти в джава існують для написання мікрсоервісних додатків?

  • Як би ти зробив інтеграцію із зовнішнім сервісом?

  • Різниця між синхронною і асинхронною комунікаціями. Коли краще яку використовувати? Мінуси і плюси кожної.

  • Які патерни знаєш, що використовував? (retry, circuit breaker, fallback pattern, etc)

  • Що таке сервіс діскавері?

  • Що таке меседж брокер? Працював з кафкою?

  • Що таке брокер в кафці?

  • Дефолтний ACK в Kafka

  • Як би ти організував зчитування з різних консьюмер груп?

  • Чи працював ти зі схема реджистрі, як це виглядало?

  • Як і де в кафці зберігаються данні? Коли вони видаляються? (retention policy)

  • Що таке zookeeper і для чого він потрібен?

  • Acknowledgements, MDS в Kafka, як вирішити типові проблеми (послідовність і дублікати)

  • DLQ паттерн

  • Що таке CQRS?

  • яким чином тестуються 3d party інтегрейшн сервіси? ми знаємо +- їхню поведінку, як їх замокати?

  • Протоколи комунікації (gPRC, HTTP, AMQP, WebSocket, etc)

  • Як відслітковувати флоу реквестів між різними сервісами? (Distributed tracing) (Sleuth, Zipkin)

  • CAP теорема. Розподілені система. Що це, чому це важливо, як саме вони забезпечують надійність системи. За рахунок чого? Можливо знаєш якісь алгоритми?

  • Розподілені транзакції (2PC, Saga)

*Additional

  • Чи приймав ти якісь архітектурні рішення, можливо використовував патерни, або займався якоюсь оптимізацією або моніторингом перформансу?

  • Що для тебе є ідеальною архітектурою?

  • З чого ти почав би міграцію монолітної архітектури на мікросервісну?

  • З чого починається розробка проєкту?

  • Що таке функціональні та нефункціональні вимоги?

  • Яким чином системи витримують high-load навантаження? Як би ти розробив таку систему?

  • Як можна моніторити Java-додатки в продакшні?

  • Які методи можуть бути використані для ефективного логування без впливу на продуктивність? (асинхронне логування (буферизація і флашинг пізніше на диск), плюси мінуси)

  • ELK stack

  • Кешування (коли треба юзати, проблеми з кешами).
    Різниця між (і чи взагалі чув за →): Read-Through, Write-Through, Write-Behind, and Refresh-Ahead Caching

  • усна задачака*: Десь вискочив OutOfMemoryException і як взнати що є причиною(об’єкти яких класів і в якому місці спричинили меморі лік)? Чи достатньо буде треддампу (в нас є декілька потоків, аутофмеморі міг викинутися в іншому потоці, який просто десь створив нову стрічку, але реальна проблема в іншому потоці)?(хіпдамп + треддамп)

  • Використовував профайлери? Для чого? Які? Що там можна подивитися?

  • Java Agent, що і для чого

  • Які юзаєш плагіни в IntelIj

  • Різниця між різними GC

Тестове

  • написати мікросервісний додаток [до години часу]

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

  • Вітаємо з Різдвом Христовим!

    Друкарня та платформа WE.UA вітають всіх наших читачів та авторів зі світлим святом Різдва! Зичимо всім українцям довгожданого миру, міцного здоровʼя, злагоди, родинного затишку та втілення всього доброго і прекрасного, чого вам побажали колядники!

    Теми цього довгочиту:

    Різдво
  • Каблучки – прикраси, які варто купувати

    Ювелірні вироби – це не тільки спосіб витратити гроші, але і зробити вигідні інвестиції. Бо вартість ювелірних виробів з кожним роком тільки зростає. Тому купуючи стильні прикраси, ви вигідно вкладаєте кошти.

    Теми цього довгочиту:

    Як Вибрати Каблучку
  • П'ять помилок у виборі домашнього текстилю, які псують комфорт сну

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

    Теми цього довгочиту:

    Домашній Текстиль
  • Як знайти житло в Києві

    Переїжджаєте до Києва і шукаєте житло? Дізнайтеся, як орендувати чи купити квартиру, перевірити власника та знайти варіанти, про які зазвичай не говорять.

    Теми цього довгочиту:

    Агентство Нерухомості
  • Як заохотити дитину до читання?

    Як залучити до читання сучасну молодь - поради та факти. Користь читання для дітей - основні переваги. Розвиток дітей - це наше майбутнє.

    Теми цього довгочиту:

    Читання
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Oleksandr Klymenko
Oleksandr Klymenko@overpathz

Java Software Engineer

7.5KПрочитань
1Автори
95Читачі
На Друкарні з 19 квітня

Більше від автора

Це також може зацікавити:

Коментарі (7)

А де відповіді ? ))

Це також може зацікавити: