Kako je izgledao proces
Ubrzo nakon što sam se prijavila, dobila sam mejl sa opisom samog procesa selekcije (ukratko sad): Svaki kandidat treba da završi testove iz Angulara i C#/.NET u roku od 2-3 dana. Nakon što tim kompanije oceni da je test uspešno završen u skladu sa očekivanjima, zakazuje se tehnički intervju, koji se odvija online. Ukoliko tim bude zadovoljan odgovorima kandidata na tehničkom intervjuu, sledi HR intervju. Ako je sve u redu nakon oba intervjua, kandidatu se upućuje ponuda za posao, nakon čega može započeti sa radom u kompaniji. U istom mejlu mi je i bilo postavljeno pitanje kada bih želela da mi pošalju testove imajući na umu da treba da ih završim u roku od 2-3 dana od momenta kada mi stignu. Kada sam dobila a onda i prosledila GitHub linkove ka mojim rešenjima, istog dana dobila sam pozitivan odgovor. Pošto sam prešla taj deo selekcije, pitali su me kada bih mogla da imam tehnički intervju i oko toga smo se dogovorili. Tehnički intervju je trajao sat vremena i nisam ga prošla ali ljudi su bili prijatni i veoma ažurni tokom celog procesa.
Pitanja sa intervjua
- 4 principa OOP (polimorfizam, enkapsulacija, nasleđivanje, apstrakcija), MVC, override vs overload, interfejs vs apstraktna klasa, da li je moguće inicijalizovati apstraktnu klasu, apstraktna vs virtuelna metoda, statička klasa (šta je, da li ju je moguće inicijalizovati), Mogući HTTP zahtevi i čemu služi svaki, u kom delu GET zahteva se šalje parametar na osnovu koga se dobija neki objekat (po id-u na primer) - u URI (..?id=123), u kom delu odgovora se dobija rezultat za GET zahtev - u body delu, dependency injection, pojam middleware, gde se može inicijalizovati vrednost readonly atributa ako ne prilikom deklaracije - u konstruktoru, da li dve metode mogu imati isti naziv (da), da li klasa može imati više konstruktora (da), autorizacija vs autentikacija, filter vs map, razlika između for i while, lazy loading
- SQL - primarni vs spoljni ključ, distinct za pronalaženje jedinstvenih vrednosti, pojam transakcije, commit i rollback, trigger, view (da li je to virtuelna ili fizička tabela - virtuelna), kako bi se veza više-više realizovala u bazi (kroz novu tabelu sa primarnim ključevima od obe; da li može ta tabela imati i neke svoje atribute - da), pojam migracija
- Angular - pojam komponente, komunikacija između parent i child komponente (Input, Output), komunikacija između dve nepovezane komponenete (preko servisa), pojam servisa, pojam direktive, NgModule, da li jedan div može imati i ngFor i ngIf (ne), da li se prvo izvršava konstruktor ili ngOnInit() (konstruktor)
- .NET - EntityFramework, Code first vs database first approach, LINQ upiti, koliko neka klasa može naslediti drugih klasa (jednu, a interfejsa može implementirati više), try catch blok, da li je moguće imati više catch blokova, na koji način onda se Exception hvata u zavisnosti od redosleda catch bloka, razlika između throw i throw ex