Przykłady live-coding na rozmowie rekrutacyjnej

0

Cześć,
jestem Java Developerem z 5 letnim doświadczeniem, stack: Java 8+, Spring, Spring Boot, Relacyjne bd, Kafka, Rest/Soap, Docker itp.
Taki typowy stack dla backendowca, zwykle coś takiego wymagaja w ogłoszeniach.

Zaczalem rozgladać się za nowa praca, więc też zaczałem przygotowywania do rozmów.
Sama część teoretyczna nie sprawia mi problemów, ale już live coding czasem mnie pokonuje.
Wiadomo, że inaczej się koduje kiedy ludzie na ciebie patrza i masz max 30min na zadanie, dlatego chciałbym się mocniej do tego przygotować.

Znalazłem w internecie wiele przykładów zadań (np. 50 java programs from coding interviews, ale już na tym poziomie doświadczenia takie zadania sa raczej tylko na rozgrzewkę.

Więc pytanie do ludzi co brali w ostatnim czasie udział w rekrutacji, na której był live coding. Jakie to były zadania?

Od siebie mogę podać kilka przykładów które pamiętam:

  1. Wygeneruj labirynt i znajdź drogę do wyjścia (google - java maze solver).
  2. Lista z ciagami znaków, usuń whitespace-y, zmień znaki alfabetu na wartość ascii i oblicz statystyki (sum, average, max,min itp).
0

zawsze wszedzie te debilne zadania na stringach, charach - ciagi, podciagi, palindromy, kombinacje, zamiany, podmiany. Dramat, z praca ma to tyle wspolnego….

6
szach2008 napisał(a):
  1. Wygeneruj labirynt i znajdź drogę do wyjścia (google - java maze solver).

Nie zrobiłbym tego w 30 minut i nie zadałbym takiego zadania.

  1. Lista z ciagami znaków, usuń whitespace-y, zmień znaki alfabetu na wartość ascii i oblicz statystyki (sum, average, max,min itp).

To jest typowe.
Inne:
masz listę 50 liczb int - znajdź element taki, że suma tego elementu i sąsiednich (lewy + prawy) będzie największa.

Jak firma daje jakieś bardziej skomplikowane zadania na live coding to robi się ruletka. Można olać =>nie da się do tego dobrze przygotować.
Warto nie odpadać na prostych zadaniach i to zwykle wystarczy.

0

Kiedyś mnie poproszono o znalezienie najkrótszego fragmentu tekstu, który zawiera wszystkie podane słowa.
Ja prosiłem o naprawienie problemu z wydajnością podczas rekurencyjnego liczenia n-tego elementu ciągu Fibbonaciego.w podanym kodzie. Później doszedłem do wniosku, że raczej nie warto się w takie rzeczy bawić w trakcie rozmowy, bo sprawdzają bardziej odporność na stres niż faktycznie umiejętność programowania.

2
szach2008 napisał(a):
  1. Wygeneruj labirynt i znajdź drogę do wyjścia (google - java maze solver).

Zadanie ciekawe, ale nie na live coding.
Ogólnie można zaimplementować algorytm A*, w przypadku labiryntów też czytałem kiedyś o taktyce "idź przy każdym skręcie w prawo".

Problem w tym, że publiczne implementowanie takich algorytmów na szybko jest bardzo żenujące. Jak idziemy na czas, to myślenie algorytmiczne przestaje mieć większe znaczenie, bo większość czasu pójdzie na debugowanie niedziałającego algorytmu i tego, że zapomniałeś jakiegoś kroku gdzieś i przez to ty się stresujesz, że nie działa jak trzeba, a gość, który na to patrzy, ziewa z nudów, że nic się nie dzieje.

Takie zadania mogą mieć sens jako zadanie domowe, gdzie ktoś ma więcej czasu plus dostęp do wszystkich narzędzi, internetu, żeby doczytać o algorytmach itp. A później jest czas, żeby uporządkować projekt (pisanie na czas powoduje, że pisze się bardzo niechlujnie, żeby tylko działało, a to nie jest dobra wizytówka).

Taki typowy stack dla backendowca, zwykle coś takiego wymagaja w ogłoszeniach.

Poza tym czemu backendowca mają pytać o zadanie z gamedev?

1

Trochę śmieszne jest to, że co jakiś czas siadam do takich prostych zadanek i jak zrobię kilka, to kolejne rozwiązuję bez problemu. A potem przestaję je robić, wracam do pracy komercyjnej i znowu nie jestem ich w stanie zrobić z miejsca. I w ogóle dopiero pisząc ten komentarz do mnie dotarło jak to zrobić (patrząc na samą treść posta nie byłem pewien i miałem inne podejście niż patrzenie na chama na indeksy i długość listy, bez próby zaklepania nie wiem czy by wypaliło). Eh, życie

0

Wypisz liczby od 0 do 10 nie używając pętli i nie robiąc 10 instrukcji pod rząd

0

pytanie, czym jest pętla, bo np. takie coś:

Array.from(new Array(11),(_,i) => i).forEach(i => console.log(i)) 

teoretycznie nie ma pętli, tylko że forEach to taka jakby pętla dalej. Poza tym, jakby wejść dalej w głąb, to i tak gdzieś tam niżej (w silniku JS) jakaś pętla się odpali.

albo w Rust takie coś można zrobić:

println!("{}", (0..11).map(|a| a.to_string()).collect::<Vec<String>>().join("\n"));
1

Ja miałem listę 3-5 wymagań i miałem zaimplementować Load Balancer. Niewiele więcej niż klasa z kolekcja + unit testy (TDD preferowane) + maglowanie concurrency.

2

Comarch, rekrutacja na poziom mid/senior:
Napisz funkcję sprawdzającą czy ciąg znaków zawiera podciąg "pies" + test do niej

0

Czyli jeśli dobrze rozumie
word.contains(s);

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