Z poprzedniej części dowiedzieliście się, jak wyglądały poszczególne etapy rozmowy o pracę, przez które musiałem przebrnąć. Zatrzymaliśmy się na ostatnim etapie, który chciałem Wam omówić bardziej szczegółowo. Dlatego dzisiaj wracamy do rozmowy, która miała sprawdzić moje umiejętności techniczne, ale w teorii.
Pytania techniczne
Pytania dotyczące JavaScript
Czy możesz wyjaśnić różnicę między var, let i const?
Może to być naprawdę trudne, zwłaszcza jeśli niedawno zaczęliście się uczyć JS. Wierzę, że ludzie po prostu mówią: zawsze wolę const, ale jeśli chce zmienić przypisanie, użyj let.
Na szczęście przeszedłem już przejście z var na let i const i pamiętam jasno, że chodzi o zakres.
Aby wyjaśnić, to że używam mutacji, nawet gdy używamy const, zadali mi drugie pytanie:
Znam tę koncepcję, ponieważ spowodowałem kilka błędów podczas nauki ES6. Po kilku godzinach próby ustalenia, dlaczego mój obiekt został zmutowany, znalazłem dokumentację natywnego API Object.freeze.
To bardzo proste. Kiedy zamrażamy obiekt, każda operacja, która spowoduje mutację obiektu, nie zmienia samego obiektu. Należy pamiętać, że to zamrożenie ma miejsce tylko na płytkim poziomie (głębokość 1 poziomu obiektu) i nie powoduje zamrożenia obiektów oraz tablic zagnieżdżonych.
Czy możesz wyjaśnić, czym jest DOM?
Myślę, że to było najłatwiejsze, mimo że zapomniałem, co oznacza akronim (Documment Object Model)
Czy możesz wyjaśnić, jak zdarzenia propagują się w DOM?
Znałem to pytanie, ponieważ zanim nauczyłem się React, stworzyłem własny framework JS (to był fajny eksperyment), w którym nauczyłem się dużo o rejestrowaniu zdarzeń na różnych poziomach, a także o tym, jak działa propagacja zdarzeń.
Jaka jest zaleta używania pojedynczego wydarzenia do rejestrowania wydarzeń?
Wciąż było to związane z tym pytaniem i szczerze mówiąc, nie byłem pewien.
Pamiętam, kiedy zaimplementowałem to w Vanilla JS, gdzie miałem formularz i zamiast tego dołączałem onChange do wszystkich danych wejściowych, po prostu zrobiłem to na poziomie formularza i miałem jakiś przełącznik, aby zdecydować, jakie informacje zaktualizować lub co zrobić, ale … Zapomniałem, dlaczego to było dobre. Moje założenie dotyczyło wydajności.
Deweloper powiedział mi, że dokładnie o to chodzi, i dał mi bardzo dobry przykład. Wyobraź sobie tabelę z tysiącami rekordów. Gdybyśmy dołączyli jedno zdarzenie do każdego wiersza, z pewnością mielibyśmy problemy z wydajnością, ponieważ DOM będzie miał tysiące zdarzeń do wysłania.
Bardzo podobał mi się ten przykład.
Czy wiesz, czym jest Request animation frame API i dlaczego mielibyśmy go używać?
Myślę, że użyłem API Request Animation Frame (RAF) raz lub dwa razy w ciągu 5 lat, więc nie byłem pewien, dlaczego takie API istnieje, więc spróbowałem zgadnąć: „powiedz przeglądarce, że zrobimy kilka animacji i uzyskamy trochę wydajności.”
Powiedzieli mi, że to prawda.
Czy wiesz o „display” ?
W tym przypadku nie byłem pewien, czy muszę wyjaśniać każdy parametr „display”, czy po prostu powiedzieć: „tak, wiem”.
Ale moja odpowiedź brzmiała, że mam kilka parametrów, takie jak inline, inline-block, block, grid, flex itp.
Ku mojemu zdziwieniu, właśnie to chcieli usłyszeć.
Jaka jest różnica między display inline a display inline-block?
Tego nie znałem na pamięć.
Znałem różnicę między inline a block, ponieważ jest to bardzo powszechne w CSS, ale nie mogłem sobie przypomnieć różnicy między inline i inline-block.
Deweloper wyjaśnił mi, że kiedy mamy inline-block, możemy zdefiniować margines i dopełnienie elementu, podczas gdy w display inline nie możemy.
Jak mogę wyśrodkować coś w pionie?
Kolejne trudne pytanie, ale może dlatego, że mamy na to kilka sposobów.
Znam na pamięć użycie display: flex w połączeniu z justify-content: center i align-items: center.
Moja odpowiedź była wystarczająco dobra.
Czy możesz nam powiedzieć, jakie metody są dostępne w HTTP?
Nie jest to takie trudne, ponieważ czasami korzystam z Backend’u przy wykorzystaniu Node.
- GET
- POST
- DELETE
- PUT
- PATCH
Następnie zapytali mnie, czy znam różnicę między PUT a PATCH i to jest trudne.
Pamiętałem, że jeden może zastąpić całe dane nową treścią, a drugi po prostu może zaktualizować przesłane informacje, ale nie wiedziałem, który z nich co zrobił.
Powiedzieli mi, że to prawda i wyjaśnili, że jak ktoś robi częściowe aktualizacje, to PATCH, a jak pełną wymianę to PUT.
Oprócz tego pytali, czy znam inne inne metody, takie jak OPTIONS i szczerze mówiąc, nie znałem.
Często widzę żądania OPTIONS w zakładce network/sieć, ale nigdy nie zadałem sobie pytania, co to do cholery jest.
Czyli podstawowe kwestie związane z HTTP.
Po prostu pamiętam to na pamięć, ponieważ odkąd zacząłem tworzyć aplikacje, które używają API, byłem ciekawy, co jest takiego w tych kodach i znalazłem HTTP’s status dogs , które są niesamowitym sposobem na zrozumienie każdego kodu. 😁
Jeśli chodzi o quiz, to by było na tyle !
W kolejnej części opowiem o wyzwaniu technicznym, o tym jak sobie z nim poradziłem oraz poznacie moją opinie na temat całego procesu rekrutacyjnego.
Raul Melo
Programista, pisarz w wolnym czasie, uzależniony od technologii, miłośnik open-source, który wierzy, że jedyną drogą do zmiany życia jest edukacja.