Rozwój osobisty

Rozmowa kwalifikacyjna po angielsku

Rozmowa kwalifikacyjna po angielsku

Język angielski jest już nieodzownym elementem pracy każdego programisty. Dlatego jeśli szukasz pracy w tej branży, prawdopodobnie nie ominie Cię rozmowa kwalifikacyjna po angielsku.

Jeżeli znasz angielski bardzo dobrze, to należysz do tych szczęśliwców, dla których kolejna rozmowa prawdopodobnie nie będzie stanowiła większego problemu.

Co jednak zrobić, jeżeli z angielskiego korzystamy tylko sporadycznie i to głównie czytając dokumentację?

Zapraszam do dyskusji. Poniżej zebrałem informacje, które pomogły mi odnaleźć się w takiej sytuacji.

Jak przygotować się do rozmowy kwalifikacyjnej po angielsku?

Przede wszystkim trzeba zacząć od tego, że warto i wręcz należy przygotować się do takiej rozmowy.

Jeżeli do rozmowy zostały dni lub tylko godziny, to nie ma co liczyć, że nagle nauczysz się języka na tip-top. Skoro do tej pory tego nie zrobiłeś, to niby czemu teraz miałoby Ci się to udać? To jednak powinien być wystarczający czas, by nadrobić najbardziej palące braki i chociaż zwiększyć swoje szanse na rozmowie kwalifikacyjnej.

Wszystkie rozmowy wyglądają podobnie, dlatego w tym ograniczonym zakresie można zdziałać całkiem sporo.

Przebieg rozmowy kwalifikacyjnej

Zacznij od ułożenia hipotetycznego scenariusza rozmowy. Można to przygotować w formie prostego dialogu, czy pytań z odpowiedziami.

Ważne jest to, że robiąc to teraz, a nie dopiero na samej rozmowie kwalifikacyjnej, masz zdecydowanie więcej czasu na zastanowienie się nad odpowiedziami.

Przećwicz dobrze rozmowę

Samo zebranie potrzebnych informacji to jedno, a poradzenie sobie ze stresem podczas konkretnej rozmowy to już całkiem co innego. Niestety, na to nie ma innego sposobu, jak tylko dobrze wszystko przećwiczyć i oswoić się ze stresem. Zapanowanie nad własnymi emocjami podczas rozmowy kwalifikacyjnej czasem przychodzi bardzo ciężko nawet w ojczystym języku, a co dopiero, gdy dochodzi dodatkowy stres związany z brakami w komunikacji.

Zacznij od lustra

Żółta kaczuszka lustro

Żółta kaczuszka lustro

Niezależnie od tego, czy wybierzesz osławione lustro, czy ekran monitora, ucz się, czytając i opowiadając na głos!

Tylko w ten sposób oswoisz się z dźwiękiem swojego głosu po angielsku.

Czas na prawdziwego przeciwnika

Jeżeli czujesz się już swobodnie opowiadając o swoim doświadczeniu po angielsku w samotności, czas spróbować czegoś trudniejszego.

  1. Na pierwszy ogień polecam rodzinę i znajomych. Jednak żeby zbytnio ich nie eksploatować 😉 warto szybko przejść do kolejnego kroku.
  2. Partnerzy językowi. W Internecie można znaleźć całą masę portali skupiających ludzi zainteresowanych wspólną nauką języka.
    Osobiście korzystam i polecam Italki. Za pośrednictwem tego portalu można znaleźć ludzi, którzy w ramach wymiany językowej chętnie porozmawiają z nami praktycznie w dowolnym języku. Dla trochę bardziej wymagających użytkowników, za niewielką opłatą jest również możliwość wynajęcia profesjonalnych nauczycieli. Rejestrując się z tego linku, otrzymasz bonus w wysokości 10$ po pierwszej lekcji.

Próba generalna

Nie znam skuteczniejszego sposobu na przećwiczenie swoich umiejętności niż wypróbowanie ich w praktyce.

Przygotowując się do odbycia właściwej rozmowy kwalifikacyjnej, zdecydowanie polecam odbycie niejako „próbnej” rozmowy. Przy obecnym natłoku ogłoszeń o pracę w IT nie powinno stanowić problemu znalezienie firmy, która zaprosi nas na taką rozmowę.

Kto wie, może taka rozmowa na próbę, spowoduje, że jednak zdecydujemy się podjąć współpracę właśnie z tą firmą.

Najczęstsze błędy na rozmowie kwalifikacyjnej

Mówienie po polsku.

Podczas rozmowy nigdy sami nie powinniśmy przejść na język polski. To rekruter decyduje o tym, kiedy możemy to zrobić.
Niedopuszczalne jest również pytanie, czy w razie czego będzie można powiedzieć coś po polsku. A co, jeżeli druga osoba nie będzie wcale znała polskiego?

Krępująca cisza

Nic bardziej nie denerwuje podczas rozmowy jak długie momenty niezręcznej ciszy. Jeżeli zapomnisz jakiegoś słowa, nie przerywaj, tylko postaraj się wytłumaczyć, o co Ci chodzi. Oczywiście po angielsku!

Na jednej z moich rozmów całkowicie się zablokowałem i zapomniałem słowa: analityk (ang. analyst). Niby proste, ale w tamtym momencie nie mogłem sobie przypomnieć. Zamiast tego słowa, po chwili ciszy przeprosiłem i powiedziałem pierwszą frazę jaka przyszła mi do głowy: woman with documentation. Oczywiście wywołało to salwę śmiechu po drugiej stronie, ale mi dało chwilę na opanowanie emocji i wygrzebanie się z kłopotliwej sytuacji. Sprawiło również, że zostałem lepiej zapamiętany.

Brak zrozumienia pytania

Bywa, że czasem nie zrozumiemy pytania, co wtedy zrobić?

Zwyczajnie powiedzieć o tym naszemu rozmówcy i to najlepiej zawczasu przygotowanym zwrotem, np.:

„Excuse me, I am not sure if I understood your question. Could you rephrase it, please?”

Niezależnie od tego, czy nie zrozumiałeś pytania z powodu braków językowych, czy braku wystarczającej wiedzy z danej dziedziny, najlepiej jest poprosić o wyjaśnienie pytania. Nie spotkałem się jeszcze, by ktokolwiek odmówił w takiej sytuacji.

Trema, trema, trema…

Jesteś tak zdenerwowany, że nawet nie usłyszałeś pytania, co robić!?

Trzy głębokie wdechy i kolejna wcześniej przygotowana formułka rozwiąże problem 🙂

„Excuse me, I am feeling really stressed because this job interview is very important to me. Would you mind repeating this question once again, please?”

Różne akcenty

Niby angielski jest jeden, ale…

To, że jesteś w stanie dogadać się z Polakiem mówiącym po angielsku wcale nie znaczy, że tak samo płynnie uda Ci się porozumieć z Chińczykiem, czy Brazylijczykiem. Polacy uczący się angielskiego robią te same błędy językowe co my, dlatego łatwiej jest tam zrozumieć siebie wzajemnie.

Tu znów z pomocą mogą przyjść ludzie z Italki. Spróbuj skontaktować się z ludźmi z kraju, z którego pochodzi Twój przyszły rozmówca i przećwicz z nimi rozmowę.

Oszustwo w CV

Jeżeli wcześniej oszukałeś w CV, że mówisz płynnie po angielsku, a w rzeczywistości ledwo jesteś w stanie złożyć zdanie… no cóż, nie dziw się w takim razie, że ktoś teraz zakłada, że znasz ten język.

Rozmowa kwalifikacyjna przez telefon po angielsku

Rozmowa kwalifikacyjna przez telefon

Rozmowa kwalifikacyjna przez telefon

Coraz częstszą praktyką jest przeprowadzanie rozmów kwalifikacyjnych przez telefon. Szczególnie jeżeli na danym stanowisku wymagana jest bardzo dobra znajomość angielskiego.

Ponieważ przeciętna rozmowa kwalifikacyjna trwa około 1 – 1.5 godziny, żeby zaoszczędzić czas kandydata i osoby rekrutującej, przeprowadza się krótką rozmowę po angielsku przez telefon.

Niezbędnik

Przed taką rozmową przygotuj sobie odpowiednie warunki. Przede wszystkim spokojne i ciche miejsce. Uprzedź też domowników, żeby Ci przypadkiem nie przeszkadzali.

Przyda się również naładowany telefon, rozmowa może chwilę potrwać.

Najczęściej zadawane pytania na rozmowie kwalifikacyjnej

Jedno z pierwszych pytań, których możesz się spodziewać, na pewno będzie dotyczyło Twojego doświadczenia oraz projektu, w którym obecnie uczestniczysz.

Nie zmarnuj tej okazji i przygotuj się z tego zakresu, by zrobić dobre pierwsze wrażenie. Możesz sobie przygotować jakiś uniwersalny wstęp zawierający najistotniejsze informacje o Tobie oraz o Twojej dotychczasowej karierze.

Lepiej nie uczyć się takiej rozmowy na pamięć, a raczej przygotować mapę myśli z zebranymi informacjami i przydatnymi zwrotami. Pozwoli to uniknąć zacięcia się jeśli zapomnisz jakiegoś fragmentu, czy inaczej zdefiniowanych pytań.

Jeżeli chodzi natomiast o same pytania, to można spodziewać się praktycznie tego samego, co na rozmowie w języku polskim. Przykładowe pytania znajdziesz poniżej oraz w podlinkowanych artykułach ([1], [2])

Can you tell me something more about yourself?
Could you describe your strengths and weaknesses, please?
What was your greatest accomplishment / achievement?
Where do you see yourself in 5 years’ time?
What are your hobbies?

Rozmowa kwalifikacyjna podsumowanie

Jestem już po swojej rozmowie i z przekonaniem mogę powiedzieć, że jestem zadowolony z wyników, jakie udało mi się osiągnąć przez kilka dni wytężonych starań.

Ze swojej strony życzę Ci powodzenia i koniecznie pochwal się, jak Ci poszło.

 

Chcesz przygotować fantastyczne CV i zabłysnąć na rozmowie kwalifikacyjnej? Sprawdź  najnowsze e-booki:

CV Programisty oraz Rozmowa kwalifikacyjna Programisty

2 komentarze
Share:
CO ROBIĆ, gdy nic nie działa i wszystko się wali!?

CO ROBIĆ, gdy nic nie działa i wszystko się wali!?

Miał się pojawić kolejny wpis o StormSnapshot, ale … No właśnie, jeszcze go nie ma.

Co robić, gdy nic nie działa i kończą Ci się pomysły jak to naprawić?

Każdemu programiście czasem zdarza się dojść do takiego momentu, że mimo usilnych starań nie może rozwiązać jakiegoś, wydawałoby się prostego problemu.

Ty też tak czasem masz, prawda?

Najpierw kontekst

Po straconych dwóch popołudniach na bezowocnej „walce z maszynami” postanowiłem zmienić trochę podejście, zebrać do kupy dotychczasowe doświadczenia i trochę się pożalić…

Przez poprzedni wpis na temat React Native przeszedłem bez większych problemów. Tym razem miałem pochylić się nad Ionic. Nie spodziewałem się większych problemów, zwłaszcza że miałem już do czynienia z PhoneGap.

Niestety… Mimo usilnych starań, po kilkugodzinnej walce jestem dalej bez działającego środowiska. Można powiedzieć, że nawet nie zacząłem.

Teoretycznie wszystko powinno działać, ale dziwnym trafem nie chce.

Teoria i praktyka

Teoria i praktyka

Standardowe początki

Sytuacja zazwyczaj rozwija się w bardzo standardowy sposób. Wykonujemy spokojnie swoje zadanie, realizując kolejne punkty dokumentacji, czy jakiegoś tutoriala.

Oczywiście pojawiają się błędy i problemy, ale co to dla nas! Przecież jesteśmy programistami, taka nasza praca. Chwila zastanowienia, szybkie przeskoczenie do google i znowu jesteśmy w grze.

Problem zaczyna się wtedy, gdy standardowe rozwiązania nie przynoszą spodziewanego rezultatu, a my denerwujemy się coraz bardziej.

Programistyczna ŚCIANA i chwila zwątpienia

Kolejne godziny mijają coraz szybciej, a rozwiązania jak nie było, tak nie ma.

Człowiek robi się coraz bardziej poddenerwowany, a świadomość, że to powinno być przecież takie proste i nawet stażysta poradziłby sobie z tym problemem w kilka chwil, wcale nie pomaga.

W takim stanie naprawdę ciężko podejmować jakieś sensowne decyzje.

STOP! Zatrzymaj się, złap oddech i zbierz myśli

Najlepsze, co można zrobić w takiej sytuacji, to zatrzymać się i wyrwać się z tego zamkniętego kręgu.

Albert Einstein

Albert Einstein

Czasem nie wystarczy już zwykłe podejście do okna, czy popatrzenie w sufit.

Głowa, która dosłownie pęka od nadmiaru informacji i pretensji do siebie, potrzebuje więcej czasu, by odpocząć. Mnie najlepiej pracuje się rano, gdy jeszcze nie mam mętliku w głowie od codziennych obowiązków. Dlatego właśnie staram się zaczynać dzień od najtrudniejszych zadań.

A mówią, że programowanie to taka łatwa praca…

Nowy plan

Nowy plan działania wcale nie musi oznaczać „ciśnięcia” tematu dalej do upadłego.

Odpuść sobie „Let It Go!”

Let It Go!

Let It Go!

Nie można zapominać, że nasza praca i nasz czas ma swoją wartość. To właśnie efekt, jaki ona przynieście, zazwyczaj jest najważniejszy, a nie satysfakcja, że po spędzonym całym weekendzie przed komputerem znajdziemy wreszcie brakujący średnik, czy nadmiarową spację w pliku…

Odpuścić można na wiele sposobów i wcale nie jest to przyznanie się do porażki.

  • Sygnalizacja zagrożenia! To podstawa, jeżeli pracujemy w zespole. Jeżeli widzisz, że nie dowieziesz danego tematu na czas, to Twoim obowiązkiem jest poinformowanie innych członków zespołu o tym jak najszybciej. Może się okazać, że w naszym bliskim otoczeniu jest ktoś, kto miał taki sam problem lub ma większe doświadczenie w tej kwestii.
  • Rezygnacja z zadania. Jeżeli spędzimy nad danym problemem zbyt dużo czasu, może się okazać, że potencjalne korzyści przewyższą koszty. Jeżeli oczywiście jest to możliwe, warto rozważyć rezygnacją z takiego zadania i uciąć potencjalne straty, póki są jeszcze akceptowalne.

Jednak dam radę

No dobra. Nie możemy lub nie chcemy porzucić takiego kłopotliwego zadania. Jak w takim razie je ugryźć? Zebrałem poniżej trochę potencjalnych rozwiązań na takie specjalnie sytuacje.

Google Twoim przyjacielem

Niby wszyscy (no dobra, prawie wszyscy) korzystają z Google, jednak jak pokazują statystyki [1] przeszło 90% ludzi ogranicza się tylko do pierwszej strony wyników wyszukiwania.

Google 2 strona

Google 2 strona

Google udostępnia szereg rozwiązań, które pozwolą doprecyzować to, czego szukamy.

Wyszukiwanie ścisłego dopasowania

Jeżeli chcesz wyszukać konkretną frazę z zachowaniem kolejności poszczególnych słów, umieść ją w cudzysłowie („”). Bardzo dobrze to się sprawdza w przypadku fragmentów kodu, czy stack trace.

Pamiętaj jednak, że w ten sposób ograniczasz się tylko do wyników, które posiadają dokładnie tę frazę.

„konkretne hasło”

Wykluczenie słów

Jeżeli nie chcesz, żeby jakieś frazy pojawiły się w wynikach wyszukiwania, wstaw przed nimi znak minus (-).

To bardzo przydatny operator, zwłaszcza gdy w wynikach znajdziemy dwie całkowicie różne rzeczy o takiej samej nazwie. Wyobraźcie sobie moje zdziwienie, gdy przeszukując Internet po haśle: Ionic znalazłem suszarki do włosów! Co ciekawsze okazało się, że mam nawet taką w domu 😉

-suszarka

Wyszukiwanie wszystkich słów w tekście

Przy pomocy operatora allintext: można znaleźć strony, które zawierają wszystkie podane przez nas zwroty.

allintext: java react native stormit

Łączenie zapytań

Poszczególne zapytania można ze sobą łączyć przy pomocy operatora OR

stormit OR java

Wyszukiwanie w obrębie strony

Wyniki wyszukiwania można również ograniczyć do konkretnej strony lub do końcówki domeny jak .pl

site:stormit.pl java

Ciekawe wyniki można uzyskać również, łącząc ze sobą poszczególne operatory. Można np. wykluczyć z wyników wszystkie wyniki z wybranej strony:

java -site:java.com -site:wikipedia.org

Więcej przykładów operatorów znajdziecie w pomocy Google.

Alternatywne wyszukiwarki

Na Google świat się nie kończy. Niby w Polsce [2] pozostałe wyszukiwarki stanowią niespełna 3%, jednak na świecie sytuacja wygląda trochę lepiej.

Wyszukiwarki świat

Wyszukiwarki świat
(źródło: statcounter.com)

Jeżeli człowiek jest odpowiednio zdesperowany, warto rozważyć wszystkie opcje.

  • Bing (bing.com)
  • Yahoo (yahoo.com)
  • Baidu (baidu.com)
  • Yandex (yandex.ru)
  • Ask (ask.com)

Dokumentacja

Tak, takie coś czasami też istnieje 🙂

Na stronie różnych bibliotek często można znaleźć pomocną dokumentację. Java także posiada opis swojego API, do którego czasem warto zajrzeć.

Źródła

Niektórzy, w tym ja, preferują czytanie źródeł aplikacji ponad dokumentację. Dobrze napisany kod zawsze prawdę Ci powie, a dokumentacja niestety już nie zawsze…

Podpięcie źródeł

Jeżeli tylko wykorzystuję zewnętrzną bibliotekę w swoim projekcie, staram się mieć podpięte jej pełne źródła oraz Javadoc w IDE. Jeżeli jakaś metoda nie działa zgodnie z moimi oczekiwaniami, zawsze można zajrzeć do jej wnętrza lub ją zdebugować.

Dekompilacja

W ramach pakietu JDK dostępne jest narzędzie javap, przy pomocy którego możemy dekompilować klasy, które posiadamy tylko w skompilowanej wersji. Nie jest to tak wygodne, jak przeglądanie samego kodu, ale czasem może okazać się pomocne.

GrepCode

W ramach projektu grepcode.com indeksowane są źródła publicznie dostępnych bibliotek. Przy pomocy tej strony można też przeszukać bazę źródeł po fragmencie kodu.

Zmień środowisko i zacznij od zera

A restart robiłeś?

Takie pytanie pada dość często w takich sytuacjach. Niby półżartem, ale jednak coś w nim jest. Dla świętego spokoju warto spróbować i tego.

Zmień komputer

Żyjemy już w takich  czasach, że w domu często jest więcej niż jeden komputer. Jak kończą mi się pomysły, to przesiadam się na laptopa i tam próbuję swoich sił. Czasem nowe środowisko, nowa konfiguracja, może odmienić losy naszego problemu.

Zrób sobie przerwę i idź na piwo

Zrób sobie przerwę i idź na piwo

Zrób sobie przerwę i idź na piwo

Skoro i tak nic nie działa, to po co się zarzynać?

Z czystą głową lepiej rozwiązuje się problemy. Bywa, że lepiej przeznaczyć ten czas na inne zadanie lub na spacer/piwo…

Zapytaj kolegów

Nie jesteśmy sami na świecie, zawsze można skorzystać z pomocy jakiegoś znajomego, czy to siedzącego biurko obok, czy wirtualnego.

  • współpracownicy
  • fora internetowe
  • stackoverflow.com

Alternatywne rozwiązania

Na zakończenie jeszcze dwie mniej techniczne propozycje. Ostatecznie mówi się przecież, że informatyka ma w sobie trochę magii.

Odczaruj urok

Spluń przez lewe ramię, okręć się trzy razy na pięcie i stukaj obiema rękami w niemalowane drewno.

Koniecznie w tej kolejności!

św Ryta z Cascii patronka trudnych spraw

O potężna i sławna Święta Rito, oto u twoich stóp nędzna dusza potrzebująca pomocy, zwraca się do ciebie z nadzieją, że zostanie wysłuchana.

Ponieważ jestem niegodny z tytułu niewierności mojej, nie śmiem spodziewać się, że moje prośby będą zdolne ubłagać Boga. Dlatego wyczuwam potrzebę, aby mieć za sobą potężną orędowniczkę, więc ciebie wybieram sobie, Święta Rito, ponieważ ty właśnie jesteś niezrównaną Świętą od spraw trudnych i beznadziejnych.

O droga Święta, weź do serca moją sprawę, wstaw się do Boga, aby uprosić mi łaskę, której tak bardzo potrzebuję i o którą tak gorącą proszę (tutaj wyrazić łaskę, o którą się prosi) 

Nie pozwól mi odejść od ciebie nie będąc wysłuchanym. Jeżeli jest we mnie coś, co byłoby przeszkodą w otrzymaniu łaski, o którą proszę, pomóż mi usunąć tę przeszkodę: poprzyj moją prośbę swymi cennymi zasługami i przedstaw ją swemu niebieskiemu Oblubieńcowi, łącząc ją z twoją prośbą. W ten sposób moja prośba zostanie przedstawiona przez ciebie, wierną oblubienicę spośród najwierniejszych. Ty odczuwałaś boleść Jego męki, jak mógłby on odrzucić twą prośbę i nie wysłuchać jej?

Cała moja nadzieja jest więc w tobie i za twoim pośrednictwem czekam ze spokojnym sercem na spełnienie moich życzeń. O droga Święta Rito, spraw, aby moja ufność i moja nadzieja nie zostały zawiedzione, aby moja prośba nie była odrzuconą. Uproś mi u Boga to, o co proszę, a postaram się, aby wszyscy poznali dobroć twego serca i wielką potęgę twego wstawiennictwa.

O Najsłodsze Serce Jezusa, które zawsze okazywało się tak bardzo czułe na najmniejszą nędzę ludzkości, daj się wzruszyć moimi potrzebami i nie bacząc na moją słabość i niegodność, zechciej wyświadczyć mi łaskę, która tak leży mi na sercu i o którą prosi Cię dla mnie i ze mną Twoja wierna  oblubienica, Święta Rita.

O tak, za wierność, jaką Święta Rita zawsze okazywała łasce Bożej, za wszystkie zalety, którymi uhonorowałeś jej duszę, za wszystko co wycierpiała w swym życiu jako żona, matka i zakonnica, i w ten sposób uczestniczyła w Twej bolesnej męce i wreszcie z tytułu nieograniczonej możliwości wstawiania się, przez co chciałeś wynagrodzić jej wierność, udziel mi Twej łaski, która jest mi tak bardzo potrzebna.

A Ty, Maryjo Dziewico, nasza najlepsza Matko Niebieska, która przechowujesz skarby Boże i rozdzielasz wszelkie łaski, poprzyj Twoim potężnym wstawiennictwem modły Twej wielkiej czcicielki Świętej Rity, aby łaska o którą proszę Boga, została mi udzielona.
Amen.

Na koniec

Prędzej czy później każdy z nas trafi na taką ścianę. Ważne jest to, by mieć świadomość, że takie rzeczy czasem się zdarzają i wiedzieć jak sobie z tym radzić.

Powodzenia i wytrwałości, ja walczę dalej 🙂

A Ty jak radzisz sobie w takich sytuacjach?

No comments
Share:
Pytania rekrutacyjne developer

Java Pytania Rekrutacyjne, Java Zadania

Szykujesz się do rozmowy kwalifikacyjnej na Java Developera i chcesz wcześniej poznać pytania rekrutacyjne?
Ba! Kto by nie chciał ich znać zawczasu. 🙂

Na moje i Twoje szczęście większość pytań i zadań podczas rozmowy kwalifikacyjnej dla początkujących programistów zwyczajnie się powtarza.
Poniżej masz listę pytań z odpowiedziami, która pomoże Ci się przygotować do Twojej rozmowy. Powodzenia!

Java pytania rekrutacyjne

Jest to tekst z serii pytań i odpowiedzi na rozmowę kwalifikacyjną Developera.

Pozostałe artykuły z tej serii to SQL oraz JavaScript.

Zapraszam do dzielenia się swoimi pytaniami z rozmów kwalifikacyjnych tutaj w komentarzach lub na grupie.

Co to jest leniwe (ang. lazy loading) i zachłanne ładowanie danych (ang. eager loading)?

Lazy loading to wzorzec projektowy mający na celu odroczenie inicjalizacji obiektów najpóźniej jak to tylko możliwe, czyli dopiero aż będą potrzebne. Właściwie wykorzystany może przyczynić się do poprawy wydajności aplikacji. Jego przeciwieństwem jest zachłanne pobieranie danych (ang. eager loading).

Dzięki leniwemu ładowaniu unikamy sytuacji w których przygotujemy złożonych obiekt np. pobierając informacje z bazy danych i później ten obiekt nie zostanie nigdzie wykorzystany.

Na czym polega problem n+1 zapytań?

Jest to problem bezpośrednio związany z leniwym pobieraniem danych. Najczęściej występuje w momencie generowania różnego rodzaju list rekordów. Pierwsze zapytanie pobiera główną listę rekordów, a następnie podczas iterowania po niej, dla każdego rekordu pobierane są dane w sposób leniwy, co generuje kolejne n zapytań.

Ostatecznie do wyświetlenia listy danych potrzebujemy n+1 zapytań:

  • 1 zapytanie – do pobrania samej listy obiektów,
  • następnie dla każdego z tych obiektów jeszcze jedno zapytanie, czyli n kolejnych zapytań.

Możliwym rozwiązaniem tego problemu jest zachłanne pobieranie danych lub specjalne przygotowanie encji zawierających wszystkie potrzebne dane, by już nie było potrzeby ich dociągania.

Redukujemy wtedy ilość potrzebnych zapytań do bazy danych do jednego, ale bardziej złożonego zapytania.

Co to są typy proste i referencyjne?

Typy proste (prymitywne) przechowują tylko „surowe” dane, takie jak: liczby, czy znaki, mówiąc w uproszczeniu, są to konkretne dane np. 1,100 lub 'A’.

Natomiast typy referencyjne przechowują swego rodzaju wskaźniki na obiekty lub wartość null, np. obiekt typu Person, który dopiero w sobie będzie zawierał typy proste jak np. int age lub ewentualnie kolejne typy referencyjne jak np. Address address.

Co to jest Autoboxing and Unboxing?

Autoboxing to automatyczna konwersja, dokonywana przez kompilator Javy między typami prymitywnymi a odpowiadającymi im klasami osłonowymi, np. zamiana typu int na Integer lub typu double na Double.

Unboxing to zamiana odwrotna, czyli z klas osłonowych do typów prostych.

Co to są obiekty immutable?

Obiekty immutable, czyli niemodyfikowalne, to obiekty, które po utworzeniu nie mogą już zmienić swojego stanu. W efekcie tego każda ich modyfikacja wiąże się z utworzeniem nowego obiektu. Najbardziej znaną klasą niemodyfikowalną jest standardowy String.

➡ ZOBACZ 👉Immutable – niezmienne obiekty

Co to jest serializacja?

Serializacja to zamiana obiektów, np. w strumień bajtów z zachowaniem ich aktualnego stanu. Serializowany obiekt może zostać zapisany np. na dysku twardym lub w bazie danych, a następnie w procesie deserializacji odtworzony do swojej pierwotnej postaci.

Co to jest refleksja?

Mechanizm refleksji polega na modyfikowaniu kodu aplikacji podczas jej działania. Dzięki refleksji można zarządzać kodem programu prawie tak łatwo, jakby to były zwykłe dane.

Można np. pobrać wszystkie pole zadeklarowane w danej klasie i je wyświetlić lub nawet zmienić ich modyfikatory dostępu! Wszystko podczas działania aplikacji, bez modyfikacji jej kodu źródłowego.

Czym różnią się wyjątki oznaczone (ang checked) od nieoznaczonych (ang. unchecked exceptions)?

Wyjątki checked są oznaczane już w momencie kompilacji kodu. Jeżeli w jakiejś metodzie może zostać rzucony wyjątek oznaczony, taka metoda musi go przechwycić i obsłużyć lub musi jawnie zadeklarować go przy pomocy słowa kluczowego throws.

Wyjątki nieoznaczone nie są weryfikowane podczas kompilacji, dlatego nie ma konieczności ich deklarowania w definicji metody.

W Javie wszystkie wyjątki dziedziczące po klasie Error i RuntimeException są nieoznaczone, a wszystkie pozostałe dziedziczące po Throwable są oznaczone.

public void method2() {
    try {
        method1();
    } catch (Exception ex) {
        // handle exception
    }
    throw new RuntimeException();
}

public void method1() throws Exception {
    throw new Exception();
}

Co to jest enum?

Enum to typ wyliczeniowy, czyli pewna struktura danych zawierająca listę wszystkich wartości, jakie może przyjąć ten typ. Typy wyliczeniowe wykorzystywane są bardzo często jako swego rodzaju stałe.

enum EnumType {
    T1, T2, T3
}

EnumType enumType = EnumType.T1;

W powyższym przykładzie zmienna enumType może przyjąć tylko 3 wartości: EnumType.T1, EnumType.T2 lub EnumType.T3.

➡ ZOBACZ 👉: Struktury danych – podstawy algorytmów

Czy klasa może dziedziczyć po kilku interfejsach?

Java z zasady nie wspiera wielodziedziczenia (jako wyjątek można uznać interfejsy z default methods). Jedna klasa może dziedziczyć tylko po jednej klasie rodzica.

Klasy nie dziedziczą po interfejsach, a je implementują. Jedna klasa może implementować wiele interfejsów.

Jeden interfejs może dziedziczyć po kilku innych.

interface Interface1 {}

interface Interface2 {}

interface Interface3 extends Interface1, Interface2 {}

class Class1 {}

class Class2 extends Class1 implements Interface1, Interface2, Interface3 {}

Jak pobrać pojedynczy znak z obiektu String?

Do pobrania jednego znaku ze stringa służy metoda charAt.

String str = "Java";
char actualValue = str.charAt(1);
char expectedValue = 'a';

Jak wywołać metodę w klasie podrzędnej z klasy nadrzędnej?

Do wywoływania metod z klasy rodzice służy słowo kluczowe: super.

Podobnie jak metodę można wywołać również konstruktor. W tym wypadku jednak nie podajemy nazwy konstruktora, a samo słowo: super.

class Class1 {
    void method1() {
    }
}

class Class2 extends Class1 {

    public Class2() {
        super();
    }

    void method1() {
        super.method1();
    }
}

Na czym polega kontrakt między metodami hashCode i equals?

Dla metod hashCode oraz equals zdefiniowano założenia, których przestrzeganie gwarantuje poprawne działanie obiektów np. z wykorzystaniem kolekcji (java.util.List, java.util.Map itp).

  1. Kolejne wywołania hashCode muszą zwracać ten sam wynik.
  2. Jeżeli obiekty są równe, wg metody equals, ich hashCode również musi być równy.
  3. Jeżeli obiekty są różne, to ich hashCode może być równy.
  4. Relacja wyznaczona metodą equals musi być zwrotna.
  5. Relacja wyznaczona metodą equals musi być symetryczna.
  6. Relacja wyznaczona metodą equals musi być przechodnia.
  7. Relacja wyznaczona metodą equals musi być spójna.
  8. Każdy obiekt jest różny od null, czyli wywołanie x.equals(null) dla obiektu x różnego od null, zawsze musi zwrócić false.

Więcej na temat tych metod oraz szczegółowe wyjaśnienie zawartego między nimi kontraktu można przeczytać w artykule o hashCode i equals.

Czym się różni lista (List) od zbioru (Set)?

Lista (java.util.List) reprezentuje uporządkowaną listę elementów i może zawierać duplikaty. Dodatkowo przechowuje kolejność dodawania danych.

Zbiór (java.util.Set) reprezentuje zbiór unikatowych elementów, natomiast przechowywana kolejność jest zależna od konkretnej implementacji zbioru.

Na czym polega mechanizm konkatenacji stringa?

Konkatenacja stringów to po prostu łączenie ich ze sobą.

Więcej na temat samej konkatenacji stringów oraz klasy StringBuilder, poprawiającej wydajność konkatenacji można przeczytać w podlinkowanych artykułach.

Co to jest rekurencja?

Rekurencja (rekursja) polega na odwoływaniu się funkcji do siebie samej.

@Test
public void run() {
    r(5);
}

void r(int i) {
    if (i > 0) {
        System.out.println(i);
        r(--i);
    }
}

W powyższym przykładzie metoda rekurencyjna zostanie wywołana 5 razy. Najpierw metoda sprawdza, czy argument wejściowy jest większy od zera, a następnie go wyświetla i wywołuje samą siebie z argumentem mniejszym o 1.

Korzystając z rekurencji należy uważać, by warunek kończący jej wykonanie był dobrze zdefiniowany, ponieważ możemy doprowadzić do zapętlenia się wywołań.

O czym mówią zasady SOLID?

SOLID jest to mnemonik opisujący pięć podstawowych założeń programowania obiektowego.

Single responsibility principle (Zasada jednej odpowiedzialności)

Dana klasa powinna mieć tylko jedną odpowiedzialność.

Open/closed principle (Zasada otwarte-zamknięte)

Zmiana wymagań powinna skutkować dodaniem nowego kodu rozszerzającego poprzedni, a nie modyfikacją działającego już kodu.

Liskov substitution principle (Zasada podstawienia Liskov)

Funkcje przyjmujące jako argument klasy bazowe powinny być w stanie obsłużyć również obiekty klas pochodnych.

Interface segregation principle (Zasada segregacji interfejsów)

Lepiej przygotować kilka specyficznych, dedykowanych interfejsów, niż jeden zbiorczy.

Dependency inversion principle (Zasada odwrócenia zależności)

Moduły wyższego poziomu nie powinny być zależne od tych z niższego poziomu.

Co to jest ciągła integracja (ang. Continuous Integration)?

Ciągła integracja polega na rozwijaniu oprogramowania z częstym i regularnym dołączaniem bieżących zmian do głównego kodu aplikacji. Dzięki wykorzystaniu ciągłej integracji zmniejsza się koszty i potencjalne ryzyko łączenia prac wykonywanych przez różne osoby. Przekłada się to również na wcześniejsze wykrycie potencjalnych błędów.

Co to jest mock?

Mock  to swego rodzaju atrapa obiektu, wykorzystywana do symulowania zachowania rzeczywistego obiektu.

Mocki wykorzystywane są zazwyczaj podczas testów. Przy ich pomocy można zasymulować konkretny przypadek testowy.

Co to jest TDD?

TDD, czyli Test-driven development to technika tworzenia oprogramowania oparta o testy. Metodyka ta polega na wielokrotnym powtarzaniu poniższych kroków:

  1. Przygotowanie automatycznego testu sprawdzającego daną funkcjonalność. Ponieważ funkcjonalność jeszcze nie istnieje, test nie powinien się powieść.
  2. Podstawowa implementacja funkcjonalności, tak by spełnić warunki założone w teście.
  3. Refaktoryzacja kodu, żeby spełniał oczekiwane standardy z jednoczesną weryfikacją, czy warunki testowe są dalej spełnione.

Powyższe trzy kroki często nazywane są również: red, green, refactor.

Jakie znasz poziomy testów?

Testy jednostkowe

Weryfikacja poprawności działania pojedynczego elementu aplikacji. Do testów jednostkowych można wykorzystać np. bibliotekę JUnit.

Testy integracyjne

Weryfikacja działania połączonych elementów aplikacji.

Testy akceptacyjne

Celem testów akceptacyjnych nie jest już wykrycie błędów, a jedynie potwierdzenie jakości oprogramowania. Tego rodzaju testy są bardzo często wykonywane z udziałem klienta odbierającego produkt.

➡ ZOBACZ 👉: Testowanie oprogramowania

Jakie znasz wzorce projektowe?

Pytanie o wzorce projektowe pada bardzo często, dlatego warto nauczyć się przynajmniej kilku podstawowych wzorców:

Wzorce kreacyjne

  • budowniczy
  • fabryka
  • singleton

Wzorce strukturalne

  • adapter
  • dekorator
  • fasada

Wzorce czynnościowe

  • łańcuch odpowiedzialności
  • iterator
  • strategia
  • obserwator

Co to jest wątek (thread)?

Wątek pozwala uruchomić fragmenty kodu aplikacji współbieżnie. Dzięki wątkom można np. część operacji wykonywać asynchronicznie, nie blokując głównego przepływu aplikacji lub skończyć pracę szybciej, wykorzystując kilka wątków jednocześnie.

new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getId());
    }
}).start();

System.out.println(Thread.currentThread().getId());

Powyższy fragment kodu demonstruje proste wykorzystanie wątków w Javie. Metoda run zawiera fragment logiki wykonywany w osobnym wątków, natomiast metoda start rozpoczyna działanie tego wątku.

Java Zadania praktyczne

  • Napisz kod, który wypisze 10 pierwszych liczb ciągu fibonacciego.
  • Napisz program, który wypisze liczby od 1 do 100. Dodatkowo dla wielokrotności trójki wyświetli  'A’ zamiast liczby, dla wielokrotności piątki wyświetli 'B’, a dla liczb będących wielokrotnością trójki i piątki wyświetli 'AB’.
  • Zadania w stylu „czy program się skompiluje”.
  • Zadania w stylu „co wyświetli dany program”.

 

Chcesz przygotować fantastyczne CV i zabłysnąć na rozmowie kwalifikacyjnej? Sprawdź  najnowsze e-booki:

CV Programisty oraz Rozmowa kwalifikacyjna Programisty

8 komentarzy
Share:
Pomodoro

Technika Pomodoro – mój sposób na efektywne zarządzanie czasem

Wczoraj bardzo długo nie mogłeś zasnąć, dlatego dziś od rana boli Cię głowa i jesteś niewyspany. Przełożony czeka, aż wreszcie skończysz swoje zadanie, które tak naprawdę powinno być już dawno oddane.
Jakby tego było mało, to właśnie dowiedziałeś się, że Twoja poprzednia zmiana sprawia kłopoty na produkcji i prawdopodobnie trzeba będzie ją wycofać i poprawić.
Czujesz ogromną presję. Starasz się skupić na swoim zadaniu, żeby jak najszybciej przekazać je do testów. Wiesz, że musisz, ale zwyczajnie już nie możesz.

Brzmi znajomo?

Nie przejmuj się, nie jesteś odosobniony w tego typu problemach. Tak naprawdę większość z nas prędzej, czy później doświadcza pracy pod presją czasu i w stresie. Pocieszające jest to, że nie jesteśmy pierwsi, którzy borykają się z takimi trudnościami i mamy już opracowany cały zbiór narzędzi i dobrych praktyk pomagających radzić sobie z takimi sytuacjami.

Zapoznamy się dziś z Techniką Pomodoro, która jest jedną z bardziej popularnych technik zarządzania czasem i uwagą.

Technika Pomodoro

Technika Pomodoro – to metoda zarządzania czasem, która polega na dzieleniu pracy na krótkie interwały, zwane „pomodorami”, trwające zazwyczaj 25 minut, po których następuje krótka przerwa.
Idea polega na tym, by skupić się na jednej konkretnej rzeczy przez określony czas, a następnie zrobić sobie krótką przerwę, by zresetować umysł i zwiększyć efektywność.
Po kilku takich interwałach należy zrobić dłuższą przerwę, aby móc odpocząć i zregenerować siły.

Technika Pomodoro jest szczególnie przydatna w przypadku trudnych zadań, które wymagają skupienia i koncentracji, ale może być również stosowana do zarządzania codziennymi obowiązkami.

Co to jest Technika Pomodoro?

Twórcą techniki jest Włoch, Francesco Cirillo, natomiast sama nazwa pochodzi od kuchennego czasomierza, który bardzo często jest w kształcie pomidora.

Pomodoro to jedna z najprostszych, a zarazem jedna z najskuteczniejszych technik zarządzania własnym czasem i uwagą, poprawiająca efektywność wykonywanej pracy.

Dzięki systemowi bloków nieprzerwanej pracy i przerw pozwala osiągnąć zadziwiająco dobre rezultaty przy stosunkowo niewielkim wysiłku.

Jak działa ta cudowna metoda?

  1. Przygotuj listę zadań – Zadania powinny być ułożone według priorytetów, w kolejności, w jakiej mają być wykonywane. Zadania powinny być możliwie małe, żeby dało się zrealizować je podczas jednego pomidora.
  2. Ustaw czasomierz na 25 minut – Standardowy pomidor, czyli okres nieprzerwanej pracy nad jednym zadaniem trwa właśnie 25 minut. Wartość tą można dostosować do własnych potrzeb, jednak sugeruję zacząć od wartości domyślnych.
  3. Pracuj nad zadaniem nieprzerwanie przez całe Pomodoro – Wybierasz z listy najważniejsze zadanie i rozpoczynasz jego realizację. W trakcie trwania Pomodoro liczy się tylko i wyłącznie aktualnie wykonywane zadanie. Bardzo ważne jest, żeby pozbyć się wszystkich rozpraszaczy. W tym czasie przestajesz istnieć dla całego świata i poświęcasz się w 100% realizowanemu zadaniu. Zapominasz na chwilę o odbieraniu poczty, czy sprawdzaniu wiadomości na Facebooku. Najlepiej by było, gdyby w tym czasie telefon też był wyłączony. Zegarek powinien być tak ustawiony, żebyś mógł swobodnie sprawdzić, ile czasu zostało jeszcze do końca Pomodoro.
  4. Skorzystaj z chwili przerwy – Po skończonym Pomodoro, jeżeli zadanie zostało zakończone, odznaczasz je na liście jako zrealizowane. Większe zadania realizujesz w partiach z przerwami. Przerwa między Pomodoro jest obowiązkowa. Jest to jedno z kluczowych założeń techniki, z których nie można zrezygnować. Najlepiej w tym czasie wstać na chwilę od komputera i dać odpocząć nie tylko głowie, ale i reszcie ciała. Sugerowana przerwa to około 5 minut.
  5. Co 4 Pomidoro robisz sobie dłuższą przerwę – Po realizacji 4 Pomodoro należy Ci się dłuższa przerwa, około 15–30 minut. To jest bardzo dobry czas, żeby zająć się przez chwilę czymś innym, np. spacer po schodach, obiad, czy sprawdzenie poczty itp.

Bezwzględne reguły techniki Pomodoro

  1. Pomodoro jest niepodzielne – podczas realizacji jednego cyklu pracy nie możesz robić przerw ani zajmować się niczym innym do jego końca. Czasem zdarza się, że wpadnie Ci coś bardzo ważnego i niezapowiedzianego. Masz w tym momencie dwie opcje: zapisujesz sobie gdzieś na boku, co jest do zrobienia i odkładasz to na potem lub anulujesz aktualnego pomidora i zajmujesz się tą sprawą, jeżeli jest tak ważna. Po jej zakończeniu możesz wrócić do realizacji kolejnego Pomodoro, zaczynając czas od zera!
  2. Większe zadania powinny być podzielone na mniejsze podzadania. Praktycznie wszystkie duże zadania da się podzielić na mniejsze fragmenty. Robiąc to, dodatkowo planujesz swoją pracę i możesz zrezygnować z rzeczy mało ważnych. Takimi mniejszymi zadaniami jest łatwiej zarządzać i widzisz szybciej efekty swojej pracy, co dodatkowo jest motywujące. Jeżeli masz naprawdę duże zadanie i nie wiesz jak je podzielić, to zacznij od jednego Pomodoro, podczas którego zdobędziesz większą wiedzę na temat tego problemu i postarasz się zaplanować jego realizację.
  3. Mniejsze zadania powinny być grupowane, żeby dopełnić do całego pomodoro – przykładowo, jeżeli realizujesz krótkie zadania zajmujące około 5 minut, to w przeciągu jednego Pomodoro, zrealizujesz ich około pięciu. Najlepiej zajmować się kolejno powiązanymi ze sobą zadaniami.
  4. Ta metoda wymaga wprawy i zaangażowania – dlatego stosując się do tych reguł, każde kolejne Pomodoro powinno pójść Ci lepiej.
Pomodoro Timer

Pomodoro Timer

Jak to wygląda w praktyce

Przed rozpoczęciem pracy, najlepiej każdego dnia rano lub dzień wcześniej, przygotować sobie listę zadań do zrealizowania na dany dzień. Przygotowanie takiej listy pozwoli Ci oszacować mniej więcej czas potrzebny na ich realizację i umożliwi skupienie się na najważniejszych celach danego dnia.

Dzięki zastosowaniu dosyć krótkich fragmentów czasu na nieprzerwaną pracę łatwiej jest zachować możliwie maksymalne skupienie i produktywność. Dodatkowo łatwiej jest zrezygnować z różnych rozpraszaczy, mając świadomość, że np. odebranie poczty, czy sprawdzenie wiadomości na Slacku odkładamy tylko na 25 minut. Po pewnym czasie również nasi współpracownicy dostosowują się do tych reguł i nie przeszkadzają nam w skupieniu, co dodatkowo podnosi skuteczność tej metody.

Bardzo ważne są również same przerwy. Człowiek nie jest w stanie długo pracować z maksymalną produktywnością i jeżeli zbyt długo nieprzerwanie pracuje nad jednym problemem, nie widzi swoich błędów. Czasami nawet krótka przerwa w pracy i np. podejście do okna pozwala zebrać myśli na nowo i wrócić do pracy z nowym zapałem i nowymi pomysłami.

Podane czasy pracy 25 minut i przerwy 5 minut, są to czasy sugerowane i można je dostosować do swoich potrzeb. Nie powinny jednak one znacząco odbiegać od proponowanych wartości.

Pomodoro timer online – niezbędne narzędzia

Dobre narzędzia przydają się w każdej sytuacje, nie inaczej jest i tym razem. Z racji swojej popularności Technika Pomodoro dorobiła się naprawdę wielu najróżniejszych aplikacji, na smartfony, aplikacje desktopowe i wersje online. Osobiście korzystam właśnie z aplikacji online i mogę ją polecić – PomatoTimer.

Pomodoro timer online

Pomodoro timer online

Pomodoro potrzebuje czasu

Jak każda inna technika i Technika Pomodoro wymaga wprawy i czasu na jej poprawne wdrożenie. Nie zniechęcaj się zbyt szybko, daj jej chwilę i poczekaj na wyniki. Jeżeli do tej pory byłeś przyzwyczajony, że reagujesz natychmiast na wszystkie wiadomości, to prawdopodobnie będziesz potrzebował sporo czasu, żeby zmienić swoje nawyki.

Twoi współpracownicy też raczej nie od razu to zaakceptują. W takiej sytuacji warto jawnie zakomunikować, że pracujesz w blokach po 25 minut i możesz odpowiadać z drobnym opóźnieniem. Prawda jest taka, że wszystkim powinno zależeć na poprawie Twojej produktywności, dlatego większość osób to zrozumie.

[box]

Przeczytaj również

[/box]

Moje prywatne doświadczenia i uwagi

Staram się pracować z Pomodoro już od dłuższego czasu, a właściwie z hybrydową techniką, która powstała na podstawie założeń Pomodoro. Mimo wielu prób część jej wytycznych okazała się dla mnie zbyt wyidealizowana i nie byłem w stanie wdrożyć wszystkiego.

Praca nad wieloma projektami jednocześnie, częste nieregularne spotkania, nienormowany czas pracy i obowiązki domowe zmusiły mnie do bardziej dynamicznego zarządzania czasem pojedynczego Pomodoro. W praktyce czas nieprzerwanego bloku pracy oscyluje zazwyczaj od 15 do nawet 60 minut. W momentach większego natłoku pracy zwyczajnie zapominałem, żeby stosować tę metodę, dlatego teraz podczas cotygodniowej prywatnej retrospektywy mam przypomnienie, żeby ją używać.

Mam świadomość, że nigdy nie uda mi się osiągnąć 100% skuteczności w jej realizacji, jednak samo dążenie do ideału jest już bardzo pomocne.

Jest to również bardzo dobry sposób na weryfikację szacowań czasochłonności realizowanych zadań. Po pewnym czasie wiemy już intuicyjnie, ile jesteśmy w stanie zrobić podczas jednego Pomodoro i możemy w ten sposób szacować przyszłe zadania, np. na trzy Pomodoro itp.

Mimo iż nie są to czyste założenia przekazane przez twórców Pomodoro, widzę bardzo dużo korzyści z jej stosowania i z czystym sumieniem mogę polecić jej wypróbowanie.

Podsumowanie – Pomodoro

Technika Pomodoro, jeżeli jest dobrze wykorzystywana, pozwala uporać się z bardzo częstym problemem odkładania spraw na potem i rozpraszania uwagi w trakcie pracy.
Ze swojej strony bardzo zachęcam do jej przetestowania i podzielenia się uwagami.

2 komentarze
Share: