Ostatnio robiłem zadanie rekrutacyjne na stanowisko Juniora (nie wymagali nawet żadnego doświadczenia) z takmi wymaganiami:
As an api consumer, given username and header “Accept: application/json”, I would like to list all his github repositories, which are not forks. Information, which I require in the response, is:
Repository Name
Owner Login
For each branch it’s name and last commit sha
As an api consumer, given not existing github user, I would like to receive 404 response in such a format:
{
“status”: ${responseCode}
“Message”: ${whyHasItHappened}
}
As an api consumer, given header “Accept: application/xml”, I would like to receive 406 response in such a format:
{
“status”: ${responseCode}
“Message”: ${whyHasItHappened}
}
Notes:
Please full-fill the given acceptance criteria, delivering us your best code compliant with industry standards.
Please use https://developer.github.com/v3 as a backing API
Application should have a proper README.md file
Tutaj zrobione to zadnie przeze mnie: https://github.com/Sampeteq/github-task
Dzisiaj rano dzwoni do mnie rekruter i dosłownie zjechał mnie ostro za takie rzeczy jak:
1.Paginacja, której nie było w wymaganiach a ją dodałem. Myślałem, że to standard w każdym API, tym bardziej, że to API GItHuba zwracało czasami kilkadziesiąt wyników.
2.Mappowanie odpowiedzi z WebClienta na Stringa zamiast na jakąś klasę mimo, że później jest to robione.
3.Użycie ObjectMappera do mapowania jsona z WebClient na obiekt Javowy. Powiedział, że to mnie definitywnie skreśla
4.Utworzenie WebClienta za pomocą create() zamiast utworzenia beana. Powiedział, że widać, że nie znam Springa
5. Użycie MockMVC w testach integracyjnych controllera zamiast WireMocka czy czegoś podobnego, nazwał to zbrodnią
Jak to oceniacie? Czy rekruter miał racje i takie błędy dyskwalifikują kandydata czy może moje rozwiązanie jest w miarę ok i rekruter przesadził? Nie ukrywam, że byłem w sporym szoku. Nie bardzo mogłem wejść z nim w polemikę, bo telefon zerwał mnie z łóżka i byłem zaspany