Her iyi Java / Java EE Geliştiricisinin cevaplayabilmesi gereken sorular? [kapalı]


138

Ben geçiyordu cevap gerekir Sorular her iyi .Net geliştirici ve son derece Bu sorunun içeriği ve yaklaşımıyla etkilendim ve böylece aynı ruhla, Java / Java EE Geliştirici bu soruyu soruyorum.

İyi bir Java / Java EE programcısı hangi soruları cevaplayabilmelidir?

Bu soruyu, kullanıcıya özgü olmadığı ve genel olarak programlama topluluğuna hizmet etmeyi amaçladığı için topluluk wiki'si olarak işaretliyorum.

Bazı şaşırtıcı yanıtlar bekliyorum.

DÜZENLEME : Lütfen kişilerin de dil ile ilgili yeni bir şeyler öğrenebilmesi için yorumlarda önerildiği gibi soruları da yanıtlayın.


3
Neden bu soru .Net sorusuna benzer yanıt alamıyor?
Rachel

5
Tanrım :), .Net sorusu bir yıl önce soruldu ve bu sadece bir günlük ve cevapları karşılaştırıyorsunuz.
zapping

1
Neden sorunuzu düzenlemiyorsunuz ve "Lütfen kendi sorunuza cevap verin" cümlesini eklemiyorsunuz, böylece insanlar bir şeyler bile öğrenebiliyor (yeni).
r3zn1k

9
"Enterprise Edition'ın şu anki kısaltması nedir";)
Bozho

17
Albert Einstein'ın Anekdotu. Einstein'ın meslektaşlarından biri bir gün telefon numarasını istedi. Einstein bir telefon rehberine ulaştı ve baktı. "Kendi numaranı hatırlamıyor musun?" diye sordu adam şaşkınlıkla. "Hayır," diye yanıtladı Einstein. "Bir kitaptan kolayca bulabildiğim bir şeyi neden ezberlemeliyim?" Herkese ulaşıyor muyum;)? Evet biliyorum, Einstein bir Mülakatçı ile karşı karşıya değildi ...
SB.

Yanıtlar:


83

HashCode () ve equals () arasındaki ilişki nedir? Bu yöntemlerin önemi nedir? Bunları uygulamak için gereksinimler nelerdir?


Evet, her geliştirici en azından problemlerin farkında olmalı, pratikte bunlarla karşılaşmayacak olsanız bile.
sleske


70

Küme, Harita ve Liste arasındaki fark nedir?

Hala bir telefon görüşmesinde kaç kişinin bunu bilmediğine şaşırıyorum.


8
Verilen, ancak net ("java koleksiyonları çerçevesi") belgelerine bakarak 20 saniye bir mesele, bu yüzden birçok değerli insan onu bellekte tutmak için rahatsız olmayabilir.
Manur

127
Üzgünüm, bunu satın almayın, her geliştiricinin bilmesi gereken temel bilgidir.
Jon

15
Yazılımda bir işi düşünen herkesin sadece bunu değil, aynı zamanda farklı liste türleri (ArrayList / LinkedList) arasındaki farkları da anlaması gerektiğini söyleyebilirim. Mutlaka en iyi uygulama veya hatta O (n) notasyonu değil, ne zaman kullanmanın doğru olduğunun anlaşılması.
Gonzo Gonzo

11
+1 @Jon: Genellikle "ayrıntıları ezberlemeye gerek yok" düşünce okuluna abone olurum, ancak bu temel arayüzler arasındaki temel kavramsal farklılıkları bile bilmiyorsanız, kesinlikle iyi bir Java geliştiricisi değilsiniz.
Joachim Sauer

13
@Jachim: İfadenizden "Java" kelimesini bırakabilirsiniz. Kümeler, Haritalar ve Listeler temel algoritmik kavramlardır.
CPerkins

44

Bir arayüz birden fazla arayüzü genişletebilir mi?

Çoğu insan "hayır" cevabını verir, çünkü java'nın birden fazla miras olmadığını bilirler. Ancak bir arabirim yine de birden çok arabirimi genişletebilir (ancak bir sınıf birden çok sınıfı genişletemez). Bu elmas sorununa yol açmaz.

Cevap "hayır" ise "neden, görüşmeci sormalısınız ediyorum o yasak?". Sonra düşünmeye başlarsınız ve bununla ilgili bir sorun olmadığını fark etmelisiniz.

Böylece röportajda (kendiniz) bir şey öğrendiniz ve röportajcıya sınıflar, nesneler, kalıtım, polimorfizm vb. Hakkında mantık yürütebildiğinizi gösterdiniz. nedenini anla


Dün elmas kalıtım sorunuyla bir C ++ öğretim görevlisini karıştırdım, hiç bilmiyordu :)
Esko

2
Bir zamanlar bu soru soruldu ve "hayır" cevabını verdim. Stres olduğunu düşünüyorum artı çok hızlı cevap verdim. hiç kullanmadığınız şeylerin cevaplarını bilmek her zaman zordur.
IAdapter

1
Metinde biraz daha ayrıntılı olarak duruyorum. "Hayır" cevabı aslında sorun değil. Bu soruda güzel olan şey, OO kavramları hakkında bir tartışmayı tetiklemenin iyi bir yoludur ve adayın nedenini görüyor. Eğer röportaj yapan kişi "evet" duymak istiyorsa, o zaman etkili bir anlamsızdır. Arayüzlerin çoklu mirası, aslında kalbin bildiği kadar yaygın değildir.
ewernli

3
Bu sorunun daha karmaşık bir versiyonu "Java birden fazla kalıtımı destekliyor mu?" cevap sadece arayüzler için "tür"
nsfyn55

23

Kullanımı son yöntem çağrıları anahtar kelime. Örneğin , aşağıdaki koddaki yöntem testi , method parametresi için son niteleyici kullanılmasına rağmen neden herhangi bir derleme hatası vermiyor?

class Name {
    private String name;

    public Name (String s) {
        this.name = s;
    }

    public void setName(String s) {
        this.name = s;
    }
}

private void test (final Name n) {
    n.setName("test");
}


Bu sorunun cevabını bilmek isterim. Kulağa çok ilginç geliyor.
Rachel

@Rachel: Bunun nedeni, finalanahtar kelimenin sınıf alanına Namedeğil nesneye uygulanmış olmasınameName
ryanprayogo

20
Parametre nson olarak bildirilir, yani testyöntem gövdesinde yeniden atanamaz . Yöntem test, parametreyi yeniden atamaya çalışmadığından hataya neden olmaz, yalnızca parametre üzerinde bir özellik ayarlar ... n = new Name("test");derleme hatasına neden olur ...
rjohnston

7
@ Rjohnsson yorumlarına ekleme: method parametresi için final kullanımı bir sınıf örneğinin değişmezliğini sağlamaz. Değişmezliğe ihtiyaç duyulursa, sınıf (mevcut davadaki isim) bu şekilde tasarlanmalıdır (örneğin, mevcut durumda ayarlayıcıyı
vermeyin

Değerli bilgileri paylaştığınız için hepinize teşekkür ederim. Bu konudaki katkılarınızı gerçekten takdir ediyorum.
Rachel

19

Bir kesin dize karşılaştırmasıdır. Arasındaki Fark

String helloWorld = "Merhaba Dünya";
helloWorld == "Merhaba Dünya";
"Merhaba Dünya" .equals (helloWorld);


14
Yeni String ("Merhaba Dünya") gibi bir şey yapmanız gerekeceğinden eminiz. Dize sabitleri, intern () öğesinin etkisi gibi bir havuzdan alınmaz, bu nedenle her iki ifadeyi de doğru yapar mı?
Steven Schlansker


17

Hile sorusu: Java'da referans olarak ne tür parametreler geçirilir?

Kaç kişi hala papağan "ilkel değer tarafından geçirilir, nesneler referans tarafından geçirilir" mantra.


4
Acaba bir röportajda her zaman doğru cevabın verilip verilmeyeceğini merak ediyorum. Görüştüğüm bir yerde, görüşmeci de aynı şeyi papağan etti.
MAK

2
Java ile ilgili bu soruyu cevaplarken C'yi ilk dil olarak inceleyen ve C ++ ilk dilini inceleyen kişiler arasında bir fark olduğunu fark ettim. Muhtemelen C kullanıcılarına bir göstergenin bir değere geçirilmesinin "referansla geç" olduğu öğretilir.
Uri

23
Bu da aptalca bir soru çünkü " referansla hangi sonuçların geçtiğini" sorarsanız " yanlış" yanıt büyük olasılıkla teknik olarak doğru olacaktır. . Bu sadece referans yoluyla neyin geçtiğinin bir tanımı meselesidir ve bu nedenle Java dünyasında çok değerli değildir, çünkü nesneleri iletmenin tek bir yolu vardır. Gerçekte ne olduğunu anlamak , referans olarak geçiş için tanımlayıcı bir tanım kullanmak istediğinizden daha önemlidir .
x4u

3
Bu soru en azından sorunludur, çünkü çoğunlukla yanlış kullanılan "değere göre geç" / "referansla geç" ifadesinin tam tanımına bağlıdır. İyi bir geliştiricinin tanımları bilmesi gerektiğini kabul etsem de, sonuçları anlamak daha önemlidir. Java'nın gerçek davranışını anlarsanız, kavram için doğru adı bilmek çok anlamlı değildir, çünkü pratikte tartıştığınız bir şey değildir, çünkü asla değişmez.
sleske

3
Hmm, nesneler Java'da referans olarak iletilir. Bir nesneyi değere göre geçiremezsiniz; diğer şeylerin yanı sıra, nesneler yığın üzerinde asla mevcut değildir. Referanslar değere göre aktarılır, elbette.
Sean Owen

17

"İyi", "Geliştirici" dedin. İşte benim 2 sentim de .. :)

  • "İşaretli istisna" ne anlama gelir?
  • Hangisini kullanmak daha iyidir ve ne zaman: Beklenmedik durumlarla başa çıkmak için iddialar veya İstisnalar
  • String sınıfı neden kesindir? (ya da değil mi?;))
  • sınıfındaki wait, notify ve notifyAll yöntemleri nelerdir?
  • Thread sınıfı neden final değil? Neden Thread'i hiç uzatmam ki?
  • Neden iki Date sınıfı var; biri java.util paketinde ve diğeri java.sql'de?
  • Sonunda blokta bir istisna atılırsa ne olur? Kalanlar nihayet idam ediliyor mu değil mi?
  • Bir çöp toplayıcı iyi, ama sonra bir Java uygulamalarında bellek sızıntısı tamamen yok mu? Değilse, nasıl?

J2EE için:

  • Sunucu uygulamasında örnek / statik değişkenler olması iyi midir? Neden olmasın? O zaman nerede "devlet" depolamak?
  • yukarıdaki soruya devam etmek: (web) uygulaması için "durum" nedir ve nerede?
  • "JSP" de DB bağlantıları oluşturmaya / kapatmaya başlarsam ne olur?
  • JSP istisnalarını ele almanın yolları nelerdir? denemek-catch? Hmmm .. başka bir şey var mı?

Onları çok, çok, çok daha fazla düşünebilirim ama şimdilik yapacağım :)


8
Cevaplar iyi olurdu, bazılarının cevabını bilmiyorum.
MAK

İşaretli istisnalar, bir programın gerçekleşmesi durumunda bir plan yapması gerektiğidir. İşaretli bir istisna atan bir şeyin etrafında try / catch bloğu yoksa, program derlenmez. bekleyin, bildir ve bildir Tümü evre senkronizasyonu içindir ve Java'da tüm Nesneler senkronize edilebilir. Kavramsal olarak sınıf kendi iş parçacığı gerektirir, yani bazı yönetim yapmak gerekir ve başka bir işçi iş parçacığı üzerinde çalıştırılabilecek bir görevi temsil etmez, iş parçacığı (Runnable uygulamak aksine) genişletmek.
ZoFreX

Sonunda bir blokta bir istisna atılırsa, geri kalanı çalışmaz. "Saf" bir Java programında, standart bellek sızıntıları yoktur. Bununla birlikte, veri yapıları artık gerekli olmayan nesnelere referans içeriyorsa kullanılmaması gereken bellek hala kullanılabilir. Yerel kütüphaneler kullanılıyorsa, kaynaklarının yönetilmesi gerekebilir, örneğin SWT'de sızıntı yapmadığından emin olmak için belirli varlıklar üzerinde .dispose () öğesini çağırmak önemlidir.
ZoFreX

2
Geliştirme sırasında ele alınacak "Bu asla olmamalı" hataları için iddiaları kullanın. Çalışma zamanında gerçekte meydana gelebilecek hatalar için istisnalar kullanın ve programın bunlarla bir şekilde ilgilenmesi gerekir.
MatrixFrog

16

String, StringBuffer ve StringBuilder arasındaki fark nedir?


5
String - bir String'i temsil eden değişmez sınıf. StringBuffer - Java'nın eski sürümlerinde sunulan ve bir Dize oluşturmak için kullanılacak her işlemde (veya çoğunda) senkronize edilen oluşturucu deseni. StringBuilder - Java 5'te (JDK 1.5) tanıtılan , her işlemde (veya bunların çoğunda) senkronize edilmeyen bir String oluşturmak için StringBuffer API'sini paylaşan bir sınıftır . Dizelerin yapımı tek bir iş parçacığında gerçekleşme eğiliminde olduğundan, StringBuilder bunu destekleyen Java çalışma zamanlarında / JDK'larında bu amaç için tercih edilir.
MetroidFan2002

13

"Dağıtım tanımlayıcısı nedir?"

Aday kasten ürperirse, 3.0 öncesi EJB'lerle çalışma tecrübesine sahiptir.


"istemeden + ürperti + yoğun bir şekilde + bu soruyu 2 kez tekrarladıktan sonra ölüler ölü" yapmak, bazen onun "Açıklamalar şey ekledikleri / destekledikleri" tek ve tek "nedeni hissediyorum! :)
Elister

12

Birçok soru ve röportaj http://www.techinterviews.com/interview-questions/java adresinde mevcuttur ve bunların bir kopyasını kopyalama / yapıştırmada gerçekten değer görmüyorum.

Hayır, önemli olduğunu düşündüğünüz şeyleri kendi derlemenizi oluşturmak size kalmış . Şahsen, her zaman iki adımda ilerlerim: önce deneyim ve beceriler hakkında temel bir fikir edinmek için birkaç soru, sonra bir problem çözme durumu. Bilinen herhangi bir soruyu cevaplayabilmenin sizi iyi veya kötü hale getirdiğine ikna olmadım bilinmeyen problemler çözücü . Bu nedenle, insanlardan belirli bir sorunu çözmelerini, onlara bazı gereksinimler vermelerini ve kod yazmalarını (ancak kağıda değil) istemelerini tercih ederim. Bana geri dönmeleri ve nasıl yaptıklarını, kodlama stillerini, önerilen API'leri nasıl kullandıklarını vb. Kontrol etmeleri için biraz zaman tanıyorum.

Tüm bunlar söyleniyor, en sevdiğim soru "Java hakkında neyi sevmiyorsunuz?" (ruhu içinde bu bir ). Bu gerçekten mükemmel bir soru, size bir adayın Java'yı ne kadar kullandığına ve API'sını ne kadar araştırdığına ve sadece dini olup olmadığı hakkında (OP'nin yazdığı gibi) anında bir geri bildirim veriyor.

Güncelleme: CPerkins tarafından önerildiği gibi, yukarıda önerilen soru için daha iyi bir ifade "Java'da en çok ne değişmesini isterdiniz?" Olabilir. Gerçekten de bu yolu tercih ederim.


"Java hakkında ne sevmiyorsun?" Sorusunu sevmiyorum, yalan söylerdim, çünkü "neden son şirketten ayrıldın?" artı düşünebilir - "java nefret eğer biz size iş teklif olmaz".
IAdapter

@ 01 Bu senin hakkın ama sana katılmıyorum ve sanırım bu sorunun cevabını kaçırdın.
Pascal Thivent

1
Ben genellikle bunun daha çok benzediğini gördüm: "En çok neyi Java'da değiştiğini görmek isterdiniz", "beğenmiyorum".
CPerkins

@CPerkins Bu gerçekten daha iyi bir ifade, "sevmemek" ten daha iyi ve "nefret" ten çok daha iyi (referansta). Teşekkürler.
Pascal Thivent

11

System.out.println'deki 'System', 'out', 'println' nedir? HashMap'e 'put' adını verdiğinizde ne olur?


cevap nedir ?? Ben asla ne sistem sınıfı düşünmek !! Ben asnwer bilmek merak ediyorum :)
palAlaa

10
  1. Java'da kullanılan çeşitli erişim değiştiricileri açıklar. Bu, özellikle varsayılan erişim, mücadele birçok insan oldu.
  2. Java dili veya platformuyla ilgili bir şeyi değiştirebilseydiniz bu ne olurdu? İyi geliştiricilerin burada bir cevabı olacaktır, ancak gerçekten kalkınmayla ilgilenmeyenler muhtemelen umursamıyorlar.
  3. Özgeçmişleri EJB2.1 kullandıkları gibi bir şey söylüyorsa, EJB3 hakkında bildiklerini görmelerini isteyin. En iyi geliştiriciler, yeni sürümleri kullanmasalar bile en son gelişmeleri takip edeceklerdir.

3
Sadece olsaydı tek şey muhtemelen overloadable operatörler (yani aşırı yük olmaması sadece kısıtlı bir set ile, diline aşırı operatörü eklersiniz, değiştirebilir newveya ^veya >>, <<ve >>>). Başka bir şeyi değiştirebilseydim, bu gerçek çağrı referans semantiği eklemek olurdu . Üçüncü bir şey unsignedintegral türleri eklemek olacaktır .
Chinmay Kanchi

1
delegeler ve kapanışlar ve belki bir lambda ifadesi, ama bu gerçekten gerekli değil. Genişletme Yöntemleri de büyük olurdu. Doğru kullanıldıklarında kodu gerçekten temizleyebilirler.
Joel

10
  • Geçersiz kılma eşit olduğunda genel sözleşme nedir?
  • Daha iyi bir seçenek listeleri veya dizileri tercih ediyor mu?
  • Genel kabul görmüş adlandırma kuralları nelerdir?
  • Serileştirme nasıl çalışır?
  • Karşılaştırılabilir nasıl uygulanır?
  • JDBC'nin Hazırlanan İfadelerini kullanmanın avantajları nelerdir?
  • Java EE nedir?
  • Kapsayıcı nedir ve hangi hizmetleri sağlar?

9

Java "deneyimi" ile mezunları işe eğer bir NullPointerException atılır neden bazı kod yazmak gibi basit bir soru son zamanlarda hangi aday Java kullandıklarını ayırt edebilir ve sadece kendi birim / ders bittikten sonra durmadı.


16
"Throw new NullPointerException ()" doğru bir cevap mı?
Thorbjørn Ravn Andersen

1
Peki, mülakatçıya bağlı. Eğer bir değişkeni test etme ve yararlı bir mesajla bir NPE atma örneği göstermiş olsaydı mutlu olurdum. Bu cevabı kullandıklarını düşünürsem, meşru bir NPE atacak bir kod bulamadıkları için endişelenirdim.
David

9

Ne basılacak?

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder.append("+1");
    }
}

Yanıt : CoolReturn + 1

Biraz daha zor:

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder=null;  /* ;) */
    }
}

Yanıt : CoolReturn


ilk kod sonunda return deyimi try blok kullanılabilir olsa bile her zaman excuted olduğunu gösterir, ama ben ikinci kodu yoktu ?? deyim oluşturucu = null olduğunda ne oldu; olmak ??
palAlaa

3
@Alaa, neredeyse oluşturucuya geçici bir değer ayarlanmış gibi, oluşturucu sonunda blokta null değerine ayarlanmış ve sonra geçici değer döndürülen değerdir.
Mart'ta

1
@VextoR, evet Alaa güzel bir açıklama yaptı. Bu kod, görüşmecinin denemeyi nasıl anladığını kontrol eder ... sonunda içeride geri dönüş ile blok ve genel olarak değişken kapsamı, değişkenlerin işlenmesi
zaletniy

4
Return ifadesi başvuruyu StringBuilder nesnesine döndürüyor. Sonunda başvuruyu değiştirmek, gerçekte döndürülen referansa hiçbir şey yapmaz. Ancak, nesnenin içeriğini değiştirmek ilk örnekte olduğu gibi döndürülenleri etkiler.
Derek Litz

8

Soyut bir sınıf ile bir arayüz arasındaki fark nedir? Her birini ne zaman kullanırsınız?

Pek çok Java geliştiricisi bunu bilmiyor, üniversitedeki bilgisayar bilimleri kursumdaki çoğu kişiye sordum ve büyük çoğunluğu buna cevap veremedi.


Tek fark soyut sınıfın soyut olmayan yöntemler içerebilmesidir.
TBH

1
Bir Java kitabı okursanız alacağınız cevap budur. O halde üye değişkenleri de içerebileceğini de ekleyebilirsiniz: P Ama bunları ne zaman kullanacakları ve nedenleri arasındaki fark daha da ilginç.
ZoFreX

1
Arayüz kullanımı bana çok güçlü bir teknik sağlar ki bu çok küçük bir tekniktir.
palAlaa

@TBH - Java'nın şu anda kullandığı tek kalıtım modelinde, tek bir işlevsellik kümesi için yalnızca bir soyut sınıfı genişletebileceğinizi unutmayın - ancak tek bir sınıfta birden çok arabirimi tek bir sınıfta birleştirebilirsiniz. kalıtım kısıtlaması.
MetroidFan2002

8

Gibi basit sorular,

  • JRE ve JDK nedir?
  • Java neden birlikte çalışabilirlik iddia ediyor?

Bunlar çok temel olmasına rağmen, birçok geliştirici cevapları bilmiyor. Bunlara kodla ilgili sorgulardan önce sorulmasını öneririm.


JDK / JRE bölümünü bilmiyorum. Örneğin, Mac'te böyle bir ayrım yoktur. Mac'te bir Java geliştiricisi olarak, bunu bilmenize gerek yok.
Fabian Steeg

Bence bu iyi bir soru ve eğer bir Mac'te ciddi Java geliştirmeye çalışacak kadar yanlış yönlendirilmiş insanları daha iyi ortaya çıkarmaya yardımcı oluyorsa. Ciddi bir Java geliştiricisi olduğunu iddia ediyorsanız, ancak java.sun.com'a hangi indirme bağlantısını tıklayacağınızı bilmiyorsanız bir sorun var.
Mark B

Bir java geliştiricisi olmak, o onun üzerinde çalıştığı platform hakkında hiç endişelenmenize gerek yok. Java araçlarını anlamak temel gereksinim gibi görünüyor. En azından ben bunu düşünürüm. Mac OS hakkında farkında değilim. içinde çalıştığım işletim sistemi hakkında.
Ravisha

@mbaird Bu oldukça kaba bir yorum olarak çıkıyor. Bir Mac üzerinde geliştirmeme rağmen JRE / JDK'nın ne olduğunu biliyorum, dürüst olalım, gerçek bir gelişmede, bu gerçekten önemli mi? Özellikle komut satırını geçmişte bırakan IDE'lerle Java geliştiricisinin dili her şeyden daha fazla nasıl kullanacağını bilmesi gerekir.
Alexis King

6

En önemli 5 J2EE / JEE sorusu

Karşılaştığım J2EE / JEE ara katman yazılımı sorularının listesi son derece uzundur, ancak işte bana sorulan ilk 5 ve iyi tartışmalara yol açtık:

  1. Bir MDB, işleyemediği bir istisna ile karşılaştığında ne olur?
    Bu soru genellikle zehir mesajları, hata kuyrukları vb. Hakkında çeşitli ilginç tartışmalara yol açar.
  2. Bir JMS Konusu ve farklı JVM'ler üzerindeki birkaç tüketici göz önüne alındığında, dayanıklı tüketiciler olan ve olmayan çeşitli senaryolarla ilgili sorular.
    Bu soru genellikle kalıcı abonelerin ne zaman kullanılacağı, ne zaman kuyruk kullanılacağı vb.
  3. Hazırda Bekletme / JPA POJO içeriğine erişmenin istisnalara yol açtığı bir durumda takılı kalırsa, bunu nasıl çözersiniz?
    Bu, tembel yükleme, rehidrasyon, vb. Hakkında harika tartışmalara yol açar, hatta JPA'yı Entity fasulyeleriyle karşılaştırmaya ve zıtlığa bile yol açtı. Kavramların hazırlanmasını ve net olmasını yararlı buldum.
  4. Basit bir web hizmeti nasıl sağlanabilir?
    Basit web sunucusundan sofistike SOAP / REST çözümlerine ve bunların arasında bulunan herhangi bir çözüm yeterince iyi olmalıdır. Ayrıca, görüşmeciye dayanarak, bazen bazı tasarım fikirleri gibi konular hakkında çok ilginç tartışmalara yol açar - önce WSDL, doc tarzı, SOAP aracıları, vb. -RPC veya SOAP1.1 üzerinden SOAP1.2, cevapları genellikle ne kadar hatırladığım temel alınarak yapılır.
  5. JEE 5 kaynak enjeksiyonu
    Bu soru, Servis Bulucu modelinden javax.naming.Contextsorulara kadar birçok şekilde sorulur.

Rahatsız edici bulduğum, ancak birçok kez karşılaştığım bir başka zor soru , Bağımlı kütüphaneler bir arşive nasıl paketlenir?
veya gruplandırılmış arşivdeki çeşitli sınıfların görünürlüğü.
Tartışma, farklı uygulama sunucularının, kaynak arşivlerinin vb. Sınıf yükleyici hiyerarşisine yol açmazsa, istifa etmek ve devam etmek en iyisidir.

En önemli 5 temel Java sorusu:

  1. Java.util.collections hakkında sorular
    Bu, tüm soruların annesi. Etkili olabilir kez kara bu alanda görüşmeci ve eğer hazırsanız, görüşmenin kalanı genellikle burada kalıyor. Bilmenin emin olun Set, List, Mapiçinde ve önemi Object.equals()ve Object.hashCode()bu arabirimler her uygulanmasında.
  2. Yeniden düzenleme soruları
    Görüşmecinin açık fikirli olması durumunda bunlar iyidir. Görüşmecinin zaten belirli bir çözümü varsa ve sizinkiyle uyuşmuyorsa, hemen hemen mahvoldunuz. "Diğer çözümlerin mümkün olduğunu anlıyorum" cevabını kabul etmek en iyisidir.
  3. JDK5'te çoklu iş parçacığına ilişkin sorular, önceki JDK sürümleriyle karşılaştırıldığında , java.util.concurrent paket sınıflarıyla hazırlanmanın en iyi yol olduğunu buldum . Doug Lea'nun kitabında cevapların çoğu var.
  4. JDK1.6 / JDK1.7'deki yenilikler nelerdir?
    Bu, birçok görüşmeci için kesin bir soru. Bundan nefret ettiğim kadar hazırlıklı olmak en iyisidir. En azından birlikte çalıştığım birkaç kişiyi hatırlamak ve tartışmayı başka bir yöne yönlendirmek, sorunu büyük ölçüde ve etkili bir şekilde atlatıyor ve çözüyor.
  5. Java API'sinde Desenler
    Tekrar tekrar Java API'sında bir GoF modelini belirtmem istendi. Bunun için hazırlıklı olsan iyi olur.



5

Neden toString () yöntemini geçersiz kıldınız?


4

Daha saf bir Java sorusu:

Sleep ve wait arasındaki fark nedir? Pek çok insan beklemenin nasıl çalıştığını anlamıyor.

InterruptedExceptions ile nasıl başa çıkmanız gerekir?


4

Röportajımda karşılaştığım soru bu.

Java'daki ana yöntem neden genel statik void main (String [] args) olarak adlandırılır?

Cevap:

1. main () , program yürütme başladığında JVM tarafından çağrıldığı için herkese açık olarak bildirilmelidir.JVM , program paketimize ait değildir.

Biz public.If olarak beyan etmek zorunda paket biz halka dışında bir olarak ilan erişim ana dışarıya Inorder bir gösterir Zamanı Hatası ancak Derleme zamanı hatası

2. main () statik olarak bildirilmelidir, çünkü bir yöntem statik olarak bildirilirse, ClassName.methodName () kullanarak sınıf dışında bu yöntemi çağırabiliriz ;

class Sample
{
     static void fun()
     {
           System.out.println("Hello");       
     }
}

class Test
{
      public static void main(String[] args)
      {
                Sample.fun();
      }
}

JVM önce Test sınıfını yükler ve Komut Satırı bağımsız değişkenlerini denetler ve ana yöntemi Test.main () olarak çağırır;

3. main (), void main () olarak bildirilmelidir, çünkü JVM main () 'den herhangi bir değer beklememektedir.

Başka bir dönüş türü sağlanmışsa, bu bir RunTimeError yani NoSuchMethodFoundError şeklindedir.

4. main (), diziler olarak String argümanlarına sahip olmalıdır, çünkü JVM komut satırı argümanını ileterek ana yöntemi çağırır. String dizi nesnesinde saklandıkları için main () öğesine argüman olarak iletilir.


Sen kullanabilirsiniz public static void main(String... args)bunu eğimli eğer :-) Bu aynı imzası vardır[]
corsiKa

3

J2SE ve J2EE (veya JSE ve JEE) arasındaki fark nedir?

Bir geliştirici, kurumsal sürümün temel olarak satıcılar tarafından uygulanabilecek bir arayüz tanımı (yani bir spesifikasyon) olduğunu gösterebilmelidir. Standart sürüm ise kendi başına bir uygulamadır


4
Pazarlama terminolojisini düz tutma yeteneği günün sonunda gerçekten önemli mi?
Laurence Gonsalves

@Laurence - bu çok saçma bir şey. Ne kadar deneyimli deneyimli geliştiricinin anlamadığını
hayrete düşürecek

Demek istediğim, eğer birisi iyi bir kodlayıcı ise, J2SE ve J2EE arasındaki farkı biliyorlarsa daha az umursamadım.
Laurence Gonsalves

Soruyu "bir JEE + JSE geliştiricisinin bilmesi gereken şeyler" olarak okudum, bu durumda iki teknoloji arasındaki farkı anlamanın alakalı olduğunu düşünüyorum.
oxbow_lakes

4
@ Thorbjørn Ravn Andersen İyi Java kodlayıcılarının, iyi kodlar dahil, yukarıdaki ayrımın farkında olduklarından şüpheliyim, "kurumsal sürüm temelde bir arayüz tanımıdır ... Oysa standart sürüm kendi başına bir uygulamadır". Çoğu iyi Java kodlayıcı için önemli olan hangi API'lerin kullanılabilir olduğudur. Örneğin: Sunucu uygulamaları EE'nin bir parçasıdır, vb. Her durumda, iyi dil-X programcılarından daha iyi programcılar bulmanın daha önemli olduğunu düşündüğüm gibi, iyi Java programcılarını bulmak için iyi JSE / JEE programcılarından daha önemli olduğunu düşünüyorum.
Laurence Gonsalves

3

volatileDerleyici tarafından kod optimizasyonunu nasıl etkiler?


3
Bu giriş doğru cevabı da içermelidir.
Thorbjørn Ravn Andersen

Tam cevabı hatırlamıyorum, iyi açıklama için şu youtube.com/… adresine bakın. Özetle: bu yöntemin bir noktada uçucu değişken kullandığını varsayın. Derleyici, bu noktadan sonra bu yöntemin kodunu optimize etmez.
Roman

2

Bir oturum fasulyesi nedir ve vatansız ve durum bilgisi olan oturum fasulyeleri arasındaki bazı farklılıkları açıklarsınız.


2

İki tamsayıyı kabul etmek için bir program yazın ve iki sayının en büyüğünü istediğiniz bir dosyaya gönderin. Şimdi her ifadenin ne yaptığını açıklayın.

İthalat ifadesinin öneminden anormal sonlandırmaya kadar oldukça derinlere inmek mümkündür


2

Çekirdek: 1. Kontrol edilen ve kontrol edilmeyen istisnalar nelerdir? 2. Kodda yeni bir istisna eklerken ne zaman (İşaretli / İşaretsiz) ne zaman kullanılır?

Servlet: 1. response.sendRedirect () ve request.forward () arasındaki fark nedir?


u bu sorulara cevap verebilir misiniz? "kontrol ve kontrol edilmemiş istisnalar" hakkında bilerek benim için ilk kez !!
palAlaa

Basit google araması sizi cevaplara yönlendirebilir: google.co.in/…
YoK

1

Nasıl threadsçalışır? Nedir synchronized? synchronizedBir sınıfta iki yöntem varsa , bunlar iki iş parçacığı tarafından aynı anda yürütülebilir. Birçok insanın evet yanıtı verdiğini duyunca şaşıracaksınız . Sonra iplikle ilgili tüm sorular, örneğin kilitlenme , açlık vb.


2
Çünkü cevabınız evet ...
Fortega

@Fortega - Bu nasıl olabilir? Her yöntemin nesne üzerinde bir kilidi vardır. Biri threadyöntemi çalıştırıyorsa, başka kimse threadkilidi alamaz.
fastcodejava

1
Aynı türde iki nesneniz varsa, ilk nesnede ilk yöntemi ve ikinci nesnede ikinci yöntemi aynı anda çağırabilirsiniz. Yöntemler elbette statik değilse.
Fortega

2
Kilitlemenin nasıl gerçekleştiğini tam olarak anlayamıyorsanız, bu gerçekten beyinsiz değildir. Ayrıca, bir
beyinsiz

1
Cevap, işlerinde iş parçacığı kullanmayan programcılar için karışıklık yaratabilir, ancak bence bu iyi bir şey :)
palAlaa

1

Birçok Java programcısının bilmediği bir şey, Dizelerin değişmez olduğudur, bu yüzden StringBuilder veya StringBuffer kullanın!

String s = "";
for(int i = 0; i < 100; i++) {
  s += "Strings " + "are " + "immutable, " + " so use StringBuilder/StringBuffer to reduce memory footprint";
}

Ve tamsayı, uzun gibi sayı
Arthur Ronald

Performans açısından, değişmez dizeleri birleştirmek ve StringBuilder kullanmak arasında artık bir fark yok. Bunun nedeni, modern java derleyicilerinin birleştirmeyi optimize edeceğidir : java.sun.com/docs/books/jls/third_edition/html/… Daha iyi okunabilir yöntemi kullanmak en iyisidir.
Brent Wilson

1
@BrentWilson bağlantı ne düşündüğünüzü yapmayacak. Bu s += "a" + "b" + "c"bir Stringbuilder.append(...)senaryoya dönüşecek . Ancak bir döngüyü optimize etmezfor . Bu yanıttaki kod, toplam 201 String, 100 StringBuilder ve (uygulamaya bağlı olarak) char[]bu StringBuilders içinde 300 farklı s ve tahmini 425k + karakter oluşturacaktır. Bir StringBuilder dümdüz kullanmak için değiştirmek, bunu char[]yerine gerektiği gibi sadece ~ 8k karakterler kullanarak 1 Dize, 1 StringBuilder ve 13-15 dahili s azaltır .
corsiKa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.