Roman Kryvolapov Engineering Blog

Java Spring – Списък с въпроси

Какви типове данни има в Java и какъв е размерът им
Какви модификатори има в Java и Kotlin
Какви Java Collection познавате
Какви са нивата на сложност на операциите с колекции
Какво е HashMap
Как да сортираме колекция, съдържаща сложен клас, Comparator и Comparable
Каква е разликата между ArrayList и LinkedList
Как работи TreeMap
Какви са правилата за именуване в Java
Какво представляват статичните класове в Java
Каква е разликата между StringBuffer и StringBuilder
Какво е рефлексията в Java
В кои ситуации възниква Memory leak
Какво е Generic (генерици)
Какви методи има класът Object в Java и Any в Kotlin
Какво е Enum в Java
Какъв е приоритетът в Java при преобразуване на примитивни типове
Какво е привеждане на типове / преобразуване на типове / каст
За какво служат и как се създават анотации в Java
Какво представляват Wrappers (обвивките) в Java
Какви са операторите за преход
Какво представляват Stack (стек) и Heap (куча) в Java
Какво представляват JDK, JRE и JVM
С какви стойности се инициализират променливите по подразбиране
Възможно ли е да се стесни нивото на достъп/типът на върнатата стойност при припокриване на метод
Какви типове референции съществуват в Java
Каква е разликата между map и flatMap
Какви типове грешки има в Java
Как работи Garbage Collector и как е организирана паметта в JVM
Какво е Java NIO (New Input/Output)
Какъв е редът на изпълнение на Java клас
Може ли абстрактен клас да наследява обикновен
Какви цикли има в Java и Kotlin
Какво е ClassLoader
Какво е SecurityManager
Какво е JavaCompiler
Как да стартираме JavaScript от Java
Какво е Optional в Java и Kotlin
Какви побитови операции има в Java и Kotlin
Какво представляват ByteBuffer и Unsafe
Какво е ламбда (lambda) в Java
Как в Java да заредим изпълним код от мрежата
Какво е AsynchronousServerSocketChannel
Какво представляват функционалните интерфейси и анотацията @FunctionalInterface в Java
Какви вградени функционални интерфейси има в Java
Какви типови параметри има в Java
Какъв е механизмът на работа на volatile променливите в Java
Как работят стековете на нишките в JVM от гледна точка на взаимодействието с процесора

Какво представляват вътрешните класове (Inner Classes) в Kotlin
Какви функции за област на видимост (Scope Functions) има в Kotlin
Как работи корутината и какво е suspend
Каква е разликата между методите за стартиране на корутини launch и async
Какво представляват Делегатите в Kotlin
Какво е Extension в Kotlin
Какво е companion object в Kotlin
Как да използваме гетъри (get) и сетъри (set) в Kotlin
Какво е анотацията @JvmStatic
Какво е обратно извикване (callback), функционални типове и Unit в Kotlin и как се използват

Какви нива на сложност съществуват при колекциите
Кои са най-често използваните шаблони
Какви са разликите между наследяването и композицията
Какво е SOLID
Какво представляват функциите от по-висок ред
Каква е разликата между структурната, функционалната и обектно-ориентираната парадигма в програмирането
Какви формати за обмен на данни със сървъра съществуват

Какви основни оператори съществуват в RxJava
Какви синхронизирани колекции има и как работят
Какво означава volatile
Какво означава synchronized
Какви проблеми могат да възникнат при многонишковост в Java
Какво е Lock / ReentrantLock
Какви стратегии за Backpressure има
С какво се различават hot и cold Observables
С какво volatile се различава от atomic
Какво представляват отложените (Deferred) корутини в Kotlin
Какво представляват ленивите (LAZY) корутини в Kotlin
Какво представляват Kotlin Channels
Какво представляват Mutex, Monitor, Semaphore

Какъв е синтаксисът на заявка в SQL
Какво е VIEW (изглед) в SQL
Какво представляват INDEX (индексите) в SQL
Как да избегнем конкуренция при достъп за запис в SQL
Какви видове релации съществуват в SQL
Как да направим релация Many-to-Many в SQL
Как в SQL да обединим заявка към няколко таблици
Как да използваме плана на заявката в SQL
Как да използваме индекси в SQL

Какво е Saga Pattern
Какво е Rollback Pattern
Каква е разликата между Rollback Pattern и Saga Pattern
Какво представляват концепциите за поточно предаване на събития (Event Streaming)
Какво е Eventual Consistency (крайна съгласуваност)
Какво е SOLID
Как да използваме подхода на Чистата архитектура (Clean Architecture) в Spring
Какви параметри има RESTful услугата
Какви REST методи съществуват
Какво представляват Model, ModelAndView и ViewResolver
Какво представляват принципите Inversion of Control (IoC) и Dependency Injection (DI)
Какво е Domain-Driven Design (DDD)
Какво е CQRS (Command Query Responsibility Segregation)
Какво е Event Sourcing
Какво е Circuit Breaker (Прекъсвач на веригата)
Какво е JSON-RPC (Remote Procedure Call)
Какво е Spring MVC
Какви могат да бъдат слоевете в Spring
Как обикновено се структурира Spring приложение
Кое е по-добро – анотациите или XML в Spring
Каква е разликата между REST, RPC, GraphQL и SOAP
Какви части може да има в Spring приложение
С какво Spring се различава от Java EE
Какво е аспектно-ориентирано програмиране (AOP)
Как става обработката на заявката и връщането на отговор в Spring
Какво е Project Reactor
Какво представляват Mono и Flux
Какво е сервлет (Servlet)
Какво е Инфраструктура на публичните ключове (Public Key Infrastructure, PKI)
Какво е CSRF (Cross-Site Request Forgery)
Какво е форматът на Prometheus
Какво е Структурирана конкурентност (Structured concurrency)
Какво е принципът Happens-Before (предшестване на събитията)
С какво WAR (Web Application Archive) се различава от JAR (Java Archive)
Какъв е жизненият цикъл на бийновете в Spring
Какво представляват Git Registry, GitHub Packages, GitHub Actions, Changelog, Release Notes
Какви са основните протоколи за обмен на данни в Spring
Какво е Protobuf
Какво е Javadoc
Какви са основните разлики между Maven и Gradle
От какво се състои pom.xml
От какво се състои build.gradle
Какво е Supplier
Каква е разликата между record в Java и data class в Kotlin
Какво е Java JWT (Java JSON Web Token)
Как да използваме Lombok в Java
Какво е Swagger / OpenAPI
Как да настроим достъп през OpenVPN
Какво е Keycloak
Какво е Testcontainers
С какво се различават Jetty, Netty и Tomcat
Какво е Netty
Какво е Nginx
Пример за прост уеб сървър\

Какви параметри може да има в application.properties
Как да използваме WebSocket в Spring
Как да използваме GraphQL в Spring
Как да използваме OAuth 2.0 в Spring
Как да настроим криптиране в Spring
Как в Spring да настроим HTTPS
Какво е Spring Boot Actuator
Как да настроим оторизация с помощта на Spring Security
Какво е Spring Integration
Какво е Spring Batch
Какво е AutoConfiguration в Spring
Как да настроим различни профили на билд в Spring
Какво е Spring WebFlux
Какво е ApplicationContext в Spring
Какво е BeanFactory
Какво е Spring BOM
Как да настроим сигурността в WebFlux
Как да настроим валидация на данни в Spring
Как да откриваме изтичане на памет в Spring
Какво представляват RouterFunction и RequestPredicate
Как Spring приложение може да изпраща и приема данни от други API
Как в Spring да направим фонова задача по таймер
Как в Spring да импортираме данни от CSV

Какви са основните анотации в Spring
@Configuration
@Bean
@Component
@Service
@Repository
@Controller
@RestController
@RestControllerAdvice
@ResponseBody
@Aspect
@Before
@After
@Around
@Pointcut
@ModelAttribute
@MatrixVariable
@InitBinder
@CookieValue
@Autowired
@Transactional
@EnableTransactionManagement
@RequestPart
@Value
@RequestMapping
@GetMapping и @PostMapping
@RequestParam
@RequestBody
@SessionAttribute
@SessionAttributes
@ResponseStatus
@RequestHeader
@RequestAttribute
@ExceptionHandler
@CrossOrigin
@Qualifier
@Primary
@ImportResource
@ComponentScan
@Entity
@Table
@Id
@Column
@OneToMany, @ManyToOne, @OneToOne, @ManyToMany
@EntityScan
@Document в MongoDB
@Document в Elasticsearch
@PrimaryKeyColumn
@Unwrapped
@Unwrapped(prefix = "address_")
@QueryIndexed
@PreAuthorize
@DataMongoTest
@DynamicPropertySource
@BeforeEach
@Embeddable
@Embedded
@Secured
@Column в JPA
@PostConstruct
@Transient в JPA
@Transient в стандартната сериализация на Java
@MappedCollection
@PayloadRoot
@Endpoint
@RequestPayload
@ResponsePayload
@XmlRootElement
@SpringBootApplication
С какво @Component се различава от @Service
С какво @Component се различава от @Bean

Какво е CRUD (Create, Read, Update, Delete)
Как да се свързваме с бази данни в Spring
Как да използваме AWS / Amazon Web Services в Spring
Какво е Spring Data JPA
Какво представляват JPQL и Criteria API
Как да използваме Redis в Spring
Какви нива на изолация на транзакциите има
Какви хранилища (repositories) има в Spring
Какви параметри има анотацията @Transactional
Как в Spring да обработваме промени в базата данни
Какво е Jenkins
Какво е Nexus
Какво е План на заявката (Query Plan) за бази данни
Как да използваме индекси в базата данни на Spring приложение
Какви аномалии могат да възникнат при работа с база данни
Какви видове заключване има в базата данни
Какво е R2DBC (Reactive Relational Database Connectivity)
Какво е Flyway
Къде в Spring приложение трябва да се съхраняват приватни данни
Как в Spring може да се използва кеширане
Как да настроим GitHub Actions Continuous Integration

Как могат да взаимодействат микроуслугите
Как да използваме Docker в Spring
Как да използваме Docker Compose в Spring
Как да използваме Kubernetes в Spring
Как да използваме Elasticsearch в Spring
Как да използваме RabbitMQ в Spring
Как да използваме Kafka в Spring
Какво е Eureka Service
Как да реализираме Spring Cloud Gateway
Как да реализираме пренасочване с помощта на Spring Cloud Gateway
Какво е Service Discovery
Какво представляват Dockerfile и Docker Compose
Какви инструменти има за наблюдение на микроуслугите
Какво представляват Trace ID и Span ID

Какви са основните облачни решения за Java разработка и техните аналози за обикновена инфраструктура
Какви са основните облачни решения от Amazon за Java разработка
Какви са основните облачни решения от Google за Java разработка
Какви са основните облачни решения от Microsoft за Java разработка
Как може да се оптимизира cloud решение от гледна точка на разходите
Как работят serverless решенията