Zbiór pytań rekrutacyjnych, często pojawiających się podczas rozmów o pracę w IBM, uszeregowanych od tych dla kandydatów na niższe stanowiska, aż po bardziej doświadczonych specjalistów.
Często jestem proszony o przygotowanie listy pytań na rozmowę kwalifikacyjną związaną z serwerem aplikacji IBM WebSphere, dlatego też postanowiłem zebrać je w jednym miejscu.
WebSphere to serwer aplikacji, będący produktem oprogramowania pośredniczącego firmy IBM, która to firma zajmuje czołową pozycję na rynku tego typu oprogramowania.
WebSphere to rozbudowany pakiet produktów, jednak ten artykuł skupia się wyłącznie na produkcie WebSphere Application Server.
Jeżeli zastanawiasz się, jakie inne produkty wchodzą w skład pakietu WebSphere, oto lista:
- WebSphere Portal
- WebSphere DataPower
- WebSphere Cast Iron
- WebSphere eXtreme Scale
- WebSphere Commerce
- WebSphere Message Broker
- WebSphere MQ
- WebSphere Real Time
- WebSphere Remote Server
- WebSphere Virtual Enterprise
- WebSphere Community
- I wiele innych…
Gotowy na przegląd pytań?
1. Czym jest Ripplestart?
Ripplestart to specyficzny sposób restartu klastra w WAS. Polega on na tym, że najpierw wyłączana jest jedna maszyna JVM, a dopiero potem jest ponownie uruchamiana. Dzięki temu, podczas ripplestartu, w danym momencie nie działa tylko jedna maszyna JVM, co minimalizuje przestoje aplikacji.
Na przykład, w klastrze mamy 5 maszyn JVM. Wykonując ripplestart, najpierw zostanie zatrzymana JVM1 i uruchomiona ponownie, zanim system przystąpi do zatrzymywania kolejnej maszyny w klastrze.
2. Co zrobisz, gdy maszyna JVM zużywa 100% procesora i pamięci na serwerze?
W pierwszej kolejności trzeba zidentyfikować, która konkretnie maszyna JVM wykazuje tak wysokie obciążenie. Następnie należy wykonać zrzut wątków tej maszyny JVM w celu dalszej analizy, a jako obejście tymczasowe, można ponownie uruchomić maszynę JVM, aby zmniejszyć obciążenie procesora i pamięci.
3. Co to jest synchronizacja węzłów?
IBM WAS przechowuje całą konfigurację w centralnym repozytorium, nazywanym „repozytorium głównym”, natomiast każdy z węzłów ma swoje repozytorium lokalne.
Gdy wprowadzamy zmiany w konfiguracji za pomocą DMGR (Deployment Manager), konieczne jest zsynchronizowanie tych zmian, aby konfiguracja została przeniesiona na odpowiednie serwery węzłów.
Synchronizacja zawsze odbywa się w kierunku od repozytorium głównego do repozytoriów lokalnych, co oznacza, że jest to komunikacja jednokierunkowa.
4. Czy aplikacja będzie działać poprawnie, jeśli DMGR będzie niedostępny?
Tak, wyłączenie DMGR nie wpłynie na działanie już uruchomionej aplikacji. Jednak wszelkie próby wprowadzania zmian lub wdrażania nowych wersji za pośrednictwem DMGR będą niemożliwe.
5. Jak można wdrożyć aplikację w WebSphere?
Istnieją trzy zasadnicze sposoby wdrożenia aplikacji:
- Wdrożenie na gorąco (hot deployment) – polega na skopiowaniu pliku aplikacji do katalogu aplikacji. Jest to akceptowalne w środowiskach testowych, ale nie jest zalecane dla produkcji.
- Za pomocą DMGR – aplikację można wdrożyć z poziomu DMGR, przechodząc do zakładki Aplikacje i wybierając opcję „Nowa aplikacja”.
- Za pomocą skryptów – można użyć skryptów wsadmin lub zadań Ant, aby zautomatyzować proces wdrażania.
6. Dlaczego JVM uruchamia się ponownie automatycznie, mimo że proces został ręcznie zatrzymany lub zabity?
Przyczyną tego mogą być dwie rzeczy:
Automatyczne ponowne uruchamianie maszyny JVM jest domyślnie włączone w ustawieniach JVM w sekcji „Zasady monitorowania”.
Jeżeli powyższa opcja nie jest włączona, to może istnieć skrypt w harmonogramie zadań (cron), który monitoruje stan procesu i w przypadku jego braku, uruchamia go ponownie.
7. Jakie typy plików można wdrożyć w WebSphere?
Za pomocą konsoli DMGR lub skryptów można wdrożyć pliki typu WAR, EAR, JAR lub SAR.
8. Co to jest host wirtualny?
Host wirtualny umożliwia przypisanie wielu adresów URL (opartych na adresach IP lub FQDN) do jednej aplikacji. Konfiguracja hosta wirtualnego odbywa się za pomocą konsoli administracyjnej WAS.
Aby umożliwić dostęp do aplikacji pod konkretnym adresem URL, adres ten musi być zdefiniowany w hoście wirtualnym i powiązany z daną aplikacją.
9. Jak reagować na zgłoszenia klientów dotyczące wolno działających aplikacji?
Spowolnione działanie aplikacji może mieć wiele przyczyn, dlatego konieczne jest ustalenie, czy problem leży po stronie WebSphere, czy w innych komponentach. Aby to sprawdzić, warto zweryfikować następujące elementy:
- Czy spowolnienie dotyczy wszystkich użytkowników?
- Czy spowolnione działanie dotyczy całej aplikacji, czy tylko konkretnej funkcjonalności?
- Jak wygląda dostęp do adresu URL maszyny JVM z pominięciem serwera WWW?
Jeśli spowolnienie występuje po stronie JVM, należy wykonać zrzut wątków i przeanalizować logi w poszukiwaniu przyczyny. Warto też sprawdzić, czy spowolnienie nie występuje bezpośrednio po wykonaniu pełnego odśmiecania pamięci (full GC).
10. Jak wykonać kopię zapasową konfiguracji WAS bez zatrzymywania DMGR?
Należy przejść do profilu DMGR i do folderu bin.
Następnie wywołać polecenie ./backupConfig.sh -nostop, aby wykonać kopię zapasową.
11. Jakie są domyślne porty WAS?
Domyślny port dla HTTP to 9080, a dla HTTPS 9443. Więcej informacji można znaleźć na stronie dokumentacji portów.
12. Jakie edycje WebSphere są dostępne?
- WAS – Network Deployment
- WAS – Developers
- WAS – z/OS
- WAS – Hypervisor
- WAS – Express
- WAS – Base
- WAS – Liberty Core
13. Jak wygenerować i rozpropagować wtyczkę (plugin)?
- Należy zalogować się do konsoli administracyjnej WAS.
- Przejść do sekcji Serwery i następnie wybrać Serwery WWW.
- Wybrać odpowiedni serwer i kliknąć przycisk „Generuj”, a następnie „Propaguj”.
14. Jakie typowe problemy napotkałeś w swojej pracy?
W tym miejscu zawsze warto być szczerym i przedstawić swoje doświadczenia. Przykładowe problemy to:
- Niepoprawnie zdefiniowany host wirtualny.
- Brak rotacji logów.
- Błędy wewnętrzne serwera (Internal Server Error).
- Wyjątek braku pamięci (OutOfMemory).
- Spowolnione działanie aplikacji.
- Problemy z uruchomieniem maszyny JVM.
- Wysokie zużycie procesora, pamięci lub dysku.
15. Jak sprawdzić zainstalowaną wersję WAS?
- Należy przejść do profilu i folderu bin.
- Wywołać polecenie ./versionInfo.sh.
16. Jak można zweryfikować, czy maszyna JVM jest uruchomiona?
Istnieje kilka sposobów potwierdzenia tego faktu:
- Sprawdzić, czy narzędzie monitorujące generuje alerty lub pokazuje aktualny status maszyny JVM.
- Zalogować się na serwer i użyć polecenia ps -ef | grep nazwa_jvm, aby sprawdzić, czy proces JVM działa.
- Spróbować uzyskać dostęp do adresu URL maszyny JVM.
- Spróbować nawiązać połączenie telnet na adres URL i port maszyny JVM.
- Sprawdzić, czy port JVM nasłuchuje na serwerze.
- Użyć polecenia serverStatus.sh –all, aby wyświetlić uruchomione komponenty.
Można wybrać metodę, która jest najwygodniejsza.
17. Jakie pliki dziennika generuje WebSphere?
- SystemOut.log
- SystemError.log
- native_stdout.log
- native_stderr.log
18. Jak wygenerować zrzut wątków?
Istnieją trzy sposoby na wygenerowanie zrzutu wątków:
- Za pomocą konsoli DMGR – należy przejść do sekcji Rozwiązywanie Problemów, wybrać maszynę JVM i kliknąć „Java core”.
- Wysłanie sygnału kill -3 do procesu JVM.
- Za pomocą skryptu wsadmin.sh, jak opisano w dokumentacji.
19. Jaka jest różnica między klastrem pionowym a poziomym?
Klaster pionowy umieszcza wszystkie swoje instancje na tym samym węźle lub serwerze, natomiast instancje klastra poziomego znajdują się na wielu węzłach i serwerach w obrębie komórki.
20. Co to jest odśmiecanie pamięci (garbage collection)?
Odśmiecanie pamięci to automatyczny proces zarządzania pamięcią, polegający na zwalnianiu obiektów, które nie są już używane przez program.
21. Jak wyłączyć zabezpieczenia w WebSphere?
Zabezpieczenia można wyłączyć, wywołując polecenie „securityoff” za pośrednictwem wsadmin.sh. Po wyłączeniu zabezpieczeń konieczne jest ponowne uruchomienie DMGR.
22. Jak włączyć szczegółowe logowanie odśmiecania pamięci (verbose GC)?
Szczegółowe logowanie odśmiecania pamięci nie jest domyślnie włączone. Aby je aktywować, należy przejść do:
- Serwery >> Typ serwera >> Serwer aplikacji WebSphere.
- Wybrać maszynę JVM >> Definicja procesu w sekcji „Java i zarządzanie procesami”.
- Kliknąć maszynę wirtualną Java w sekcji „dodatkowe właściwości” i zaznaczyć pole wyboru „pełne zbieranie śmieci”.
23. Jak skonfigurować WebSphere, aby uruchamiał się automatycznie po restarcie serwera?
WebSphere automatycznie generuje skrypt startowy w katalogu /etc/init.d, który zapewnia jego uruchomienie po restarcie systemu.
Jeśli jednak skrypt nie istnieje, można go utworzyć i umieścić w /etc/init.d, a następnie włączyć go za pomocą poleceń:
chkconfig --add WebSphere #nazwa_pliku_skryptu chkconfig WebSphere on
Zapraszam do zapoznania się z moim szczegółowym poradnikiem na temat automatycznego uruchamiania usług podczas startu systemu.
24. Jak zwiększyć rozmiar sterty JVM?
- Należy zalogować się do Konsoli Administracyjnej.
- Przejść do sekcji Serwery >> Typy serwerów >> Serwer aplikacji WebSphere.
- Wybrać JVM >> Definicja procesu >> Maszyna wirtualna Java.
W tym miejscu można ustawić początkową i maksymalną wielkość sterty.
25. Czy można zsynchronizować węzeł, gdy agent węzła (nodeagent) nie działa?
Nie, agent węzła musi być uruchomiony, aby synchronizacja mogła zostać wykonana.
26. Jakie są polecenia do zatrzymywania i uruchamiania DMGR, agenta węzła i maszyny JVM?
Zatrzymywanie:
- JVM – stopServer.sh nazwa_jvm
- Nodeagent – stopNode.sh
- DMGR – stopManager.sh
Uruchamianie:
- JVM – startServer.sh nazwa_jvm
- Nodeagent – startNode.sh
- DMGR – startManager.sh
27. Co nowego pojawiło się w WAS 8.5.5?
Najważniejsze zmiany to:
- Obsługa Java SE 7.
- Rejestrowanie HPEL.
- Wbudowane zarządzanie stanem systemu.
- Profil Liberty.
- Inteligentne wyznaczanie tras.
- Dynamiczne klastrowanie.
- Klastrowanie JDBC 4.1.
- Obsługa Web 2.0.
Szczegółowe informacje można znaleźć w dokumentacji produktu.
28. Co oznacza federacja węzłów?
Federacja w WebSphere oznacza dołączenie węzła do komórki. Odbywa się to za pomocą polecenia addNode.sh i może zająć kilka minut w zależności od rozmiaru węzła.
29. Co to jest FFDC?
FFDC (First Failure Data Capture) to mechanizm w WebSphere, który służy do przechwytywania danych o błędach i zdarzeniach podczas wykonywania programu. Dane te są przydatne podczas analizy problemów, a dział wsparcia IBM często o nie prosi w przypadku zgłoszenia problemów.
30. Czy można rozszyfrować XOR kluczy WebSphere?
Tak, można to zrobić za pomocą narzędzia online – http://strelitzia.net/wasXORdecoder/wasXORdecoder.html
31. Który język skryptowy jest domyślny w WebSphere? JACL czy Jython?
JACL jest domyślnym językiem skryptowym w WebSphere.
32. Jak zainstalować pakiet poprawek w WebSphere 8.5.x?
Do instalacji poprawek należy użyć programu IBM Installation Manager (IM). Szczegółowe instrukcje znajdują się w dokumentacji dotyczącej instalacji pakietów poprawek.
33. Jakie środowiska wspierasz?
W tym miejscu należy być szczerym i wymienić środowiska, w których się pracowało. Przykłady:
- Development (programistyczne).
- CIT (Continuous Integration Testing).
- SIT (System Integration Testing).
- UAT (User Acceptance Testing).
- PROBNE.
- Przedprodukcyjne.
- Produkcyjne.
- Staging.
- Kontrola Jakości (QA).
34. Gdzie hostowane są serwery WWW?
W tym miejscu należy opisać architekturę obsługiwanych aplikacji. W typowym środowisku produkcyjnym serwery WWW znajdują się w strefie DMZ (demilitary zone), a serwery aplikacji w sieci wewnętrznej.
W związku z tym konieczne jest skonfigurowanie odpowiednich reguł w zaporze, umożliwiających komunikację między serwerami WWW a serwerem aplikacji.
35. Co to jest powinowactwo sesji (session affinity)?
Powinowactwo sesji, czyli trwałość sesji, umożliwia przypisanie żądania do konkretnej maszyny JVM. Oznacza to, że kolejne żądania będą kierowane do tej samej maszyny JVM.
36. Czy można wdrożyć więcej niż jedną aplikację na pojedynczej maszynie JVM?
Tak, jest to możliwe, o ile każdy z kontekstów aplikacji (context root) jest unikalny.
37. Z jakiej bazy danych korzysta WebSphere?
Należy wymienić bazę danych, z której się korzysta. Najczęściej spotykaną bazą danych jest Oracle, ale WebSphere obsługuje również:
- DB2.
- Oracle.
- Microsoft SQL Server.
- Sybase.
38. Jak połączyć serwer WWW z WAS?
Istnieją dwa sposoby połączenia serwera WWW z WAS:
- Używając wtyczki – jest to zalecana metoda. Polega na instalacji wtyczki WAS na serwerze WWW.
- Używając ProxyPass – w przypadku serwera Apache można połączyć się z JVM serwera WAS za pomocą dyrektywy ProxyPass, bez konieczności korzystania z wtyczki.
39. Czy serwer WWW jest niezbędny przed WAS?
Zaleca się używanie serwera WWW przed WAS ze względu na bezpieczeństwo, wydajność i łatwość konserwacji.
40. Co to jest komórka (cell)?
Komórka to logiczna grupa węzłów, która może zawierać jeden lub więcej węzłów i klastry. Zarządzanie komórką odbywa się z poziomu jednej konsoli administracyjnej.
41. Jaki jest domyślny czas sesji dla konsoli administracyjnej?
30 minut.
42. Co to jest pakiet poprawek?
Pakiet poprawek to zbiór aktualizacji dostarczanych przez IBM, które zawierają poprawki błędów, poprawki bezpieczeństwa oraz ulepszenia wydajności.
43. Jakie rejestry/repozytoria obsługuje WebSphere?
- Sfederowane repozytorium.
- Lokalny system operacyjny.
- Samodzielny rejestr LDAP.
- Samodzielny rejestr niestandardowy.
44. Co to są biblioteki współdzielone?
Utworzenie biblioteki współdzielonej pozwala na uniknięcie duplikacji plików bibliotek. Jedna biblioteka współdzielona może być wykorzystywana przez wiele aplikacji w obrębie komórki.
45. Co to jest katalog główny kontekstu (context root)?
Każda aplikacja w obrębie komórki powinna mieć unikalny kontekstowy katalog główny. Jest on definiowany w deskryptorze wdrożenia i służy do uzyskiwania dostępu do aplikacji.
Na przykład, jeśli aplikacja A ma katalog główny kontekstu o nazwie „sklep”, aplikacja będzie dostępna pod adresem http://nazwa_serwera:port/sklep.
46. Jaka jest nazwa pliku konfiguracyjnego wtyczki WAS?
Nazwa pliku konfiguracyjnego wtyczki WebSphere to plugin-cfg.xml.
47. Jak zmienić rozmiar puli wątków WebContainer?
Rozmiar puli wątków WebContainer można zmienić, przechodząc do sekcji JVM >> Pule wątków >> WebContainer.
48. Czy można zmienić katalog główny kontekstu wdrożonej aplikacji?
Tak, jest to możliwe. Aby dokonać zmiany za pomocą konsoli administracyjnej, należy przejść do ustawień aplikacji i wybrać „Katalog główny kontekstu modułów internetowych”.
Po wprowadzeniu zmian konieczne jest ponowne uruchomienie maszyny JVM.
49. Który skrypt umożliwia zmianę pakietu Java SDK używanego przez profil?
Skrypt managesdk.sh, znajdujący się w folderze bin, pozwala na zmianę pakietu SDK.
50. Co to jest PMT?
PMT (Profile Management Tool) to graficzny interfejs służący do tworzenia i zarządzania profilami WebSphere.
Mam nadzieję, że te informacje pomogą Ci w zdobyciu pracy jako administrator WebSphere. Jeśli potrzebujesz pomocy w przygotowaniu CV lub rozmowy kwalifikacyjnej, sprawdź ten kurs.