2022'de Java Mülakat Soruları ve Cevapları

Yayınlanan: 2022-08-03

programcı mısın Ve bir kariyer oluşturmak için tercih ettiğiniz niş olarak Java programlama dilini mi seçtiniz? Tebrikler! Doğru seçmişsin. İstatistiklere göre, ABD'li bir programcı yılda ortalama 105.801 dolar kazanıyor. Bu, saatte ortalama 50,87 ABD doları, haftada 2,035 ABD doları ve ayda 8,817 ABD dolarıdır. Bu etkileyici değil mi?

Ancak bir Java programcısı olarak hayalinizdeki işe girme şansı elde etmek, hüsnükuruntuların ötesindedir. Dünya çapında 8 milyon Java programcısından sadece 56.585'i ABD'de kazançlı bir şekilde istihdam ediliyor ve bu da bir Java programcısı olarak iş aramayı oldukça rekabetçi hale getiriyor. Hayalinizdeki işi bulmanız gerekiyorsa, Java programlama dilinin hem temel hem de karmaşık yönlerinde iyi donanımlı olmanız gerekir.

Artık bir Java programcısı olarak iş bulmanın ne kadar rekabetçi olduğunu ve bir java programcısı olarak iş bulmak için birkaç kişi arasında yer almanın gerekliliğini biliyorsunuz. Unutmayın, Başarı, fırsat toplantısına hazırlıklı olmanın bir işlevidir. İlerlerken, görüşme aşamasını ölçeklendirmenize ve muhtemelen hayalinizdeki işi kurmanıza yardımcı olacak bir soru-cevap kılavuzu tasarladık. Bu liste, Apollotechnical ile ilgili bir java mülakatına hazırlık soruları ve cevapları makalesinin yardımıyla derlenmiştir. Devam edelim.

Yeni başlayanlar için temel Java mülakat soruları

Yeni başlayanlar için temel Java mülakat soruları

Java'dan ne anlıyorsunuz?

Java, sosyal ağ uygulamaları, ses ve video programları, oyun, büyük veri işleme, gömülü cihazlar ve benzeri gibi çeşitli görevler için dünya çapında 3 milyar cihazda kullanılan çok yönlü, nesne yönelimli ve platformlar arası bir programlama dilidir.

Java ve Python arasında karşılaştırma

Basitliği içinde Java, sınıflara dayalı, ancak daha az gerekli spesifikasyona sahip, genel amaçlı, nesne odaklı bir programlama dilidir. Hızlı, güvenilir ve sonuç odaklı olma ününden dolayı, cep telefonlarında, oyun konsollarında, dizüstü bilgisayarlarda, ileri teknoloji bilimsel bilgisayarlarda vb. uygulamalar geliştirmek için başvurulan programlama dilidir. Diğer taraftan Python çevrilmiş, nesne odaklı ve yükseltilmiş dinamik olarak yapılandırılmış bir programlama dili. Python, modülleri ve paketleri etkinleştirerek program esnekliğini ve kodun yeniden kullanımını kolaylaştırır.

Başlıca Java özelliklerini ana hatlarıyla belirtin

  • Java Nesne odaklıdır
  • Java, Platformdan bağımsızdır
  • Mükemmel Çoklu İş Parçacığı Uygulamasına Sahiptir
  • Basit bir dil kullanır
  • Ve Mimarlık tarafsız mı

Java'da bir nesne ile ne demek istiyorsun?

Java'da bir nesne, 'sınıf' adı verilen başka bir Java gruplandırmasının bir bileşenidir ("örnek" olarak da bilinir). Her nesnenin benzersiz bir durumu, davranışı/eylemleri ve kimliği vardır. Alanlar (değişkenler) bir nesnenin durumunu depolarken, metodolojiler (işlemler) nesnenin eylemlerini gösterir. Çalışma zamanında nesneler, sınıflar olarak tanımlanan çerçevelerden oluşturulur.

Bir nesne, gerçek dünyadaki varlıkları temsil eden Nesne Tabanlı Programlamanın temel bir unsuru da olabilir.

Java programlamada Stringbuffer ve Stringbuilder arasında ayrım yapın

StringBuffer ve StringBuilder başlıca dört parametrede farklılık gösterir: performans/hız, iş parçacığı güvenliği, kullanılabilirlik ve senkronizasyon. StringBuilder, StringBuffer sınıfının senkronize edilmemiş bir çeşididir.

StringBuffer ve StringBuilder arasındaki diğer bir fark, birincisinin iş parçacığı için güvenli, ikincisinin ise güvenli olmamasıdır.

JDK, JRE ve JVM arasında ayrım yapın

Java Geliştirme Kiti (JDK), Java programlama araçlarını yazmayı, sorun gidermeyi ve analiz etmeyi içerir. JRE, bir uygulamayı çalıştırmak için JVM'nin ihtiyaç duyduğu bir dizi sınıf, nesne ve beraberindeki diğer dosyalardır. JVM herhangi bir yazılım geliştirme aracı sağlamaz.

Java Geliştirme Kiti (JDK), Java uygulamaları oluşturmaya yönelik bir yazılım ürünüdür. JRE, Java programlamayı çalıştırmak için gereken Java sınıf kitaplıklarını ve diğer bileşenleri içeren bir yazılım paketidir. Java Sanal Makinesi (JVM), Java bayt dilini yorumlar ve yürütmeye uygun bir atmosfer yaratır. JDK platforma özeldir, JRE platforma bağlıdır ve JVM daha yüksek bir ölçekte platforma bağlıdır.

Kalıtımı tanımla

Java'da kalıtım, bir sınıfın özelliklerini diğerine aktaran bir ilkedir; Java'da bir sınıfın diğerinden özellik aldığı veya bir sınıfın diğerinin özelliklerine (yöntemleri ve nitelikleri) sahip olmasına izin veren çerçevedir.

Java'da sınıf nedir?

Sınıf, nesne yönelimli programlamada temel bir unsurdur. Sınıf örneklemesine atfedilen durumu ve işlevleri tanımlayan bir formattır. Bir sınıf aynı zamanda benzer öznitelikleri ve yöntemleri paylaşan modeller oluşturmak için kullanıldığından mantıksal bir şablondur.

Java'da aşırı yüklemeyi ve geçersiz kılmayı karşılaştırın

Aşırı yükleme, aynı sınıfa ait, aynı ada sahip yöntemlere sahip olmak anlamına gelir, ancak her birinin çeşitli kriterleri veya çeşitli tür ve sıralarda aynı kriterleri vardır. Override ise bir üst sınıfla aynı başlık altında aynı tekniklere sahip bir alt sınıfa ve aynı tür ölçütlere ve dönüş değerine sahip olmak anlamına gelir.

Ek olarak, aşırı yükleme, statik bir bağa ve statik yöntemi aşırı yüklemeye sahip bir komut satırı polimorfizmidir. Geçersiz kılma, esnek bir bağa ve statik yöntemi geçersiz kılma yetersizliğine sahip bir program yürütme polimorfizmidir.

Çift kontrollü kilitleme kullanarak Java'da iş parçacığı güvenli bir singleton oluşturulmasını açıklayın

Singleton Pattern, bir sınıfın ömrü boyunca yalnızca bir örnekle sınırlı olduğu ve birden çok istemcinin bu örneği paylaştığı iyi bilinen bir tasarım modelidir. Singleton modeli iki ana sorumlulukla somutlaştırılmıştır: ilki, yalnızca bir sınıf örneğinin oluşturulmasını sağlamaktır. İkincisi, herkesin o belirli örneğe dünya çapında erişimi olan bir yöntem sağlamaktır.

Çok iş parçacıklı bir programda Singleton tasarımının karşılaştığı zorluklardan biri, çeşitli kullanıcılar aynı anda getInstance() tekniğini çağırsa bile, sınıfın yalnızca bir örneğinin oluşturulmasını sağlamaktır. İki kez kontrol edilen kilitleme sistemi, senkronizasyonun yalnızca getInstance() işlevinin ilk kez çağrıldığı herhangi bir zamanda tek bir Singleton vakası oluşturulduğunda kullanılmasını ve aynı örneğin yukarıda hiçbir senkronizasyon olmadan geri getirilmesini sağlayarak bu ikilemi giderir. diğer tüm durumlar.

Orta seviye Java mülakat soruları

Orta seviye Java mülakat soruları

JDK nedir? JDK varyantlarından bahseder misiniz?

JDK, Java Geliştirme Kiti anlamına gelir. Java Geliştirme Kiti (JDK), herhangi bir Java uygulaması geliştirme sırasında başvurulacak yazılımdır. Java Geliştirme Kiti (JDK), Java programlama araçlarını yazmayı, sorun gidermeyi ve analiz etmeyi içerir.

Temel olarak, JDK bir Java Standard Edition veya Java Enterprise Edition uygulamasıdır. Java, önemli bir platform yükseltmesi nedeniyle 1998'de Java 2 (Java 2 SDK veya J2SDK olarak kısaltılmıştır) olarak yeniden adlandırıldı. Çeşitli uygulamaları desteklemek için üç ayrı Java sürümü geliştirdi.

  • J2SE, Java 2 Platformu, Temel ve Olağan Sürüm anlamına gelir ve masaüstü ve sunucu bağlamları için tasarlanmıştır.
  • J2EE, iş uygulamaları için tasarlanmış Java 2 Platform, Corporate Edition anlamına gelir ve bulut tabanlı depolama ve çevrimiçi hizmetler desteği gibi yetenekler içerir.
  • J2ME (Java 2 Platform, Micro Edition), kurulu ve mobil araçlar veya platformlar için ayrılmıştır.

Ancak, 2004 yılında, varyantların etiketleri sırasıyla Java ME (Java Platformunun Mikro Sürümü), Java EE (Java Platformunun Kurumsal Sürümü) ve Java SE (Java Platformunun Standart Sürümü) olarak değiştirildi. Geliştirme kitinin takma adı da “Java 2 SDK” iken “JDK” olarak değiştirildi. Ayrıca, işletim bağlamı "J2RE" yerine "JRE" olarak yeniden adlandırıldı. Sürümleri olan Java SE 6 ve Java EE 5 varyantları hala kullanılmaktadır.

Bir yapıcı bir değer döndürebilir mi?

Bir yapıcının Java'da programlama sırasında kullanılan geleneksel bir teknik gibi olmadığını anlamak, bir şekilde, kod üzerinde büyük bir etkiye veya etkiye neden olabilecek herhangi bir belirtilen sonucu döndürmez veya geri getirmez. Yapıcı sınırsız talimat içerebilir, ancak ifadelerin değerlerini veya sonuçlarını geri getiremez veya döndüremez.

Java'da 'THIS' anahtar sözcüğünü açıklayın

'Bu', Java'da programcının şu anda çalıştırmakta olduğu varlığı belirten özel bir terimdir. Anahtar sözcük, yalnızca, bir yöntemin veya yapıcının içinden kullanılabilen, nokta (.) işlecini kullanmakla ilgili farklı parametrenin önüne eklenir. 'This' anahtar sözcüğü çok sık kullanılmaz çünkü çoğu uygulama gerekli olabilecek durumlardan kaçınmayı amaçlar. Örnek değişkenlere erişim, 'bu' terimi aracılığıyla sağlanır.

Java'da 'SUPER' anahtar sözcüğünü açıklayın

Java'da, 'süper' sloganı, türetilmiş sınıfın grupta veya yöntemde üst sınıfla aynı ada sahip bir parametreye sahip olduğunu varsayarak, üst sınıf örneklerine başvuran kalıtım kavramıyla ilişkili göreli bir parametredir. Bu terim çoğunlukla alt sınıfın temel sınıftaki bir parametreye, işleve veya Yapıcıya erişmesi gerektiğinde kullanılır.

Java'da yöntem aşırı yüklemesini açıklayın

Java'da aşırı yükleme, aynı ada ve sınıfa sahip ancak çeşitli kriterlere sahip yöntemleri ifade eder ve bunun tersi de geçerlidir. İki veya daha fazla tekniğin tek tip adları ve sınıfları vardır, ancak aşırı yüklemede farklı imzaları vardır. Aşırı yükleme, bir yöntemin davranışını esneterek aşırı yüklenmeye neden olan bir komut satırı polimorfizmidir.

Java'da statik bir yöntemi aşırı yükleyebilir miyiz?

Java'da statik yöntem, normal aşırı yükleme metodolojilerine benzer şekilde davranır ve bu nedenle aşırı yüklenebilir. Ancak, amaç statik yöntemi aşırı yüklemekse, aynı ada sahip ancak değişen bir metodoloji imzasına sahip ek bir statik yöntem sunulmalıdır.

Geç bağlamayı tanımla

Geç bağlama, derleyicinin yöntem çağrılarında hiçbir tür denetimi yapmaması, bağımsız değişken denetimi yapmaması ve her şeyi çalışma zamanına bırakması gerektiğini belirten bir biçimdir (bir örnek COM programlamadadır).

Dinamik yöntem gönderimini tanımlayın

Dinamik yöntem gönderimi, geçersiz kılınan bir yönteme yapılan bir çağrının derleme zamanından ziyade çalışma zamanında çözülmesini veya düzeltilmesini ifade eder.

Silme işlevi neden bağlantılı listede bir diziden daha hızlıdır?

LinkedList kaldırma işlemi O(1) değerini döndürür. Ancak ArrayList kaldırma işlemi, en kötü durumda, yani ilk girişi silerken O(n) ve en iyi senaryoda son öğeyi kaldırırken O(1) değerini döndürür. ArrayList ile karşılaştırıldığında, LinkedList öğesinin silinmesi daha hızlıdır. Bunun nedeni, her LinkedList öğesinin, listedeki her iki komşu üyeye işaret eden iki işaretçiye (adrese) sahip olmasıdır. Sonuç olarak, bir düğümün kaldırılması, düğümün iki bitişik bileşenindeki referans konumunun değiştirilmesini içerir.

Deneyimli kişiler için ileri düzey Java mülakat soruları

Deneyimli kişiler için ileri düzey Java mülakat soruları

Kalıtım popüler bir kavram olmasına rağmen, kompozisyondan daha az avantajlıdır. Açıklamak!

Java sınıfları, dilde birden çok kalıtım desteklenmediğinden yalnızca bir üst sınıfa sahip olabilir. Bir dosyaya okuma ve yazma gibi çeşitli işlevlerde derleme yapısı tercih edilir. Özel bir üyenin yazar ve okuyucu yetenekleriyle karşılaştırabilirsiniz. Bileşimin yardımıyla, önemli bir esneklik elde edilirken kapsüllemenin kırılmasını önlemek mümkündür. Kalıtım nedeniyle imkansız olan birim testi, kompozisyon yardımı ile gerçekleştirilebilir.

new() kullanarak bir dizgenin oluşturulması, bir hazır bilgiden nasıl farklıdır?

Bir String oluşturmak için new() kullandığımızda, yığın belleğinde yeni bir nesne oluşturulur. Yürütülmesi daha uzun sürer ve bu nedenle String değişmezine kıyasla geride kalır. Ancak, Dize değişmez değeri kullanılarak oluşturulan bir Dize için Dize'de önceden oluşturulmuş veriler varsa, aynı verilerin Dize havuzundaki Dize değişkeniyle bir bağlantısı vardır. Ve bu, aynı yerleşik verilerle tamamen yeni bir String oluşturmaya gerek kalmadan elde edilir.

Çöp toplayıcı olmasına rağmen bir programda bellek sınırını aşmak mümkün mü?

Evet. Bir çöp toplayıcının varlığı, bir programın hafızasının dolmasını hiçbir şekilde durdurmaz veya engellemez.

Senkronizasyon neden gereklidir? İlgili bir örnek yardımıyla açıklayınız

Senkronizasyon, tüm çakışan iş parçacıklarının aynı anda çalışmasını sağlayan bir mekanizmadır. Senkronizasyon, tutarsız olan sinerjik bir bellek görünümü tarafından üretilen bellek tutarlılığı sorunlarını önler. Senkronize bir yöntemde, nesne iş parçacığı tarafından izlenir ve yerinde tutulur. Senkronize yöntemi başka bir iş parçacığı yürütüyorsa, önceki iş parçacığı monitörü serbest bırakana kadar mevcut iş parçacığı durdurulacaktır.

Diyelim ki, belirli bir URL'ye yapılan isteklerin sayısını bulmanın gerekli olduğu bir durumda, birden fazla isteğin çalıştırılması, hatalı bir sayıma neden olacaktır. Diyelim ki iş parçacığı 1, sayımı 12 olarak görüyor; bir eklenerek 13'e çıkarılacaktır. Aynı zamanda, başka bir iş parçacığı 2 de sayımı 12 olarak görür ve aynı şekilde 1 eklenerek 13'e çıkarılır. değer 13 olacaktır. Burada fonksiyon arttıkça () senkronizasyon devreye girer, böylece sayıma eşzamanlı erişim engellenir.

Java iş parçacığı yaşam döngüsünü açıklayabilir misiniz?

Java'da, bir iş parçacığının yaşam döngüsü, bir iş parçacığının doğumdan ölüme kadar olan durum dönüşümleri olarak tanımlanır. Bir iş parçacığı örneği oluşturulduğunda ve Thread sınıfının start() işlevi çağrıldığında, iş parçacığı çalıştırılabilir duruma girer. Thread sınıfı, sleep() veya wait() yöntemlerini çağırdığında, iş parçacığı çalıştırılamaz hale gelir.

Sırasız bir dizinin kullanımı ile sıralı bir dizinin kullanımı arasındaki denge ne olabilir?

Sıralı bir dizinin önemli bir avantajı, O(log n) arama zamanı karmaşıklığına sahip olmasıdır. Sıralı bir dizideki ekleme işlemi, O(n) zamansal karmaşıklığına sahiptir, çünkü daha büyük puanlara sahip üyelerin yeni bir değişken oluşturmak için kaydırılması gerekir. Kapak tarafında, sırasız bir dizinin ekleme işlemi, sabit bir O(1) süresi gerektirir.

Java'da aynı sınıfı veya paketi iki kez içe aktarmak mümkün müdür ve çalışma zamanında buna ne olur?

Evet. Sınıf veya paketin ne sıklıkta içe aktarıldığına bakılmaksızın, JVM, çalışma zamanında dahili olarak bir kez yükler.

try bloğunun sonuna system.Exit(o) kodu yazılırsa “Finally” bloğu yürütülür mü?

Hayır, bu senaryoda 'finally' bloğu yürütülmeyecektir çünkü System.exit (0) etkinleştirildiğinde, kontrol programdan anında ayrılır ve bu nedenle “nially” asla yürütülmez. Eğer Sistem. çıkış (0) istisnasız olarak çağrılır; program çalışmayacaktır.

Java'daki işaretleyici arayüzlerden ne anlıyorsunuz?

Sabitleri veya yöntemleri olmayan bir arabirim, derleyiciye ve JVM'ye nesneler için çalışma zamanı türü hakkında bilgi verdiği için işaretleyici arabirim veya etiketleme arabirimi olarak bilinir. Uzak arabirimler, Serileştirilebilir ve Klonlanabilir, işaretleyici arabirimlerine örnektir ve bu arabirimlerin tümü boştur.

Java'da "Çift ayraç başlatma" terimini açıklayın

Java'da çift küme başlatma, 2 ayrı işlemin bir karışımıdır. Bu durumda iki parantez ({) söz konusudur. Java kodunda iki ardışık kaşlı ayraç gösterildiğinde çift ayraç başlatma oluşur.

Adsız bir iç sınıfın yapısı ilk kümedir, bir başlatma bloğu ise ikinci kümedir. Java Double Brace başlatma, adsız bir iç sınıf başlatma bloğunu kullandığında gerçekleşir.

Çözüm

Acemi bir programcı veya deneyimli bir programcı olarak, bu mülakat soruları biraz zor görünebilir. Ancak bu soruları uygulamaya kararlıysanız, bir sonraki fırsatınızı yakalayacağınızdan emin olabilirsiniz.