- Bir daha məlumatı təkrarlamamaq üçün bu məqalələr silsiləsi ilə kəsişən sualları atlayacağam. Bu materialları oxumağı məsləhət görürəm, çünki onlar ən çox yayılmış (məşhur) Java Core müsahibə suallarını ehtiva edir.
- DOU ilə bağlı suallar ukrayna dilində təqdim olunur, amma burada hər şey rus dilində olacaq.
- Cavabları daha təfərrüatlı təsvir etmək olar, amma mən yazmayacağam, o vaxtdan hər bir sualın cavabı bütöv bir məqaləni götürə bilər. Və heç bir müsahibədə sizdən bu qədər ətraflı soruşmayacaqlar.
11. Object sinfinin bütün metodlarını adlandırın
Obyekt sinifinin 11 metodu var:- Class<?> getClass() — cari obyektin sinfinin alınması;
- int hashCode() — cari obyektin hash kodunun alınması;
- boolean equals(Object obj) - cari obyektin digəri ilə müqayisəsi;
- Object clone() - cari obyektin surətinin yaradılması və qaytarılması;
- String toString() — obyektin sətir təsvirinin alınması;
- void notify() - bu obyektin monitorunda gözləyən bir mövzunun oyanması (mövzu seçimi təsadüfi);
- void notifyAll() - bu obyektin monitorunda gözləyən bütün mövzuları oyadır;
- void wait() - cari telini cari monitorda gözləmə rejiminə keçir (dondurur), bəziləri xəbərdar edənə və ya notifyAll mövzunu oyandırana qədər yalnız sinxronlaşdırılmış blokda işləyir;
- etibarsız gözləmə(uzun fasilə) - cari monitorda (cari sinxronlaşdırılmışda) cari mövzunu da dondurur, lakin bu vəziyyətdən çıxmaq üçün bir taymerlə (və ya yenidən: bildiriş və ya bildiriş oyanana qədər);
- void wait(uzun zaman aşımı, int nanos) - yuxarıda təsvir edilən metoda oxşar, lakin donmadan çıxmaq üçün daha dəqiq taymerlərlə;
- void finalize() - bu obyekti silməzdən əvvəl zibil yığan şəxs bu metodu çağırır (nəhayət). İşğal edilmiş ehtiyatları təmizləmək üçün istifadə olunur.
12. Resurslarla işləyərkən cəhd et və nəhayət cəhd et arasında fərq nədir?
Tipik olaraq, try-catch-finally istifadə edərkən son blok resursları bağlamaq üçün istifadə olunurdu. Java 7, resursları azad etmək üçün try-catch-finally analoqu olan , lakin daha yığcam və oxunaqlı olan, resurslarla sınaqdan keçirmə operatorunun yeni növünü təqdim etdi . try-catch-finally nəyə bənzədiyini xatırlayaq :String text = "some text......";
BufferedWriter bufferedWriter = null;
try {
bufferedWriter = new BufferedWriter(new FileWriter("someFileName"));
bufferedWriter.write(text);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
İndi bu kodu yenidən yazaq, lakin resurslarla cəhd edin :
String text = "some text......";
try(BufferedWriter bufferedWriter =new BufferedWriter(new FileWriter("someFileName"))) {
bufferedWriter.write(text);
} catch (IOException e) {
e.printStackTrace();
}
Birtəhər asanlaşdı, elə deyilmi? Sadələşdirməyə əlavə olaraq, bir neçə məqam var:
-
Resurslarla cəhddə , mötərizədə elan edilmiş resurslar (bağlanacaq) AutoCloseable interfeysini və onun yeganə metodu olan close() tətbiq etməlidir .
Bağlama metodu gizli nəhayət blokda icra olunur , əks halda proqram verilmiş resursun necə bağlanacağını necə başa düşəcək?
Ancaq çox güman ki, nadir hallarda öz resurslarınızı və onların bağlanma üsulunuzu yazacaqsınız.
-
Blokun icrası ardıcıllığı:
- bloklamağa cəhd edin .
- Nəhayət, gizli .
- Əvvəlki addımlarda istisnaları tutan tutma bloku .
- Nəhayət aydın .
Bir qayda olaraq, siyahıda aşağı görünən istisnalar yuxarıda görünənləri kəsir.
13. Bit üzrə əməliyyatlar hansılardır?
Bitwise əməliyyatları məntiqi əməliyyatları və bit istiqamətində sürüşmələri ehtiva edən bit sətirləri üzərində əməliyyatlardır. Məntiqi əməliyyatlar:-
bitwise AND - bit dəyərlərini müqayisə edir və prosesdə 0 (yanlış) olaraq təyin edilmiş istənilən bit nəticədə müvafiq biti 0 olaraq təyin edir. Yəni, müqayisə edilən hər iki dəyərdə bit 1 (doğru) idisə, nəticə də 1 olacaq.
kimi işarələnir - AND , &
Nümunə: 10111101 & 01100111 = 00100101
-
bitwise OR əvvəlkinin tərs əməliyyatıdır. 1-ə təyin edilmiş istənilən bit nəticədə oxşar biti 1 kimi təyin edir. Buna uyğun olaraq, hər iki müqayisə edilən dəyərdə bit 0 idisə, nəticədə alınan bit də 0 olacaq.
- OR , | kimi işarələnir
Nümunə: 10100101 | 01100011 = 11100111
-
bitwise NOT - bir dəyərə tətbiq edilir, bitləri çevirir (ters çevirir). Yəni 1 olan bitlər 0 olacaq; və 0 olanlar 1 olacaq.
- DEYİL , ~ kimi işarələnir
Misal: ~10100101 = 01011010
bitwise exclusive OR - bit dəyərlərini müqayisə edir və hər iki dəyərdə bit 1-ə bərabərdirsə, nəticə 0, hər iki dəyərdə bit 0 olarsa, nəticə 0 olacaqdır. nəticənin 1-ə bərabər olması üçün bitlərdən yalnız biri 1-ə, ikincisi isə 0-a bərabər olmalıdır. kimi qeyd olunur - XOR , ^
Nümunə: 10100101 ^ 01100011 = 11000110
- 01100011 >> 4 = 00000110
- 01100011 << 3 = 00011000
14. Java-da obyektlər hansı standart dəyişməz siniflərdir?
Dəyişməz , orijinal parametrlərinin dəyişdirilməsinə icazə verməyən bir obyektdir. Dəyişdirmək istədiyiniz parametrlərlə verilmiş tipli yeni obyektləri qaytaran metodlara malik ola bilər. Bəzi standart dəyişməz obyektlər:- Bu günə qədər Java-da ən məşhur dəyişməz obyekt String-dir;
- standart növləri əhatə edən sarğı siniflərinin nümunələri: Boolean, Character, Byte, Short, Integer, Long, Double, Float;
- adətən xüsusilə BÖYÜK ədədlər üçün istifadə olunan obyektlər - BigInteger və BigDecimal;
- stacktraces-də vahid olan obyekt (məsələn, istisna stacktrace-də) StackTraceElement;
- Fayl sinifinin obyekti - faylları dəyişə bilər, lakin eyni zamanda özü dəyişməzdir;
- UUID - tez-tez elementlər üçün unikal id kimi istifadə olunur;
- java.time paketinin bütün sinif obyektləri;
- Locale - coğrafi, siyasi və ya mədəni bölgəni müəyyən etmək üçün istifadə olunur.
15. Dəyişməyən obyektin adi obyektlərdən üstün cəhətləri hansılardır?
- Bu cür obyektlər çox yivli mühitdə istifadə edildikdə təhlükəsizdir . Onlardan istifadə etməklə, iplik yarışı şərtlərinə görə məlumatların itirilməsindən narahat olmaq lazım deyil. Adi obyektlərlə işləməkdən fərqli olaraq: bu halda çox diqqətlə düşünməli və obyektdən paralel mühitdə istifadə mexanizmlərini işləməli olacaqsınız.
- Dəyişməyən obyektlər xəritədə yaxşı açarlardır, çünki siz dəyişən obyektdən istifadə etsəniz və sonra obyekt öz vəziyyətini dəyişdirsəniz, HashMap-dan istifadə edərkən çaşqınlıq yarana bilər: obyekt hələ də mövcud olacaq və siz containKey() istifadə etsəniz, o, olmaya bilər. tapılsın.
- Dəyişməz obyektlər proqram işləyərkən heç vaxt dəyişdirilməməli olan dəyişməz (sabit) məlumatların saxlanması üçün əladır.
- "Uğursuzluğa atomizm" - dəyişməz bir obyekt istisna atırsa, o, hələ də arzuolunmaz (sınıq) vəziyyətdə qalmayacaq.
- Bu sinifləri sınaqdan keçirmək asandır.
- Kopya konstruktoru və klon tətbiqi kimi əlavə mexanizmlərə ehtiyac yoxdur.
OOP haqqında suallar
16. Ümumiyyətlə və prosedur proqramlaşdırma ilə müqayisədə OOP-nin üstünlükləri hansılardır?
Beləliklə, OOP üstünlükləri:- Mürəkkəb proqramları yazmaq prosedur proqramlaşdırmadan daha asandır, çünki hər şey kiçik modullara - bir-biri ilə qarşılıqlı əlaqədə olan obyektlərə bölünür və nəticədə proqramlaşdırma obyektlər arasındakı münasibətlərə düşür.
- OOP istifadə edərək yazılmış proqramları dəyişdirmək daha asandır (dizayn konsepsiyalarına əməl olunduğu müddətcə).
- Verilənlər və onun üzərindəki əməliyyatlar vahid bir varlıq təşkil etdiyinə görə, onlar bütün tətbiq ərzində ləkələnmir (bu, tez-tez prosedur proqramlaşdırma ilə olur).
- İnformasiya inkapsulyasiyası istifadəçidən ən vacib məlumatları qoruyur.
- Eyni kodu müxtəlif verilənlərlə təkrar istifadə etmək mümkündür, çünki siniflər hər birinin öz atribut dəyərlərinə malik olan çoxlu obyektlər yaratmağa imkan verir.
- Varislik və polimorfizm həmçinin mövcud kodu təkrar istifadə etməyə və genişləndirməyə imkan verir (oxşar funksionallığı təkrarlamaq əvəzinə).
- Prosedur yanaşmasından daha asan tətbiq genişlənməsi.
- OOP yanaşması icra detallarından mücərrədləşdirməyə imkan verir.
17. OOP-da hansı çatışmazlıqların olduğunu söyləyin
Təəssüf ki, onlar da mövcuddur:- OOP çoxlu nəzəri biliklər tələb edir ki, siz nəyisə yaza bilməyəcəksiniz.
- OOP ideyalarını başa düşmək və praktikada tətbiq etmək o qədər də asan deyil (bir az da filosof olmaq lazımdır).
- OOP istifadə edərkən, sistemin daha mürəkkəb təşkili səbəbindən proqram təminatının performansı bir qədər azalır.
- OOP yanaşması daha çox yaddaş tələb edir, çünki hər şey adi dəyişənlərdən daha çox yaddaş tutan siniflərdən, interfeyslərdən, metodlardan ibarətdir.
- İlkin təhlil üçün tələb olunan vaxt prosessualdan daha çoxdur.
18. Statik və dinamik polimorfizm nədir
Polimorfizm obyektlərin eyni sinif və ya interfeys üçün fərqli davranmasına imkan verir. Erkən və gec bağlanma kimi də tanınan iki növ polimorfizm var . Statik polimorfizm və ya daha əvvəl bağlanma:- kompilyasiya zamanı (proqramın həyat dövrünün əvvəlində) baş verir;
- kompilyasiya zamanı hansı metodun yerinə yetirilməsinə qərar verir;
- Metodun həddindən artıq yüklənməsi statik polimorfizm nümunəsidir;
- erkən bağlama özəl, statik və terminal üsulları ehtiva edir;
- miras erkən bağlanmada iştirak etmir;
- Statik polimorfizm konkret obyektləri deyil, növü dəyişən adının solunda təmsil olunan sinif haqqında məlumatı əhatə edir.
- icra zamanı baş verir (proqram işləyərkən);
- dinamik polimorfizm metodun icra müddətində hansı xüsusi icraya malik olacağına qərar verir;
- metodun üstünlüyü dinamik polimorfizm nümunəsidir;
- gec bağlama müəyyən bir obyektin, onun növünə istinadın və ya onun super sinifinin təyin edilməsidir;
- irsiyyət dinamik polimorfizmlə əlaqələndirilir.
GO TO FULL VERSION