Një udhëzues për zhvilluesin e ardhshëm Java. Intervista dhe karriera. Intervistat e zhvilluesve Java e mesme Pyetjet e bëra më shpesh

U transferova në një qytet tjetër, gjej punë, shkoj në intervista. Më dukej se pyetjet që bëhen atje, megjithëse të njohura, megjithatë, të mbledhura së bashku, mund të ndihmojnë në përgatitjen dhe ndjenjën më të sigurt.

Pyetje për të kuptuar parimet e ndërtimit të një DBMS.
1. Cila është forma e parë normale dhe procesi i normalizimit? Cilat janë format normale?
2. Cili është kuptimi i indeksit DBMS, si janë të renditura, si ruhen? Si do ta zbatonit të njëjtin funksionalitet? Pyetja e fundit bëhet nëse nuk ka kuptim të qartë të indekseve.
3. Vizatoni një marrëdhënie shumë me shumë. Për shembull: tabelat Autorët dhe Librat. Një autor mund të ketë disa libra dhe një libër mund të shkruhet nga autorë të shumtë. Hartoni një pyetje SQL për të zgjedhur libra nga një autor specifik.

Pyetje themelore rreth Java.
4. Klasa bazë në Java njihet si Object. Çfarë metodash mund të emërtoni?
5. Na tregoni se çfarë janë barazimet dhe hashCode? Cilat rregulla dhe konventa ekzistojnë për zbatimin e këtyre metodave? Kur aplikohen?
6. Na tregoni për metodat e pritjes, njoftimit, njoftimit të gjitha. Si përdoren, kur, pse nevojiten? Çfarë sinkronizohet?
7. Çfarë është finalizimi? Pse është e nevojshme? Çfarë mund të thoni për grumbulluesin e plehrave dhe algoritmet e tij.
8. Pse metoda e klonimit deklarohet si e mbrojtur? Çfarë nevojitet për të zbatuar klonimin?
9. Cilët janë modifikuesit (qasja dhe të tjerët)? Çfarë është e paqëndrueshme dhe kalimtare? Për çfarë dhe në cilat raste do të ishte e mundur të përdoret default?

Korniza e Koleksionit Java
10. Cilat janë ndërfaqet e mbledhjes në Java? Shpjegoni se si ndryshojnë ato.
11. Çfarë zbatimesh të këtyre ndërfaqeve dini?
12. Cili është ndryshimi midis ArrayList dhe LinkedList. Si janë rregulluar? Kur duhet të përdoren.
13. Cili është ndryshimi midis HashMap dhe TreeMap? Si janë ngritur dhe si funksionojnë? Po me kohën e aksesit në objekte, çfarë varësish?
14. Çfarë është Hashtable, si ndryshon nga HashMap? Deri më sot, ai është zhvlerësuar, si e përdorni akoma funksionalitetin e dëshiruar?

Përjashtimet
15. Çfarë është një përjashtim? Çfarë lloje përjashtimesh njihni, si ndryshojnë ato?
16. A mund të propozohet një enigmë me blloqe try-catch-finally dhe pyetja se çfarë do të kthehet ose cili përjashtim do të anulohet përfundimisht?

Algoritmet
17. Çfarë algoritme klasifikimi dini? Çfarë lloj algoritmesh dini?
Për më tepër, këtu janë të mundshme pyetje të ndryshme shtesë në lidhje me vlerësimin e kompleksitetit të algoritmeve, krahasimin e tyre me njëri-tjetrin.

Modelet e projektimit.
18. A jeni njohur me ndonjë model dizajni?
19. Shkruani një Singleton... Dhe me ngarkim dembel. Po sikur të duhet të jetë i sigurt për fije? Kur ngarkimi dembel është më i keq?
20. Çfarë mund të thoni për MVC? Vizatoni një diagram dhe shpjegoni se si funksionon MVC.

Një seri pyetjesh për të kuptuar paketën e teknologjisë J2EE.
21. Çfarë është një servlet, jsp, ndryshimi i tyre?
22. Çfarë është Ajax? Si është rregulluar në thelb kjo teknologji?
23. Çfarë është ORM, si mund të përkthehet dhe si duhet të funksionojë?

Detyra të thjeshta për të shkruar algoritme.
24. Shkruani një funksion për të llogaritur faktorialin.
25. Jepet një funksion për llogaritjen e numrave të Fibonaçit, dihet se funksionon. Gjeni gabimin logjik. Vlerësoni kompleksitetin e algoritmit që rezulton.
26. Kthejeni vijën.
27. Llogaritni mesataren e vargut.

Është e dobishme të mbani mend se kur nuk ndiheni shumë të sigurt, nuk keni nevojë të thoni fjalë shtesë. Ju thoni një fjalë shtesë, dhe ata ngjiten pas saj, zgjidh zinxhirin. Ata reklamojnë gjëra për të cilat nuk janë shumë të sigurt. Kjo aftësi e njerëzve - për t'u ngjitur - duhet të përdoret, por në avantazhin tuaj ;-)

Njohuria dhe të kuptuarit… gjërat janë krejt të ndryshme, pra
- algoritme të ndryshme, si klasifikimi, duhet të shkruhen vetë, qoftë edhe nga një tekst shkollor. Shihni se si ndryshojnë nga njëri-tjetri, krahasoni kompleksitetin e tyre.
- është e dobishme të shikoni shërbime dhe biblioteka të ndryshme, parimet e grupimit të klasave në paketa dhe stilin e shkrimit të kodit, komentimit. Mund të ndihmojë shumë në të kuptuarit e modifikuesve të aksesit, organizimit të projektit.
- duke kuptuar diçka specifike, ju mund të ndihmoni ata që dinë më pak. Shkoni në çdo forum dhe përpiquni t'u përgjigjeni pyetjeve me interes për temën. Në diskutim, ju mund të merrni diçka për veten tuaj. Ju mund të shkruani një artikull të shkurtër. Sigurisht, ju duhet ta kuptoni mirë temën.
Çdo punë që synon të përmirësojë kualifikimet e veta do të jetë e dukshme për një intervistues kompetent dhe nuk do të mbetet pa vëmendje. E vetmja gjë për të cilën duhet të flisni sinqerisht, mos i nënvlerësoni aftësitë dhe aftësitë tuaja.
Për të pasur një lloj standardi për trajnimin ose zhvillimin e vetes si specialist, mund të shikoni diçka të ngjashme me këtë.

Në fakt, pyetjet e renditura më sipër janë niveli i Zhvilluesit të Rinj, siç e imagjinoj unë. Diku, ndoshta më thellë, diku më pak, por si fakt - Junior.

Çdo zgjidhje krijon probleme të reja.

Ky seksion i kushtohet pyetjeve që mund të bëhen kur kaloni një intervistë për një pozicion programues Java.

Qëllimi është të mbledhim jo vetëm pyetje (ka shumë prej tyre në internet), por edhe përgjigje për to në një vend.

Për atribut, lexoni në faqen kryesore të seksionit Intervistë

  1. Sa fjalë kyçe janë të rezervuara nga gjuha, cilat janë këto fjalë, cilat nuk përdoren?
  2. Nga cilat karaktere mund të përbëhet një emër variabli (identifikuesi i saktë)?
  3. Çfarë do të thotë fjala "inicializim"?
  4. Cilat janë grupet kryesore të llojeve të të dhënave?
  5. Cilat lloje primitive njihni?
  6. Çfarë dini për konvertimin e llojeve primitive të të dhënave, a ka ndonjë humbje të të dhënave, a është e mundur të konvertohet lloji boolean?
  7. Cilat vlera janë variablat e inicializuar të paracaktuar?
  8. Si kalohet vlera e një ndryshoreje (sipas referencës/vlerës)?
  9. Çfarë dini për funksionin kryesor, cilat janë parakushtet për përcaktimin e tij?
  10. Çfarë operacionesh dhe operatorësh logjik dini?
  11. Cili është ndryshimi midis shënimit të operatorëve logjikë të shkurtër dhe të gjatë?
  12. Çfarë është një tabelë e së vërtetës?
  13. Çfarë është një operator i përzgjedhur tresh?
  14. Çfarë operacionesh aritmetike unare dhe binar dini?
  15. Çfarë operacionesh bitwise dini?
  16. Cili është roli dhe rregullat për të shkruar një deklaratë të zgjedhur (ndërprerës)?
  17. Cilat cikle njihni, cilat janë ndryshimet e tyre?
  18. Çfarë është një "përsëritje e një cikli"?
  19. Çfarë parametrash ka cikli for, a mund të hiqen?
  20. Çfarë deklarate përdoret për të ndaluar menjëherë ciklin?
  21. Cili pohim përdoret për të kaluar në përsëritjen tjetër të ciklit?
  22. Çfarë është një grup?
  23. Çfarë lloje vargjesh dini?
  24. Çfarë dini për klasat e mbështjellësit?
  25. Çfarë është autopaketimi (boksi/zhboksimi)?

  1. Emërtoni parimet e OOP dhe përshkruani secilin prej tyre.
  2. Përcaktoni termin "klasë".
  3. Çfarë është një fushë/atribut i klasës?
  4. Si të organizoni siç duhet aksesin në fushat e klasës?
  5. Përcaktoni termin "konstruktor".
  6. Cili është ndryshimi midis konstruktorëve të paracaktuar, konstruktorëve të kopjimit dhe një konstruktori me parametra?
  7. Cilat modifikime të nivelit të aksesit dini, na tregoni për secilën prej tyre.
  8. Na tregoni për veçoritë e një klase me një konstruktor të vetëm privat.
  9. Çfarë thonë fjalët kyçe “kjo”, “super”, ku dhe si mund të përdoren?
  10. Përcaktoni termin "metodë".
  11. Çfarë është një nënshkrim i metodës?
  12. Cilat metoda quhen të mbingarkuara?
  13. A mund të mbingarkojnë metodat jostatike ato statike?
  14. Na tregoni për metodat kryesore.
  15. A mund të marrë një metodë një numër të ndryshëm parametrash (argumente me gjatësi të ndryshueshme)?
  16. A është e mundur të kufizohet niveli i aksesit/lloji i kthimit kur anashkalohet një metodë?
  17. Si të aksesoni metodat e anashkaluara të klasës prind?
  18. Cilat janë transformimet nga lart-poshtë dhe nga poshtë-lart?
  19. Cili është ndryshimi midis mbingarkesës dhe mbingarkesës?
  20. Ku mund të inicializohen fushat statike/jostatike?
  21. Pse nevojitet shembulli i operatorit?
  22. Pse na nevojiten dhe cilat janë blloqet e inicializimit?
  23. Cili është rendi i thirrjes së konstruktorëve dhe blloqeve të inicializimit të dy klasave: një fëmijë dhe paraardhësi i tij?
  24. Ku dhe për çfarë përdoret modifikuesi abstrakt?
  25. A është e mundur të deklarohet një metodë abstrakte dhe statike në të njëjtën kohë?
  26. Çfarë do të thotë fjala kyçe statike?
  27. Në cilat konstruksione Java zbatohet modifikuesi statik?
  28. Çfarë ndodh nëse ndodh një përjashtim në një bllok statik të kodit?
  29. A është e mundur të mbingarkoni një metodë statike?
  30. Çfarë është një klasë statike, cilat janë veçoritë e përdorimit të saj?
  31. Cilat janë veçoritë e inicializimit të variablave statike përfundimtare?
  32. Si ndikon modifikuesi statik në një klasë/metodë/fushë?
  33. Çfarë do të thotë fjala kyçe përfundimtare?
  34. Përcaktoni termin "ndërfaqe".
  35. Cilët janë modifikuesit e paracaktuar për fushat dhe metodat e ndërfaqes?
  36. Pse një metodë ndërfaqeje nuk mund të deklarohet përfundimtare ose statike?
  37. Çfarë lloje klasash ka në java (të mbivendosur...etj)
  38. Cilat janë veçoritë e krijimit të klasave të mbivendosura: të thjeshta dhe statike.
  39. Çfarë dini për klasat e mbivendosura, pse përdoren ato? Klasifikimi, rastet e përdorimit, shkelje e kapsulimit.
  40. Cili është ndryshimi midis klasave të mbivendosura dhe të brendshme?
  41. Cilat klasa quhen anonime?
  42. Si të hyni në një fushë të një klase të jashtme nga një klasë e vendosur?
  43. Si mund të aksesoni variablin lokal të një metode nga një klasë anonime e deklaruar në trupin e kësaj metode? A ka ndonjë kufizim për një variabël të tillë?
  44. Si lidhet ndonjë klasë e personalizuar me klasën Object?
  45. Na tregoni për secilën nga metodat e klasës Object.
  46. Çfarë është metoda e barabartë (). Si ndryshon nga operacioni ==.
  47. Nëse dëshironi të anashkaloni equals(), cilat kushte duhet të plotësohen për metodën e anashkaluar?
  48. Nëse e njëjta () është anashkaluar, a ka ndonjë metodë tjetër që duhet të anashkalohet?
  49. Cila është veçantia e metodave të hashCode dhe e barabartë? Si zbatohen metodat hashCode and equals në klasën Object? Cilat rregulla dhe konventa ekzistojnë për zbatimin e këtyre metodave? Kur aplikohen?
  50. Cila metodë kthen një paraqitje të vargut të një objekti?
  51. Çfarë ndodh nëse anashkaloni barazimin pa anashkaluar hashCode? Çfarë problemesh mund të lindin?
  52. A ka ndonjë udhëzim se cilat fusha duhet të përdoren gjatë llogaritjes së kodit hash?
  53. A mendoni se do të ketë ndonjë problem nëse objekti që përdoret si çelës në hashMap ndryshon fushën që merr pjesë në përkufizimin e kodit hash?
  54. Cili është ndryshimi midis një klase abstrakte dhe një ndërfaqeje, në cilat raste do ta përdorni?
  55. A është e mundur të aksesoni variablat e klasës private dhe nëse po, si?
  56. Çfarë është e paqëndrueshme dhe kalimtare? Për çfarë dhe në cilat raste do të ishte e mundur të përdoret default?
  57. Zgjerimi i modifikuesve gjatë trashëgimisë, tejkalimit dhe fshehjes së metodave. Nëse një klasë prind ka një metodë private, a mund ta zgjasë fëmija dukshmërinë e saj? Po sikur të mbrohet? Dhe për të ngushtuar dukshmërinë?
  58. A ka kuptim të deklarohet një metodë private përfundimtare?
  59. Cilat janë veçoritë e inicializimit të variablave përfundimtare?
  60. Çfarë ndodh nëse konstruktori i vetëm i klasës shpallet përfundimtar?
  61. Çfarë është finalizimi? Pse është e nevojshme? Çfarë mund të thoni për grumbulluesin e plehrave dhe algoritmet e tij.
  62. Pse metoda e klonimit deklarohet si e mbrojtur? Çfarë nevojitet për të zbatuar klonimin?
  63. A jeni njohur me ndonjë model dizajni?
  64. Shkruani një Singleton... Por me ngarkim dembel. Po sikur të duhet të jetë i sigurt për fije? Kur ngarkimi dembel është më i keq?
  65. Çfarë mund të thoni për MVC? Vizatoni një diagram dhe shpjegoni se si funksionon MVC.
  66. Shkruani një funksion për të llogaritur faktorialin.
  67. Duke pasur parasysh një funksion për llogaritjen e numrave të Fibonaçit, dihet se funksionon. Gjeni gabimin logjik. Vlerësoni kompleksitetin e algoritmit që rezulton.

  1. Përcaktoni "përjashtimin"
  2. Cila është hierarkia e përjashtimeve.
  3. A mund/duhet të trajtoj gabimet jvm?
  4. Cilat janë mënyrat për të trajtuar përjashtimet?
  5. Çfarë do të thotë fjala kyçe hedh?
  6. Çfarë është e veçantë për bllokun e fundit? A përmbushet gjithmonë?
  7. A mund të mos ketë bllok kapje kur kapni përjashtime?
  8. A mund të mendoni për një situatë ku blloku përfundimtar nuk do të ekzekutohej?
  9. A mundet një bllok i vetëm i kapjes të kapë përjashtime të shumta (nga degët e njëjta dhe të ndryshme të trashëgimisë)?
  10. Çfarë dini për përjashtimet e trajtuara dhe të patrajtuara (të kontrolluara/të pakontrolluara)?
  11. Çfarë është e veçantë për RuntimeException?
  12. Si të shkruani përjashtimin tuaj ("doganor")? Nga cilat motive do të udhëhiqeni kur zgjidhni llojin e përjashtimit: i kontrolluar / i pakontrolluar?
  13. Cili operator ju lejon të detyroni të hidhet një përjashtim?
  14. A ka kushte shtesë për një metodë që mund të shkaktojë një përjashtim?
  15. A mund të hedhë metoda kryesore një përjashtim jashtë, dhe nëse po, ku do të trajtohet ky përjashtim?
  16. Nëse një deklaratë kthimi gjendet si në bllokun e kapjes ashtu edhe në një bllok përfundimtar, cili është "më i rëndësishëm"?
  17. Çfarë dini për OutOfMemoryError?
  18. Çfarë dini për SQLException? Çfarë lloji i kontrolluar apo i pakontrolluar është, pse?
  19. Çfarë është gabimi? Në cilin rast përdoret Gabim. Jepni një shembull të Gabimit.
  20. Çfarë konstrukti përdoret në Java për trajtimin e përjashtimeve?
  21. Supozoni se ka një bllok prove-në fund. Një përjashtim u hodh në bllokun e provoni dhe ekzekutimi u zhvendos në bllokun përfundimtar. Blloku i fundit gjithashtu hodhi një përjashtim. Cilin nga dy përjashtimet do të "hedh" nga blloku i "provës" në fund? Çfarë ndodh me përjashtimin e dytë?
  22. Supozoni se ekziston një metodë që mund të hedhë IOException dhe FileNotFoundException në çfarë rendi duhet të shkojnë blloqet e kapjes? Sa blloqe kapëse do të ekzekutohen?

  1. Përcaktoni termin "koleksion".
  2. Rendisni përfitimet e përdorimit të koleksioneve.
  3. Çfarë lloj të dhënash mund të ruajnë koleksionet?
  4. Cila është hierarkia e mbledhjes?
  5. Çfarë dini për koleksionet e Listës?
  6. Çfarë dini për koleksionet e Set?
  7. Çfarë dini për koleksionet e radhës?
  8. Çfarë dini për koleksionet e Hartave, cili është ndryshimi themelor i tyre?
  9. Emërtoni implementimet kryesore të List, Set, Map.
  10. Çfarë implementimesh të SortedSet dini dhe cilat janë veçoritë e tyre?
  11. Cilat janë ndryshimet/ngjashmëritë midis Listës dhe Set?
  12. Cili është ndryshimi/i përbashkët midis klasave ArrayList dhe LinkedList, kur është më mirë të përdoret ArrayList dhe kur është më mirë të përdoret LinkedList?
  13. Kur është e arsyeshme të përdoret një grup në vend të një ArrayList?
  14. Si ndryshon ArrayList nga Vector?
  15. Çfarë dini për zbatimin e klasave HashSet dhe TreeSet?
  16. Cili është ndryshimi midis HashMap dhe TreeMap? Si janë ngritur dhe si funksionojnë? Po me kohën e aksesit në objekte, çfarë varësish?
  17. Çfarë është Hashtable, si ndryshon nga HashMap? Deri më sot, ai është zhvlerësuar, si e përdorni akoma funksionalitetin e dëshiruar?
  18. Çfarë ndodh nëse vendosim dy vlera në një hartë me të njëjtin çelës?
  19. Si është vendosur rendi i objekteve në koleksion, si të renditet koleksioni?
  20. Përcaktoni termin "iterator".
  21. Çfarë funksionaliteti ofron klasa Koleksione?
  22. Si të merrni një koleksion jo të modifikueshëm?
  23. Cilat koleksione sinkronizohen?
  24. Si të merrni një koleksion të sinkronizuar nga një i pasinkronizuar?
  25. Si të merrni një koleksion vetëm për lexim?
  26. Pse nuk trashëgon Map nga Koleksioni?
  27. Cili është ndryshimi midis Iteratorit dhe Enumeration?
  28. Si zbatohet cikli foreach?
  29. Pse nuk ka metodë iterator.add() për të shtuar elementë në një koleksion?
  30. Pse klasa iterator nuk ka një metodë për të marrë elementin tjetër pa lëvizur kursorin?
  31. Cili është ndryshimi midis Iterator dhe ListIterator?
  32. Cilat janë mënyrat për të përsëritur të gjithë elementët e një liste?
  33. Cili është ndryshimi midis vetive të sigurta dhe të shpejta për dështimin?
  34. Çfarë duhet të bëj për të shmangur hedhjen e një përjashtimi të modifikimit të njëkohshëm?
  35. Çfarë është një pirg dhe një radhë, na tregoni cilat janë ndryshimet e tyre?
  36. Cili është ndryshimi midis ndërfaqeve të krahasueshme dhe krahasuese?
  37. Pse koleksionet nuk trashëgojnë ndërfaqet e Cloneable dhe Serializable?

  1. Çfarë klasash "string" dini?
  2. Cilat janë vetitë kryesore të klasave "string" (veçoritë e tyre)?
  3. A është e mundur të trashëgohet lloji i vargut, pse?
  4. Përcaktoni termin lidhje të vargut.
  5. Si të konvertohet vargu në numër?
  6. Si të krahasoni vlerën e dy vargjeve?
  7. Si të ktheni një varg?
  8. Si funksionon krahasimi i dy vargjeve?
  9. Si të shkurtohen hapësirat në fund të një vargu?
  10. Si të zëvendësoni një karakter në një varg?
  11. Si të merrni pjesë të një vargu?
  12. Përcaktoni termin "pishinë me vargje".
  13. Cila metodë ju lejon të zgjidhni një nënvarg në një varg?
  14. Si të ndahet një varg në nënvargje me anë të një kufiri të caktuar?
  15. Cila metodë quhet për të kthyer një ndryshore në një varg?
  16. Si të zbuloni vlerën e një karakteri të caktuar të një vargu, duke ditur numrin e tij rendor në varg?
  17. Si të gjeni karakterin e kërkuar në një varg?
  18. A është e mundur të sinkronizohet aksesi në rresht?
  19. Çfarë bën metoda intern()?
  20. Si ndryshojnë klasat String, StringBuffer dhe StringBuilder dhe çfarë kanë të përbashkët?
  21. Cila është mënyra e duhur për të krahasuar vlerat e vargut të dy objekteve të ndryshme të tipit String dhe StringBuffer?
  22. Pse vargu është i pandryshueshëm dhe i finalizuar në Java?
  23. Pse një grup karakteresh preferohet nga një varg për ruajtjen e fjalëkalimit?
  24. Pse një varg është një çelës popullor në një HashMap në Java?
  25. Shkruani një metodë për të hequr një karakter të caktuar nga një varg.

  1. Cilat janë llojet e rrymave I/O?
  2. Emërtoni paraardhësit kryesorë të rrymave I/O.
  3. Cilat janë ngjashmëritë dhe ndryshimet midis rrymave të mëposhtme: InputStream, OutputStream, Reader, Writer?
  4. Çfarë dini për RandomAccessFile?
  5. Cilat janë mënyrat e hyrjes së skedarëve?
  6. Në cilat paketa janë klasat e transmetimit?
  7. Çfarë dini për klasat e superstrukturës?
  8. Cila klasë shtesë ju lejon të lexoni të dhëna nga rrjedha e bajtit të hyrjes në formatin e llojeve primitive të të dhënave?
  9. Cila klasë shtesë ju lejon të shpejtoni leximin / shkrimin përmes përdorimit të një buffer?
  10. Cilat klasa ju lejojnë të konvertoni rrjedhat e bajtit në rrjedha të karaktereve dhe anasjelltas?
  11. Cila klasë është krijuar për të punuar me elementë të sistemit të skedarëve (EFS)?
  12. Çfarë karakteri është ndarësi kur specifikoni rrugën drejt EFS?
  13. Si të zgjidhni të gjitha EFS të një drejtorie të caktuar me një kriter (për shembull, me një shtrirje të caktuar)?
  14. Çfarë dini për ndërfaqen FilenameFilter?
  15. Çfarë është serializimi?
  16. Cilat janë kushtet për serializimin “të sigurt” të një objekti?
  17. Cilat klasa ju lejojnë të arkivoni objekte?

  1. Përcaktoni termin "proces".
  2. Përcaktoni termin "rrjedhë".
  3. Përcaktoni termin "sinkronizim thread".
  4. Si ndërveprojnë programet, proceset dhe thread-et?
  5. Kur këshillohet të krijohen fije të shumta?
  6. Çfarë mund të ndodhë nëse dy threads ekzekutojnë të njëjtin kod në një program?
  7. Çfarë dini për temën kryesore të programit?
  8. Cilat janë mënyrat për të krijuar dhe drejtuar temat?
  9. Cila metodë fillon një thread për ekzekutim?
  10. Cila metodë përshkruan veprimin e një thread gjatë ekzekutimit?
  11. Kur e përfundon një thread ekzekutimin e saj?
  12. Si të sinkronizoni metodën?
  13. Si të ndaloni me forcë një fije?
  14. Përcaktoni termin "fije daemon".
  15. Si të krijoni një fije demon?
  16. Si të merrni transmetimin aktual?
  17. Përcaktoni termin "monitor".
  18. Si të ndaloni ekzekutimin e një filli?
  19. Në cilat gjendje mund të jetë një transmetim?
  20. Çfarë është monitori kur thirret metoda jostatike dhe statike?
  21. Çfarë është monitori kur ekzekuton një seksion të kodit të metodës?
  22. Cilat metoda ju lejojnë të sinkronizoni ekzekutimin e fijeve?
  23. Cila metodë e vendos një thread në modalitetin boshe?
  24. Cili është funksionaliteti i metodave notify and notifyAll?
  25. Çfarë bën metoda e bashkimit?
  26. Cilat janë kushtet për të thirrur metodën e pritjes/njoftimit?
  27. Përcaktoni termin "bllokim reciprok".
  28. Cili është ndryshimi midis metodave të ndërprera, të ndërprera, të ndërprera?
  29. Në cilin rast do të hidhet një Exception Interrupted, cilat metoda mund ta hedhin atë?
  30. modifikuesit volatile dhe metoda yield().
  31. Paketa java.util.concurrent
  32. Ekziston një metodë që kryen operacionin i++. Variabli i i tipit int. Supozohet se kodi do të ekzekutohet në një mjedis me shumë fije. A duhet të sinkronizohet blloku?
  33. Çfarë përdoret si mutex nëse metoda deklarohet e sinkronizuar statike? A është e mundur të krijohen shembuj të rinj të një klase ndërkohë që po ekzekutohet një metodë e sinkronizuar statike?
  34. Supozoni se një RuntimeException ndodhi në metodën e ekzekutimit që nuk u kap. Çfarë do të ndodhë me rrymën? A ka ndonjë mënyrë për të ditur se ka ndodhur një përjashtim (pa e mbështjellë të gjithë trupin e vrapimit në një bllok prove)? A ka ndonjë mënyrë për të rikthyer fillin pasi të ketë ndodhur kjo?
  35. Cilat mjete standarde Java do të përdornit për të implementuar një grup thread?
  36. Çfarë është një ThreadGroup dhe pse është i nevojshëm?
  37. Çfarë është ThreadPool dhe pse është i nevojshëm?
  38. Çfarë është ThreadPoolExecutor dhe pse është i nevojshëm?
  39. Cilat janë "llojet atomike" në Java?
  40. Pse nevojitet klasa ThreadLocal?
  41. Çfarë është një Ekzekutues?
  42. Çfarë është Executor Service?
  43. Pse nevojitet Shërbimi ScheduledExecutor?
Kjo listë prej 300+ pyetjesh (pa përgjigje) u gjet në http://becomejavasenior.com/. Autorë të tjerë janë renditur atje.

58489 Shikime Gjithsej 15 Shikime Sot

Shikime: 38 283

  • Çfarë është OOP?
  • Çfarë është një objekt?
  • Emërtoni parimet bazë të OOP.
  • Çfarë është trashëgimia?
  • Çfarë është polimorfizmi? Cilat manifestime të polimorfizmit në Java dini?
  • Çfarë është kapsulimi?
  • Çfarë është abstraksioni?
  • Cilat janë avantazhet e gjuhëve programuese të orientuara nga objekti?
  • Si e përmirëson përdorimin e një qasjeje të orientuar nga objekti zhvillimin e softuerit?
  • Ekziston një shprehje "është" dhe "ka". Çfarë nënkuptojnë ato për sa i përket parimeve të OOP? Cili është ndryshimi midis përbërjes dhe grumbullimit?
  • Çfarë kuptoni me polimorfizëm, kapsulim dhe lidhje dinamike?

bërthama java.

  • Cili është ndryshimi midis JRE, JVM dhe JDK?
  • Përshkruani modifikuesit e aksesit në Java.
  • Çfarë është aksesi në nivelin e paketës.
  • Si ndryshon një klasë abstrakte nga një ndërfaqe? Kur do të përdorni një klasë abstrakte dhe kur do të përdorni një ndërfaqe?
  • A mundet një objekt të aksesojë një variabël të klasës private? Nëse po, si?
  • Për çfarë shërbejnë blloqet statike në Java?
  • A është e mundur të mbingarkoni një metodë statike?
  • Na tregoni për klasat e brendshme. Kur do t'i përdorni ato?
  • Cili është ndryshimi midis ndryshores së shembullit dhe ndryshores statike? Jep një shembull.
  • Jepni një shembull kur mund të përdorni një metodë statike?
  • Na tregoni për klasat e ngarkuesit dhe ngarkimin dinamik të klasës.
  • Cili është qëllimi i operatorit "assert" në Java?
  • Pse disa ndërfaqe nuk përcaktojnë fare metoda?
  • Cili është ndryshimi kryesor midis String, StringBuffer, StringBuilder?
  • Më tregoni për transmetimet Java I/O.
  • Çfarë është memoria Heap and Stack në Java?
  • Cili është ndryshimi midis memories Stack dhe Heap në Java?
  • Na tregoni për modelin e memories në Java?
  • Si funksionon mbledhësi i plehrave?
  • Na tregoni për hedhjen e tipit. Çfarë është ulja dhe promovimi? Kur merrni një ClassCastException?
  • Çfarë është një klasë statike, cilat janë veçoritë e përdorimit të saj?
  • Si të aksesoni një fushë të klasës së jashtme nga një klasë e vendosur.
  • Cilat lloje të klasave të mbivendosura ekzistojnë? Për çfarë përdoren?
  • A është e mundur të ndryshohet kur anashkalohet një metodë:
  • Modifikuesi i qasjes
  • lloji i kthimit
  • Lloji ose numri i argumentit
  • Emri i argumentit
  • Të ndryshohet renditja, sasia apo të hiqet fare seksioni i hedhjeve?
  • Çfarë është autoboxing?
  • Çfarë është gjenerikët?
  • Cili është qëllimi i vërtetë i përdorimit të llojeve gjenerike në Java?
  • Si kalohen variablat në metoda, sipas vlerës apo referencës?
  • Çfarë metodash ka klasa Object?
  • Rregullat për tejkalimin e metodës Object.equals().
  • Nëse dëshironi të anashkaloni equals(), cilat kushte duhet të plotësohen për metodën e anashkaluar?
  • Cila është lidhja midis hashCode dhe të barabartëve?
  • Si zbatohen metodat hashCode and equals në klasën Object?
  • Çfarë ndodh nëse anashkaloni barazimin pa anashkaluar hashCode? Çfarë problemesh mund të lindin?
  • A ka ndonjë udhëzim se cilat fusha duhet të përdoren gjatë llogaritjes së kodit hash?
  • Për çfarë shërben metoda hashCode()?
  • Rregullat për tejkalimin e metodës Object.hashCode().
  • Na tregoni për klonimin e objekteve. Cili është ndryshimi midis klonimit të cekët dhe të thellë?
  • Rregullat për tejkalimin e metodës Object.clone().
  • Ku dhe si mund të përdorni një konstruktor privat?
  • Çfarë është një konstruktor i paracaktuar?
  • Përshkruani metodën Object.finalize().
  • Cili është ndryshimi midis fjalëve përfundimtare, përfundimisht dhe finalizuese?
  • Përshkruani hierarkinë e përjashtimeve.
  • Çfarë lloje përjashtimesh në Java dini, si ndryshojnë ato?
  • Çfarë është e kontrolluar dhe e pazgjedhur Përjashtim?
  • Si të krijoni përjashtimin tuaj të pakontrolluar?
  • Cilat janë përjashtimet e heqjes së kontrollit?
  • Çfarë është gabimi?
  • Përshkruani se si funksionon blloku try-catch-finally.
  • A është e mundur të përdoret një bllok provë përfundimisht (pa kapje)?
  • A ekzekutohet gjithmonë blloku përfundimtar?
  • Cilat janë veçoritë e klasës String? çfarë bën metoda intern().
  • A është e mundur të trashëgohet lloji i vargut, pse?
  • Pse një varg është një çelës popullor në një HashMap në Java?
  • Përcaktoni termin lidhje të vargut.
  • Si të ktheni një varg?
  • Si të krahasoni vlerën e dy vargjeve?
  • Si të shkurtohen hapësirat në fillim dhe në fund të një vargu?
  • Përcaktoni termin "pishinë me vargje".
  • A është e mundur të sinkronizohet aksesi në rresht?
  • Cila është mënyra e duhur për të krahasuar vlerat e vargut të dy objekteve të ndryshme të tipit String dhe StringBuffer?
  • Pse vargu është i pandryshueshëm dhe i finalizuar në Java?
  • Shkruani një metodë për të hequr një karakter të caktuar nga një varg.
  • Çfarë është reflektimi?
  • Çfarë ndodh me grumbulluesin e mbeturinave (GC) nëse ndodh një përjashtim gjatë ekzekutimit të metodës finalize() të një objekti?
  • Çfarë është ndërkombëtarizimi, lokalizimi?
  • Çfarë janë shënimet në Java?
  • Çfarë funksionesh kryen Annotation?
  • Çfarë shënimesh të integruara në Java dini?
  • Çfarë bëjnë shënimet @Retention, @Documented, @Target dhe @Trashëguar?
  • Çfarë bëjnë shënimet @Override, @Deprecated, @SafeVarargs dhe @SuppressWarnings?
  • Çfarë cikli jetësor të shënimeve mund të specifikohet me @Retention?
  • Cilat elemente mund të shënohen, si ta specifikoni atë?
  • Si të krijoni shënimin tuaj?
  • Çfarë lloje atributesh lejohen në shënime?
  • Çfarë është JMX?
  • Çfarë përfitimesh ofron JMX?
  • Çfarë tjetër mund të bëjë JMX përveç telekomandës?
  • Çfarë është MBean?
  • Cilat lloje të MBeans ekzistojnë?
  • Çfarë është MBean Server?
  • Cilat mekanizma ofrojnë siguri në teknologjinë Java?
  • Cilat janë disa nga kontrollet që kryen verifikuesi i bajtkodit Java?
  • Çfarë dini për "menaxherin e mbrojtjes" në Java?
  • Çfarë është JAS?
  • Çfarë është Refactoring?

Korniza e Koleksioneve Java.

  • Çfarë është një koleksion?
  • Emërtoni ndërfaqet kryesore të koleksioneve dhe zbatimin e tyre.
  • Si ndryshon ArrayList nga LinkedList? Në cilat raste është më mirë të përdoret e para dhe në cilat e dyta?
  • Cili është ndryshimi midis HashMap dhe Hashtable?
  • Si ndryshon ArrayList nga Vector?
  • Si krahasohen elementet e koleksionit?
  • Rregulloni ndërfaqet e mëposhtme në një hierarki: Lista, Set, Harta, SortedSet, SortedMap, Koleksioni, Iterable, Iterator, NavigableSet, NavigableMap.
  • Pse Harta nuk është Koleksion ndërsa Lista dhe Kompleti janë Koleksion?
  • Përcaktoni termin "iterator".
  • Çfarë dini për ndërfaqen Iterable?
  • Si të konvertohet HashSet në ArrayList në një rresht?
  • Si të konvertohet ArrayList në HashSet në një rresht?
  • Si të përsëriteni mbi të gjithë çelësat e Hartës duke qenë se Harta nuk është e përsëritshme?
  • Si të përsëriteni mbi të gjitha vlerat e Hartës duke qenë se Harta nuk është e përsëritshme?
  • Si të përsëriteni mbi të gjitha çiftet çelës-vlerë në Hartë duke qenë se Harta nuk është e përsëritshme?
  • Cili është "radhitja" e SortedMap, përveç faktit që toString() printon gjithçka në rregull?
  • Si të kopjoni elementë nga çdo koleksion në një grup me një thirrje?
  • Zbatoni një ndryshim simetrik të dy koleksioneve duke përdorur metodat e Koleksionit (addAll(), removeAll(), retainAll()).
  • Krahasoni Enumeration dhe Iterator.
  • Si lidhen Iterable dhe Iterator?
  • Cila është marrëdhënia midis Iterable, Iterator dhe "for-seach" të prezantuar në Java 5?
  • Krahasoni Iterator dhe ListIterator.
  • Çfarë ndodh nëse telefonoj Iterator.next() pa "pytur" Iterator.hasNext()?
  • Çfarë ndodh nëse telefonoj Iterator.next() përpara se të thërras Iterator.hasNext() 10 herë? A më mungojnë 9 artikuj?
  • Nëse kam një koleksion dhe një përsëritës fëmijë, a do të ndryshojë koleksioni nëse telefonoj iterator.remove()?
  • Nëse kam një koleksion dhe një përsëritës fëmijë, a do të ndryshojë përsëritësi nëse telefonoj koleksion.remove(..)?
  • Pse shtuan ArrayList nëse kishte tashmë një Vektor?
  • Implementimi i klasës ArrayList ka këto fusha: Object elementData, int size. Shpjegoni pse ju duhet të ruani madhësinë veçmas kur mund të merrni gjithmonë elementData.length?
  • A është LinkedList një listë me një lidhje të vetme, të lidhur dyfish ose me katër lidhje?
  • Cila është koha më e keqe për metodën contain() për një element që është në një LinkedList (O(1), O(log(N)), O(N), O(N*log(N)), O( N*N) )?
  • Cila është koha më e keqe për metodën contain() për një element që është në një ArrayList (O(1), O(log(N)), O(N), O(N*log(N)), O( N*N) )?
  • Cila është koha më e keqe për metodën LinkedList add() (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?
  • Cila është koha më e keqe për një metodë ArrayList add() (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?
  • Sa elementë ndahen në memorie kur thirret ArrayList.add()?
  • Sa elemente ndahen në memorie kur thirret LinkedList.add()?
  • Vlerësoni sasinë e memories për të ruajtur një bajt primitiv të tipit në LinkedList?
  • Vlerësoni sasinë e memories për të ruajtur një bajt primitiv të tipit në ArrayList?
  • Shtoj një element në mes të Listës: list.add(list.size()/2, newElem). Për kë është më i ngadalshëm ky operacion - për ArrayList apo për LinkedList?
  • Si të përsërisni elementët e LinkedList në rend të kundërt pa përdorur marrjen (indeksin) e ngadaltë?
  • Si të merrni një listë me të gjithë elementët përveç 3 të parës dhe të fundit me një thirrje nga Lista?
  • A mund të kenë objekte të ndryshme në memorie (ref0 != ref1) ref0.hashCode() == ref1.hashCode()?
  • A mund të kenë objekte të ndryshme në memorie (ref0 != ref1) ref0.barabartë(ref1) == true?
  • A mundet që referenca të ndryshme për të njëjtin objekt në memorie (ref0 == ref1) të kenë ref0.equals(ref1) == false?
  • Ekziston një pikë e klasës (int x, y;). Pse një kod hash i formës 31 * x + y preferohet nga x + y?
  • Nëse klasa Point(int x, y;) është "e saktë" për të zbatuar metodën e barabartë (kthejeni ref0.x == ref1.x && ref0.y == ref1.y), por bëni kodin hash si int hashCode( ) (kthehu x;), a do të vendosen dhe do të merren saktë pikat e tilla nga HashSet?
  • Equals() gjeneron një lidhje ekuivalence. Cila nga vetitë ka një lidhje e tillë: komutativitet, simetri, refleksivitet, shpërndarje, asociativitet, kalimtar?
  • A është e mundur të zbatohet e barabartë (Objekt që) (kthejeni këtë.hashCode() == that.hashCode()) si kjo?
  • barabartë kërkon kontrollimin nëse argumenti (equals(Object that)) është i njëjti lloj si vetë objekti. Cili është ndryshimi midis this.getClass() == that.getClass() dhe atij shembulli të MyClass?
  • A është e mundur të zbatohet metoda e barabartë e klasës MyClass si kjo: klasa MyClass (public boolean barabartë (MyClass that) (ktheje këtë == atë;))?
  • A do të funksionojë HashMap nëse të gjithë çelësat kthehen int hashCode() (kthimi 42;)?
  • Pse shtuan HashMap nëse tashmë kishte një Hashtable?
  • Sipas Knuth dhe Kormen, ekzistojnë dy zbatime kryesore të tabelës hash: bazuar në adresimin e hapur dhe bazuar në metodën e zinxhirit. Si zbatohet HashMap? Pse e bënë këtë (sipas mendimit tuaj)? Cilat janë të mirat dhe të këqijat e secilës qasje?
  • Sa klikime në lidhje ndodhin kur bëni HashMap.get(kyç) në një çelës që është në tabelë?
  • Sa objekte të reja krijohen kur shtoni një element të ri në një HashMap?
  • Si funksionon një HashMap kur përpiqeni të ruani dy elementë në të me anë të çelësave me të njëjtin kod hash, por për të cilët është i barabartë == false?
  • HashMap mund të degjenerojë në një listë edhe për çelësat me hashCode të ndryshëm. Si është e mundur kjo?
  • Cila është koha më e keqe për një metodë të marrë(kyç) për një çelës që nuk është në tabelë (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?
  • Cila është koha më e keqe për një metodë të marrë(kyç) për një çelës që është në një tabelë (O(1), O(log(N)), O(N), O(N*log(N)), O (N*N))?
  • Shpjegoni kuptimin e parametrave në konstruktorin HashMap (int fillestarCapacity, float loadFactor).
  • Cili është ndryshimi midis HashMap dhe IdentityHashMap? Për çfarë shërben IdentityHashMap? Si mund të jetë i dobishëm zbatimi i serializimit ose klonimit?
  • Cili është ndryshimi midis HashMap dhe WeakHashMap? Për çfarë është WeakHashMap?
  • WeakHashMap përdor WeakReferences. Pse të mos krijoni një SoftHashMap në SoftReferences?
  • WeakHashMap përdor WeakReferences. Pse të mos krijoni një PhantomHashMap në PhantomReferences?
  • Krijoni një HashSet nga një HashMap (përdorni vetëm çelësa të shumtë, jo vlera të shumta).
  • Bëni HashMap nga HashSet (HashSet >).
  • Krahasoni ndërfaqet java.util.Queue dhe java.util.Deque.
  • Kush e zgjat kë: Radha zgjat Deque, ose Deque zgjat radhën?
  • Pse LinkedList zbaton List dhe Deque?
  • Cili është ndryshimi midis klasave java.util.Arrays dhe java.lang.reflect.Array?
  • Cili është ndryshimi midis klasave java.util.Collection dhe java.util.Collections?
  • Shkruani një program pa filetim që bën që një koleksion të hedhë një Përjashtim të Modifikimit Concurrent.
  • Çfarë është "sjellja e shpejtë e dështimit"?
  • A ka një klasë të veçantë java.util.EnumSet për grupe enums? Per cfare? Pse autorëve nuk u pëlqeu HashSet ose TreeSet?
  • java.util.Stack - Konsiderohet "i zhvlerësuar". Çfarë rekomandohet për ta zëvendësuar atë? Pse?
  • Cili koleksion zbaton disiplinën e shërbimit FIFO?
  • Cili koleksion zbaton disiplinën e shërbimit FILO?
  • Jep një shembull kur një koleksion hedh një UnsupportedOperationException.
  • Pse nuk mund të shkruani "ArrayList numrat = ArrayList i ri ();" por mund të "Listo numrat = ArrayList i ri ();"?
  • LinkedHashMap - çfarë është kjo "bishë"? Çfarë ka nga LinkedList dhe çfarë ka nga HashMap?
  • LinkedHashSet - çfarë është kjo "bishë"? Çfarë është në të nga LinkedList dhe çfarë është nga HashSet?
  • Ata thonë se është e lehtë të bësh një cache të thjeshtë me "politikën e pavlefshmërisë" në LinkedHashMap, a e dini se si?
  • Çfarë ju lejon të bëni PriorityQueue?
  • Cilat janë ndryshimet midis java.util.Comparator dhe java.lang.Comparable?

Java 8.

  • Çfarë është një lidhje simbolike?
  • Cili është ndryshimi midis I/O dhe NIO?
  • Cilat veçori të NIO njihni?
  • Cilat janë llojet e rrymave I/O?
  • Emërtoni klasat kryesore të rrymave hyrëse/dalëse.
  • Si ndryshojnë OutputStream, InputStream, Writer, Reader dhe çfarë kanë të përbashkët?
  • Cilat nënklasa të klasës bazë InputStream e dini se për çfarë shërbejnë?
  • Çfarë dini për RandomAccessFile?
  • Cilat mënyra të aksesit të skedarëve ka RandomAccessFile?
  • Cilat janë nënklasat e klasës bazë OutputStream dhe a e dini se për çfarë shërbejnë?
  • Për çfarë përdoret PushbackInputStream?
  • Për çfarë përdoret SequenceInputStream?
  • Cilat nënklasa të klasës bazë Reader e dini se për çfarë shërbejnë?
  • Cilat nënklasa të klasës bazë Writer e dini se për çfarë shërbejnë?
  • Cila është rruga absolute dhe rruga relative?
  • Në cilat paketa janë klasat e transmetimit?
  • Çfarë dini për klasat e superstrukturës?
  • Cila klasë shtesë ju lejon të lexoni të dhëna nga rrjedha e bajtit të hyrjes në formatin e llojeve primitive të të dhënave?
  • Cila klasë shtesë ju lejon të shpejtoni leximin / shkrimin përmes përdorimit të një buffer?
  • Cilat klasa ju lejojnë të konvertoni rrjedhat e bajtit në rrjedha të karaktereve dhe anasjelltas?
  • Cili është ndryshimi midis klasës PrintWriter dhe klasës PrintStream?
  • Cila klasë është krijuar për të punuar me elementët e sistemit të skedarëve?
  • Çfarë karakteri është kufiri kur specifikoni një shteg në sistemin e skedarëve?
  • Cilat metoda të klasës File dini?
  • Çfarë dini për ndërfaqen FileFilter?
  • Cilat klasa ju lejojnë të arkivoni objekte?

  • Në cilin objekt ndodh sinkronizimi kur thirret një metodë e sinkronizuar statike?
  • Për çfarë përdoret fjala kyçe e paqëndrueshme, e sinkronizuar, kalimtare, vendase?
  • Çfarë do të thotë përparësia e fijeve?
  • Cilat janë fijet e demonëve në Java?
  • Çfarë do të thotë të qetësosh rrymën?
  • Në cilat gjendje mund të jetë një thread në java? Si funksionon në të vërtetë një transmetim?
  • Cili është ndryshimi midis dy ndërfaqeve për zbatimin e detyrave Runnable dhe Callable?
  • Dallimet midis CyclicBarrier dhe CountDownLatch?
  • Çfarë është një kusht garë?
  • Si të ndaloni një fije?
  • Çfarë ndodh kur ndodh një përjashtim në një thread?
  • Çfarë është një ndryshore ThreadLocal?
  • Çfarë është FutureTask?
  • Dallimi midis ndërprerë dhe është i ndërprerë?
  • Pse metodat e pritjes dhe njoftimit thirren në një bllok të sinkronizuar?
  • Çfarë është një pishinë me fije?
  • Dallimet midis bllokimit të gjallë dhe bllokimit?
  • Si të kontrolloni nëse një fije mban një bllokim?
  • Si të merrni një hale fije?
  • Cili cilësim JVM përdoret për të kontrolluar madhësinë e grumbullit të një thread?
  • Dallimet midis sinkronizuar dhe ReentrantLock?
  • Çfarë është një semafor?
  • Çfarë ndodh nëse radha e grupit të fillesave është tashmë e mbushur dhe ju dorëzoni një detyrë?
  • Dallimet midis metodave submit() dhe execute() të një grupi thread?
  • Çfarë është një metodë bllokimi?
  • Çfarë është ReadWriteLock?
  • Çfarë është kyçja e dyfishtë e kontrolluar e Singleton?
  • Çfarë është korniza Fork/Join?
  • Forca është një lumë nga i cili shumë mund të pinë, dhe trajnimi i Jedi-ve nuk është mënyra e vetme për të nxjerrë prej tij." - Luke Skywalker Të gjitha koleksionet e librave të mbetura pas. Cilin prej tyre të lexoni, çfarë jo - varet nga ju. Tani ju ka mbetur vetëm një synim: të gjeni një punë dhe të ndërtoni një karrierë pa shkelur një grabujë. Artikulli i fundit është i ndarë në seksione: - Para punës - Intervistë - Gjatë punës Ka shumë mendime personale në këtë pjesë, ndaj ju lutem mos i nxirrni frazat jashtë kontekstit dhe trajtojeni si një bisedë të sinqertë me një mik të vjetër :).

    Para punës

    Më poshtë janë dhjetë klishetë më të njohura që lindin kur shpirti tërhiqet nga programimi, por rrethana të caktuara pengojnë personin. Detyra ime është të përpiqem të ndaloj dyshimet tuaja dhe t'ju vendos për një mënyrë pozitive të të menduarit. Nëse po e lexoni këtë artikull, jeni më larg se sa mendoni! Mendërisht, ju tashmë jeni aty ku duhet të jeni, dhe nëse tashmë keni lexuar disa libra, atëherë gjysma e rrugës tashmë ka kaluar. Prandaj, mos dyshoni - kjo është fati i të dobëtve. Vetëm përpara! Tashmë më mirë? Atëherë le të shkojmë! "Unë nuk kam arsim" Kur hyra në akademinë e një prej firmave të mëdha të outsourcing, intervistuesit me butësi më la të kuptohet se ata nuk ishin aspak të interesuar për diplomën, kështu që pyetjet ishin specifike - në OOP dhe në Java bazë. Natyrisht, do të hasni në vende të lira të punës ku ekzistojnë ato. arsimi do të jetë një kërkesë e qartë. Dua të them vetëm se mungesa e tij nuk është pengesë këto ditë. Shumë zyra të huaja kërkojnë BS / MS Shkenca Kompjuterike ose, vëmendje, përvojë përkatëse. Jo bindës? Ndoshta do të inkurajoheni nga fakti që nuk kam arsim teknik;), por kjo absolutisht nuk më pengoi të fitoja përvojë në kompani të mëdha. Më pyesni tani çfarë do të bëja nëse do të mund ta ktheja kasetën prapa? Sigurisht, do të shkoja në KPI / NAU, por nuk do të pikëllohesha shumë nëse nuk do të hyja. Mos u mërzitni për këtë. Koha do të kalojë - ju mund të merrni një kore në 40 nëse dëshironi - por tani për tani, përqendrohuni të bëheni një zhvillues i ri këtu dhe tani. "Do të ketë njerëz më të zgjuar se unë" Gjithmonë do të ketë njerëz më të zgjuar, më të zgjuar, më fleksibël, më të talentuar se ju, dhe çdo punë nuk bën përjashtim. Ky fakt absolutisht nuk të jep të drejtën të devijosh nga qëllimi. Ndoshta diku në anën tjetër të globit është një djalë i vogël nga Japonia që shumëzon dhe ndan numrat më shpejt se ju, dhe ndonjë gjyshe nga Çekia shkruan në tastierën e një celulari më shpejt se çdo adoleshent. Por ju nuk mendoni për këtë, apo jo? Pra, pse duhet të kujdeseni për njerëzit me të cilët do të punoni kur të zgjidheni? Në disa mënyra, kolegët tuaj të ardhshëm do t'ju tejkalojnë, në një farë mënyre do të humbasin nga ju. Kjo është mirë! Kryq. "Unë nuk mendoj se mundem" Epo, para së gjithash, askush nuk tha se do të ishte e lehtë, por kjo nuk do të thotë aspak se qëllimi juaj nuk është i realizueshëm. Asgjë nuk ju pengon thjesht ta provoni, edhe nëse aktualisht jeni duke punuar si kontabilist ose asistent shitjesh. Ejani pas një dite pune dhe uluni për të studiuar. Nëse pas një kohe shihni një përparim, kjo është një shenjë se po ecni në drejtimin e duhur. Mos u ndal! Nëse jeni edhe pak i interesuar për këtë dhe ju jepet, atëherë nuk di një pikë të vetme që mund të më bindë se nuk jeni të denjë për të. "Unë jam dembel" Përtacia është vetëm mungesë motivimi. Nëse vëreni se pjesën më të madhe të kohës tuaj të lirë, në vend që të studioni dhe të mos luftoni jashtë kursit, po bëni marrëzi mbeturina - unë nxitoj t'ju njoftoj se, ka shumë të ngjarë, puna e një programuesi nuk është e juaja. Të paktën jo tani. Disa e quajnë dembelizmin një mëkat, një sëmundje, kolerën e epokës moderne së bashku me obezitetin. Lëreni këtë biznes histerikëve të karrierës. Sipas mendimit tim, gjithçka përreth në këtë jetë është e ngopur me iluzionin e luftës dhe konkurrencës: kush është më i lartë, kush është më i fortë, kush është më i pasur. Kush ka një makinë më të freskët, kush ka një rrogë më të lartë në ekip, kush e shtyp më fort shtangën në palestër, cila nga vajzat u martua më herët dhe pati fëmijë - kjo të bën të sëmurë, si ushqimi i shpejtë me erë. Njerëzit pushuan së jetuari dhe shijuari jetën, duke ndjekur ëndrrat e tyre, duke shkëmbyer zonën e tyre të rehatisë me një zgjedhje midis Pepsit dhe Coca-Cola. Për mua përtacia është e mirë, është thjesht e mrekullueshme. Ky është një funksion i zakonshëm mbrojtës i trupit tuaj për të kursyer kohë dhe energji për gjërat që janë të padobishme për të. Një person u krijua për të qenë i lirë, kështu që nëse jeni dembel - ndaloni së përpjekuri të ngrini bythën nga divani - ndoshta ai është në vendin e tij tani :). "Unë shkoj atje për para" Nëse mbledhim zhvillues dhe themi: tani e tutje, paga juaj do të jetë 3-4 mijë hryvnia për çdo nivel, dhe testuesit do të vazhdojnë të marrin të njëjtat tarifa, atëherë pyetja do të jetë e ndryshme: jo sa do të bombardohen, por sa programuesit pas këtij lajmi do të mbeten vetëm programues. Shumë njerëz futen në IT për shkak të brumit. Paga e përkthyer nga dollarë, djathëra dhe një DSLR e shtrenjtë. Pavarësisht se sa shumë kam punuar me njerëz, bisedat për këtë kanë rrëshqitur gjithmonë. Nuk po them se kjo është e keqe, thjesht dua që ju të mos përpiqeni të bindni veten se po dilni nga qëllimet thjesht shpirtërore për të ndryshuar botën për mirë. Përpara se të gjeja një punë si junior, e dija se cilat ishin pagat e të moshuarve, drejtuesve të teknologjisë - madje edhe të mesit - dhe këto mendime vetëm më frymëzuan: në kohën time, përpara se të punoja si programues, mund të ëndërroja vetëm për të tillë. shifrat. Quajini këto gjëra me emrat e tyre të duhur dhe mos u turpëroni për këtë. "Unë nuk mendoj se është e imja" E kujt atëherë? E dini, është e lehtë të kontrollosh. Hapni vëllimin e parë të Hortsmann dhe filloni të lexoni, duke shkruar kodin nga shembujt. Nëse nuk jeni të mërzitur dhe nuk po shënoni kohë në të njëjtin kapitull për javën e dytë, hiqni dyshimet tuaja. Studimi i specialiteteve teknike është një gjë konsistente. Nuk mund të shkosh te B pa e ditur A, por gjithmonë do të kesh mundësinë të kthehesh pas një kapitulli dhe të forcosh themelin. Shkoni përpara. "Ka shumë si unë" Gjithmonë ka konkurrencë për një vend. Unë nuk argumentoj, për shembull, tani kjo shifër është 300-400 testues pa përvojë, ose edhe më shumë për një vend. Po, kjo është një e vërtetë e hidhur, por, nga ana tjetër, edhe me tregues të tillë nuk mund të gjej një pikë mjaft serioze. Po, të paktën 100500 në vend !! Gjithmonë keni mundësinë të fitoni përvojë në projektet tuaja: ndërtoni një lloj shërbimi, një program desktopi, përdorni të gjithë grumbullin që dini - dhe tashmë jeni duke bërë gunga, dhe pjesa tjetër, përveç dërgimit të CV-së tuaj, mos bëni asgjë. tjetër. "Askush nuk i përgjigjet CV-së sime" Në vazhdim të paragrafit të mësipërm. Me shumë mundësi, për specialistët e ardhshëm të IT-së pa përvojë, të qenit në gjendje të shkruani një rezyme të bukur është e mirë, por kur ka shumë njerëz për një vend të lirë pune, shumë rezyme janë shumë të ngjashme me njëra-tjetrën: sigurisht, mund të dërgoni një foto me një qafë (nëse një vajzë) ose shkruani shumë teknologji , të cilat ju vetë i dini vetëm nga Wikipedia. Në të dyja rastet, HR thjesht nuk do të kujdeset: nëse duhet të ketë një person në vendin e lirë të projektit i cili, për shembull, njeh AWS, atëherë ata do të kërkojnë AWS në rezyme. Merrni parasysh një pikë tjetër të rëndësishme, si rekomandimet e kolegëve. Kjo është dhimbja e çdo personi që nuk ka njohje të tilla, sepse pjesa e luanit të juniorëve merret prej andej (nëse personi, me rekomandim, nuk është idiot, sigurisht). Zakonisht, theksoj, një person aktiv adekuat i gatshëm për të mësuar, madje edhe për ushqim, merret për pozicionin e juniorit. Dhe nëse një kandidat i tillë dështon, atëherë ka më shumë gjasa të jeni ju i radhës. Epo, ndërkohë që pjesa tjetër po intervistohet, ju keni shumë fusha ku mund të qetësoheni: burim i hapur, enigma në internet dhe ndoshta punë e pavarur. "Nuk do ta kaloj intervistën / dua të punoj në një kompani specifike" Po, ka shumë të ngjarë, intervista e parë do të jetë një dështim, por përvoja që merrni është e paçmueshme. Me çdo intervistë pasuese, do të bëheni më të sigurt dhe më të shkathët. Ndërsa tani më kujtohet i pari ... Zot, për çfarë marrëzie po flisja ?! Sa e turpshme ishte të largohesha pas tij (e mbaj mend atë vampirin që më buzëqeshi në fytyrë), por kur u ktheva në shtëpi dhe e mendova mirë, kuptova se ishte një mësim i mrekullueshëm. Pas tij, të gjitha ngjarjet e mëvonshme të ngjashme ishin të mbushura me lehtësi dhe besim. Askush nuk ka vdekur, po kërkojnë njerëz si unë, kështu që do të vij. Besoni në veten tuaj! Nëse dëshironi në mënyrë specifike për një kompani të caktuar, atëherë unë mendoj se nuk do t'ju zbuloj një hak jete të njohur në mjedisin tonë, por megjithatë: përpara se të organizoni një takim me këtë zyrë, kaloni një intervistë me konkurrentët para kësaj. Ndoshta do t'ju ofrohet diçka që nuk do ta refuzoni, ose kushtet do të jenë më të papritura. Një gjë e di me siguri: nuk do të pendoheni. "Unë jam i mirë në këtë punë" E dini, ekziston kjo thënie e vjetër: Le mieux est I'enneini du bien ("Më i miri është armiku i së mirës"). Ndoshta puna juaj nuk është vendi më i keq, por po, shefi është një dhi, kështu që çfarë? Ose, për shembull, viti i tretë pa bonus, por një pagë e qëndrueshme, veçanërisht pasi unë jam tashmë mbi 30. Në një farë mase, mund të jetë kështu, vetëm mos harroni se keni një jetë dhe nuk duhet shpenzuar për zhgënjime, për rehati imagjinare, kur ka kaq shumë gjëra interesante përreth, dhe e gjithë jeta nuk mjafton për të kuptuar. Mos kini frikë të jeni më të mirë, mos kini frikë të jeni më të mirë. Mos dëgjoni askënd, shkoni te qëllimi me këmbëngulje nëse e dini se kjo është ajo që vërtet dëshironi të bëni. Mos kini frikë të ndryshoni!

    Intervistë

    Në përgjithësi, mund t'i gjeni të gjitha në internet ose të pyesni me miqtë, por mendoj se nuk do të jetë e tepërt. Më poshtë është një shembull i një interviste për një zhvillues të ri Java, siç do të ishte tani nëse unë do të isha intervistuesi. Pyetjet mund të jenë çdo gjë, thjesht u përpoqa të mbledh diçka mesatare për spitalin. Le të pretendojmë se jeni me fat. Skema standarde Hapi 1. Një rekrutues ju thërret dhe ju organizoni një intervistë me të, për shembull, nesër në orën 11:00. Hapi 2 Mbërritni herët, pasi ora 11:00 ka shumë të ngjarë të mos jetë koha për ju, por për zhvilluesit, të cilët kanë një lloj dhome të rezervuar në të cilën do të torturoheni. Është sjellje e mirë që çdo rekrutues të paralajmërojë për këtë. Hapi 3 Në fakt, duke filluar nga hapi 3, të gjitha pikat mund të përzihen, sepse intervistat mund të kryhen në mënyra të ndryshme. Për shembull, këtu mund të pyeteni për gjërat elementare, nga jeni, pse jeni me ne, etj. Është e mundur që vetë HR mund ta bëjë këtë, dhe sigurisht, është e mundur që në anglisht. Epo, varet nga kompania. Hapi 4 Jeni të ftuar në një sallë mbledhjesh, ku do të bisedoni me një, dy, tre persona, njëri prej të cilëve do të jetë ose drejtues i lartë ose teknik i cili do të punojë me ju në të ardhmen, ndër të tjerët mund të ketë një Scrum master, zhvillues të tjerë ose HR. Intervistohesh për pak, pastaj të shtrëngojnë dorën dhe të lëshojnë. Hapi 5 Ndoshta do të jetë dita tjetër, ose ndoshta menjëherë pas hapit 4 - do të keni një bisedë me një klient të huaj (nëse ka), ose ndoshta ai do të kryejë një intervistë vetë. Siç mund ta shihni, ka shumë opsione. Diku ka klientë, diku ka edhe intervistë telefonike. Ky është vetëm një shembull. Shembull i një interviste teknike për një zhvillues Junior Java Më vjen shumë keq për nën-zhvilluesit që lexojnë diçka të zgjuar në mënyrë që të mbyten / shtypen / shfaqen para aplikantit për një intervistë. Nëse e shihni që një person i tillë është para jush dhe ndjeni presion dhe tension prej tij, dërgoni menjëherë te tre qesharake, sepse pas një kalimi të suksesshëm me këtë kretin do t'ju duhet të punoni. Mos i shpërdoroni nervat tuaja të çmuara. Intervista, para së gjithash, duhet të bëhet me qëllim që të zbulohet se çfarë di kandidati dhe jo çfarë nuk di. Natyrisht, nëse keni nevojë për një person që di diçka specifike - pyesni atë, mos e mundoni me gjëra të kota që nuk i përdorni në projekt. Bëhuni njerëzor, në fund të fundit! Më poshtë janë pyetjet e përafërta që mund të ndeshen në një intervistë. 5 pyetje për secilën teknologji. OOP 1. Jepni një shembull të polimorfizmit nga jeta reale? Cilat janë përfitimet? Disavantazhet? Shkruani një kod të thjeshtë. 2. Çfarë është një ndërfaqe? Klasa abstrakte? Pse na duhen ndërfaqe nëse mund të shkruani marrëzi gjithçka me klasa (një provokim i vogël) ?. E njëjta gjë është e vërtetë për një klasë abstrakte. Cilat janë metodat e paracaktuara në Java 8? 3. Ndërtoni një hierarki klasash mbi një shembull specifik të një baze të dhënash ose programi imagjinar (ekziston një listë e klasave të ndryshme të punëtorëve nga baza e të dhënave) dhe ndërveprimin midis tyre (agregimi, përbërja). 4. Si ndryshon përbërja nga grumbullimi (është-a, ka-a)? 5. Si mund ta shmangni ndalimin e trashëgimisë së shumëfishtë në Java? JDK/JRE 1. Si ndryshon JDK nga JRE? Çfarë është JVM? 2. Çfarë është një klasë dhe për çfarë shërben? Si, për shembull, të ngarkohen klasa të tjera në rrugën e klasës? 3. Çfarë dini për classloader? 4. Na tregoni për javadoc? Për çfarë është? 5. Çfarë është JAR, WAR? Java e zakonshme 1. Cili është ndryshimi midis metodave statike dhe metodave jostatike? Çfarë është përfundimtare? 2. Çfarë është boks-unboxing? bajt b = 127, b++, cili është rezultati dhe pse? 3. Çfarë janë mbështjellësit, për çfarë shërbejnë? 4. Çfarë duhet të bëj për të krijuar shënimin tim? Çfarë është mbingarkesa? 5. Pse klasa String është finale? Çfarë bën metoda intern()? Strukturat e të dhënave 1. Na tregoni për strukturën e API-së së koleksioneve në Java? A keni punuar tashmë me Stream API? 2. Cili është ndryshimi midis ArrayList dhe LinkedList? Ku është më mirë të përdoret ArrayList dhe ku është LinkedList? 3. Na tregoni si funksionon HashMap? Cilat janë veçoritë e punës me TreeSet, HashSet? Keni përvojë me koleksionet Guava? 4. Vargjet në Java, një shembull i një grupi dydimensional. 5. hashCode, është i barabartë në shembullin HashMap? Konkurrenca 1. Çfarë është një proces? Rrjedha? Si të krijoni një fije? Çfarë sinkronizohet? Si ta kuptoni këtë apo atë pjesë të kodit të sigurt të fillit? 2. Çfarë është Thread.sleep, si dhe prisni, njoftoni, jepni? 3. Jepni një shembull të një bllokimi? 4. Koleksionet kur punoni me multithreading. 5. Operacionet ThreadLocal dhe Atomike SQL/JDBC 1. Në një shembull specifik, merrni nga baza e të dhënave të Përdoruesve atë paga e të cilit është më e madhe se 5000. 2. Shembuj të BASHKIMIT TË BRENDSHËM, BASHKIMI I JASHTËM, Rendit sipas, Grupi sipas. 3. Pse më duhet një drejtues JDBC? Shembuj. 4. Tregoni gjithçka që dini për ResultSet, disa shembuj. 5. Shkruani një DAO të thjeshtë duke përdorur RS. JPA / Hibernate 1. Cilat janë avantazhet dhe disavantazhet e JPA? 2. Çfarë është një EntityManager? entitet? 3. Kriteret në JPA/Hibernate. 4. Një-për-një, Shumë-për-Shumë në JPA/Hibernate 5. Si do ta bënit një JOIN në Hibernate? HQL? Pranvera 1. Çfarë është DI/IoC? Përparësitë. 2. Çfarë është Konteksti i Aplikimit? Fasule? 3. Cilat janë llojet e inicializimit të IoC? 4. Singleton, Prototip në pranverë? Pranvera e bazuar në shënime? 5. Cikli jetësor i fasules? init-metod, shkatërroj-metod? @PostConstruct, @PostDeploy? Maven 1. Fazat kryesore të maven, cikli i jetës. 2. Si të vraponi maven me teste, pa teste? Çfarë është arketipi, varësia mvn? 3. Profilet në maven, si të krijoni, si të ekzekutoni. 4. Çfarë është snapshot në maven? Depo qendrore/të largëta? 5. Shtojcat në mvn, parimi i funksionimit, disa shembuj. Algo 1. Koncepti i algoritmit, shpejtësia e tij, Big-O-Notation. 2. Si të gjeni elementin e mesëm në një LinkedList me një hap? 3. Shkruani një Stack primitive? Cili është ndryshimi midis Stack dhe Queue? LIFO, FIFO? 4. Renditja e shpejtë, renditja e bashkimit. 5. Shkruani një program që kontrollon nëse një numër është palindrom. Jam dakord, ndoshta shiriti është i përkulur pak më shumë drejt mesit sesa i riu, por mendoj se një përgatitje e tillë definitivisht nuk do t'ju dëmtojë. Mundohuni të thelloheni në secilën pyetje. Nga rruga, shumë drejtime në Java nuk tregohen këtu, ju lutemi merrni parasysh.

    Gjatë punës

    Këtu janë rekomandime të vogla për ata zhvillues të rinj/të mesëm që tashmë janë vendosur. Këto këshilla të thjeshta mund të jenë të dobishme për ju, ashtu siç më ndihmuan mua me radhë. Mos jini kokëfortë Ndaloni së provuari pikëpamjen tuaj, edhe nëse është joshëse afër së vërtetës. Tashmë e keni vënë re se jeni në një mosmarrëveshje për një kohë të gjatë, që do të thotë se në anën tjetër të barrikadave është një gomar i zakonshëm që ka vetëm dy mendime në jetë: të tijin dhe atë të gabuar. Kemi një numër të pabesueshëm njerëzish kokëfortë që qëndrojnë deri në fund, për sa kohë që egoja e tyre nuk tronditet. Dhe këta nuk janë vetëm kolegët tuaj, ata janë thjesht kudo - në minibus, në dyqan, të afërm, miq të ngushtë - nuk mund të ikësh ose të fshihesh prej tyre. Ju duhet të ndërveproni disi me ta, edhe nëse e kuptoni që një person po flet marrëzi të hapura. Për më tepër, e njëjta gjë mund të ndodhë me ju. Jam dakord, gjërat e thjeshta mund t'i shpjegohen edhe një njeriu kokëfortë, por po sikur të flasim për çështje arkitekturore në një projekt apo një mendim personal? Harrojini këto mbeturina - jini fleksibël. Unë kam shumë respekt për njerëzit që mund të pranojnë se e kanë gabim, para të gjithëve. Është kjo cilësi që do të jetë e dobishme për ju si një specialist i ri - është e vështirë të përballesh me një person të hapur, veçanërisht kur ai pranon se po mëson dhe ka të drejtë të bëjë gabime. Mos u vono Nuk ka rëndësi nëse është një periudhë prove apo vetëm një e premte, në të cilën të gjithë shënojnë dhe arrijnë në 11. Një gjë tjetër është e rëndësishme: përpikëria është një tipar i një profesionisti që fiton pikë shtesë për vete. Dhe pikët shtesë për një person pa përvojë nuk do të dëmtojnë, apo jo? Mundohuni të mos vonoheni dhe të largoheni me ndershmëri nga puna pasi keni punuar 8 orë. Mos abuzoni me vlerësimet Fatkeqësisht, kjo është një pamje shumë e zakonshme në të cilën unë dikur e kam gjetur veten në të kaluarën. Zhvilluesi i vuri vetes 8-16 orë për të përfunduar detyrën dhe papritur e përfundoi atë në 3-4 orë. Orët e mbetura i kalon në kohën e tij personale në formën e pingpongut, siç ndodhi me mua, ose duke parë youtube dhe argëtime të tjera. Nga pikëpamja juridike duket se kanë rënë dakord, por nga pikëpamja njerëzore po i privoni vetes gjëra shumë të rëndësishme: 1. Qëndroni në vend, pasi po mbushni kohën e tepërt me gjëra të panevojshme; 2. Ju nuk zhvilloheni sepse nuk e informoni menaxhmentin për përparimin tuaj të shpejtë, askush nuk e di që ju po i kryeni detyrat më shpejt se sa pritej; 3. Ju filloni të mbivlerësoni vazhdimisht sasinë mesatare të kohës për vlerat, është thjesht një rrugë drejt askund. Lini mënjanë kohë për të studiuar Mundësia për të mbetur prapa motorit është jorealisht e lartë, ndaj mbani në mend se teknologjia dhe versionet e reja po zhvillohen shumë shpejt. Abonohu ​​tek ungjilltarët Java e ditëve tona, lexoni përmbledhjet e Java-s dhe në përgjithësi interesohuni, mësoni gjëra të reja. Kjo do t'ju ndihmojë të mbani markën tuaj dhe të zhvilloni. Ndihmo te tjeret Mos kini frikë të ndihmoni të tjerët, edhe nëse ata janë po aq të gjelbër sa ju. Së pari, ju do të forconi shumë njohuritë tuaja dhe së dyti, do të merrni respekt në sytë e të tjerëve dhe ata do t'ju ndihmojnë në të njëjtën kohë. Në një mjedis të tillë lindin skuadrat më të mira, si dhe rritja shumë e shpejtë teknike dhe personale. Shkoni për sport. Keni një hobi Jo seriozisht. Jo vetëm që njerëzit e përfshirë në sport duken dhe ndihen më mirë, por edhe funksioni i tyre i trurit është në krye! Në këtë kontribuojnë skolioza, pjesa e poshtme e shpinës, mbipesha, problemet e ndryshme me organet e brendshme - mbledhjet gjatë gjithë kohës në kompjuter, madje edhe jashtë punës. Nëse nuk mund të luani sport (gjë për të cilën dyshoj), përdorni mashtrime të vogla të jetës: punoni në këmbë herë pas here, lini dy ndalesa herët dhe ecni për në punë. Dhe po, ec më shumë. Ekziston gjithashtu një rrezik i djegies nëse programimi ju merr shumë më tepër kohë sesa 40 orë në javë. Hobi personale do të vijnë në shpëtim - për shembull, fotografia, muzika, etj. Gjeni kohë të rregullt për spiritualitetin. Bilanci në jetën tuaj personale Kur një e dashur/grua thotë: “laptop ose unë”, duhet të mendoni seriozisht se çfarë vendi zë programimi në jetën tuaj. Nga ana tjetër, kur filloni udhëtimin tuaj në IT, duhet t'i shpjegoni qartë shpirtit tuaj binjak se tani duhet të studioni shumë për të arritur më shumë. Shpresoj ta kuptojnë. Epo, ju përpiqeni të balanconi dhe shpërndani saktë kohën tuaj. Shko përtej Jini proaktiv, nëse mendoni, për shembull, se mund të ndani njohuri ose të keni tema interesante, pse të mos organizoni kurse të vogla brenda kompanisë për të tjerët? Mos kini frikë të kontribuoni në projekte të mëdha me burim të hapur nëse dini si të ndihmoni. Nëse doni të shkruani një lojë, projekt social ose një ide tjetër - bëjeni, bëjeni, bëjeni! Mos qëndroni në vend, gjithmonë kërkoni mënyra se si mund të zhvilloheni. Jini konkurrues Shiko për tendencat e reja, qëndroni të përditësuar me tendencat që po ndodhin në komunitetin Java. Për shembull, nuk do të jetë e tepërt nëse herë pas here monitoroni vendet e lira në Java në DOU, por jo për t'u larguar nga puna, por për të ditur se cilat teknologji mbeten të rëndësishme dhe cilat po zhduken ngadalë nga tregu. . Gjithashtu përpiquni të merrni kurse në Coursera, Udacity, etj., Eksploroni horizonte të reja. Dhe madje edhe anglisht: përpiquni të shikoni filmat / shfaqjet tuaja të preferuara televizive në origjinal me titra për të përmirësuar aftësitë tuaja të bisedës, shkarkoni disa aplikacione interesante për të mësuar gjuhën (për shembull, LinguaLeo) dhe, në fund, shkoni në kurse .

    konkluzioni

    Epo, projekti im i vogël DOU po i vjen fundi. Të dashur miq, ju uroj sinqerisht të gjeni një punë dhe shpresoj që gjithçka që kam përshkruar në këto 7 artikuj do të jetë një udhëzues i vlefshëm për ju, edhe për ata që tashmë janë duke punuar si zhvillues Java. Të rinjtë e ardhshëm, mbani mend se asgjë nuk është e pamundur dhe nëse e shtyni vërtet, patjetër do t'ia dilni. Unë dua që ju të vendosni më në fund nëse kjo është e juaja apo jo, të zhvilloni një plan të detajuar trajnimi dhe ta ndiqni me qetësi. Mos u mërzitni nëse merrni heshtje në këmbim - kjo është e gjitha e përkohshme, gjëja kryesore është të besoni dhe në asnjë rast të mos devijoni, por studioni, studioni dhe studioni përsëri. Dëshiroj të shpreh mirënjohjen time të thellë për ekipin e DOU për redaktimin e një sasie të madhe materialesh dhe që më dha kohën kryesore të hënave. DOU është një komunitet i lezetshëm që ka pushuar së qeni thjesht një faqe për njerëzit e IT-së ukrainase. Gjithashtu do të doja të falenderoja të gjithë komentuesit që lexuan artikujt e mi në mënyrë diagonale dhe i nxorën frazat jashtë kontekstit. Artikujt nuk do të dukeshin aq interesantë pa ju :) Qoftë Forca me ju!

    Për ata që dëgjojnë fjalën Java Core për herë të parë, këto janë themelet themelore të gjuhës. Me këtë njohuri, tashmë mund të shkoni me siguri në një stazh / praktikë. Këto pyetje do t'ju ndihmojnë të rifreskoni njohuritë tuaja përpara intervistës, ose të mësoni diçka të re për veten tuaj. Për aftësi praktike, studioni në.

      Si të krijoni një objekt të pandryshueshëm në Java? Rendisni të gjitha përfitimet

      Një klasë e pandryshueshme është një klasë gjendja e së cilës nuk mund të ndryshohet pasi të jetë krijuar. Këtu, gjendja e një objekti është në thelb vlerat e ruajtura në një shembull të klasës, qofshin llojet primitive ose llojet e referencës.

      Për ta bërë një klasë të pandryshueshme, duhet të plotësohen kushtet e mëposhtme:

      1. Mos jepni vendosës ose metoda që modifikojnë fushat ose objektet që u referohen fushave. Setterët nënkuptojnë ndryshimin e gjendjes së një objekti, gjë që ne duam të shmangim këtu.
      2. Bëni të gjitha fushat përfundimtare dhe private. Fushat e përcaktuara private nuk do të jenë të aksesueshme nga jashtë klasës dhe përcaktimi i tyre përfundimtar garanton që ju të mos i ndryshoni ato edhe rastësisht.
      3. Mos lejoni që nënklasat të anashkalojnë metodat. Mënyra më e lehtë për ta bërë këtë është të deklaroni klasën si përfundimtare. Klasat e përfunduara në Java nuk mund të anashkalohen.
      4. Gjithmonë mbani mend se rastet tuaja të ndryshueshme mund të jenë ose të ndryshueshme ose të pandryshueshme. Përcaktoni ato dhe ktheni objekte të reja me përmbajtje të kopjuar për të gjitha objektet e ndryshueshme (llojet e referencës). Variablat e pandryshueshëm (llojet primitive) mund të kthehen në mënyrë të sigurtë pa asnjë përpjekje shtesë.

      Gjithashtu, duhet të keni parasysh përfitimet e mëvonshme të klasave të pandryshueshme. Mund t'ju duhen për një intervistë. Klasat e pandryshueshme:

      • e lehtë për t'u projektuar, testuar dhe përdorur
      • janë automatikisht të sigurta dhe nuk kanë probleme sinkronizimi
      • nuk kërkojnë një konstruktor kopje
      • ju lejon të "inicializoni dembel" kodin hash dhe të "cache" vlerën e kthimit
      • nuk kërkojnë kopje të sigurt kur përdoren si fushë
      • bëni të mirë çelësat e hartës dhe elementët e vendosjes (këto objekte nuk duhet të ndryshojnë gjendjen kur janë në koleksion)
      • e bëjnë klasën e tyre të përhershme duke e krijuar atë një herë dhe nuk ka nevojë të ri-kontrollohet
      • të ketë gjithmonë "atomicitet të dështimit", një term i shpikur nga Joshua Bloch: nëse një objekt i pandryshueshëm hedh një përjashtim, ai kurrë nuk do të lihet në një gjendje të padëshiruar ose të papërcaktuar.

      Shikoni shembullin e shkruar në këtë postim.

      Specifikimi Java thotë se çdo gjë në Java kalohet sipas vlerës. Nuk ka gjë të tillë si "kaloni me referencë" në Java. Këto kushte shoqërohen me metodat e thirrjes dhe kalimin e variablave si parametra të metodës. Epo, llojet primitive kalohen gjithmonë nga vlera pa asnjë konfuzion. Por, koncepti duhet kuptuar në kontekstin e një parametri metode të llojeve komplekse.


      Në shembullin e mësipërm, bitat e adresës së instancës së parë kopjohen në një variabël tjetër referimi, duke bërë që të dyja referencat të tregojnë në të njëjtin vend memorie ku është ruajtur objekti. Mos harroni se duke i caktuar null referencës së dytë, ju nuk do t'i caktoni null referencës së parë. Por një ndryshim në gjendjen e një objekti me një variabël të referuar do të pasqyrohet edhe në referencën tjetër.

      Cili është përdorimi i bllokut përfundimtar? A garanton ky bllok ekzekutimin e kodit të tij? Kur nuk thirret blloku përfundimisht?

      Blloku i fundit thirret gjithmonë nëse ekziston blloku i "provës". Kjo siguron që blloku përfundimtar të thirret edhe nëse ndodh një përjashtim i papritur. Por më në fund është më i dobishëm sesa thjesht trajtimi i përjashtimeve - ky bllok ju lejon të pastroni kodin që ka anashkaluar aksidentalisht kthimin, vazhdimin ose prishjen. Vendosja e kodit të pastrimit në një bllok përfundimtar është gjithmonë praktikë e mirë, edhe kur nuk priten përjashtime.

      Nëse makina virtuale del ndërsa blloku try ose catch është duke u ekzekutuar, atëherë blloku përfundimtar nuk do të ekzekutohet. Në mënyrë të ngjashme, nëse një thread ndërpritet ose mbytet gjatë ekzekutimit të një blloku try ose catch, blloku përfundimtar nuk do të ekzekutohet edhe pse aplikacioni është ende në punë.

      Pse ka dy klasa Date, njëra në paketën java.util dhe tjetra në java.sql?

      java.util.Date përfaqëson një datë dhe orë, ndërsa java.sql.Date përfaqëson vetëm një datë. Komplementi i java.sql.Date është klasa java.sql.Time, e cila përfaqëson vetëm kohën.

      Klasa java.sql.Date është një nënklasë (zgjerim) i klasës java.util.Date. Pra, çfarë ka ndryshuar në java.sql.Date:

      • toString() prodhon një paraqitje të ndryshme të vargut: yyyy-mm-dd
      • metoda statike valueOf(String) krijon një datë nga një varg me paraqitjen e mësipërme
      • përjashtohen marrësit dhe vendosësit për orë, minuta dhe sekonda

      Klasa java.sql.Date përdoret në JDBC dhe është projektuar që të mos ketë një komponent kohor, pra orët, minutat, sekondat dhe milisekondat duhet të jenë zero...por kjo nuk kërkohet nga klasa.

      Shpjegoni ndërfaqet e shënuesve.

      Modeli i ndërfaqes së shënuesit është një model dizajni i shkencës kompjuterike i përdorur nga gjuhët e programimit që japin informacione rreth objekteve në kohën e ekzekutimit. Kjo ofron një mënyrë për të lidhur meta të dhënat e klasës ku gjuha nuk ka mbështetje të qartë për këto meta të dhëna. Java përdor ndërfaqe për këtë pa specifikuar metoda.

      Një shembull i mirë i përdorimit të një ndërfaqe shënuesi në Java është ndërfaqja Serializable. Klasa zbaton këtë ndërfaqe për të treguar se të dhënat e saj jo kalimtare mund të shkruhen në një rrjedhë bajt ose sistem skedari.

      Problemi kryesor Një ndërfaqe shënjuese është se një ndërfaqe përcakton një konventë për klasat që e zbatojnë atë dhe ajo konventë trashëgohet nga të gjitha nënklasat. Kjo do të thotë që ju nuk mund ta "çrealizoni" shenjën. Në shembullin e mësipërm, nëse krijoni një nënklasë që nuk dëshironi të serializohet (ndoshta sepse është në një gjendje kalimtare), duhet të përdorni në mënyrë eksplicite hedhjen e një NotSerializableException .

      Pse metoda main() deklarohet si boshllëk statik publik?

      Pse publike? Metoda kryesore ka modifikuesin e aksesit publik, kështu që mund të aksesohet kudo dhe nga çdo objekt që dëshiron të përdorë këtë metodë për të nisur aplikacionin. Këtu nuk po them që JDK/JRE kanë një arsye të ngjashme, sepse java.exe ose javaw.exe (për Windows) përdorin thirrjen Java Native Interface (JNI) për të ekzekutuar metodën, kështu që ata mund ta thërrasin atë gjithsesi pavarësisht nga modifikuesi i aksesit .

      Pse statike? Le të supozojmë se metoda jonë kryesore nuk është statike. Tani, për të thirrur ndonjë metodë, ju nevojitet një shembull i klasës. E drejtë? Java ju lejon të keni konstruktorë të mbingarkuar, ne të gjithë e dimë këtë. Atëherë cili duhet të përdoret dhe nga do të vijnë parametrat për konstruktorin e mbingarkuar?

      Pse e pavlefshme? Nuk ka asnjë përdorim për vlerën e kthimit në makinën virtuale që në të vërtetë thërret këtë metodë. E vetmja gjë që aplikacioni dëshiron t'i tregojë procesit të thirrjes është një përfundim normal ose jonormal. Kjo tashmë është e mundur duke përdorur System.exit(int) . Një vlerë jo zero nënkupton përfundimin jonormal, përndryshe gjithçka është në rregull.

      Cili është ndryshimi midis krijimit të një vargu si new() dhe një literal (duke përdorur thonjëza të dyfishta)?

      Kur krijojmë një varg duke përdorur new(), ai krijohet në grumbull dhe gjithashtu shtohet në grupin e vargjeve, ndërsa vargu i krijuar me literal krijohet vetëm në grupin e vargjeve.

      Ju duhet të dini më shumë rreth konceptit të pishinës së vargjeve për t'iu përgjigjur kësaj ose pyetjeve të ngjashme. Këshilla ime është të mësoni mirë klasën e vargjeve dhe pishinën e vargjeve.

      Si funksionon metoda substring() e klasës String?

      Ashtu si gjuhët e tjera të programimit, vargjet në Java janë sekuenca karakteresh. Kjo klasë është më shumë si një klasë e dobishme për të punuar me këtë sekuencë. Sekuenca e karaktereve sigurohet nga ndryshorja e mëposhtme:

      /** Vlera përdoret për ruajtjen e karaktereve. */ /** Vlera përdoret për të ruajtur karakteret */ vlerën e karbonit përfundimtar privat; Variablat e mëposhtëm përdoren për të hyrë në këtë grup në skenarë të ndryshëm /** Kompensimi është indeksi i parë i ruajtjes që përdoret. */ /** Kompensimi është indeksi i parë i ruajtjes që përdoret. */ kompensimi int final privat; /** Numërimi është numri i karaktereve në varg. */ /** Numërimi është numri i karaktereve në varg. */ numërimi privat përfundimtar;

      Sa herë që krijojmë një nënvarg nga një shembull ekzistues i vargut, metoda substring() vendos vetëm variablat offset dhe numërimin në vlera të reja. Skema e brendshme e karaktereve nuk është modifikuar. Ky është një burim i mundshëm i një rrjedhjeje memorie nëse metoda substring() përdoret pa kujdes:

      Vlera origjinale e vlerës nuk është ndryshuar. Pra, nëse krijoni një varg prej 10000 karakteresh dhe krijoni 100 nënvargje me 5-10 karaktere secili, të 101 objektet do të përmbajnë të njëjtin grup karakteresh prej 10000 karakteresh. Kjo është pa dyshim një humbje e kujtesës.

      Kjo mund të shmanget duke ndryshuar kodin si kjo:

      zëvendëso original.substring(beginIndex) me new String(original.substring(beginIndex)) , ku origjinali është vargu origjinal.

      Shpjegoni se si funksionon HashMap. Si zgjidhet problemi i dublikatave?

      Shumica prej jush me siguri do të pajtohen që HashMap është tema më e preferuar e intervistës për momentin. Nëse dikush më kërkon t'ju them "Si funksionon HashMap?", Unë thjesht do të përgjigjem: "Sipas parimit të hashimit". Aq e thjeshtë sa është.

      Pra, hashing është në thelb një mënyrë për të caktuar një kod unik për çdo variabël/objekt pas aplikimit të ndonjë formule/algoritmi në vetitë e tij.

      Përkufizimi i një Harte është: "Një objekt që lidh çelësat me vlerat." Shumë e thjeshtë, apo jo? Pra, HashMap përmban hyrjen e tij të brendshme të klasës, e cila duket si:

      klasë statike Hyrja zbaton Hartën . Hyrja(Çelësi përfundimtar K; vlera V; Hyrja më pas; hash përfundimtar int; …//Më shumë kodi shkon këtu)

      Kur dikush përpiqet të vendosë një çift çelës-vlerë në një HashMap, ndodh si më poshtë:

      • Para së gjithash, objekti kyç kontrollohet kundër null. Nëse çelësi është null, vlera ruhet në tabelën e pozicionit. Sepse hashcode për null është gjithmonë 0.
      • Pastaj, hapi tjetër është llogaritja e vlerës hash duke thirrur metodën e saj hashCode() në variablin kyç. Ky hash përdoret për të llogaritur indeksin në grup për të mbajtur objektin Entry. Zhvilluesit e JDK ishin të vetëdijshëm se metoda hashCode() mund të ishte shkruar keq dhe mund të kthente një vlerë shumë të madhe ose shumë të vogël. Për të zgjidhur këtë problem, ata prezantuan një metodë tjetër hash() dhe kaluan hashkodin e objektit në këtë metodë për ta hedhur atë vlerë në diapazonin e madhësisë së indeksit të grupit.
      • Metoda indexFor(hash, table.length) thirret tani për të llogaritur pozicionin e saktë për të ruajtur objektin Entry.
      • Tani pjesa kryesore. Siç e dimë dy objekte të ndryshme mund të kenë të njëjtën vlerë të kodit hash, si mund të ruhen dy objekte të ndryshme në të njëjtin vend në një arkiv [i quajtur koshi i plehrave]?

      Përgjigja është LinkedList. Nëse ju kujtohet, klasa e hyrjes ka një veti "next". Kjo veti tregon gjithmonë objektin tjetër në zinxhir. Kjo sjellje është shumë e ngjashme me LinkedList.

      Pra, në rast të përputhjes së kodit hash, objektet e hyrjes ruhen në formën e LinkedList. Kur një hyrje duhet të vendoset në një indeks të caktuar, a kontrollon HashMap nëse ekziston një hyrje tjetër në atë vendndodhje? Nëse nuk ka asnjë regjistrim atje, objekti ynë do të ruhet në këtë vendndodhje.

      Nëse ka tashmë një objekt tjetër në indeksin tonë, kontrollohet fusha e tij tjetër. Nëse është null, objekti ynë bëhet nyja tjetër në LinkedList. Nëse Next nuk është null, kjo procedurë përsëritet derisa të gjendet një fushë tjetër null.

      Çfarë ndodh nëse shtojmë një vlerë tjetër kyçe të barabartë me atë që kemi shtuar më parë? Është logjike që duhet të zëvendësojë vlerën e vjetër. Si ndodh kjo? Pas përcaktimit të indeksit të pozicionit për objektin Entry, duke përsëritur mbi LinkedList që ndodhet në indeksin tonë, HashMap thërret metodën e barabartë () në vlerën kryesore për çdo objekt të hyrjes. Të gjitha këto objekte të hyrjes në LinkedList kanë të njëjtën vlerë të kodit hash, por metoda e barabartë () do të testojë për barazi të vërtetë. Nëse çelësi. barazohet(k) do e vërtetë, atëherë të dy do të trajtohen si i njëjti objekt. Kjo do të bëjë që vetëm objekti i vlerës brenda objektit të hyrjes të zëvendësohet.

      Kështu HashMap siguron uniken e çelësave.

      Dallimet midis ndërfaqeve dhe klasave abstrakte?

      Kjo është një pyetje shumë e zakonshme nëse jeni duke intervistuar për një programues të nivelit të ri. Dallimet më të rëndësishme janë renditur më poshtë:

      • Në ndërfaqet Java, variablat janë apriori përfundimtare. Klasat abstrakte mund të përmbajnë variabla jo përfundimtare.
      • Një ndërfaqe në Java definitivisht nuk mund të ketë një zbatim. Një klasë abstrakte mund të ketë shembuj të metodave që zbatojnë sjelljen bazë.
      • Anëtarët e ndërfaqes duhet të jenë publike. Një klasë abstrakte mund të ketë modifikues aksesi të çdo lloji.
      • Një ndërfaqe duhet të zbatohet me fjalën kyçe implements. Një klasë abstrakte duhet të zgjerohet me një fjalë kyçe shtrihet.
      • Në Java, një klasë mund të implementojë shumë ndërfaqe, por mund të trashëgojë vetëm nga një klasë abstrakte.
      • Një ndërfaqe është plotësisht abstrakte dhe nuk mund të instantohet. Një klasë abstrakte gjithashtu nuk mund të ketë instanca të klasës, por mund të thirret nëse ekziston metoda main().
      • Një klasë abstrakte është pak më e shpejtë se një ndërfaqe sepse një ndërfaqe pret një kërkim përpara se të thërrasë ndonjë metodë të anashkaluar në Java. Në shumicën e rasteve, ky është një ndryshim i vogël, por nëse jeni duke shkruar një aplikacion kritik për kohën, duhet ta merrni parasysh edhe këtë fakt.
    1. Kur i anashkaloni metodat hashCode() dhe equals()?

      Metodat hashCode() dhe equals() përcaktohen në klasën Object, e cila është klasa mëmë e të gjitha objekteve Java. Për këtë arsye, të gjitha objektet Java trashëgojnë zbatimin bazë të këtyre metodave.

      Metoda hashCode() përdoret për të marrë një vlerë unike numër të plotë për një objekt të caktuar. Kjo vlerë përdoret për të përcaktuar vendndodhjen e shportës kur objekti duhet të ruhet në një strukturë të dhënash si një HashTable. Si parazgjedhje, metoda hashCode() kthen një paraqitje të plotë të adresës së memories ku është ruajtur objekti.

      Metoda e barabartë (), siç sugjeron emri, përdoret për ekuivalencën e objektit të thjeshtë. Zbatimi bazë i metodës është të kontrolloni referencat e dy objekteve për të parë nëse ato janë ekuivalente.

      Vini re se zakonisht është e nevojshme të anashkaloni metodën hashCode() sa herë që metoda e barabartë () anashkalohet. Kjo është e nevojshme për të mbështetur konventën e përgjithshme të metodës hashCode, e cila thotë se objektet e barabarta duhet të kenë kode të barabarta hash.

      Metoda e barabartë () duhet të përcaktojë barazinë e marrëdhënies (duhet të jetë rekursive, simetrike dhe kalimtare). Përveç kësaj, ajo duhet të jetë e qëndrueshme (nëse objekti nuk ka ndryshuar, metoda duhet të kthejë të njëjtën vlerë). Gjithashtu, o.equals(null) duhet të kthehet gjithmonë i rremë.

      hashCode() duhet gjithashtu të jetë i qëndrueshëm (nëse objekti nuk ka ndryshuar në kushtet e metodës equals(), ai duhet të vazhdojë të kthejë të njëjtën vlerë.

      Marrëdhënia midis dy metodave është: gjithmonë nëse a.equals(b) , atëherë a.hashCode() duhet të jetë e njëjtë me b.hashCode() .

    Suksese me studimet!! Autori i artikullit Lokesh Gupta Artikull origjinal Lidhje me pjesët e tjera: