İmtahan təcrübəm Sertifikat imtahanı

1Z0-808 Java SE 8 Programmer I (OCA 8) imtahanını 94% ilə keçdim – imtahan təcrübəm detallı şəkildə

Java OCA certification
Written by Mushfiq Mammadov

Qeyd: Real imtahan suallarını paylaşmaq leqal hesab edilmir. Ona görə də aşağıdakı yazıda imtahana istinadən paylaşdığım kod nümunələri dəyişdirilmiş və bənzər kodlarla əvəz edilmişdir.

 

İlk öncə vurğulamaq istəyirəm ki, mən ixtisasca iqtisadçıyam və sertifikat imtahanına hazırlığa başlayana qədər java proqramlaşdırma dili üzrə artıq 2 il təcrübəm var idi. Hər şey Jeanne Boyarsky və Scott Selikoff`un “OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808” (bundan sonra SYBEX) kitabını aldıqdan sonra başladı. İngilis dili səviyyəm qənaətbəxş deyildi, ilk günlər 1 saata 1 səhifə ancaq oxuyurdum, lüğətdən istifadə edə-edə. Gün ərzində təxminən 7-8 saat oxumağa vaxt ayırırdım və bu müddət ərzində maksimum 8-10 səhifə oxuya bilirdim. Daha yaxşı yadımda qalması üçün kitabdakı bütün kod nümunələrini yenidən IDE və ya Notepad`də yazaraq test (compile&run) edirdim.

Əvvəlcə “Introduction”, sonra isə “Appendix B” bölməsini oxudum. Kitabda “Assessment Test”  bölməsi var idi, mövzulara başlamazdan əvvəl cari biliklərinizi yoxlamaq üçün nəzərdə tutulmuşdu. Demək olar ki, 3-4 sualı çətinliklə cavablandırmışdım, digər sualları isə bilməmişdim. Ümumiyyətlə, təzə-təzə hər şey mənə çox çətin gəlirdi. İçimdə bir qorxu var idi ki, onsuz da keçə bilməyəcəm, əbəs yerə əziyyət çəkməyim, elə bu başdan hər şeyi dayandırım. Çünki gələcəkdə, itirəcəyim vaxt və çəkəcəyim əziyyət ilə əlaqədar yarana biləcək hər hansı bir peşmançılıq hissi məni rahat buraxmırdı. Amma indiyə qədər elə bir hal olmamışdı ki, əziyyət çəkim və müsbət nəticəsini görməyim. Həm də sertifikatı ürəkdən istəyirdim, qarşıma məqsəd qoymuşdum və özümə söz vermişdim, ona görə də başqa çıxış yolum yox idi, davam etməli idim. Bu tərəddüdlər bir ay boyunca davam elədi, hər dəfə də ümidsizliyə qapılanda, “onsuz da başqa çıxış yolum yoxdur” deyib oxumağa davam edirdim. Bir aydan sonra yavaş-yavaş inam formalaşmağa başladı..

Kitab 6 chapter`dən ibarətdir və hər chapter`in sonunda mövzunu nə dərəcədə mənimsəyib-mənimsəmədiyinizi yoxlamaq üçün testlər var. Kitabı bir dəfə oxuyub bitirdikdən sonra həmin testlər üzrə nəticələrim aşağıdakı kimi olmuşdu (vaxt limiti tətbiq etmədən):

Sualları cavablandırmaq üçün kifayət qədər çox vaxt sərf edirdim. Amma real imtahanda orta hesabla bir sual üçün 1.5-2 dəqiqə vaxt ayrılır. Sertifikat suallarının formatı adətən maksimum şəkildə yığcamlaşdırılmış, qısadılmış şəkildə olur, kod müəyyən qədər qarmaşa şəklində görünür. Gözün koda öyrəşməsi, kodun təhlil edilməsi istər-istəməz əlavə vaxt alır. Vaxtımı effektiv şəkildə idarə etməyi öyrənməli idim. Ona görə də Coderanch forumundakı bəzi təcrübəli istifadəçilərin məsləhəti ilə Chapter 4`dən başlayaraq IDE istifadə etməyi dayandırdım və Notepad istifadə etməyə başladım. Artıq kodları notepad`də yazaraq cmd`də yavac/java ilə test (compile&run) edirdim. Bu üsul müəyyən qədər səbr tələb etdiyindən ilk günlər çox çətin gəlirdi. Amma sonra öyrəşdikcə zövq almağa başladım və çox böyük faydasını gördüm. Artıq massiv ilə length, String ilə length() işləndiyini yadda saxlaya bildim.

Kitabda məsləhət görülür ki, əgər “Review questions”lardan nəticəniz 80%-dən az olarsa, həmin mövzunu yenidən oxuyun. Testləri vaxt limitini nəzərə almadan etsəm də yenə bütün nəticələrim 80%-dən az olmuşdu. Ona görə də kitabı yenidən oxumalı idim. Amma kitabı təkrar oxumağa başlamazdan öncə əlavə testlər etməyi qərara aldım, çünki testlərdə ən çox hansı məqamlara toxunulduğunu görürsən və mövzunu oxuyarkən hansı hissələrə daha çox diqqət verməli olacağını özün üçün təyin edirsən. Və artıq təkrara başlayanda da mövzuda hansı hissələrə daha çox fokuslanmalı olduğunu bilirsən. Və aşağıdakı testləri etdim:

“OCA Java SE 7 Programmer I Certification Guide”, Mala Gupta, Sample exam questions:
“OCA/OCP Java SE 7 Programmer I & II Study Guide”, Kathy Sierra and Bert Bates, Self Test:

Yuxarıdakı testləri bitirdikdən sonra SYBEX kitabını ikinci dəfə oxumağa başladım və vacib hissələrini qeyd etməyi qərara aldım. Qeydlərimi əvvəlcə dəftərçədə edirdim, amma sonra fikrimi dəyişdim. Həmin qeydləri gələcəkdə genişləndirərək mini kitab halına salmaq ideyası yarandı və qeydlərimi word documentdə aparmağı qərara aldım. Kitabı təkrarlayıb bitirdim və Chapter testləri yenidən etdim, amma bu dəfə “online material”dan. Kitabın “Online material” adlı ikinci hissəsi də var və chapter testlər orada da mövcuddur. Testi online materialdan etməyin üstünlüyü ondan ibarətdir ki, orada hər sual üçün sərf etdiyin vaxt da qeyd edilir və sualı düzgün tapıb-tapmadığından əlavə, təyin edilmiş vaxt ərzində tapıb tapa bilmədiyini də özün üçün müəyyən etmiş olursan. Chapter testlər üzrə 2-ci cəhd nəticələrim aşağıdakı kimi oldu (təqribən 3 ay sonra və bu dəfə vaxt ilə):

Second attempt Comparison with first attempt
Chapter 1 – 91.3% 74%
Chapter 2 – 100% 55%
Chapter 3 – 84.85% 66.7%
Chapter 4 – 93.1% 62.1%
Chapter 5 – 70% 60%
Chapter 6 – 90% 60%
Assessment test – 65%

Yay məzuniyyətinə gedəndə noutbukumu özümlə götürməmişdim, amma vaxtımı faydalı keçirmək üçün google play store`dan telefonuma bir neçə java quiz yüklədim və oradakı sualları etməyə başladım. Quiz`dəki sualların demək olar ki, çoxu sadə idi, amma bəzi xırda, incə faktları daha yaxşı yadda saxlamaq, həmçinin sualları daha cəld şəkildə cavablandırmaq baxımından bir xeyli faydası oldu. Telefonda istifadə etdiyim digər faydalı bir proqram isə AIDE app oldu. Bu proqramı telefonda compiler və jre kimi istifadə edirdim. Beynimdə hər hansı bir qaranlıq sual yaranan kimi dərhal AIDE app`ı açıb həmin kodu test edirdim.

SYBEX online materiallarda hər biri 60 sualdan ibarət 3 ədəd practise exam var, kitabı tamam yekunlaşdırdıqdan sonra onlara başladım:

“OCA/OCP Java SE 7 Programmer I & II Study Guide” (Kathy Sierra and Bert Bates) kitabının əlavə olunmuş materiallar siyahısında 2 mock exam var idi, SYBEX`dən sonra onları etdim. Bu mock exam`lər digərlərinə nisbətən daha çətin idi və nəticələrim belə oldu:

Bura qədər əsas çətinlik çəkdiyim suallar:

1) “Aşağıdakı ifadələrdən hansı doğrudur?” – tipli suallar. Bu suallar yaxşı ingilis dili səviyyəsi tələb edir. Çünki cümlədəki bircə sözün tərcüməsini bilməmək belə bəzən bütün cümlənin ümumi anlamını yanlış yozmağa səbəb ola bilər. Ən yaxşı bildiyin bir mövzuya dair ifadəni belə səhv tərcümə səbəbindən yanlış cavablandıra bilərsən.

2) “Choose all that apply” – tipli suallar. Əksər bu tip suallarda ya cavablarımın sayı əksik olur, ya da artıq. Hərdən bir neçə cavab arasında tərəddüd edirsən, əgər doğru cavabların sayı qeyd olunsa, tapmaq nisbətən asan olar.

Hələ imtahan hazırlığımın ortalarında lap sonda Enthuware sual bankı almağı planlaşdırmışdım. Çünki forumda imtahandan uğurla keçənlərin əksəriyyəti öz təcrübələrində Enthuware mock examların onlara çox böyük faydası olduğunu yazırdı. Proqramın əvvəlcə trial versiyasını yüklədim və “Sample Test” suallarına baxdım. Suallar çox xoşuma gəldi və tam versiyanı sifariş etdim. Dizaynı çox sadə idi, əvvəlcə öyrəşə bilmirdim, amma sonradan çox bəyəndim. Və ilk olaraq “Standard Tests”ləri etdim.

Enthuware Standard Test`lər üzrə nəticələrim:

Foundation Test – 79%     
Test 1 – 88%     
Test 2 – 94%     
Test 3 – 78%     
Test 4 – 87%     
Test 5 – 92%     
Test 6 – 94%     

Səhv və ya düz yazmağımdan asılı olmayaraq bütün sualların izahını oxuyurdum və izahlardan bilmədiyim yeni şeylər öyrənirdim. Əgər izahdan da sualı məni qane edəcək səviyyədə başa düşmürdümsə, o zaman “discuss” butonunu tıklayaraq forumdakı müzakirələrə (əgər varsa) baxırdım. İngilis dili səviyyəmə görə hərdən yaxşı başa düşmürdüm, başa düşənə qədər – 3 dəfə, 4 dəfə, lazım gəlirdisə lap 5 dəfə də təkrar oxuyurdum.

Enthuware Standart Test`ləri bitirdikdən sonra (Last Day Test`dən başqa) imtahan üçün qeydiyyatdan keçdim. İmtahana hələ 1 həftə vaxt qalmışdı və həmin müddətdə qeydlərimi təkrarlamağa başladım. 150 səhifəyə yaxın qeydim var idi və hər mövzunu təkrarladıqca Enthuware Objective–wise Test`ləri edirdim. İmtahana 2 gün qalmış bütün hazırlığı bitirdim. Şənbə günü sonuncu Standart Test`i etdim:

Bazar günü istirahət etdim. Bazar ertəsi günü isə imtahana getdim..

Başlanğıcda imtahan həyəcanını boğa bilmədim, bir tərəfdən də ilkin suallar çətin oldu deyə həyəcan bir az da artdı. 1 saatdan sonra normal vəziyyətimə qayıda bildim. İmtahan vermiş əksər namizədlər deyirdilər ki, real imtahan mock exam`lərdən asan olur. Amma mənə elə də asan gəlmədi. Demək olar çox sual görünüşcə sadə idi, amma çaşdırıcı idi. Ona görə də gözümdən nəsə qaçmasın deyə hər suala ən azı 2 dəfə baxırdım. Mock exam`lərdə suallara təkrar baxmaq üçün yetərli vaxtım qalırdı, fikirləşirdim real imtahan sualları daha asan olacaq və daha çox vaxtım qalacaq. Amma suallara təkrar nəzər yetirmək üçün 25 dəqiqə ancaq vaxtım qaldı və sona 30 saniyə qalmış imtahanı ancaq bitirə bildim. Həmçinin test mərkəzində imtahan üçün verilən kağız və qələm də rahat deyildi, sürüşkən vərəq idi, qələmin yazması üçün hərdən 2-3 dəfə cəhd etməli olurdum. Bunun özü də müəyyən qədər həyəcana, konsentrasiyanın pozulmasına səbəb olurdu. İmtahanın nəticəsi imtahan bitən kimi açıqlanmır və son pəncərədə qeyd olunur ki, nəticələrlə bağlı məlumat 30 dəqiqə ərzində email`inizə göndəriləcək. Təxminən 15-20 dəqiqə sonra nəticəm çıxdı:

95%-dən yuxarı nəticə hədəfləyirdim, amma bu həyəcanla buna da min şükür! Uzunmüddətli əziyyətlərdən sonra nəhayət ki, məqsədimə çatdım.

Təqribən gün yarım sonra elektron poçtuma elektron sertifikat`ın hazır olması ilə bağlı email gəldi. Həmin email`də həmçinin sertifikatın çap versiyasının əldə edilməsi üçün “online müraciət forması”nın linki var idi. Müraciət formasını dolduraraq sorğu göndərdim və təqribən 4 həftə sonra sertifikatın çap forması göndərildi.

 

Fikir və təəssüratlarım.

1. “OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808” by Jeanne Boyarsky&Scott Selikoff

İngilis dili səviyyəm yetərli olmadığı üçün mənim üçün ilk öncə önəmli olan kitabın dili idi. Kitabı almamışdan öncə də Amazonda “Look inside”dan müəyyən hissələri oxuyaraq kitabın dilinə nəzər yetirmişdim, kitabın dili çox sadə və anlaşıqlı idi. Ondan sonra kitabı almaq qərarına gəldim. Qısa müddət ərzində kitabın dilinə öyrəşə bildim. Kitab çox yığcamdı, əlavə informasiyalar ilə oxucunu çox yükləmir. Əgər real imtahana hansı mövzu ilə əlaqədar suallar düşməyəcəksə, chapter daxilində həmin mövzu geniş izah edilmir, sadəcə informasiyanız olsun deyə bildirilir ki, belə bir şey mövcuddur, amma OCA imtahanına düşməyəcək və ya OCP imtahanına düşəcək və OCP kitabında geniş izah ediləcək. Beləcə imtahan üçün zəruri olmayan mövzuları oxumağa ehtiyacınız olmur və bu yolla da vaxtınıza qənaət etmiş olursunuz. Kitabın ən çox bəyəndiyim xüsusiyyəti imtahana düşəcək mövzularla/suallarla bağlı təxminləri oldu. Hansı mövzu/bölmə imtahanda soruşulmayacaq demişdirsə, həqiqətən də həmin mövzu soruşulmadı.

Kitabda ən çox çətinlik çəkdiyim mövzu GC oldu. Əvvəl-əvvəl bu tip sualları tapmaqda çətinlik çəkirdim, Coderanch`da garbage collector ilə bağlı bir neçə qəliz sual çıxmışdı rastıma edə bilməmişdim. Ona görə bu mövzunu kənar ədəbiyyatdan da oxumağa ehtiyac duydum. Sonra yavaş-yavaş kağız-qələm ilə bu tip sualları daha rahat şəkildə tapmağın üsulunu öyrəndim. Amma imtahanda GC ilə bağlı cəmi bir sual düşdü və həmin sualı tapmaq üçün də təkcə SYBEX`dəki müvafiq mövzunu oxumaq tam yetərli idi.

Kitabda da qeyd edildiyi kimi demək olar ki, imtahan mövzularını 100% əhatə edirdi. Real imtahanda SYBEX kitabında olmayan ancaq bir şey rastıma çıxdı, o da 3 parametrli append() metodu. Amma bir parametrli append() metodu kitabda izah edilib.

Errata səhifəsinə baxsanız, kitabla bağlı ən çox report edən şəxs kimi mənim adımı görə bilərsiniz. Amma buna baxmayaraq mənim kitabla bağlı fikirlərim çox müsbətdir. Həmin texniki səhvlərin əksəriyyəti mövzunu qavramaqda sizə mane olacaq və imtahanda hər hansı bir sualı səhv cavablandırmağınıza səbəb olacaq səhvlər deyil. Xatırladığım 1-2 ciddi səhv var, onlar da səhv xatırlamıramsa Practise Exam`də rastıma çıxmışdı. Amma müsbət tərəfi odur ki, online material olduğu üçün operativ olaraq aradan qaldırılması mümkündür və mərhələli şəkildə bu proses həyata keçirilir. Ümumilikdə kitab çox gözəl kitabdır, real imtahan suallarına istinadən deyə bilərəm ki, imtahanda düşən bütün sualları (3 parametrli append() metodu istisna olmaqla, onu da Enthuware`dən öyrənmişdim) əhatə edirdi. Həqiqətən də SYBEX kitabını çox sevdim. Kitaba başlamazdan öncə Assessment Test`də 3-4 sual güclə tapmışdım, amma kitabı bitirdikdən sonra bir xeyli inkişaf var idi. Əgər online materialların keyfiyyəti bir az daha artırılsa (məsələn, Practise Exam`də əvvəlki suallara qayıtmaq mümkün deyil; testlər üzrə nəticələriniz yadda saxlanılmır, növbəti girişdə artıq itir; testlərdə vaxt limiti tətbiq edilmir və s.) gələcəkdə imtahana hazırlaşacaq namizədlər üçün daha faydalı bir vasitə olar.

 

2. Enthuware JA+ V8 for Oracle Certified Associate – Java SE8 Programmer I

Enthuware ilə bağlı fikirlərim çox yüksək səviyyədədir. Proqram digər alternativ proqramlarla müqayisədə daha keyfiyyətli və sualları çox gözəldir. Məndən öncə imtahan verən namizədlərin təcrübələrindən də oxumuşdum ki, Enthuware sualları real imtahan suallarına çox bənzəyir. Artıq bu fikirlərə mən də qoşuluram, xüsusilə də Last Day Test`i qeyd etmək istəyirəm. İmtahan təcrübəmlə bağlı qeydlərimi yazarkən yadıma düşən suallardan bəzilərini hərdən ayırd edə bilmirdim ki, bu sual mənə imtahanda düşüb yoxsa Last Day Test`də qarşılaşmışam.

Proqramın strukturu ilk öncə primitiv görünsə də istifadəçinin rahatlığı üçün demək olar ki, bütün imkanlar yaradılıb:

  • real imtahan pəncərəsinə bənzər sadə dizayn;
  • əvvəlki, sonrakı və ya istədiyin nömrədə olan suala bir addımda getmə imkanı;
  • sualı bookmark etmək;
  • real imtahandakı kimi sona qalan vaxtla (azalan müddət üzrə) bağlı və həmçinin həmin müddət bitdikdə əlavə xərclənmiş vaxtla bağlı məlumat;
  • proqrama istədiyin vaxt fasilə verib (Pause Test), istədiyin vaxt davam edə bilmək (Continue Test) (amma arada çox fasilə etməyi məsləhət görmürəm, çünki real imtahan 2.5 saat olur və orada fasilə vermək imkanınız olmur, vaxtınız gedir. O səbəbdən mock exam`lərdə həmin bu 2.5 saat ərzində fasiləsiz (və ya az fasilələrlə) özünüzü suallara fokuslamağınızı, gərginlik hiss etdiyinizdə fasilə verməyinizi deyil, konsentrasiyanızı saxlayaraq, səbrlə suallara davam etməyinizi tövsiyə edirəm. Buna öyrəşə bilsəniz real imtahan üçün avantaj sağlamış olacaqsınız);
  • suallarla bağlı qeyd yaza bilmə imkanı (add note);
  • başa düşmədiyiniz sualları Enthuware`nin forumunda müzakirə etmək imkanı – əgər izahı oxuduqdan sonra da sualı başa düşməsəniz “discuss” butonuna tıklamaqla forumdakı mövcud müzakirələri oxuya və ya sualınızı soruşa bilərsiniz. Suallar adminlər tərəfindən vaxtlı-vaxtında cavablandırılır;
  • performance report – bütün testlərdə, ayrı-ayrı mövzular üzrə nəticələriniz faizlə göstərilir və bunun əsasında zəif və güclü tərəflərinizi təyin edə bilərsiniz;
  • missed questions – səhv cavablandırdığınız bütün suallar bu bölmə altında saxlanılır və sonda səhv etdiyiniz sualları tam başa düşdüyünüzə əmin olmaq üçün bu suallara təkrar nəzər yetirə bilərsiniz;
  • objective-wise questions – ayrı-ayrı mövzulara aid sualları əhatə edir və tövsiyə olunur ki, Standart Test`lərdən sonra hansı mövzu üzrə bilikləriniz zəifdirsə (performance report`da qeyd olunur), həmin mövzunu kitabdan təkrarlayıb bu bölmə üzrə müvafiq sualları yenidən edəsiniz (Standart Test`dəki suallar təkrarlanır);
  • Most missed questions – namizədlər tərəfindən ən çox səhv cavablandırılmış suallara baxmaq imkanı;
  • Həm evdə, həm də işdə işləmək imkanı – “ETSWF_com_enthuware_ets_oca-jp-i_v8” qovluğunda olan fayları daşımaqla evdə və yaxud işdə qaldığınız yerdən davam edə bilərsiniz.

Real imtahanda ən çox narahat qaldığım sual tipləri əsasən “Which statements are true?” tipli suallar idi, çünki tərcümədən dolayı səhv başa düşə bilmə ehtimalım çox idi. Amma imtahanda düşən bu tipli sualların demək olar ki, 90 faizini artıq Enthuware`dən öyrənmişdim, həmin suallara bənzər suallar Enthuware`də var idi.

Real imtahan suallarına bənzəyən Enthuware suallarını (Enthuware JA+ V8 for Oracle Certified Associate – Java SE8 Programmer I) bacardığım qədər xatırlamağa çalışdım və yadımda qalan formada qeyd edirəm:

Foundation test:

  • 22  (nisbətən bənzər)
  • 63  (çox bənzər)
  • 78  (nisbətən bənzər)

Test 1:

  • 19  (təxminən bənzər)
  • 33  (bənzər, amma daha çətin)
  • 44  (bənzər)
  • 60  (bənzər)

Test 2:

  • 26  (çox bənzər)
  • 47  (bənzər)
  • 68  (çox bənzər)

Test 3:

  • 9  (çox bənzər)

Test 4:

  • 10  (nisbətən bənzər)
  • 41  (bənzər)
  • 44  (bənzər)

Test 5:

  • 44  (nisbətən bənzər, amma çox çətin)
  • 51  (bənzər)
  • 66  (bənzər)
  • 67  (bənzər)

Test 6:

  • 12  (çox bənzər)
  • 14  (çox bənzər)
  • 19  (nisbətən bənzər, amma daha çətin)
  • 28  (nisbətən bənzər)
  • 56  (çox bənzər)
  • 57  (çox bənzər)

Last Day Test:

  • 13  (bənzər, amma daha çətin)
  • 14  (çox bənzər)
  • 20  (bənzər, amma main metod overloading)
  • 24  (çox bənzər)
  • 37  (çox bənzər)
  • 42  (təxminən bənzər)
  • 44  (nisbətən bənzər)
  • 49  (çox bənzər)
  • 68  (bənzər)
  • 71  (bənzər)
  • 72  (bənzər)

 

3. Coderanch

Coderanch forumuna məni Jeanne xanım yönləndirmişdi, SYBEX kitabı ilə bağlı ona email yazarkən. Forumla tanış olduqdan qısa müddət sonra başa düşdüm ki, foruma gəlmək sertifikata hazırlıq boyunca qəbul etdiyim ən doğru qərarlardan biri idi. Çox böyük faydasını gördüm. Foruma heç nə yazmadığım vaxtlarda belə hər gün və ya 1-2 gündən bir daxil olub bütün yeni postları oxuyurdum. Bilmədiyim sualların izahlarını oxuyaraq öyrənirdim, lazım gəldikdə qeydlər götürürdüm. Hələ hazırlığımı bitirmədən öncə imtahan mərkəzləri, imtahana qeydiyyat, sertifikatın əldə olunması ilə bağlı sualları görmüşdüm, ən azından ümumi təsəvvür yaranmışdı və həmin sualları bookmark etmişdim ki, hazırlıq müddəti bitdikdən sonra lazım gələrsə yenidən baxım.

Başa düşmədiyim sualları isə soruşurdum. Düzdür, ingiliscə fikirlərimi yazmaq mənim üçün  çətin idi, həm də xeyli vaxtımı alırdı, amma bilmədiyim sualı öyrənmək xatirinə özümü məcbur edib yazırdım. Bu məcburiyyət eyni zamanda ingilis dilini inkişaf etdirməyə də böyük kömək edirdi. Hətta study guide`lərdə, test banklarında qarşıma çıxan sualların izahı qane etməyəndə, mövzunu tam mənimsəməyəndə ilk növbədə gəlib həmin sualı forumda axtarırdım. Güman edirdim ki, məndən öncə də kimsə o sualı forumda soruşa bilər və çox vaxt da elə olurdu. Forumda əksər suallar oxucu tam başa düşənə kimi dərindən, addım-addım izah edilir və bu da həmin mövzunu tam mənimsəməyə kömək edir.

Bundan əlavə namizədlərin öz təcrübələrini paylaşmalarının da böyük faydası var idi. Onların məsləhət və tövsiyələrindən yararlananda, artıq öncədən imtahan mühiti barədə təsəvvür formalaşırdı və gedib imtahanda hər hansı bir hadisə ilə qarşılaşanda sürpriz olmurdu. OCA ilə bağlı sualları ən dolğun şəkildə izah edən istifadəçi isə Roel De Nijs idi, onu tanımalısız 🙂

 

İmtahan sualları haqqında qısaca:

  • instanceof operatoru, “dangling” else, enum, inner class ilə bağlı sual düşməmişdi;
  • Period ilə bağlı sual var idi, amma Duration, ZonedDateTime ilə bağlı sual yox idi;
  • Wrapper constructorla bağlı sual yox idi, amma parseXXX(), valueOf() metodları ilə bağlı sual var idi (ətraflı);
  • Digər mövzularla müqayisədə ən çox sual massivlərlə əlaqəli idi (declaration, initialization);
  • Switch case, iç-içə for dövrləri, if şərtləri ilə bağlı da çox sual var idi;
  • this(), super() ilə bağlı bir xeyli sual var idi və bu sualları tapmaq üçün bilməli olduğumuz əsas qayda bu idi: this() super() ancaq birinci sətirdə (1-ci ifadə kimi) çağırıla bilər;
  • Lambda ilə əlaqəli cəmi bir sual düşmüşdü və həmin tip suala hazırlıq boyunca nə SYBEX, nə də Enthuware`də rastlamamışdım (ətraflı);
  • Time API ilə bağlı 3 ya 4 sual düşmüşdü, hamısı da demək olar rahat suallar idi. SYBEX kitabında Dates və Times`lə bağlı mövzular bu sualları demək olar 95-99 faiz əhatə edirdi;
  • Pass-by-value ilə əlaqəli təxminən 3 sual var idi;
  • Overloading main metodla bağlı sual var idi;
  • Cavabları “compilation fails” olan bir xeyli sual var idi;
  • Casting ilə bağlı nisbətən mürəkkəb suallar var idi;
  • String, StringBuilder`in əksər vacib metodları ilə bağlı suallar düşmüşdü. Həmid metodların hamısı SYBEX kitabında öz əksini tapıb, bircəsindən başqa: 3 parametrli append() SYBEX kitabında ancaq bir parametrli append() metodu izah olunub, xoşbəxtlikdən 3 parametrli append() metodunu Enthuware suallarından öyrənmişdim. intern(), compareTo(), ensureCapacity(), insert(4 parametrli) (amma 2 paramterli düşmüşdü), setLength() metodları ilə bağlı suallar yox idi;
  • SYBEX kitabında əhatə olunan Exception adlarından kənar exceptionlar düşməmişdi. Enthuware`də SYBEX-də olmayan bir neçə fərqli exception/error adlarına rast gəlmişdim (AssertionError, IllegalStateException, SecurityException və s.), amma imtahanda heç biri düşmədi, SYBEX kitabı bu mövzunu tam əhatə edirdi.

 

SYBEX və Enthuware`də rast gəlmədiyim sual tipləri:

  • İmtahana qədər gördüyüm iç-içə for dövrləri adətən bu formada olurdu: ikiölçülü massiv verilirdi, outer for iteration üçün massivin birinci elementinin uzunluğu, inner for iteration üçün isə massivin ikinci elementinin uzunluğu istifadə olunurdu, təxminin belə:
int count=0;
int[][] arr = new int[3][4];
for(int i=0; i<arr.length; i++)
    for(int j=0; j<arr[i].length; j++)
        if(j<2) count++;
System.out.println(count);

Amma imtahanda gördüyüm iç-içə for suallarında ikiölçülü yox, birölçülü String massiv istifadə olunurdu. İnner for iteration üçün massivin indekslərindəki elementlərin uzunluğu istifadə olunurdu, təxminən belə:

    
    int count=0;
    String[] arr = {"one", "three", "five", "seven"};
    for(int i=0; i<arr.length; i++)
        for(int j=0; j<arr[i].length(); j++)
            if(arr[i].length() == 5) count++;
    System.out.println(count); 

Bu stildə, amma nisbətən daha mürəkkəb suallar idi.

  • Grid şəklində massiv sualı. XO oyunundan yəqin hamının xəbəri var. Həmin oyundakı xanaları ikiölçülü massivin elementləri kimi təsəvvür etməliyik və X-in qalib gəlməsi üçün massivin hansı indeksdə dayanan xanasına X çəkilməlidir onu tapmalıyıq;
  • Import ilə bağlı bəzi sual nümunələri var idi, ona bənzər nümunələr nə SYBEX, nə də ki Enthuware`də yox idi. Əslində nisbətən bənzər suallar rastıma çıxmışdı, amma əsas fərqlilik cavab variantları ilə əlaqəli idi (ətraflı);

 

1) 2 sualda iki variant arasında qalmışdım, seçim etməkdə çətinlik çəkirdim.

 

1-ci sual Wrapper`lə bağlı idi. Təxminən belə bir şey soruşulurdu:

    
    public static void main(String[] args) {
        int i1 = Integer.parseInt(args[0]);
        boolean b1 = Boolean.parseBoolean(args[0]);
        System.out.println(i1 + " " + b1);
        int i2 = Integer.valueOf(args[0]);
        boolean b2 = Boolean.valueOf(args[0]);
        System.out.println(i2 + " " + b2);
    } 

parseXXX() metodları ilə bağlı problem yox idi, çünki geriyə primitive dəyər qaytarır. Amma valueOf() metodu geriyə Reference dəyər qaytarır, fikirləşdim bəlkə compile xətası verər, gərək sonunda intValue() də olsun: Integer.valueOf(args[0]).intValue();

Amma sonra fikirləşdim intValue() metodunu çağırmağa ehtiyac yoxdu,  Integer.valueOf(args[0]); avtomatik olaraq unboxing vasitəsilə primitiv tipə mənimsədilə bilir. Gələn kimi yoxladım, doğru yazmışdım.

 

2-ci sual isə lambda ilə əlaqəli idi. Ümumiyyətlə mən lambda mövzusunu çox yaxşı mənimsəmişdim, testlərdə də lambda ilə bağlı əksər sualları doğru tapırdım, bilmədiyim bəzi şeyləri də Enthuware`dən öyrənmişdim. Amma imtahanda qarşıma çıxan lambda sualına bənzər nümunə nə SYBEX, nə də Enhtuware`də qarşıma çıxmamışdı, kifayət qədər çətin sual idi mənə görə. İmtahanın nəticəsi çıxanda, orada həmçinin səhv etdiyiniz sualların hansı mövzuya aid olması ilə bağlı feedback də göndərilir. Feedback`də 3 mövzu qeyd olunmuşdu, həmin mövzulardan biri də lambda idi. Lambda ilə bağlı cəmi bir sual düşdüyündən bildim ki, həmin sualdı. Sual isə təxminən aşağıdakı nümunəyə bənzər sual idi:

  String names[] = {"Roel", "Jeanne", "Paul", "Mushfiq"};
  List<String> list = new ArrayList(Arrays.asList(names));
  if(list.removeIf( (String s) -> { return s.contains("s"); } )){
      System.out.println(s + " removes");
  }

asList() ilə removeIf() metodunu bir yerdə görüncə ilk ağlıma gələn o oldu ki, bu kod UnsupportedOperationException fırladacaq, çünki Arrays.asList() ilə yaradılan list “fixed size list” hesab olunur və onun ölçüsünü nə artırmaq, nə də azaltmaq mümkün deyil. Amma həmin cavabı seçməzdən öncə lambda ifadəsinin sintaksisinin doğru olub olmadığını yoxladım, çünki hazırlıqlardan belə başa düşmüşdüm ki, lambda ilə əlaqəli əksər suallar sintaksis ilə bağlı suallardır. removeIf() metodu Predicate interfeysi tipində parametr qəbul edir və:

  • parametrin tipi aşkar şəkildə göstərilib (String) və buna görə də mötərizə olmalıdır və var;
  • parametr siyahısı ilə gövdəni birləşdirən ox (arrow) var;
  • geriyə boolean dəyər qayıtmalı, return ifadəsi yazıldığına görə nöqtəli-vergül, fiqurlu mötərizə olmalıdır və var.

Sintaksisdə hər şey qaydasında olduğuna əmin olduqdan sonra “throws UnsupportedOperationException” cavabını seçdim. Amma sonda ümumu suallara təkrar bir də nəzər keçirəndə hardasa oxuduğumu xatırladım ki (amma harada onu xatırlaya bilmədim), new ArrayList() ilə yaradıldığına görə bu list “fixed size” hesab olunmur, ona görə də qərara gəldim ki, bu kod exception fırlatmır və Mushfiq removes cavabını seçdim. Amma bu kodu imtahandan qayıtdıqdan sonra IDE`də test edəndə gördüm ki, gözümdən qaçan, diqqətdən yayınan başqa bir məqam da var imiş. Sintaksis olaraq mən ancaq 7-ci sətiri yoxlamışdım, amma compile xətası 8-ci sətirdə idi. Lambda ifadəsinin parametr listində elan edilmiş dəyişən ancaq lambda ifadəsinin gövdəsində işlədilə bilər, 8-ci sətirdə s dəyişəninə müraciət etmək mümkün deyil. Cavab “complation fails” olmalı idi.

 

2) İki sualın isə quruluşu qəribə və mürəkkəb idi.

 

1-ci sual import ilə bağlı idi. Təxminən belə bir sual:

A adında bir proyektimiz var, BC paketlərindən ibarətdir.

package B;
public class ClassB {}

package C;
public class ClassC {}

ClassC-nin ClassB-nin daxilində istifadə edilə bilməsi üçün hansı importlar tələb olunur? Doğru sinkatisə malik ikisini seçin (təqribən):

A. String name = ClassC.getName();
B. import A;
C. import C.ClassC;
D. import B.ClassB;
E. String name = C.ClassC.getName();

Tələb olunan import bircə C bəndidir. Amma 2 cavab seçilməli olduğuna görə digər münasib cavab kimi D-ni seçdim. D sintaksis olaraq doğru import-dur, amma tələb olunmur, onun yazılmasına ehtiyac yoxdur. Əgər getName() metodu static olsa idi, E bəndi doğru olardı. Lakin getName() metodu ilə bağlı heç bir informasiya yox idi. Həmin vaxtı Coderanch forumunda Roel`in yazdığı bu sözlər yadıma düşdü: “You should never assume something which is not mentioned in the question or in the option”. Ona görə də CD seçmişdim. Amma sual dəqiqliklə yadımda deyil, təxmini buna bənzər bir şey idi.

 

2-ci sual isə this()super() constructorlarla bağlı idi. Məzmununa görə Enthuware Standart Test 5, sual 44`ə bənzəyirdi, amma quruluşuna görə çox mürəkkəb idi. Həcmi çox böyük idi, ekrana sığışmırdı, sualı tam şəkildə görmək üçün scrolla aşağı sürüşdürmək lazım idi. Səhv etmirəmsə scrolla ehtiyac olan yeganə sual idi.

Feedback`ə əsasən səhv etdiyim suallardan birinin lambda ilə əlaqəli sual olduğunu bildim. Amma səhv cavablandırdığım digər 4 sualın hansılar olduğu hələ də mənim üçün maraqlı olaraq qalır 🙂

 

Sonda xüsusi olaraq qeyd etmək istəyirəm ki, SYBEX kitabı və Enthuware test bankı ikisi bir yerdə hazırlıq üçün çox əla vəsaitdir və imtahanı yüksək balla keçmək üçün tamamilə kifayət edir. Sadəcə mövzuları və testləri düzgün ardıcıllıqla oxumaq və etmək lazımdır.

 

Qeyd. Yuxarıda qeyd etdiyim fikirlər imtahanda mənə düşən suallara istinadən və imtahan verdiyim vaxtdakı mövcud duruma uyğun olaraq yazılıb, zamanla dəyişiklik ola bilər.

About the author

Mushfiq Mammadov

Leave a Comment


The reCAPTCHA verification period has expired. Please reload the page.

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.