Anasayfa Bloglar En Sık Sorulan Java Mülakat Soruları

En Sık Sorulan Java Mülakat Soruları

Yazılım Geliştirme
10 Dakika Okuma Süresi · 24.08.2023
Blog Small Image

Java, sınıf tabanlı, genel amaçlı, nesne yönelimli ve dünyada en yaygın kullanılan programlama dillerinden biridir. 

Java geliştiricisi olarak yeni bir iş arıyorsanız, teknik mülakatlarda Java sorularıyla karşılaşmanız da muhtemel. Ancak, endişelenmeye gerek yok. Bu içeriğimizde sıkça sorulan Java Mülakat Sorularını listeledik. 

Bu sorulara çalışarak hayalinizdeki işe kolay bir şekilde ulaşabilirsiniz. O halde Java mülakat sorularını inceleyelim. 👇🔎


 

En Popüler Java Mülakat Soruları ve Cevapları


 

1. Java nedir?

Java; geniş kapsamlı, nesne-yönelimli, platformdan bağımsız bir programlama dilidir. Java, web uygulamaları, mobil uygulamalar, masaüstü uygulamalar, oyunlar veya herhangi bir diğer yazılım için kullanılabilir. 

Java, kodun bir kez yazılması sonucu birden fazla platformda çalışmasını sağlar. Java Virtual Machine (JVM) adlı bir makine tarafından yürütülür ve Java kodunun herhangi bir platformda çalışmasını sağlar. Java ayrıca, birçok açık kaynak kütüphanesi ve araçları içerir.


 

2. Java programlama dilinin özellikleri nelerdir?

  • Nesne yönelimli: Java, nesne-yönelimli bir programlama dilidir.
  • Platformdan bağımsız: Java, bir kez yazılır ve farklı platformda çalışabilir. Birçok farklı işletim sistemini destekler.
  • Otomatik bellek yönetimi: Java, bellek yönetimini otomatik olarak gerçekleştirerek, programcının bellek yönetimiyle ilgilenmesini ortadan kaldırır.
  • Güvenli: Java, oldukça güvenlidir. Kodun güvenliğini sağlar.
  • Açık kaynak: Java, açık kaynak bir programlama dilidir. İsteyen herkes Java’yı kullanabilir. Kullanıcıların kodlarını değiştirmesine veya kullanmasına izin verir.
  • Multithreading: Java, birden fazla iş parçacığını (thread) destekler ve aynı anda birden fazla işlemi gerçekleştirmek için kullanır.
  • Dinamik: Java, dinamik olarak bağlantı kurar.
  • Geniş kapsamlı: Java, geniş kapsamlı bir programlama dilidir. Birçok farklı alanda kullanılabilir ve farklı türde yazılım geliştirmek için kullanılır.
  • Büyük kullanıcı topluluğu: Java’nın geniş bir kullanıcı ekosistemi bulunur. Ayrıca, büyük kullanıcı topluluğu vardır. Bu topluluk ile Java geliştiricileri birbirlerinden yardım alabilir. 


 

3. Java Sanal Makinesi nedir? 

✔️ Java Sanal Makinesi (JVM), Java programlarının çalıştırılması için gerekli olan bir yazılımdır. Bytecode adı verilen kodu yorumlar ve istenen çıktıyı üretir. 

✔️ Java kodunun işletim sistemi tarafından anlaşılmasını sağlar. 

✔️ JVM, aynı zamanda bellek yönetimini, güvenliği ve hata ayıklamayı gerçekleştirir. 


 

4. Java, yüksek performansı nasıl sağlar?

Java, yüksek performansı JVM, Multi-Threading ve JIT derleyicileri kullanarak sağlar. 

JVM, Java bytecode adı verilen kodu çalıştırır ve Java kodunun işletim sistemi tarafından anlaşılmasını sağlar. 

Multi-Threading ise Java, çoklu iş parçacığı desteği sunar. Bu, birden fazla işlemi aynı anda yürütülmesini sağlar.  JIT derleyici, Java programlarının performansını arttırmak için kullanılır. Ayrıca Java optimize edilmiş kütüphaneler sunar. Bu optimize edilmiş kütüphaneler, yaygın olarak kullanılan işlemleri hızlandırır. Böylece, Java yüksek performans sağlar.


 

5. Java’da pointerlar neden kullanılmaz?

Pointerlar programlama dillerinde yaygın olarak kullanılan bellek yönetimine ilişkin sorunların kaynağıdır. Pointerlar, bellekteki veriye erişmek için kullanılırlar ve bu veriye erişim sırasında yanlış yapılandırmalar sonucu bellekle ilgili sorunlar ortaya çıkabilir. 


 

6. JIT derleyicisi nedir?

👉 JIT derleyicisi, kodun daha hızlı bir biçimde derlenmesini sağlayan bir derleyicidir. 


 

7. Java IDE'leri nedir?

Java IDE, Java geliştiricilerinin Java programlarını kolayca yazmalarını ve hata ayıklamalarını sağlayan bir yazılımdır. Çeşitli programlama araçlarını, kod tamamlama ve sözdizimi vurgulama gibi çeşitli yardımcı özellikleri içerir. Codenvy, Eclipse ve NetBeans en popüler Java IDE'lerinden bazılarıdır.


 

8. Classloader nedir?

Java ClassLoader, Java Virtual Machine (JVM) tarafından kullanılan bir sistemdir. Bu sistem, Java programlarının ihtiyaç duyduğu sınıfları yüklemekte ve çalıştırmakta kullanılır. 

Java’da Bootstrap ClassLoader, Extension ClassLoader ve Sistem / Uygulama ClassLoader olmak üzere üç sınıf yükleyici vardır.


 

9. JVM, JRE ve JDK arasındaki farklar nelerdir?

JVM, JRE ve JDK, Java’nın üç temel kavramıdır. JVM Java kodlarını çalıştırır, JRE Java programlarını çalıştırmak için gerekli olan ortamı sağlar ve JDK Java programlarının geliştirilmesi için gerekli olan araçları sağlar. Daha detaylı bakacak olursak:

 

  • 🎯 JVM tam açılımıyla Java Virtual Machine, Java kodunu platformdan bağımsız hale getirir ve tüm işletim sistemlerinde ve platformlarda çalışmasını sağlar. 
  • 🎯 JRE tam açılımıyla Java Runtime Environment,  Java programlarının çalıştırılması için gerekli olan bir yazılımdır. JRE, JVM dahil olmak üzere Java ile ilgili gerekli tüm dosyaları içerir. 
  • 🎯 JDK tam açılımıyla Java Development Kit, Java programlarının geliştirilmesi için gerekli olan bir yazılımdır. JDK, Java programlarının geliştirilmesi için gereken tüm araçları, kütüphaneleri, derleyicileri ve debugglerları içerir.


 

10. Java, platformdan bağımsız bir dil midir?

Evet, Java platformdan bağımsız bir dildir. Java, derleyici tarafından derlenir ve daha sonra bayt koduna dönüştürülür. Bu nedenle, herhangi bir donanıma veya yazılıma bağlı değildir. Bayt kodu da platformdan bağımsızdır.  

Java kodları, JVM tarafından çalıştırılır. JVM, Java bytecode adı verilen kodu işletim sistemi tarafından anlaşılabilir bir formata dönüştürür ve çalıştırır. Bu, Java kodlarının farklı işletim sistemlerinde ve platformlarda çalışmasını sağlar.


 

11. Typecasting'i açıklayın ve kod örneği gösterin.

Typecasting, bir veri tipindeki değişkeni başka bir veri tipindeki değişkene atama/dönüştürme işlemine denir. Örtülü ve açık olmak üzere iki tip veri türü vardır.

Typecasting işlemi, genellikle programcı tarafından yapılır. Örneğin, Java'da, bir int değeri bir float değerine dönüştürmek için (int) ifadesi kullanılır. 

 

Kod şöyle gösterilir 👇:

 

12. Nesne nedir?

Bir sınıf tanımlandıktan sonra yeni bir veri tipi oluşturulmuş olunur. Java’da oluşturulan bu yeni veri tipine ait değişkene nesne (object) adı verilir. 

Bir Java nesnesinin iki önemli özelliği davranış ve durumdur. JVM yeni anahtar sözcükle karşılaştığı anda bir nesne oluşturur.


 

13. Java'da sınıfları tanımlayın. 

Benzer veri türlerine sahip nesnelerin oluşturduğu koleksiyona sınıf denir. Java'da sınıflar, programlama dillerinde genellikle kullanılan bir kavramdır. Aslında sınıf, nesnenin tasarımını ve davranışını tanımlar. 

Sınıflar, veri ve metodlar içerir. Java'da sınıf tanımlamak için "class" anahtar kelimesi kullanılır. 

 

Örneğin 👇:

 

14. Statik yöntemler ve değişkenler nelerdir?

Bir sınıfın değişkenleri bildiren ve yöntemleri bildiren iki unsuru vardır. Java'da statik yöntemler ve değişkenler, bir sınıfın nesnelerinin oluşturulduğu zaman yerleştirilen değil, sınıf yüklendiği zaman yerleştirilen metodlar ve değişkenlerdir.


 

15. Java constructors nedir?

Java constructors bir diğer adıyla yapıcı, nesneleri başlatmak için kullanılan kod bloğunu ifade eder. Constructors, sınıfın adı ile aynı olmalıdır. Bir nesne veya sınıf oluşturulduğunda otomatik olarak oluşturulur. "new" anahtar kelimesiyle birlikte çalışır.

Bir constructors tanımlarken şu kurallara dikkat etmek önemlidir:

  • ✅ Oluşturucunun adı sınıfın adı ile aynı olmalıdır.
  • ✅ Oluşturucu bir dönüş türüne sahip olmamalıdır.
  • ✅ Eğer sınıfta farklı oluşturucu tanımlanıyorsa, parametrelerin sayısı ve tipi farklı olmalıdır.

 


 

16. Java singleton ne demek?

Singleton, herhangi bir zamanda tek bir JVM'de yalnızca bir örneği oluşturulabilen sınıftı ifade eder. Bir sınıfın yalnızca bir tek örneğinin oluşturulmasını sağlayan tasarım desenini olarak da ifade edilir. 

Bu desen, belirli bir sınıfın nesnesinin yalnızca bir kez oluşturulmasını ve bu örneğe tüm uygulama boyunca tek bir noktadan erişilebilmesini garanti eder.

Java’da nesne yaratmak için “new” anahtar kelimesini kullanır. Yapılandırıcı yani diğer bir adıyla constructor çağrısı yapılır. Bu durumda, bu sınıfın nesnesini aşağıdaki gibi yaratılır 👇:

 


 

17. Java'da equals() ve == nedir? Aralarındaki fark nedir?

Java’da nesnelerin eşitliklerini karşılaştırmak için equals() ve == operatörleri kullanılır.

 

1️⃣ Equals() operatörü, iş mantığı tarafından tanımlanan iki nesnenin eşitliğini kontrol etmek için kullanılır. Equals() operatorü, Object sınıfında tanımlanır.

String sınıfı ve bazı diğer sınıflar, içerik karşılaştırması için "equals()" metodunu geçersiz kılar.

 

2️⃣ Java'daki varsayılan uygulama, iki nesneyi karşılaştırmak için == operatörünü de kullanabilir. "==" operatörü, nesnelerin referanslarını (bellek adreslerini), iki değişkenin aynı bellek bölgesini işaret edip etmediğini kontrol etmeye yarayan operatördür. 


 

18. Java süper anahtar kelime nedir? Ne zaman kullanılır?

Java'da süper anahtar kelime, doğrudan bir üst sınıf nesnesine atıfta bulunan bir referans değişkenidir. Bir alt sınıf örneği oluşturduğunuzda, süper anahtar kelimesi tarafından başvurulan üst sınıfın bir örneğini de yaratmış olursunuz.

Java süper anahtar kelimesinin kullanımları şunlardır: 

1️⃣Bir üst sınıf örnek değişkenine atıfta bulunmak istendiğinde kullanılır.

2️⃣ Süper anahtar kelimesi, bir ana sınıfın yöntemini çağırmak için kullanılır.

3️⃣ Super(), ana sınıfın yapıcısını çağırmak için kullanılır.

 

Çıktı:

Black

White

 

19. Java’da HashSet, TreeSet ve HashLinkedSet nedir?

HashSet, LinkedHashSet ve TreeSet, Java’da Set (küme) türleridir.

 

1️⃣ HashSet, set arabirimini uygulayan bir sınıftır ve elemanları tekrar etmeyen bir yapıda saklar. HashSet arayüzü verilerini düzensiz olarak sıralar. Performans olarak tasarruf etmenizi sağlar. 

Bu durumda çıktı şöyle olacaktır: [null, Java, MySQL, Spring, Oracle, Angular]


 

2️⃣ HashLinkedSet ise verileri eklenen sıraya göre düzenli tutar. HashSet'in bir alt sınıfıdır. Eğer verilerin sırası önemli değilse, HashLinkedSet ekstra maliyetli olacaktır.

 

3️⃣ TreeSet, NavigableSet arabirimini uygulayan bir sınıftır ve elemanları sıralı bir şekilde saklar. Bu sınıf, elemanları kısmi sıralama veya doğal sıralama düzenine göre düzenler. 


 

20. HashSet ve TreeSet arasındaki fark nedir?

HashSet

TreeSet

Bir hash tablosu aracılığıyla uygulanır.

TreeSet, verileri depolamak için ağaçları kullanan SortedSet arayüzünü kullanır.

Boş nesneye izin verir.

Boş nesneye izin vermez.

Arama, ekleme ve silme işlemleri için TreeSet'ten daha hızlıdır.

Arama, ekleme ve silme için HashSet'ten daha yavaştır.

Öğeleri düzenli bir şekilde tutmaz.

Öğeleri sıralı bir şekilde tutar.


 

21. HashSet, LinkedHashSet ve TreeSet ne zaman kullanılır?

  • 💻 HashSet'i kullanın: Öğeleri herhangi bir sıraya göre tutmaya gerek olmadığında.
  • 💻 LinkedHashSet'i kullanın: Benzersiz öğeler grubuna ihtiyaç duyulduğunda ve öğelerin ekleme sırası da önemli olduğunda.
  • 💻 TreeSet kullanın: Benzersiz öğeler/nesneler grubu gerektiğinde ve bazı comparator’lere göre öğelerin sıralanması gerektiğinde.


 

22. Java reflection (yansıma) nedir?

Reflection, yöntemlerin, sınıfların ve arabirimlerin davranışını incelemek ve değiştirmek için kullanılan bir çalışma zamanı API'sidir.

Java Reflection, yararlı olan güçlü bir araçtır. Java Reflection, derleme zamanında sınıfları, arabirimleri, alanları ve yöntemleri çalışma zamanında analiz etmeye olanak tanır. 


 

23. Java senkronizasyon nedir?

✅ Java, birden çok iş parçacığının yürütülmesine izin verir. 

✅ Senkronizasyon, dizilerin birbiri ardına yürütülmesini sağlar.
✅ Paylaşılan belleğe erişimden kaynaklanan bellek hatalarını önler. 

 

Bir senkronizasyon kodu örneği:


 

24. Java’da Break nedir?

Java'da break ifadesi, döngü içerisinde koşul sağlanmadan döngüyü bitirmek, tekrarlı yapıları kontrol etmek için kullanılan bir ifadedir.  

“for, while, do while” gibi witch ve loop ifadelerinde kullanılır. Çalıştırıldığı anda switch ve loop ifadelerinin sonlanmasını sağlar.

Aşağıdaki örnekte i=3 olduğunda döngü durdurulur.


 

25. Java’da Continue nedir?

Java'da "continue" ifadesi, döngülerde veya switch-case yapılarında kullanılarak, belirli bir durumu atlayarak döngünün veya yapı bloklarının devamını sağlayan bir kontrol ifadesidir. Yalnızca döngü ifadeleriyle kullanılabilir.

 

Kod örneği: 


 

26. Java'da sonsuz döngü (infinite loop) nedir? 

Java’da sonsuz döngü (infinite loop), bir döngü veya koşulun sürekli olarak doğru kalması nedeniyle döngünün hiçbir zaman sonlanmaması durumudur. Yani döngü, sürekli olarak tekrar eder. 

 

📍 Örnek:


 

27. Java String Pool (Dize Havuzu) nedir?

Görsel kaynak: Edureka

 

Java String Pool, yığın belleğinde saklanan bir String havuzunu ifade eder. Yeni bir nesne yaratıldığında, String havuzu önce nesnenin havuzda var olup olmadığını kontrol eder. Eğer nesne havuzdaysa, aynı referans değişkene döndürülür. Aksi durumda, String havuzunda yeni nesne oluşturulur ve ilgili referans döndürülür.

İki şekilde String nesnesi oluşturulabilir:

 

1- Çift tırnak kullanarak:

2- New anahtar kelimesini kullanarak:


 

28. Java’da OOP (Nesne Yönelimli Programlama) Nedir?

Nesne yönelimli programlama veya OOP, programların mantık ve işlevler yerine nesneler etrafında düzenlendiği bir programlama modeli veya yaklaşımıdır. 

OOP, mantık yerine nesnelere odaklanır. Bu yaklaşım, büyük ve karmaşık kodların daha düzenli ve kolay anlaşılır bir şekilde geliştirilmesini sağlar .


 

29. Java'daki OOP'lerin prensipleri nelerdir?

  1. Kalıtım: Kalıtım, bir sınıfın diğerinin özelliklerini almasıdır.
  2. Kapsülleme: Java'da kapsülleme, verileri ve kodu tek bir birim olarak bir araya getirmektir.
  3. Soyutlama: Soyutlama, uygulama ayrıntılarını kullanıcıdan gizleme ve yalnızca kullanıcılara işlevsellik sağlama metodolojisidir. 
  4. Polimorfizm: Polimorfizm, bir değişkenin, işlevin veya nesnenin birden çok biçim alma yeteneğidir.

 

 

30. Java erişim belirleyiciler nedir?

Erişim belirleyiciler, sınıfların diğer farklı sınıflardaki metotlara erişim sağlamasını veya bir sınıftaki özel bir metoda başka bir sınıfın erişim sağlamasını engellemesini sağlar.  

Java’da 4 farklı erişim belirleyici bulunur: 

1️⃣ public: Herhangi bir yerden erişim sağlanabilir.

2️⃣ protected: Sınıf, paket ve altsınıflar tarafından erişim sağlayabilir.

3️⃣ private: Sadece sınıf içerisinden erişilebilir.

4️⃣ default(erişim belirleyici yok): Bir erişim belirleyici kullanmadan sınıf ve paket içerisinden erişilebilir.


 

31. Java’da this() ve super() nedir? Aralarındaki farklar nedir?

Bunlar, sınıf yapıcıları arasında geçiş yapmak için kullanılır. Her iki metod da yapıcı metotların içinde ilk satır olarak yazılması gerekmektedir. Aksi halde hata verecektir.

 

👉 "this()": Bu metod, sınıfın kendisinde bulunan yapıcı metotlar arasında geçiş yapmak ve metodları çağırmak için kullanılabilir.

👉 "super()": Bir sınıfın kalıtım yoluyla erişebildiği üst sınıfın yapıcı metotları arasında geçiş yapmak ve çağırmak için kullanılabilir.


 

32. Overloading ve override nedir?

👉 Overloading: Java'da, aynı sınıf içinde aynı isimli birden fazla metodun olmasına denir. Bu metodlar, aynı isimlerine rağmen farklı parametreler alırlar. Böylece, kod okunaklılığı arttırılabilir.

👉 Overriding: Java'da, bir sınıfın kalıtım yoluyla erişebildiği üst sınıftaki aynı isimli metodun yeniden tanımlanmasına denir. Böylece, üst sınıftaki metodun işlevselliği değiştirilebilir ve kod tekrarı önlenebilir.

İÇERİKLER
Konu içeriği

Önerilen İçerikler

Tüm İçerikler