Java interview
265 subscribers
2 photos
2 files
20 links
Kanalda o'zbek tilida Java dasturlash tili haqida malumot berib boramiz

Author: @elbek_nurmatov
Blog: @nurmatov_elbek
Download Telegram
Immutable vs mutable

Javada shunday tushuncha bor, Immutable vs mutable o'zbekcha tarjima qilganda o'zgaruvchi va o'zgarmas deganga yaqin, Ya'ni o'zgaruvchiga qiymat berilganda uni yangilanishi yoki yangilanmasdan xotirada yangi yaratilishi.

Immutable - O'zgaruvchiga qiymat beramiz, unga qayta qiymat beradigan bo'lsa xotirada ochilgan o'rniga qayta yozmaydi, yangi joy ochib shu joyga qiymat birlashtiriladi. Misol uchun String misolida ko'rib chiqamiz: String tipida o'zgaruvchi ochib unga qiymat beramiz, o'zgaruvchimi nomi stack da, o'zgaruvchini qiymat esa heap da saqlanadi. O'zgaruvchiga yanigi qiymat bersak heap dagi qiymat o'zgarmaydi, boshqa qiymat beriladida, stackdagi o'zgaruvchani nomi yangi reference qilib yangi qiymat bog'lanadi, eskisi o'chiradi. Shu xolat immutablelik deyiladi. Ya'ni yangi qiymat berganda xotiradagi qiymat o'zgarmaydi, yangi joy ochib shunga bog'lab qo'yiladi. Bunga misol Wrapper classlar hammasi immutable hisoblanadi.

Mutable - mutable esa aksincha xotirada ochilgan qiymat o'zgartirsa bo'ladi

#immutable #mutable

@Java_suhbat_savollari
πŸ‘4πŸ‘¨β€πŸ’»3❀1
String Thread bilan ishlaganda, xavfsizmi?

Ha,

Chunki String immutable class hisoblanadi, immutable classlarni hammasi thread safe hisoblanadi.

Nimaga immutable classlar thread safe, chunki immutable classlarni qiymat o'zgarmaydi. O'zgarishi kerak bo'lgan joylarda yangi object qaytaradi, bu avvalgi objectni qiymat o'zgarishiga olib kelmaydi.

#string #immutable #thread_safe

@Java_suhbat_savollari
πŸ‘¨β€πŸ’»5
StringBuffer va StringBuilderni kuchsiz tomonlari.

StringBuffer - Threadda xafvsiz hisoblanadi, bunga qanday erishgan (🧐) ? Methodlarini synchronized qilish bilan, ya'ni StringBuffer synchron xisoblanadi. Synchronligi uning kuchsiz tomoni.

StringBuilder - Threadda xavfsiz emas, ya'ni kuchsiz tomoni threadda kuchli hisoblanmaydi, lekin eng asosiy katta yaxshi tomoni tez ishlaydi, String, StringBuffer, StringBuilder orasida eng tezi StringBuilder hisoblanadi, chunki u synchron emas

StringBuffer, StringBuilder - bu ikkitasining eng katta foydali tomoni, immutable emasligi.

#stringbuffer #stringbuilder #synchronized

@Java_suhbat_savollari
πŸ‘¨β€πŸ’»3
String,StringBuffer,StringBuilder.pdf
39.2 KB
String, StringBuffer, StringBuilder
πŸ‘¨β€πŸ’»6πŸ‘1πŸ”₯1
Bugun qaysi mavzuda post chiqishni hohlaysizlar?
Anonymous Poll
74%
HashMap
26%
HashSet
HashMap qanday ishlaydi?

HashMap - Ma'lumotlarni key value holatida saqlaydi. Keylari unique (bir xili bo'lmaydi) bo'ladi. Yangi ma'lumot qo'shilganda, agar yangi kiritilgan qiymatdagi key HashMapda bo'lmasa yangi qiymat sifatdi qo'shadi, agar u key o'zi bor bo'lsa qiymatini yangilab qo'yadi.

Internal qanday ishlaydi ? πŸ€”
HashMap ichida Node array da saqlaydi. Nodeni ichida hash (int), key (generic type), value (generic type), next (Node) saqlaydi. Ya'ni o'zining keyi, valuesi, hashi (shu nodeni keyini hashlab nodeni hashini hosil qilinadi), va o'zidan keyin turuvchi nodeni saqlaydi.

Node arrayda HashMapni qanday saqlaydi ?🧐
Node arrayni defualt uzunligi. 16 ga teng bo'ladi. HashMapdan object olganimizda avtomatik Node array yaratiladi. Unga malumot qo'shayotganimizda node yaratadi. Ya'ni keyidan hash yasab hashga soladi, keyni o'zini keyga soladi, valueni valuega soladi, next null holatda turib turadi.

Yasalga node qayerda joylashadi?
Yasalgan node Node arrayga saqlanadi. Qayeriga saqlanadi? Nodedagi keyni node arrayni uzunligidan indexni hisoblaydi, yani node_arraydagi_indexi = hash & node_arrayni_uzunligi; Shu formala orqali qayerga joylashishi kerakligini aniqlaydi.

Ya'ni key orqali biz u Node arrayda qaysi indexda turganini bilib olishimiz mumkin. Har doim yangi malumot qo'shilganda. Shu algoritm ishlaydi.

Bazi bir keylarning hashi bir xil bo'lib qolishi mumkin. Yani qiymat har xil hash bir xil bu holda. Shu indexda turgan nodeni next degan qiymatiga qo'shiladi. Ya'ni hashlangandan bir xil qiymat qaytsa. Shu indexdagi oxirgi nodening next qiymatiga qo'shiladi. (Xuddi LinkedListga o'xshab ishlaydi).

Yana bir savol tug'uladi uni bir amallab qo'shib oldik endi uni qanday qilib key bo'yicha olsak bo'ladi?

Qanday qilib key bo'yicha valueni olishimiz mumkin. Olmoqchi bo'lganimizni bizga keyi kirib keladi. Biz esa bu keyda xuddi oldingi algoritm bo'yicha qaysi indexda joylashgnini aniqlaymiz, ya'ni keyni hashlab node arrayni uzunligida qaysi indexda joylashganini aniqlaymiz. Yani u qaysi node indexda turgani aniq bo'ladi. Endi esa Uni valuesini topishimiz kerak. Bita indexda ko'pgina nodelar ham joylashishi mumkinligini yuqorida aytdim, yani next next qiymat bo'lib joylashib ketishi mumkin. Biz bularni orasida valueni qanday olishimiz mumkin. Kirib kelgan keyni shu nodelarni keyi bilan solishtirib ko'ramiz. Qaysi nodeni keyiga teng bo'ladigan bo'lsa shu nodeni valuesini qaytaradi.

Ingliz tilini biluvchilar uchun manfatli bo'ladi

#hashmap #node #nodearray #hash #key #value

@Java_suhbat_savollari
πŸ‘3
Yuqoridagi HashMap bo'yicha.

Codelar bilan tushuntirilgan variant.

@Java_suhbat_savollari
πŸ”₯3
Ertaga qaysi mavzuda post bo'lishini xohlaysizlar
Anonymous Poll
73%
HashSet
27%
LinkedList
HashSet nima u ?

HashSet ham collectionlardan biri hisoblanadi, ya'ni malumot saqlovchi data type. U malumotlarni unique holatda saqlaydi, ya'ni elementlar bir martadan ortiq takrorlanmaydi.

U uniquelikka qanday erishadi?
HashSet ichki qismda, HashMap ishlatadi. HashSetdan object olganimizda ichki qismda HashMapdan va Object dan object oladi. HashSetning qiymatlarini HashMapning keyiga joylashtiradi hamda, hashmapni valuesiga Objectdan olgan objectini joylashtiradi, yani keylari har xil, valuelari bir xil bo'ladi.

HashMapda index bo'lmaydi. Faqat uni iterate qilib elementlariga murajaat qilishimiz mumkin.

Xulosa qiladigan, bo'lsak HashSetni orqa fonida HashMap yotadi. Uniquelikni ham HashMapni key orqali saqlab qoladi.

@Java_suhbat_savollari
πŸ‘3🫑3πŸ”₯1πŸ‘1
Assalomu alaykum,

Qaysi mavzuda post chiqishini hohlaysizlar?
Anonymous Poll
44%
ArrayList
56%
LinkedList
LinkedList

Linkedlist - asosan ma'lumot ko'p qo'shiliadigan qismda ishlatiladi.

LinkedList -> ma'lumotni nodelarda saqlaydi. Node o'zining qiymat, o'zidan keyingisi va o'zidan oldigisini saqlaydi. Bu degani ma'lumotlar zanjir kabi bir biriga bog'langan bo'ladi.

Nima uchun ma'lumot qo'shiladigan joyda ishlatiladi -> Sababi yuqorida takidlanganidek zanjir kabi boglanadi. Oxirgi nodeni o'zidan keyingi nodei null holatda turadi. Agar oxiriga qo'shilsa, shu eng oxirda turgan nodeni nextiga joylab qo'yadi. Boshiga qo'ymoqchi bo'lsa ham shunday boshida nodeni o'zidan oldigisiga joylashtirib qo'yadi. Shuning uchun ma'lumot ko'p qo'shiladigan joyda ishlatish yaxshi bo'ladi

@Java_suhbat_savollari
πŸ‘6
Multithreading

Dasturlashdagi multithreading tushunchasi.

Protsessorni bir vaqtda, ko'p ishlarni qilishini multithreading deb tushunsak bo'ladi. Bu haqida to'liqroq ma'lumotni quyidagi link orqali olsangiz bo'ladi.

Javadagi multithreading haqida esa keyingi postda ma'lumot beramiz.

Multihreading asosiy tushuncha

#multithreading #thread #hayotiy_misol

@Java_suhbat_savollari
πŸ‘6
Javada multithreading

Java dasturlash tilida, multithreadingga katta e'tibor berilgan.

Java dasturlash tilida multithreading

#multithreading #thread #java #sleep #threadpool #threadgroup

@Java_suhbat_savollari
πŸ‘5
JDK vs JRE vs JVM

Java tiilda yozilgan source kodlar qanday run bo'ladi?

Java dasturlash tilida yozilgan source kodlar (*.java) JDK orqali kompilyatsiya qilinib. Kompilatsiya qilingan java byte code JVM ni ichiga JRE orqali yuklab beriladi. JVM ni ichida qayta interpretasiya bo’lib. Platform independentlik taminlanadi. Ya’ni Platformadan mustaqil bo’ladi. JDK da kompilyatsiya qilingan kod. Istilgan operatsion tizim muammosiz ishga tushadi. Hamma platformada bir xil ishlaydi.

JDK vs JRE vs JVM

#JDK #JRE #JVM #classloader #compilation

@Java_suhbat_savollari
πŸ‘5
JVM

Java dasturlash tilini shu darajada rivojlanishiga, boshqa tillardan ustunlik berishi, va boshqa funksiyalari ...

JVM

Keyingi postlarda, class loader, java memory, garbage collector haqida, to'liqroq ko'ramiz

#JVM #thread #stack #heap #pcregister #interpretation

@Java_suhbat_savollari
πŸ‘4
Assalomu alaykum

Bugundan mavzularni yoritish bilan birgalikda, interviewda tushushishi mumkin bo'lgan savolllarga ham javob berib boramiz.

Inteview questions

Agar savollarga javoblarda topgan xatoliklaringizni, hozir yetib kelingan mavzular bo'yicha sizda ham savollar bo'lsa ulashsangizlar. Xursand bo'lamiz.

#inteview_question

Javani yangi o'rganayotganlar uchun
Interviewga tayyorlanayotganlar uchun
πŸ‘7
πŸ‘4
String vs StringBuilder vs StringBuffer

Interview questionga yangi mavzu bo'yicha savol - javoblar qo'shildi.

Interview questions

Agar sizlarda ham yuqoridagi mavzular bo'yicha savollar bo'lsa, ularga ham javob berishga harakat qilamiz!

#string #stringbuilder #stringbuffer

Javani yangi o'rganayotganlar uchun
Interviewga tayyorlanayotganlar uchun
πŸ”₯2πŸ‘Œ1
Kanalda qanday postlar bo'lishini hoxlaysiz.
Anonymous Poll
73%
Interview savollariga javoblar
27%
Mavzular bo'yicha ma'lumotlar
Java dasturlash tilida dastur ishga tushgan ma'lumot qanday ko'rinishda kirib kelishi mumkin?

Java dasturlash tilida, ma'lumotlarni yozish o'qish bilan java.io package'ida kerakli classlar mavjud. Ma'lumot kirishi ikki xil ko'rinishda bo'ladi?

1. Character stream
2. Byte stream

Character stream: matn (text) ko'rinishidagi ma'lumotlar uchun ishlatiladi
Byte stream: dasturni ichiga kirishi va chiqishi (file system, database, socket, ...) mumkin bo'lgan barcha ma'lumot turlari bilan ishlaydi.

Character stream matn ko'rinishidagi ma'lumotlar bilan ishlash uchun moslangan. Matn ko'rinishidagi ma'lumotlar bilan byte stream bilan ham ishlash mumkin, lekin character streamda matn bilan ishlash uchun qo'shimcha metodlari mavjud.

Byte stream har qanday turdagi ma'lumot bilan ishlay oladi(matn, ovozli, rasm, ...).

Character stream bilan ishlovchi parent classlar:

Reader: character stream orqali ishlaydi, matn ko'rinishidagi ma'lumotlarni o'qish uchun ishlatiladigan, abstract class. Bundan voris olgan qo'shimcha classlar postfix sifatida Reader qo'shimcha bo'ladi masalan: BufferedReader

Writer: character stream orqali ishlaydi, matn ko'rnishidagi ma'lumotlarni yozish uchun ishlatiladi, abstract class. Bundan voris olgan qo'shimcha class postfix sifatida Writer qo'shimcha bo'ladi masaan: FileWriter

InputStream: byte stream orqali ishlaydi, har qanday turdagi ma'lumot turlarini o'qish uchun ishlatiladi, abstract class. Bundan voris olgan qo'shimcha class postfix sifatida InputStream qo'shimcha bo'ladi masaan: ObjectInputStream

OutputStream: byte stream orqali ishlaydi, har qanday turdagi ma'lumot turlarini yozish uchun ishlatiladi, abstract class. Bundan voris olgan qo'shimcha class postfix sifatida OutputStream qo'shimcha bo'ladi masaan: FileOutputStream

@Java_suhbat_savollari
πŸ”₯3
Java core bo'yicha interview qilsak nima deysizlar?
Anonymous Poll
86%
Yaxshi bo'lardi
9%
Menga farqi yo'q
5%
Shart emas