Java interview Solutions Design

0

Hej,
mam pytanie odnośnie etapu interview Solution Desing / System Design na java developera. Nigdy nie brałem udziału w tego typu interview. Orientuje się ktoś jak coś takiego wygląda w praktyce? Mam tylko informację, że "trzeba będzie zaprojektować system". Nie jest to związane z programowaniem.
Dzieki

2

Dostaniesz pytanie jak zrobiłbyś prosty system XYZ, gdzie pod XYZ może kryć się cokolwiek - url shortener, jakieś zwykłe REST API itp. Najważniejsze to zadawać dużo pytań, na każdym etapie rozmowy (czyli nie tylko na początku) - zwykły Jirowy Epic w korpo wymaga często rozmów i analiz kilku PO / team leadów / architektów przez miesiąc, więc jest jak najbardziej normalne, że wypowiedziane przez rekrutera kilka zdań nie klaryfikuje wszystkiego - pytaj o każdy szczegół - co ma się stać jeśli będzie to i to, czy użytkownik może robić to i tamto, w ogóle ile jest użytkowników, czy liczy się szybkość odpowiedzi, jak reagować na błędne dane itp.

Najpierw mówisz jak to byś rozwiązał - w javie najpewniej będzie to jakaś spring bootowa aplikacja (bo szybko idzie wyklikać), ale oczywiście odpowiedź na każde pytanie co do wyboru rozwiązania jest to zależy, można jeszcze użyć A lub B, ale wybrałem obecne rozwiązanie z uwagi na .... W przypadku uderzania do jakiegoś external API lub bazy danych, warto pomyśleć nad jakimś cachem.

Jak już opiszesz proste rozwiązanie spełniające wymogi biznesowe, czas na skalowanie - co jak będzie 1000x więcej danych, resiliency, throughput, latency i inne keywordy spod zalet Apache Kafka czy Kubernetesa. W jaki sposób to skalować, czemu tak a nie inaczej (znowu - to zależy, ale wybrałem to rozwiązanie, ponieważ...).

Wmiędzyczasie rekruter na pewno będzie naprowadzał Cię na możliwe rozwiązanie, jeśli w którymś momencie utkniesz. Także cały czas pozostawaj z nim w przytomnym kontakcie i będzie git :)

0

Polecam to: https://www.amazon.pl/System-Design-Interview-insiders-Second/dp/B08CMF2CQF
Pokrywa się z tym co miałem w Amazon na interview.

0

dzieki Panowie

0

Z takich "systemow" ktore pojawiaja sie na "design interview" a na ogol nie ma lub sa slabo opisane w ksiazkach typu "Grokking design interview" dorzucilbym do rozkminki:

  • aplikacje zwiazane platnosciami/wymiana/walut/bitcoinow etc powiedzmy tego typu np: Google Pay/Revolut i inne kombinacje
  • aplikacje typu Uber/Bolt
  • systemy gieldowe/tradingowe itp itd
2

TL;DR
Taka rozmowa zwykle sprawdza umiejetność projektowania większego kawałka systemu uwzględniając podstawowe elementy jak web, security, storage, skalowalność, messaging, HA, batch itd. Mogą się pojawić pytania wykraczające poza implementacje - testowanie, wdrażanie, utrzymanie na produkcji. Bardziej na zasadzie top-down niż projektowanie tabelek w bazie danych.

Sprawdzane jest praktyczne doświadczenie i „zakres widzenia” kandydata (np. czy Twój exp nie ogranicza się tylko do kodowania serwisów w Springu). Często pojawiają się pytania o to jak pod spodem działa dane rozwiązanie, np. Kafka, K8s czy Cassandra.

Proszę: https://github.com/donnemartin/system-design-primer

Przykładowe z życia:

  • zaprojektuj koszyk w aplikacji e-commerce
  • zaprojektuj system reklam PPC
  • zaprojektuj system releasujący nowe wersje systemu operacyjnego na urządzenia mobilne
  • zaprojektuj listing zamówień z możliwością wyszukiwania
  • zaprojektuj serwis typu tinyurl

Nawiasem mówiąc, fajnie, że w firmie jest taki etap, bo to może wskazywać, że zespół jest angażowany w decyzje architektoniczne i inżynierowie (nie koderzy) są na przyzwoitym poziomie seniority.

1 użytkowników online, w tym zalogowanych: 0, gości: 1