JavaRush /Blog Java /Random-PL /Przerwa kawowa #58. 20 ważnych pytań podczas rozmowy kwal...

Przerwa kawowa #58. 20 ważnych pytań podczas rozmowy kwalifikacyjnej, o których powinien wiedzieć programista Java Korzyści ze znajomości wielu języków programowania

Opublikowano w grupie Random-PL

20 ważnych pytań podczas rozmowy kwalifikacyjnej, o których powinien wiedzieć programista Java

Źródło: Dev.toPrzerwa kawowa #58.  20 ważnych pytań podczas rozmowy kwalifikacyjnej, o których powinien wiedzieć programista Java  Korzyści ze znajomości wielu języków programowania - 1

1. Jakie są dwa typy wyjątków w Javie? Jaka jest różnica między nimi?

Odpowiedź: W Javie istnieją dwa typy wyjątków: wyjątki zaznaczone i niesprawdzone.
  1. Niesprawdzone wyjątki nie muszą być deklarowane w instrukcji słowa kluczowego metody lub konstruktora, jeśli mogą zostać zgłoszone podczas wykonywania metody lub konstruktora i propagowania poza granicę metody lub konstruktora.
  2. Z drugiej strony sprawdzone wyjątki muszą zostać zadeklarowane w metodzie konstruktora lub instrukcji słowa kluczowego.

2. Co to jest JVM? Dlaczego Java nazywana jest „językiem programowania niezależnym od platformy”?

Odp.: Wirtualna maszyna Java (JVM) to wirtualna maszyna procesowa, która może wykonywać kod bajtowy Java. Każdy plik źródłowy Java jest kompilowany do pliku kodu bajtowego, który jest wykonywany przez maszynę JVM. Język Java przeznaczony jest do tworzenia programów użytkowych, które mogą działać na dowolnej platformie, bez konieczności przepisywania lub rekompilowania dla każdej platformy. Umożliwia to wirtualna maszyna Java, ponieważ jest świadoma określonej długości instrukcji i innych cech podstawowej platformy sprzętowej.

3. Jaka jest różnica pomiędzy apletem a aplikacją Java?

Odpowiedź:
  • Aplety działają w oknie przeglądarki obsługującej język Java.
  • Aplikacja Java to samodzielny program Java, który można uruchomić poza przeglądarką.
Obydwa wymagają wirtualnej maszyny Java (JVM). Jednak aplikacja Java wymaga metody głównej z określonym podpisem, aby rozpocząć wykonywanie. Aplety Java nie potrzebują takiej metody, aby rozpocząć wykonywanie. Ponadto aplety Java zazwyczaj korzystają z restrykcyjnych zasad bezpieczeństwa, podczas gdy aplikacje Java zazwyczaj korzystają z bardziej swobodnych zasad bezpieczeństwa.

4. Jaka jest różnica między JDK i JRE?

Odpowiedź:
  • Środowisko Java Runtime Environment (JRE) to w zasadzie wirtualna maszyna Java (JVM), która uruchamia programy Java. Zawiera także wtyczki do przeglądarek umożliwiające uruchomienie apletu.
  • Java Development Kit (JDK) to w pełni funkcjonalny zestaw programistyczny dla języka Java, zawierający środowisko JRE, kompilatory i narzędzia (takie jak JavaDoc i Java Debugger), umożliwiające użytkownikowi tworzenie, kompilowanie i uruchamianie aplikacji Java.

5. Co to jest serwlet?

Odpowiedź: Serwlet to klasa języka programowania Java używana do przetwarzania żądań klientów i tworzenia dynamicznej zawartości sieci Web. Serwlety są używane głównie do przetwarzania lub przechowywania danych przesyłanych za pomocą formularza HTML, dostarczania zawartości dynamicznej i zarządzania informacjami o stanie, których nie ma w bezstanowym HTTP.

6. Co to jest strona JSP?

Odpowiedź: Strona serwera Java (JSP) to dokument tekstowy zawierający dwa typy tekstu:
  • dane statyczne,
  • Elementy JSP.
Dane statyczne można wyrazić w dowolnym formacie tekstowym, takim jak HTML lub XML. JSP to technologia, która łączy zawartość statyczną z treścią generowaną dynamicznie.

7. Czym są dyrektywy? Jakie typy dyrektyw są dostępne w JSP?

Odp.: Dyrektywy to instrukcje przetwarzane przez silnik JSP, gdy strona jest kompilowana do postaci serwletu. Dyrektywy służą do ustawiania instrukcji na poziomie strony, wstawiania danych z plików zewnętrznych i określania niestandardowych bibliotek znaczników. Dyrektywy są zdefiniowane pomiędzy <%@ i %>. Poniżej przedstawiono różne typy dyrektyw:
  • Dyrektywa dołączania: Służy do dołączania pliku i łączenia zawartości pliku z bieżącą stroną.
  • Dyrektywa strony: służy do definiowania pewnych atrybutów strony JSP, takich jak strona błędu i bufor.
  • Taglib: Służy do deklarowania niestandardowego znacznika używanego na stronie.

8. Do czego służą metody System.gc() i Runtime.gc()?

Odpowiedź: Metody te mogą służyć jako wskazówka dla maszyny JVM w celu uruchomienia zbierania elementów bezużytecznych. Zazwyczaj wirtualna maszyna Java (JVM) uruchamia funkcję usuwania elementów bezużytecznych okresowo lub gdy ilość wolnej pamięci osiągnie niski poziom.

9. Jakie są różnice między HashMap i Hashtable?

Odpowiedź: Istnieje kilka różnic między HashMap i Hashtable w Javie:
  1. Hashtable jest zsynchronizowany, podczas gdy HashMap nie. To sprawia, że ​​HashMap jest lepszy w przypadku aplikacji bez wątków, ponieważ niezsynchronizowane obiekty zazwyczaj działają lepiej niż zsynchronizowane.
  2. Hashtable nie zezwala na klucze ani wartości zerowe. HashMap pozwala na użycie jednego klucza zerowego i dowolnej liczby wartości zerowych.
  3. Jedną z podklas HashMap jest LinkedHashMap, więc jeśli chcesz przewidywalnej kolejności iteracji (domyślnej kolejności wstawiania), możesz łatwo zamienić HashMap na LinkedHashMap. Nie byłoby to takie proste, gdybyś używał Hashtable.

10. Co to jest JDBC?

Odpowiedź: JDBC to warstwa abstrakcji, która pozwala użytkownikom wybierać pomiędzy bazami danych. Dzięki JDBC programiści mogą pisać aplikacje bazodanowe w Javie, nie martwiąc się o szczegóły stojące za konkretną bazą danych.

11. Co oznacza słowo kluczowe „statyczny”? Czy możesz zastąpić metodę prywatną lub statyczną w Javie?

Odpowiedź: Słowo kluczowe static oznacza, że ​​można uzyskać dostęp do zmiennej lub metody bez konieczności posiadania instancji klasy, do której ona należy . Użytkownik nie może zastąpić metod statycznych w Javie, ponieważ przesłanianie metod opiera się na dynamicznym wiązaniu w czasie wykonywania, a metody statyczne są trwale powiązane w czasie kompilacji. Metoda statyczna nie jest powiązana z żadną instancją klasy, więc ta koncepcja nie ma zastosowania.

12. Jakie znaczenie ma blok final przy obsłudze wyjątków?

Odpowiedź: Blok Final będzie zawsze wykonywany, niezależnie od tego, czy zostanie zgłoszony wyjątek. Nawet jeśli nie ma instrukcji catch i wystąpi wyjątek. Ostatnią rzeczą, o której należy wspomnieć, jest to, że blok Final służy do zwalniania zasobów, takich jak bufory we/wy, połączenia z bazami danych itp.

13. Jaka jest różnica między wyjątkiem a błędem w Javie?

Odpowiedź: Błąd to stan krytyczny, którego nie może obsłużyć kod programu. Wyjątek to wyjątkowa sytuacja, którą może obsłużyć kod programu.

14. Kiedy obiekt kwalifikuje się do odśmiecania w Javie?

Odpowiedź: Obiekt Java podlega odśmiecaniu, gdy staje się niedostępny dla programu, który go aktualnie używa.

15. Co to jest iterator?

Odpowiedź: Interfejs Iteratora udostępnia szereg metod umożliwiających iterację po dowolnej kolekcji . Każda kolekcja Java zawiera metodę Iterator , która zwraca instancję Iteratora . Iteratory mogą usuwać elementy z kolekcji bazowej podczas iteracji.

16. Czym jest przekazywanie przez referencję i wartość?

Odpowiedź:
  • Kiedy obiekt jest przekazywany przez wartość , oznacza to, że przekazywana jest kopia obiektu. Dzięki temu nawet jeśli w obiekcie zostaną wprowadzone zmiany, nie będzie to miało wpływu na pierwotną wartość.
  • Kiedy obiekt jest przekazywany przez referencję , oznacza to, że obiekt nie jest faktycznie przekazywany, ale raczej referencja do obiektu. W ten sposób wszelkie zmiany dokonane metodą zewnętrzną są również odzwierciedlane we wszystkich miejscach.

17. Co to jest aplet Java?

Odpowiedź: Aplet Java to program, który można umieścić na stronie HTML i uruchomić w przeglądarce klienckiej obsługującej język Java. Aplety służą do tworzenia dynamicznych i interaktywnych aplikacji internetowych.

18. Jak działa HashMap w Javie?

Odpowiedź: HashMap w Javie przechowuje pary klucz-wartość. HashMap wymaga funkcji skrótu, używa metod hashCode i równa się do ustawiania i pobierania elementów do i z kolekcji. Po wywołaniu metody put HashMap oblicza wartość skrótu klucza i przechowuje parę pod odpowiednim indeksem w kolekcji. Jeśli klucz istnieje, jego wartość jest aktualizowana o nową wartość. Niektóre ważne cechy HashMap to jego pojemność, współczynnik obciążenia i zmienność wielkości progu.

19. Jakie są główne interfejsy Java Collections Framework?

Odp.: Java Collections Framework to zaprojektowany zestaw interfejsów i klas obsługujących operacje na kolekcjach obiektów. Główne interfejsy dostępne w Java Collections Framework to:
  • Kolekcja reprezentuje grupę obiektów zwanych jej elementami.
  • Zestaw to kolekcja, która nie może zawierać zduplikowanych elementów.
  • Lista to uporządkowana kolekcja, która może zawierać powtarzające się elementy.
  • Mapa to obiekt, który odwzorowuje klucze na wartości i nie może zawierać duplikatów kluczy.

20. Jakie typy danych obsługuje Java? Co to jest Autoboxing i Unboxing?

Odpowiedź: Język programowania Java obsługuje osiem następujących pierwotnych typów danych:
  • bajt
  • krótki
  • wew
  • długi
  • platforma
  • podwójnie
  • wartość logiczna
  • zwęglać
Autoboxing to automatyczna konwersja wykonywana przez kompilator Java pomiędzy typami pierwotnymi i odpowiadającymi im klasami opakowań obiektów. Jeśli transformacja przebiega w odwrotnym kierunku, operacja ta nazywa się Unboxingiem . Dziękuję za przeczytanie i życzę powodzenia na rozmowie technicznej!

Korzyści ze znajomości wielu języków programowania

Źródło: Dev.to Osobiście jestem przekonany, że każdy programista powinien znać więcej niż jeden język programowania. Innymi słowy, jeśli mówimy o językach programowania, programista musi być poliglotą.Przerwa kawowa #58.  20 ważnych pytań podczas rozmowy kwalifikacyjnej, o których powinien wiedzieć programista Java  Korzyści ze znajomości wielu języków programowania - 2

Języki pierwotne i wtórne

Aby ułatwić sprawę, pozwólcie, że wyjaśnię niektóre terminy użyte w tym artykule. Uważam, że każdy programista powinien mieć jeden język, który preferuje. Nazywam ten język głównym. Dowolne języki inne niż główny nazwiem pomocniczymi. Oczywiście programista może zmienić swój podstawowy język (więcej niż raz) w trakcie swojej kariery. Jest okej. Jest wiele powodów, dla których jest to wyjaśnione.

Ekspert

W dyskusjach na temat programistów poliglotycznych często pojawia się argument, że znajomość drugiego języka przez programistę odbywa się kosztem mniejszej biegłości w jego języku podstawowym. Zwolennicy tej idei zakładają, że nauka każdego nowego języka wymaga czasu, a tego czasu nie można już przeznaczyć na zdobywanie wiedzy o swoim języku ojczystym. Ten tok myślenia wydaje mi się błędny. Widzę inną analogię: sport. Wiadomo, że uprawianie jednego sportu poprawia wyniki w innym. Oczywiście w obu konkurencjach możesz zdobyć złote medale, a rzutki raczej nie sprawią, że będziesz lepszym pływakiem. Z drugiej strony, jeśli jesteś wspinaczem, joga pomoże Ci rozwinąć elastyczność i równowagę. Zatem praktykowanie jogi sprawi, że będziesz lepszym wspinaczem niż bez niej. Myślę, że nauka każdego dodatkowego języka często poprawi Twoje umiejętności w zakresie innych języków, które znasz.

Szerszy zakres narzędzi

Dodatkowo znajomość wielu języków programowania znacznie wzbogaca Twój arsenał jako programisty. Poszerza horyzonty i pozwala spojrzeć na pewne rzeczy z różnych perspektyw. Weźmy przykład z życia codziennego. Jeśli kiedykolwiek używałeś śrubokręta, znasz śruby z łbem krzyżowym. Na pierwszy rzut oka wszystkie śruby z łbem krzyżowym są takie same i wydaje się, że wszystkie można dokręcić jednym śrubokrętem. Tak, zdarza się, że trudno Ci dokręcić lub odkręcić jakąś śrubkę, ale generalnie jeden śrubokręt Ci wystarczy. Przerwa kawowa #58.  20 ważnych pytań podczas rozmowy kwalifikacyjnej, o których powinien wiedzieć programista Java  Korzyści ze znajomości wielu języków programowania - 3Ale pewnego dnia wchodzisz do sklepu z narzędziami, patrzysz na te wszystkie piękne śrubokręty i odkrywasz, że istnieją różne typy wkrętaków krzyżakowych. Widzisz, że śrubokręt, który już posiadasz, to Phillips (PH) i decydujesz się kupić jego siostrę bliźniaczkę, Pozidriv (PZ). A potem nagle okazuje się, że do jednych śrubek lepiej pasuje jedna, a do innych – inna. Wyglądają tak samo, ale nie można ich stosować zamiennie . (Jeśli zastanawiałeś się, co oznaczają litery PH i PZ na Twoich śrubokrętach – teraz już wiesz). Mając większą wiedzę i dodatkowe narzędzie, będziesz w stanie wykonać lepszą robotę przy następnym dokręceniu śruby z łbem krzyżowym. To samo tyczy się języków programowania.

Nie musisz płacić za dodatkową wiedzę

Dlatego osobiście nie widzę wartości w nauce dodatkowego języka programowania. Czy będziesz równie dobry w obu językach? Prawdopodobnie nie, ale jest mało prawdopodobne, że taki jest Twój cel. Czy uczysz się czegoś nowego na temat swojego podstawowego języka? Jestem tego absolutnie pewien. Znajomość nowego języka ujawni różnice między nimi. A to z kolei rozbudzi Twoją ciekawość. Będziesz się zastanawiać, dlaczego w nowym języku pewne rzeczy są robione inaczej i do czego to służy. Na zakończenie podam przykład z życia. Użyłem jednego narzędzia wiersza poleceń napisanego w Pythonie. Za każdym razem, gdy instalowałem to narzędzie na nowym komputerze, pojawiały się problemy, a przy każdej aktualizacji liczba problemów wzrastała. Jeśli masz Go w swoim zestawie narzędzi, natychmiast zauważysz jego przewagę w tym scenariuszu. Go umożliwia kompilację artefaktów w samodzielny plik binarny. Możesz być pewien, że po skompilowaniu plik binarny będzie działał na każdej maszynie, dla której go skompilowałeś. Dlatego przeniosłem interfejs CLI Pythona do Go. Dzięki tej nowej wersji nie musiałem się już martwić zmianą środowiska wykonawczego ani zależnościami stron trzecich. To świetny przykład wyboru najodpowiedniejszego narzędzia do danego zadania. A żeby móc wybierać, trzeba zostać programistą poliglotą.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION