
Java mülakatlarına hazırlık için nihai rehbere hoş geldiniz! İster deneyimli bir geliştirici olun, ister yeni başlıyor olun, bu soru ve cevap koleksiyonu Java'yı, temel kavramlarını ve iş görüşmelerinde sıkça sorulan soruları daha iyi anlamanıza yardımcı olacaktır.
Hadi Java dünyasına dalalım ve bilginizi, her seferinde bir soru ile güçlendirelim! 🖥️💡
📌 Java nedir?
Java, yüksek seviyeli, nesne yönelimli bir programlama dilidir ve web, masaüstü ve mobil uygulamalar geliştirmede yaygın olarak kullanılır. Basitliği, sağlamlığı ve platformlar arası çalışabilme yeteneği ile bilinir.
📌 Java ve JavaScript arasındaki fark nedir?
İsimleri benzer olsa da, Java ve JavaScript farklı amaçlar için tasarlanmış iki ayrı programlama dilidir:
- Java: Masaüstü veya mobil uygulamalar gibi bağımsız uygulamalar geliştirmek için kullanılır.
- JavaScript: Ağırlıklı olarak web sitelerine ve web uygulamalarına etkileşim eklemek için kullanılır.
📌 Java programlamasının temel ilkesi nedir?
Java, "bir kez yaz, her yerde çalıştır" (WORA) ilkesini takip eder. Bu, Java kodu bir kez bayt koduna derlendiğinde, Java Sanal Makinesi (JVM) yüklü olan herhangi bir platformda çalışabileceği anlamına gelir.
📌 Java'nın temel özellikleri nelerdir?
Java birkaç önemli özelliğe sahiptir:
- Platform Bağımsızlığı: JVM sayesinde Java kodu, çeşitli platformlarda değişiklik yapılmadan çalıştırılabilir.
- Nesne Yönelimli: Java, programları yapılandırmak için nesnelere ve sınıflara odaklanır.
- Otomatik Bellek Yönetimi: Java, Garbage Collection ile bellek tahsisi ve serbest bırakmayı otomatik olarak yapar.
- Güçlü Tip Denetimi: Java, çalışma zamanında hataları önlemek için katı veri türü kuralları uygular.
📌 Java'da sınıf nedir?
Java'da sınıf, nesneler oluşturmak için kullanılan bir şablondur. Bir sınıf, o sınıfa ait nesnelerin sahip olabileceği özellikleri (nitelikler) ve davranışları (metodlar) tanımlar.
📌 Java'da nesne nedir?
Java'da nesne, bir sınıfın örneğidir. Bir sınıf tarafından tanımlanan özellikler ve davranışlara sahip belirli bir varlığı veya öğeyi temsil eder.
📌 Java'da metod nedir?
Java'da metod, belirli bir görevi gerçekleştirmek için tasarlanmış bir kod bloğudur. Metodlar çağrılabilir ve tanımlanan işlevleri yerine getirmek için kullanılır.
📌 Sınıf ve nesne arasındaki fark nedir?
Sınıf ve nesne arasındaki fark:
- Sınıf, nesnelerin yapısını ve davranışını tanımlayan bir şablondur.
- Nesne, bir sınıfın belirli bir örneğidir ve kendi verilerine ve davranışlarına sahip gerçek bir varlığı temsil eder.
📌 Java'da kalıtım nedir?
Kalıtım, bir sınıfın başka bir sınıftan özellikleri ve davranışları miras alabilmesi mekanizmasıdır. Kodun yeniden kullanılmasına ve sınıflar arasında hiyerarşik bir ilişki kurulmasına olanak tanır.
📌 Java'da kalıtım türleri nelerdir?
Java, tekli kalıtımı destekler, yani bir sınıf yalnızca bir üst sınıftan miras alabilir. Ayrıca, bir sınıfın birden fazla arayüzü uygulayabilmesine olanak tanıyan arayüzler aracılığıyla çoklu kalıtım desteklenir.
📌 Java'da çok biçimlilik (polymorphism) nedir?
Çok biçimlilik, bir nesnenin birçok biçim alabilme yeteneğidir. Java'da, farklı sınıflara ait nesnelerin ortak bir üst sınıfın nesneleri olarak işlem görmesine olanak tanır, böylece kodun esnekliği ve yeniden kullanılabilirliği sağlanır.
📌 Java'da erişim belirleyicileri nelerdir?
Java, dört erişim belirleyicisi sunar: public, private, protected ve varsayılan (belirtilmemiş). Bunlar, sınıfların, metodların ve değişkenlerin görünürlüğünü ve erişilebilirliğini kontrol eder.
📌 Java'da kapsülleme (encapsulation) nedir?
Kapsülleme, dahili detayları gizleme ve bir nesneyle etkileşim kurmak için bir genel arayüz sağlama sürecidir. Veri soyutlamasını sağlamaya yardımcı olur ve verileri yetkisiz erişimlerden korur.
📌 Java'da yapıcı (constructor) nedir?
Java'da yapıcı, bir sınıfın nesnelerini başlatmak için kullanılan özel bir yöntemdir. Bir nesne oluşturulduğunda otomatik olarak çağrılır ve sınıfla aynı isme sahiptir.
📌 Yapıcı ile yöntem arasındaki fark nedir?
Yapıcı, nesne başlatma için kullanılan özel bir yöntemdir ve bir nesne oluşturulduğunda otomatik olarak çağrılır. Diğer yandan, bir yöntem, belirli bir görevi yerine getiren bir kod bloğudur ve açıkça çağrılması gerekir.
📌 Java Sanal Makinesi (JVM) nedir?
JVM, Java platformunun kritik bir parçasıdır. Java bytecode'unu çalıştırmaktan sorumludur ve Java programlarının herhangi bir donanım veya işletim sisteminde çalışabilmesi için bir çalışma zamanı ortamı sağlar.
📌 Java Geliştirme Kiti (JDK) nedir?
JDK, Oracle tarafından sağlanan bir yazılım geliştirme kitidir ve Java programlarını geliştirmek, derlemek ve çalıştırmak için gerekli araçlar ve kütüphaneleri içerir. JVM, derleyici ve diğer yardımcı programlardan oluşur.
📌 JDK ile JRE arasındaki fark nedir?
JDK (Java Geliştirme Kiti), Java uygulamaları geliştirmek için gerekli araçları içeren bir yazılım geliştirme kitidir; JRE (Java Çalıştırma Ortamı) ise Java uygulamalarını çalıştırmak için gereken bir çalışma ortamıdır.
📌 Java'da paket (package) nedir?
Java'da paket, ilgili sınıfları ve arayüzleri düzenlemenin bir yoludur. Bir isim alanı sağlar ve isim çakışmalarını önlemeye yardımcı olur.
📌 Soyut sınıf (abstract class) ile arayüz (interface) arasındaki fark nedir?
Soyut sınıf, hem soyut hem de soyut olmayan yöntemlere sahip olabilir ve diğer sınıflar tarafından genişletilebilirken, arayüz yalnızca soyut yöntem bildirimlerini içerir ve sınıflar tarafından uygulanabilir.
📌 Java'da statik yöntem (static method) nedir?
Java'da statik yöntem, sınıfa ait olan bir yöntemdir, yani sınıfın bir örneğine ait değildir. Sınıfın bir nesnesi oluşturulmadan çağrılabilir.
📌 Java'da "final" anahtar kelimesi ne için kullanılır?
Java'da "final" anahtar kelimesi, bir değişken, yöntem veya sınıf bildirmek için kullanılabilir. Bir final değişken değiştirilemez, bir final yöntem geçersiz kılınamaz ve bir final sınıf kalıtılamaz.
📌 Java'da yöntem aşırı yüklemesi (method overloading) nedir?
Yöntem aşırı yüklemesi, aynı isimle ancak farklı parametrelerle birden fazla yöntemi aynı sınıfta tanımlama yeteneğidir. Uygun yöntem, geçirilen argümanlara bağlı olarak çağrılır.
📌 Java'da yöntem geçersiz kılma (method overriding) nedir?
Yöntem geçersiz kılma, bir alt sınıfta, üst sınıfta zaten tanımlanmış bir yöntemin farklı bir uygulamasını sağlama yeteneğidir. Bu, geçersiz kılınan yöntemin üst sınıf yönteminin yerine çalıştırılmasına olanak tanır.
📌 Yöntem aşırı yüklemesi ile yöntem geçersiz kılma arasındaki fark nedir?
Yöntem aşırı yüklemesi, aynı isimle ancak farklı parametrelerle birden fazla yöntemi aynı sınıfta tanımlamakla ilgilidir, oysa yöntem geçersiz kılma, bir alt sınıfta, üst sınıfta zaten tanımlanmış bir yöntemin farklı bir uygulamasını sağlamayı içerir.
📌 Java'da "this" anahtar kelimesi nedir?
Java'daki "this" anahtar kelimesi, sınıfın mevcut örneğine atıfta bulunur. Örnek değişkenlerine erişmek, örnek yöntemlerini çağırmak veya yapıcıları çağırmak için kullanılabilir.
📌 Java'da statik değişken (static variable) nedir?
Java'da statik değişken, sınıfa ait olan bir değişkendir, yani sınıfın bir örneğine ait değildir. Sınıfın tüm örnekleri arasında paylaşılır.
📌 Yöntem parametrelerinde "final" anahtar kelimesinin amacı nedir?
Yöntem parametrelerinde "final" anahtar kelimesi, parametre değerinin yöntem içinde değiştirilemez olmasını sağlamak için kullanılır. Bu, parametrenin yeniden atanamayacağını veya değiştirilemeyeceğini garanti eder.
📌 Java'daki "static" anahtar kelimesinin amacı nedir?
Java'daki "static" anahtar kelimesi, sınıfın kendisine ait olan değişkenleri, yöntemleri ve iç sınıfları bildirmek için kullanılır. Bunlara, sınıfın bir nesnesini oluşturmadan erişim sağlar.
📌 Java'daki "==" ile ".equals()" arasındaki fark nedir?
Java'daki "==" operatörü, nesne referanslarının eşitliğini karşılaştırmak için kullanılırken, ".equals()" yöntemi nesne değerlerinin eşitliğini karşılaştırmak için kullanılır. ".equals()" yöntemi, özel eşitlik karşılaştırması sağlamak için geçersiz kılınabilir.
📌 Java'da "super" anahtar kelimesinin amacı nedir?
Java'da "super" anahtar kelimesi, bir sınıfın üst sınıfına atıfta bulunmak için kullanılır. Üst sınıfın üyelerine erişmek, üst sınıf yapıcılarını çağırmak veya aynı isme sahip üst sınıf ve alt sınıf üyeleri arasında ayrım yapmak için kullanılabilir.
📌 Java'da bir iş parçacığı (thread) nedir?
Java'da bir iş parçacığı (thread), bir program içindeki hafif bir yürütme birimidir. Birden fazla görev veya aktivitenin eşzamanlı olarak yürütülmesine olanak tanır ve sistem kaynaklarının daha iyi kullanımını sağlar.
📌 Java'da bir iş parçacığı nasıl oluşturulur ve başlatılır?
Java'da bir iş parçacığı oluşturmak ve başlatmak için ya "Thread" sınıfını genişletip "run()" yöntemini geçersiz kılabilir ya da "Runnable" arayüzünü uygulayarak yeni bir "Thread" nesnesine geçirebilirsiniz. Ardından, iş parçacığı nesnesinde yürütmeyi başlatmak için "start()" yöntemini çağırmalısınız.
📌 Java'da senkronizasyon nedir?
Java'da senkronizasyon, birden fazla iş parçacığının erişimini ve yürütülmesini kontrol etmek için kullanılan bir tekniktir. Bu sayede, yalnızca bir iş parçacığı, paylaşılan bir kaynak veya kod bloğuna aynı anda erişebilir.
📌 "Synchronized" bloğu ile "synchronized" yöntemi arasındaki fark nedir?
Java'da "synchronized" bloğu, belirli bir kod bloğunun senkronize edilmesini sağlar ve yalnızca bir iş parçacığının onu yürütmesine izin verir. "Synchronized" yöntemi ise senkronizasyonu tüm yönteme uygular ve tüm iş parçacıkları için karşılıklı dışlayıcılığı sağlar.
📌 Java'da "volatile" anahtar kelimesinin amacı nedir?
Java'da "volatile" anahtar kelimesi, bir değişkenin değerinin birden fazla iş parçacığı tarafından değiştirilebileceğini belirtmek için kullanılır. Bu, değişken üzerindeki her okuma veya yazma işleminin doğrudan ana bellekte gerçekleştirilmesini sağlar ve CPU önbelleklerine güvenmemesini garanti eder.
📌 Java'da bir istisna (exception) nedir?
Java'da bir istisna, bir programın yürütülmesi sırasında normal talimat akışını kesen bir olaydır. Bu, bir hata durumu veya olağanüstü bir durumu temsil eder.
📌 Kontrol edilen ve kontrol edilmeyen istisnalar arasındaki fark nedir?
Kontrol edilen istisnalar, derleme aşamasında kontrol edilir ve programcı tarafından "throws" anahtar kelimesi ile ele alınması veya bildirilmesi zorunludur. Kontrol edilmeyen istisnalar ise derleme aşamasında kontrol edilmez ve programcı tarafından ele alınması veya bildirilmesi zorunlu değildir.
📌 Java'da istisnalar nasıl ele alınır?
Java'da istisnalar, try-catch blokları kullanılarak ele alınabilir. İstisna fırlatabilecek kod, try bloğuna yerleştirilir ve bir istisna oluşursa, catch bloğunda yakalanır ve işlenir.
📌 İstisna işleme sırasında "finally" bloğunun amacı nedir?
Java'da "finally" bloğu, bir istisna meydana gelsin ya da gelmesin çalıştırılacak bir kod bloğunu tanımlamak için kullanılır. Genellikle kaynakları serbest bırakmak veya temizlik işlemleri yapmak için kullanılır.
📌 Java'da "throw" ve "throws" anahtar kelimeleri arasındaki fark nedir?
Java'da "throw" anahtar kelimesi, bir istisna fırlatmak için kullanılırken, "throws" anahtar kelimesi, bir yöntem bildiriminde, o yöntemin belirli türdeki istisnaları fırlatabileceğini belirtmek için kullanılır.
📌 Kontrol edilen istisnalar ile çalışma zamanındaki istisnalar arasındaki fark nedir?
Kontrol edilen istisnalar, derleme aşamasında kontrol edilir ve ele alınması veya bildirilmesi zorunludur; çalışma zamanındaki istisnalar (kontrol edilmeyen istisnalar) ise ele alınması veya bildirilmesi zorunlu değildir.
📌 Java API'si nedir?
Java API'si (Uygulama Programlama Arayüzü), Java Geliştirme Kiti (JDK) tarafından sağlanan sınıflar, arayüzler ve diğer kaynakların bir koleksiyonudur. Java uygulamaları oluşturmak için önceden tanımlanmış sınıflar ve yöntemler seti sağlar.
📌 ArrayList ile LinkedList arasındaki fark nedir?
ArrayList, hızlı rastgele erişim sağlayan, yeniden boyutlandırılabilir bir dizi olarak uygulanır, ancak öğelerin eklenmesi ve kaldırılmasında daha yavaş olabilir. LinkedList, hızlı ekleme ve kaldırma sağlayan bir çift bağlı liste olarak uygulanır, ancak rastgele erişim daha yavaş olabilir.
📌 HashSet ile TreeSet arasındaki fark nedir?
Java'da HashSet, öğeleri belirli bir sıraya göre saklamadan, hızlı erişim için bir hash tablosu kullanarak saklar; ancak belirli bir düzeni korumaz. TreeSet, öğeleri sıralı bir şekilde saklar ve doğal sıralamasına veya özel bir karşılaştırıcıya dayalı olarak öğelerin verimli bir şekilde alınmasına olanak tanır.
📌 "equals()" yöntemi ile "hashCode()" yöntemi arasındaki fark nedir?
"equals()" yöntemi, nesnelerin değerlerine göre eşitliğini karşılaştırmak için kullanılırken, "hashCode()" yöntemi, bir nesne için benzersiz bir hash kodu değeri hesaplamak için kullanılır; genellikle HashMap gibi hash tabanlı veri yapılarında verimli erişim için kullanılır.
📌 Yüzeysel kopya (shallow copy) ile derin kopya (deep copy) arasındaki fark nedir?
Yüzeysel kopya, yeni bir nesne oluşturur ve orijinal nesne ile aynı referansları paylaşır; derin kopya ise yeni bir nesne oluşturur ve tüm referanslı nesneleri de kopyalayarak ayrı kopyalar elde eder.
📌 Java'da lambda ifadesi (lambda expression) nedir?
Java'da bir lambda ifadesi, işlevsel arayüzlerin sözdizimini basitleştirmek için kullanılan anonim bir fonksiyondur. Özellikle işlevsel programlama yapıları ile çalışırken daha kısa ve okunabilir kod yazımına olanak tanır.
📌 Java'da fonksiyonel programlama nedir?
Java'da fonksiyonel programlama, saf fonksiyonlar ve değişmez veriler kullanarak program yazmaya odaklanan bir programlama paradigmasıdır. Fonksiyonların birinci sınıf vatandaşlar olarak ele alınmasını ve yüksek dereceli fonksiyonlar ile lambda ifadelerinin kullanılmasını içerir.
📌 Java 8'de fonksiyonel programlama için hangi özellikler bulunmaktadır?
Java 8, lambda ifadeleri, fonksiyonel arayüzler, koleksiyonlarla çalışmak için Stream API ve arayüzlerde varsayılan metodlar gibi fonksiyonel programlamayı desteklemek için birkaç özellik tanıtmıştır.
📌 Bir arayüz ile bir soyut sınıf arasındaki fark nedir?
Java'da bir arayüz, yalnızca metod imzalarını ve sabitleri bildirebilir, ancak uygulama sağlayamaz; soyut bir sınıf ise hem metod beyanlarına hem de somut uygulamalara sahip olabilir. Bir sınıf birden fazla arayüzü uygulayabilir, ancak yalnızca bir soyut sınıftan miras alabilir.
📌 Arayüz metodlarında "default" anahtar kelimesinin amacı nedir?
Java arayüzlerinde "default" anahtar kelimesi, bir metod için varsayılan bir uygulama tanımlamak için kullanılır. Bu, mevcut arayüzlere yeni metodlar eklemeye izin verir ve bu arayüzleri uygulayan sınıfların uygulamalarını bozmaz.
📌 BufferedReader ile Scanner arasındaki fark nedir?
Java'da BufferedReader, karakter akışından metin okumak için verimli bir tamponlama ile çalışırken; Scanner, dosyalar, dizeler veya standart giriş gibi çeşitli kaynaklardan farklı veri türlerini ayrıştırabilir.
📌 Java'daki "StringBuilder" sınıfının amacı nedir?
Java'daki "StringBuilder" sınıfı, değiştirilebilir karakter dizilerini oluşturmak ve manipüle etmek için kullanılır. "+" operatörü kullanarak dize birleştirmekten daha verimlidir, çünkü gereksiz nesne yaratımını önler.
📌 "Comparable" ve "Comparator" arayüzleri arasındaki fark nedir?
"Comparable" arayüzü, "compareTo()" metodunu uygulayarak bir sınıf için doğal bir sıralama tanımlamak için kullanılır. "Comparator" arayüzü ise, "compare()" metodunu uygulayarak özel bir sıralama tanımlamak için bir yol sağlar ve karşılaştırılan sınıftan bağımsızdır.
📌 Java'daki "assert" anahtar kelimesinin amacı nedir?
Java'daki "assert" anahtar kelimesi, belirli koşulları doğrulamak için kodda yerleştirilen kontroller olan doğrulamalar yapmak için kullanılır. Genellikle geliştirme ve test aşamalarında potansiyel hataları veya geçersiz varsayımları yakalamak için kullanılır.
📌 Yerel değişken ile örnek değişken arasındaki fark nedir?
Java'da yerel değişken, bir metod veya blok içinde tanımlanır ve o metod veya blok içinde sınırlı bir kapsamı vardır. Örnek değişken ise, bir sınıf içinde tanımlanan ve tüm sınıf metodları tarafından erişilebilen bir üye değişkendir.
📌 Java'daki "transient" anahtar kelimesinin amacı nedir?
Java'daki "transient" anahtar kelimesi, bir değişkenin nesne serileştirilmesi sırasında serileştirilmemesi gerektiğini belirtmek için kullanılır. Bir nesne serileştirildiğinde, geçici değişkenler varsayılan değerlerine ayarlanır.
📌 Java'daki "static" bloğunun amacı nedir?
Java'daki "static" bloğu, statik değişkenleri başlatmak veya bir sınıf için bir kez yapılan başlatma görevlerini yerine getirmek için kullanılır. Sınıf belleğe yüklendiğinde, o sınıfın herhangi bir nesnesi oluşturulmadan önce çalıştırılır.
📌 Java'daki "strictfp" anahtar kelimesinin amacı nedir?
Java'daki "strictfp" anahtar kelimesi, kayan nokta hesaplamaları için IEEE 754 standardına katı bir uyum sağlamak için kullanılır. Farklı platformlarda tutarlı sonuçlar elde edilmesini sağlar ve hassasiyeti etkileyebilecek bazı optimizasyonları devre dışı bırakır.
📌 Java'da bir public sınıf ile bir varsayılan (paket-özel) sınıf arasındaki fark nedir?
Java'da bir public sınıf, hangi paketten olursa olsun başka bir sınıftan erişilebilir. Varsayılan sınıf ise, yalnızca aynı paket içinde erişilebilen ve paketin dışından erişilemeyen bir paket-özel sınıftır.
📌 Java'daki "enum" anahtar kelimesinin amacı nedir?
Java'daki "enum" anahtar kelimesi, sabit bir değer kümesini temsil eden özel bir tür olan bir sayım tanımlamak için kullanılır. Önceden tanımlanmış değerlerin daha yapılandırılmış ve tür güvenli bir şekilde temsil edilmesini sağlar.
📌 Java'daki "break" ve "continue" ifadelerinin amacı nedir?
Java'daki "break" ifadesi, bir döngü veya switch ifadesinin yürütülmesini sonlandırmak ve döngü veya switch bloğundan sonra yürütmeye devam etmek için kullanılır. "Continue" ifadesi ise, bir döngünün mevcut yinelemesini atlamak ve bir sonraki yinelemeye geçmek için kullanılır.
📌 Java'daki "try-with-resources" ifadesinin amacı nedir?
Java'daki "try-with-resources" ifadesi, "AutoCloseable" arayüzünü uygulayan kaynakları otomatik olarak kapatmak için kullanılır. Bir istisna oluşsa bile, dosya akışları veya veritabanı bağlantıları gibi kaynakların düzgün bir şekilde kapatılmasını sağlar.
📌 Java'daki "instanceof" operatörünün amacı nedir?
Java'daki "instanceof" operatörü, bir nesnenin belirli bir sınıfın örneği olup olmadığını veya belirli bir arayüzü uygulayıp uygulamadığını kontrol etmek için kullanılır. Kontrolün sonucunu belirten bir boolean değeri döner.
📌 Ön artırma ve son artırma operatörleri arasındaki fark nedir?
Java'daki ön artırma operatörü (++i), bir değişkenin değerini artırır ve artırılan değeri dönerken; son artırma operatörü (i++), bir değişkenin değerini artırır ama artırılmadan önceki orijinal değeri döner.
📌 Ön azaltma ve son azaltma operatörleri arasındaki fark nedir?
Java'daki ön azaltma operatörü (--i), bir değişkenin değerini azaltır ve azaltılan değeri dönerken; son azaltma operatörü (i--), bir değişkenin değerini azaltır ama azaltılmadan önceki orijinal değeri döner.
📌 Java'daki "Math" sınıfının amacı nedir?
Java'daki "Math" sınıfı, karekök, trigonometrik fonksiyonlar, üstel hesaplamalar, yuvarlama gibi yaygın matematiksel işlemleri gerçekleştirmek için çeşitli yöntemler sağlar.
📌 Java'daki "StringBuffer" sınıfının amacı nedir?
Java'daki "StringBuffer" sınıfı, "StringBuilder" sınıfına benzer şekilde değiştirilebilir karakter dizileri oluşturmak ve manipüle etmek için kullanılır. Ancak "StringBuffer" senkronizedir ve çok iş parçacıklı ortamlarda kullanılmak üzere güvenlidir.
📌 Java'daki "Math.random()" metodunun amacı nedir?
Java'daki "Math.random()" metodu, 0.0 (dahil) ile 1.0 (hariç) arasında rastgele bir double değeri döner. Genellikle rastgele sayılar üretmek veya rastgele davranışı simüle etmek için kullanılır.
📌 Java'daki "Character" sınıfının amacı nedir?
Java'daki "Character" sınıfı, bireysel karakterlerle çalışmak için yöntemler sağlar, bu yöntemler arasında karakter türlerini (harfler, rakamlar, boşluk) kontrol etmek, durum dönüştürmek ve karakter tabanlı işlemler yapmak bulunur.
📌 Java'da "Integer" sınıfının amacı nedir?
Java'daki "Integer" sınıfı, tam sayılarla çalışmak için yöntemler sağlayan bir sarmalayıcı sınıftır. Dizeyi tam sayıya dönüştürme, aritmetik işlemler yapma ve tam sayıları farklı temsillere (ikilik, onaltılık) dönüştürme gibi işlevler sunar.
📌 Java'da "Double" sınıfının amacı nedir?
Java'daki "Double" sınıfı, çift hassasiyetli kayan nokta değerleriyle çalışmak için yöntemler sağlayan bir sarmalayıcı sınıftır. Dize ayrıştırma, aritmetik işlemler yapma ve double'ları farklı temsillere (ikilik, onaltılık) dönüştürme işlevselliği sunar.
📌 Java'da "System" sınıfının amacı nedir?
Java'daki "System" sınıfı, sistem kaynaklarına erişim sağlar ve sistem ortamıyla etkileşimde bulunmayı mümkün kılar. Standart girdi/çıktı, hata çıktısı, mevcut zaman, dizileri kopyalama gibi yöntemler içerir.
📌 Java'da "File" sınıfının amacı nedir?
Java'daki "File" sınıfı, dosya ve dizin yollarını temsil etmek ve manipüle etmek için kullanılır. Dosya oluşturma, silme, yeniden adlandırma ve dosya özelliklerini (boyut, son değiştirilme tarihi, izinler) sorgulama gibi yöntemler sağlar.
📌 Java'daki "FileNotFoundException"ın amacı nedir?
Java'daki "FileNotFoundException", var olmayan veya bulunamayan bir dosyaya erişim sağlanmaya çalışıldığında fırlatılan bir istisnadır. Genellikle dosya ile ilgili hataları ele almak için yakalanır ve işlenir.
📌 Java'daki "NullPointerException"ın amacı nedir?
Java'daki "NullPointerException", bir nesne referansı beklenirken null bir referansına erişilip kullanıldığında fırlatılan bir istisnadır. Bu, bir programlama hatasını gösterir ve beklenmeyen çöküşleri önlemek için ele alınmalı veya engellenmelidir.
📌 Java'daki "ArrayIndexOutOfBoundsException"ın amacı nedir?
Java'daki "ArrayIndexOutOfBoundsException", bir diziyi erişmek için geçersiz bir indeks kullanıldığında fırlatılan bir istisnadır. Bu, indeksin negatif veya dizinin sınırlarını aştığını gösterir.
📌 Java'daki "ArithmeticException"ın amacı nedir?
Java'daki "ArithmeticException", bir aritmetik işlemin yasadışı veya tanımsız bir sonuç üretmesi durumunda fırlatılan bir istisnadır. Genellikle sıfıra bölme veya desteklenmeyen matematiksel işlemler sırasında meydana gelir.
📌 Java'daki "NumberFormatException"ın amacı nedir?
Java'daki "NumberFormatException", bir dize, beklenen formatta bir sayısal değere ayrıştırılamadığında fırlatılan bir istisnadır. Bu, bir dizeyi tam sayıya, float'a veya double'a dönüştürmeye çalışırken ancak dize geçerli bir sayıyı temsil etmediğinde oluşur.
📌 Java'daki "StringBuilder" sınıfının amacı nedir?
Java'daki "StringBuilder" sınıfı, değiştirilebilir karakter dizilerini oluşturmak ve manipüle etmek için kullanılır. Karakter dizilerini verimli bir şekilde ekleme, ekleme, silme ve değiştirme yöntemleri sunar.
📌 Java'daki "HashSet" sınıfının amacı nedir?
Java'daki "HashSet" sınıfı, belirli bir sırada olmadan benzersiz öğeleri depolayan Set arayüzünün bir uygulamasıdır. Öğeleri ekleme, kaldırma ve varlık kontrolü gibi temel işlemler için sabit zaman performansı sağlar.
📌 Java'daki "HashMap" sınıfının amacı nedir?
Java'daki "HashMap" sınıfı, anahtar-değer çiftlerini depolayan Map arayüzünün bir uygulamasıdır. Anahtarlarına göre öğeleri hızlı bir şekilde alma ve ekleme işlemlerini sağlar ve verimli haritalama ve arama işlemlerine olanak tanır.
📌 Java'daki "LinkedList" sınıfının amacı nedir?
Java'daki "LinkedList" sınıfı, bir çift yönlü bağlı liste kullanarak öğeleri depolayan List arayüzünün bir uygulamasıdır. Liste uçlarında öğeleri ekleme ve kaldırma işlemleri için verimlilik sağlarken, rastgele erişim daha yavaş olabilir.
📌 Java'daki "Comparator" arayüzünün amacı nedir?
Java'daki "Comparator" arayüzü, nesnelerin özel bir sıralamasını tanımlamak için kullanılır. "Comparable" arayüzü tarafından tanımlanan doğal sıralama dışındaki belirli kriterlere göre nesneleri karşılaştırma imkanı sağlar.
📌 Java'daki "Comparable" arayüzünün amacı nedir?
Java'daki "Comparable" arayüzü, bir sınıfın nesnelerinin doğal sıralamasını tanımlamak için kullanılır. Nesnelerin karşılaştırılmasını ve doğal sıralarına göre sıralanmasını sağlayan "compareTo()" metodunu sunar.
📌 Java'daki "super" anahtar kelimesinin amacı nedir?
Java'daki "super" anahtar kelimesi, bir sınıfın süper sınıfına atıfta bulunmak veya süper sınıfın yapıcısını, yöntemlerini veya değişkenlerini çağırmak için kullanılır. Aynı isimdeki süper sınıf ve alt sınıf üyeleri arasında ayırt edici olmak için kullanılır.
📌 Java'daki "this" anahtar kelimesinin amacı nedir?
Java'daki "this" anahtar kelimesi, bir sınıfın mevcut örneğine atıfta bulunmak için kullanılır. Genellikle örnek değişkenleri ile parametreleri ayırt etmek veya bir sınıf içinde diğer yapıcıları çağırmak için kullanılır.
📌 Java'daki "final" anahtar kelimesinin amacı nedir?
Java'daki "final" anahtar kelimesi, sabitler tanımlamak, değişkenleri değiştirilemez hale getirmek veya metod geçersiz kılmayı ya da sınıf mirasını engellemek için kullanılır. Bir değişkenin değeri veya bir metodun ya da sınıfın uygulaması değiştirilemez.
📌 Java'daki "static" anahtar kelimesinin amacı nedir?
Java'daki "static" anahtar kelimesi, bir sınıfın tüm örnekleri arasında paylaşılan sınıf düzeyinde değişkenler ve yöntemler tanımlamak için kullanılır. Bir sınıfın örneğini oluşturmadan değişkenlere veya yöntemlere erişim sağlar.
📌 Java'daki "abstract" anahtar kelimesinin amacı nedir?
Java'daki "abstract" anahtar kelimesi, soyut sınıflar veya metodlar tanımlamak için kullanılır. Soyut bir sınıf örneklendirilemez ve alt sınıflar için bir temel sınıf olarak hizmet eder. Soyut bir metodun bir uygulaması yoktur ve bir alt sınıfta geçersiz kılınması gerekir.
📌 Java'daki "interface" anahtar kelimesinin amacı nedir?
Java'daki "interface" anahtar kelimesi, uygulayan sınıfların sağlaması gereken metodları tanımlayan arayüzleri tanımlamak için kullanılır. Birden fazla arayüzü uygulayarak çoklu kalıtım imkanı sağlar ve çok biçimliliğin (polymorphism) kavramını mümkün kılar.
📌 Java'daki "package" anahtar kelimesinin amacı nedir?
Java'daki "package" anahtar kelimesi, ilgili sınıfları ve arayüzleri düzenlemenin bir yolu olan bir paket tanımlamak için kullanılır. Hiyerarşik bir yapı sağlar ve sınıflar arasında isim çakışmalarını önlemeye yardımcı olur.
📌 Java'daki "import" anahtar kelimesinin amacı nedir?
Java'daki "import" anahtar kelimesi, bir kaynak dosyasına sınıfları, arayüzleri veya paketleri içe aktarmak için kullanılır. Başka paketlerden sınıfları, tam nitelikli adlarını belirtmeden kullanmayı sağlar.
📌 Java'daki "throw" anahtar kelimesinin amacı nedir?
Java'daki "throw" anahtar kelimesi, bir istisnayı manuel olarak fırlatmak için kullanılır. Genellikle bir program bir hata veya olağanüstü bir durumla karşılaştığında kullanılır ve kontrolün bir istisna işleyicisine aktarılmasını sağlar.
📌 "throws" anahtar kelimesinin amacı nedir?
"throws" anahtar kelimesi, Java'da bir metodun belirli türde istisnalar atabileceğini belirtmek için kullanılır. Bu, metodun çağrıcısının istisnayı ele almasına veya daha ileriye iletmesine olanak tanır.
📌 "try-catch-finally" bloğunun amacı nedir?
"try-catch-finally" bloğu, Java'da istisnaları ele almak için kullanılır. "try" bloğu, bir istisna atabilecek kodu içerir, "catch" bloğu istisnayı yakalar ve ele alır, "finally" bloğu ise bir istisna oluşup oluşmadığına bakılmaksızın çalıştırılan temizlik kodunu içerir.
📌 "instanceof" operatörünün amacı nedir?
"instanceof" operatörü, Java'da bir nesnenin çalışma zamanında türünü kontrol etmek için kullanılır. Bir nesnenin belirli bir sınıfın örneği olup olmadığını veya belirli bir arayüzü uygulayıp uygulamadığını belirten boolean bir değer döndürür.
📌 "break" ifadesinin amacı nedir?
"break" ifadesi, Java'da bir döngünün veya switch ifadesinin yürütmesini sonlandırmak için kullanılır. Bir döngüden erken çıkış yapmaya veya bir switch ifadesindeki kalan durumları atlamaya olanak tanır.
📌 "continue" ifadesinin amacı nedir?
"continue" ifadesi, Java'da bir döngünün mevcut yinelemesini atlamak ve bir sonraki yinelemeye devam etmek için kullanılır. Bu, belirli koşullara bağlı olarak belirli yinelemeleri atlamayı sağlar, ancak döngüden tamamen çıkmaz.
📌 Maven'ın amacı:
Kurulum, Paketleme, Derleme, Test.
📌 char aralığı nedir?
0 ile 65,535.
📌 Java'da JDBC sınıflarını içeren paket hangisidir?
java.sql, javax.sql.
📌 Fonksiyonel arayüz nedir?
Sadece bir soyut metoda sahip olan arayüzdür. Herhangi bir sayıda varsayılan metoda sahip olabilir. Örnekler:
- Runnable → Bu arayüz yalnızca run() metodunu içerir.
- Comparable → Bu arayüz yalnızca compareTo() metodunu içerir.
- ActionListener → Bu arayüz yalnızca actionPerformed() metodunu içerir.
- Callable → Bu arayüz yalnızca call() metodunu içerir.
📌 @FunctionalInterface anotasyonu nedir?
java.util.function paketi, Java 8'de birçok yerleşik fonksiyonel arayüz içerir. Java SE 8, aşağıda belirtilen çeşitli durumlarda uygulanabilecek dört ana fonksiyonel arayüz içerir:
- Consumer - Consumer consumer = (value) -> System.out.println(value).
- Predicate – boolean test(T t).
- Function – public interface BiFunction<T, U, R> { R apply(T t, U u); ....}.
- Supplier.
📌 Marker Arayüzü nedir?
Marker arayüzleri, alanları, metotları veya sabitleri olmayan arayüzlerdir. Diğer bir deyişle, marker arayüzü veya etiket arayüzü boş bir arayüzdür. Örnekler: Serializable, Cloneable ve Remote arayüzü.
📌 Java web uygulamaları geliştirmek için kullanılan ana teknolojiler nelerdir (örneğin, servletler, JSP'ler, çerçeveler)?
Java web uygulamaları geliştirmek için kullanılan ana teknolojiler arasında Servletler, JavaServer Pages (JSP) ve Spring, Struts ve JavaServer Faces (JSF) gibi çeşitli çerçeveler bulunmaktadır.
📌 Java web uygulamasında istek-cevap döngüsü nasıl çalışır?
Java web uygulamasında istek-cevap döngüsü, bir istemcinin sunucuya bir HTTP isteği göndermesiyle başlar. Sunucu, istekleri Servletler veya denetleyiciler kullanarak işler, bir yanıt (genellikle HTML veya JSON formatında) oluşturur ve bunu istemciye geri gönderir.
📌 Java web uygulamalarında kullanıcı girişi ve oturum yönetimi için en iyi uygulamalar nelerdir?
En iyi uygulamalar arasında, enjekte saldırılarını önlemek için kullanıcı girişini doğrulamak, veritabanı etkileşimleri için hazırlıklı ifadeleri kullanmak, oturumları güvenli bir şekilde yönetmek için zaman aşımı uygulamak ve HTTPS kullanmak ve oturum nesnelerinde hassas bilgiler saklamaktan kaçınmak yer alır.
📌 Java web uygulamanızı yaygın güvenlik açıklarına karşı nasıl güvence altına alabilirsiniz?
Uygulamanızı güvence altına almak için, giriş doğrulaması uygulamak, güçlü kimlik doğrulama ve yetkilendirme mekanizmaları kullanmak, kullanıcı girişlerini temizlemek, güvenlik başlıkları kullanmak ve kütüphanelerinizi ve çerçevelerinizi güncel tutmak önemlidir.
📌 Spring MVC, Struts ve JSF gibi popüler Java web çerçevelerini karşılaştırın.
- Spring MVC: Esnek bir mimari sunar, bağımlılık enjeksiyonu ve çeşitli görünüm teknolojileriyle entegrasyon sağlar. Endişelerin net bir şekilde ayrılmasını teşvik eder.
- Struts: MVC desenine dayalıdır, daha katı bir yapıya sahiptir ve özelleştirilmesi daha zor olabilir. Son yıllarda Spring'in yükselmesi nedeniyle popülaritesi azalmıştır.
- JSF: UI bileşen tabanlı geliştirmeye odaklanır, zengin kullanıcı arayüzleri oluşturmayı kolaylaştırır, ancak öğrenme eğrisi daha dik olabilir.
📌 Projeniz için bir Java web çerçevesi kullanmanın avantajları ve dezavantajları nelerdir?
Avantajlar arasında daha hızlı geliştirme, yerleşik özellikler (güvenlik ve veritabanı erişimi gibi) ve topluluk desteği bulunur. Dezavantajlar ise ek karmaşıklık, öğrenme eğrisi ve potansiyel performans yükü olabilir.
📌 Bir çerçeve kullanarak Java web uygulamanızda bağımlılık enjeksiyonunu nasıl uygulayabilirsiniz?
Spring'de @Autowired
gibi anotasyonlar kullanarak veya bean'leri ve bağımlılıklarını tanımlamak için XML yapılandırma dosyaları kullanarak bağımlılık enjeksiyonu uygulayabilirsiniz.
📌 Hibernate gibi bir çerçeve kullanarak Java web uygulamanızda veritabanı etkileşimlerini nasıl yönetirsiniz?
Hibernate kullanarak, Java nesnelerini veritabanı tablolarına eşleyebilir, CRUD işlemlerini oturum nesnesi aracılığıyla gerçekleştirebilir ve HQL veya Kriter API'sini sorgular için kullanabilirsiniz.
📌 Java web uygulamanızın performansını optimize etmek için bazı teknikler nelerdir?
Teknikler arasında veritabanı sorgularını optimize etme, tembel yükleme kullanma, oturum kullanımını minimize etme, önbellekleme uygulama ve uzun süren görevler için asenkron işlem yapma bulunmaktadır.
📌 Üretimdeki bir Java web uygulamasındaki sorunları nasıl izler ve giderirsiniz?
İzleme, APM (Uygulama Performans Yönetimi) çözümleri, günlükleme çerçeveleri (örneğin Log4j, SLF4J) ve istisnaları ve performans metriklerini yakalamak için hata izleme sistemleri kullanılarak yapılabilir.
📌 Java web uygulamalarını test etme ve dağıtma için bazı en iyi uygulamalar nelerdir?
En iyi uygulamalar arasında birim ve entegrasyon testleri yazmak, otomatik test ve dağıtım için CI/CD hatları kullanmak ve üretim dağıtımından önce yük testi gerçekleştirmek yer alır.
📌 Java web uygulamanızda önbellekleme ve yük dengelemesini nasıl uygulayabilirsiniz?
Önbellekleme, Ehcache veya Redis gibi çerçeveler kullanılarak uygulanabilirken, yük dengelemesi, gelen trafiği birden fazla sunucu örneğine dağıtmak için donanım yük dengeleyicileri veya Nginx veya HAProxy gibi yazılım çözümleri kullanılarak gerçekleştirilebilir.
📌 Mikro hizmetler nedir ve Java web geliştirmede nasıl kullanılabilir?
Mikro hizmetler, uygulamaların küçük, bağımsız dağıtılabilir hizmetlerden oluştuğu bir mimari stildir. Java web geliştirmede, HTTP/REST üzerinden iletişim kuran mikro hizmetler oluşturmak için Spring Boot gibi çerçeveler kullanılabilir.
📌 Java ve bir web çerçevesi kullanarak RESTful API'ler nasıl oluşturabilirsiniz?
Spring MVC veya JAX-RS gibi çerçeveleri kullanarak RESTful API'ler oluşturabilirsiniz; uç noktaları tanımlayarak, HTTP yöntemlerini (GET, POST, PUT, DELETE) işleyerek ve JSON veya XML formatında yanıt döndürerek.
📌 Java ve Spring Security ile web uygulamaları oluştururken güvenlik dikkate alınması gerekenler nelerdir?
Güvenlik dikkate alınması gerekenler arasında kimlik doğrulama ve yetkilendirme uygulamak, hassas uç noktaları güvence altına almak, CSRF ve XSS saldırılarına karşı koruma sağlamak ve hassas veriler için şifreleme kullanmak bulunmaktadır.
📌 Java web uygulamalarınız için CI/CD hatları nasıl uygulayabilirsiniz?
CI/CD hatları, Jenkins, GitLab CI veya GitHub Actions gibi araçlar kullanılarak, inşa, test ve dağıtım süreçlerini otomatikleştirmek için uygulanabilir ve hızlı ve güvenilir sürümler sağlanabilir.