Pertanyaan yang harus dapat dijawab oleh setiap pengembang Java / Java EE yang baik? [Tutup]

138

Saya telah melalui Pertanyaan, setiap pengembang Net yang baik harus dapat menjawab dan sangat terkesan dengan konten dan pendekatan dari pertanyaan ini, dan dengan semangat yang sama, saya menanyakan pertanyaan ini untuk Java / Java EE Developer.

Menurut Anda pertanyaan apa yang harus dijawab oleh programmer Java / Java EE yang baik?

Saya menandai pertanyaan ini sebagai komunitas wiki karena tidak spesifik untuk pengguna dan bertujuan untuk melayani komunitas pemrograman pada umumnya.

Menantikan tanggapan luar biasa.

EDIT : Tolong jawab pertanyaan juga, seperti yang disarankan dalam komentar, sehingga orang dapat mempelajari sesuatu yang baru mengenai bahasa itu juga.

Rachel
sumber
3
Mengapa pertanyaan ini tidak dapat memperoleh respons yang serupa dengan pertanyaan .Net?
Rachel
5
Ya Tuhan :), pertanyaan .Net ditanyakan setahun yang lalu dan yang ini baru berumur sehari dan Anda membandingkan responsnya.
kejutan listrik
1
Mengapa Anda tidak mengedit pertanyaan Anda dan menambahkan kalimat "Silakan jawab pertanyaan Anda sendiri.", Sehingga orang-orang bahkan dapat mempelajari sesuatu (baru).
r3zn1k
9
"apa singkatan saat ini untuk Edisi Perusahaan";)
Bozho
17
Anekdot Albert Einstein .. SALAH SATU rekan Einstein memintanya untuk nomor teleponnya suatu hari. Einstein meraih direktori telepon dan mencarinya. "Kamu tidak ingat nomor kamu sendiri?" pria itu bertanya, kaget. "Tidak," jawab Einstein. "Mengapa saya harus menghafal sesuatu yang dengan mudah saya dapatkan dari buku?" Apakah saya menjangkau semua orang;)? Ya saya tahu, Einstein tidak menghadapi Pewawancara ...
SB.

Jawaban:

83

Apa hubungan antara kode hash () dan equals ()? Apa pentingnya metode ini? Apa persyaratan untuk menerapkannya?

Jeff
sumber
Ya, setiap pengembang setidaknya harus menyadari masalah, bahkan jika Anda tidak akan menemui mereka dalam praktek.
sleske
3
equals () dan hashCode () di java @ technofundo.com/tech/java/equalhash.html
pramodc84
70

Apa perbedaan antara Set, Peta, dan Daftar?

Saya masih kagum betapa banyak orang yang tidak tahu ini dalam wawancara telepon.

Jon
sumber
8
Memang, tapi itu masalah 20 detik melihat dokumen di internet ("kerangka kerja koleksi java"), begitu banyak orang yang berharga mungkin tidak repot-repot dengan menyimpannya dalam memori.
Manur
127
Maaf tidak membelinya, itu pengetahuan dasar yang harus diketahui setiap pengembang.
Jon
15
Saya akan mengatakan lebih jauh siapa pun yang berpikir tentang pekerjaan dalam perangkat lunak perlu memahami tidak hanya itu, tetapi juga perbedaan antara berbagai jenis daftar (ArrayList / LinkedList). Tidak harus implementasi terbaik atau bahkan notasi O (n), tetapi pemahaman tentang kapan tepat menggunakan apa.
Yang Mulia Gonzo
11
+1 @Jon: Saya biasanya berlangganan sekolah pemikiran "tidak perlu mengingat detail", tetapi jika Anda bahkan tidak tahu perbedaan konseptual dasar antara antarmuka dasar itu, maka Anda jelas bukan pengembang Java yang baik.
Joachim Sauer
13
@ Joachim: Anda bisa menjatuhkan kata "Java" dari pernyataan Anda. Set, Peta, dan Daftar adalah gagasan algoritmik dasar.
CPerkins
44

Bisakah suatu antarmuka memperluas banyak antarmuka?

Kebanyakan orang menjawab "tidak", karena mereka tahu java tidak memiliki banyak pewarisan. Tetapi suatu antarmuka masih dapat memperluas banyak antarmuka (tetapi suatu kelas tidak dapat memperluas banyak kelas). Ini tidak mengarah pada masalah berlian.

Jika jawabannya "tidak", pewawancara harus bertanya "mengapa akan hal itu dilarang?". Kemudian Anda mulai memikirkannya dan Anda harus menyadari bahwa tidak ada masalah dengannya.

Jadi, Anda belajar sesuatu (sendiri) dalam wawancara dan menunjukkan kepada pewawancara bahwa Anda dapat berargumen tentang kelas, objek, warisan, polimorfisme, dll. Ini sebenarnya jauh lebih baik daripada seorang kandidat yang tahu jawabannya dengan hati tetapi tidak mengerti kenapa

ewernli
sumber
Saya bingung dengan seorang dosen C ++ kemarin dengan masalah warisan berlian, dia tidak tahu sama sekali :)
Esko
2
Saya pernah ditanya pertanyaan ini dan saya menjawab "tidak". Saya pikir itu stres dan saya menjawab terlalu cepat. selalu sulit untuk mengetahui jawaban atas hal-hal yang tidak pernah Anda gunakan.
IAdapter
1
Saya menguraikan sedikit lebih dalam teks. Menjawab "tidak" sebenarnya tidak apa-apa. Apa yang baik dengan pertanyaan ini adalah bahwa cara yang baik untuk memicu diskusi tentang konsep OO dan melihat bagaimana alasan kandidat. Jika pewawancara Anda hanya ingin mendengar "ya" maka itu tidak ada gunanya. Warisan berganda dari antarmuka memang tidak umum diketahui oleh hati.
ewernli
3
Versi yang lebih rumit dari pertanyaan ini adalah "Apakah java mendukung multiple inheritance?" yang jawabannya adalah "semacam" hanya untuk antarmuka
nsfyn55
23

Penggunaan kata kunci terakhir dalam pemanggilan metode. Sebagai contoh mengapa pengujian metode dalam kode di bawah ini tidak memberikan kesalahan kompilasi meskipun menggunakan kualifikasi akhir untuk parameter metode.

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");
}

sateesh
sumber
Saya akan sangat senang mengetahui jawaban untuk pertanyaan ini. Kedengarannya sangat menarik.
Rachel
@Rachel: Alasannya adalah karena finalkata kunci diterapkan pada Nameobjek, bukan namebidang kelasName
ryanprayogo
20
Yah, parameternya ndinyatakan final, yang artinya tidak bisa dipindahkan di testbadan metode. Itu tidak menyebabkan kesalahan karena metode testtidak berusaha untuk menetapkan kembali parameter, itu hanya menetapkan properti pada parameter ... n = new Name("test");akan menyebabkan kesalahan kompilasi ...
rjohnston
7
Menambahkan ke komentar @ rjohnston: penggunaan final untuk parameter metode tidak menjamin kekekalan instance kelas. Jika ada kebutuhan untuk ketidakberdayaan kelas (Nama dalam kasus ini) harus dirancang demikian (misalnya dalam kasus ini tidak memberikan setter)
sateesh
Terima kasih semua telah berbagi informasi berharga. Saya sangat menghargai masukan Anda dalam hal ini.
Rachel
19

Satu yang pasti adalah perbandingan string. Perbedaan antara

String helloWorld = "Hello World";
helloWorld == "Hello World";
"Hello World" .equals (helloWorld);

kejutan listrik
sumber
14
Cukup yakin Anda harus melakukan sesuatu seperti String baru ("Hello World"). Tidak konstanta string ditarik dari kolam, seperti efek intern () akan, karena itu membuat kedua pernyataan itu benar?
Steven Schlansker
17

Pertanyaan tipuan: Apa jenis parameter yang dilewatkan oleh referensi di Jawa?

Sungguh menakjubkan betapa banyak orang masih membiakkan mantra "primitif dilewatkan oleh nilai, objek dilewatkan dengan referensi" mantra.

Chinmay Kanchi
sumber
4
Saya ingin tahu apakah jawaban yang benar selalu yang diberikan dalam sebuah wawancara. Di tempat saya wawancarai, pewawancara juga membeo hal yang sama.
MAK
2
Saya telah memperhatikan perbedaan antara orang-orang yang belajar C sebagai bahasa pertama dan orang-orang yang belajar C ++ sebagai bahasa pertama dalam menjawab pertanyaan ini tentang Java. Mungkin karena pengguna C diajari bahwa melewatkan pointer ke suatu nilai adalah "pass by reference".
Uri
23
Itu pertanyaan bodoh karena jawaban "salah" kemungkinan besar akan menjadi benar secara teknis jika Anda juga bertanya "konsekuensi apa yang telah lewat referensi?" . Ini hanya masalah definisi dari apa yang lewat referensi berarti dan dengan demikian tidak banyak nilainya di dunia Jawa karena hanya ada satu cara untuk melewati objek. Lebih penting untuk memahami apa yang sebenarnya terjadi daripada menggunakan definisi tidak tetap untuk mendapatkan referensi dengan cara yang Anda inginkan.
x4u
3
Pertanyaan ini setidaknya bermasalah, karena sebagian besar bergantung pada definisi yang tepat dari "pass by value" / "pass by reference", yang sering digunakan secara tidak benar. Meskipun saya setuju bahwa pengembang yang baik harus mengetahui definisi, lebih penting untuk memahami konsekuensinya. Jika Anda memahami perilaku Java yang sebenarnya, maka mengetahui nama yang benar untuk konsep tersebut tidak terlalu berarti, karena itu bukan sesuatu yang Anda diskusikan dalam praktiknya, karena itu tidak pernah berubah.
sleske
3
Erm, benda-benda yang disahkan oleh referensi di Jawa. Anda tidak dapat melewatkan objek berdasarkan nilai; antara lain, benda tidak pernah ada di tumpukan. Referensi diteruskan oleh nilai, tentu saja.
Sean Owen
17

Anda mengatakan "Bagus", "Pengembang". Ini 2 sen saya juga .. :)

  • Apakah yang dimaksud dengan "pengecualian yang diperiksa"?
  • Mana yang lebih baik untuk digunakan dan kapan: Pernyataan atau Pengecualian untuk menangani kondisi yang tidak terduga?
  • Mengapa kelas String final? (atau bukan?;))
  • Apakah tunggu, beri tahu, dan beri tahu semua metode di kelas Object?
  • Mengapa kelas Thread tidak final? Kenapa saya harus memperpanjang Thread?
  • Mengapa ada dua kelas Date; satu di paket java.util dan lainnya di java.sql?
  • Apa yang terjadi jika pengecualian dilemparkan ke dalam blok akhirnya? Apakah yang tersisa akhirnya dieksekusi atau tidak?
  • Ada pengumpul sampah baik-baik saja, tetapi kemudian apakah kebocoran memori benar-benar tidak ada dalam aplikasi Java? Jika tidak, bagaimana bisa begitu?

Untuk J2EE:

  • Apakah baik memiliki variabel instan / statis dalam servlet? Kenapa tidak? Lalu di mana Anda menyimpan "negara"?
  • melanjutkan pertanyaan di atas: apa & di mana "keadaan" untuk aplikasi (web)?
  • Apa yang terjadi jika saya mulai membuat / menutup koneksi DB di "JSP"?
  • Apa cara untuk menangani pengecualian JSP? coba tangkap? Hmmm .. adakah yang lain?

Saya bisa memikirkan banyak, banyak, lebih banyak dari mereka tetapi ini akan dilakukan untuk saat ini :)

Elister
sumber
8
Jawabannya bagus, saya tidak tahu jawabannya.
MAK
Pengecualian yang dicek adalah yang harus ada rencana program untuk ditangani jika terjadi. Jika tidak ada blok coba / tangkap di sekitar sesuatu yang melempar pengecualian yang diperiksa, program tidak akan dikompilasi. tunggu, beri tahu dan beri tahu Semua untuk menyinkronkan utas, dan di Jawa semua Objek dapat disinkronkan. Saya akan memperluas Thread (sebagai lawan mengimplementasikan Runnable) jika secara konseptual kelas membutuhkan utasnya sendiri, yaitu ia perlu melakukan beberapa manajemen, dan tidak mewakili tugas yang dapat dijalankan pada utas pekerja lain.
ZoFreX
Jika pengecualian dilemparkan ke dalam blok akhirnya maka sisanya tidak akan berjalan. Dalam program Java "murni", kebocoran memori kanonik tidak ada. Namun, memori masih bisa digunakan yang seharusnya tidak terjadi jika struktur data berisi referensi ke objek yang tidak lagi diperlukan. Jika menggunakan pustaka asli maka sumber dayanya mungkin perlu dikelola, misalnya dalam SWT, penting untuk memanggil .dispose () pada aset tertentu untuk memastikan mereka tidak bocor.
ZoFreX
2
Gunakan pernyataan untuk kesalahan "Ini seharusnya tidak pernah terjadi" yang harus ditangani dalam pengembangan. Gunakan pengecualian untuk kesalahan yang mungkin sebenarnya terjadi saat runtime, dan program perlu mengatasinya dengan beberapa cara.
MatrixFrog
16

Apa perbedaan antara String, StringBuffer dan StringBuilder?

Petir
sumber
5
String - kelas yang tidak berubah mewakili sebuah String. StringBuffer - pola pembangun yang diperkenalkan di versi Java yang lebih lama yang menyinkronkan pada setiap operasi (atau sebagian besar dari mereka) untuk digunakan untuk membangun sebuah String. StringBuilder - diperkenalkan di Java 5 (JDK 1.5), kelas yang membagikan API StringBuffer untuk digunakan untuk membangun sebuah String yang tidak disinkronkan pada setiap operasi (atau sebagian besar dari mereka). Karena konstruksi Strings cenderung terjadi dalam satu utas, StringBuilder lebih disukai untuk tujuan ini di Java runtimes / JDK yang mendukungnya.
MetroidFan2002
13

"Apa itu deskriptor penyebaran?"

Jika kandidat bergidik tanpa sadar, ia memiliki pengalaman bekerja dengan pre-3.0 EJBs.

Michael Borgwardt
sumber
membuatnya "gemetar tanpa sadar + berkeringat berat + turun mati setelah mengulangi pertanyaan ini 2 kali lebih banyak", kadang-kadang saya merasa itulah "satu-satunya" alasan mereka menambahkan / mendukung keseluruhan anotasi! :)
Elister
12

Banyak pertanyaan dan wawancara tersedia di http://www.techinterviews.com/interview-questions/java dan saya tidak benar-benar melihat nilai dalam salinan / menempelkan pilihan mereka.

Tidak, terserah Anda untuk membuat kompilasi Anda sendiri Anda anggap penting. Secara pribadi, saya selalu melanjutkan dalam dua langkah: pertama beberapa pertanyaan untuk mendapatkan ide dasar dari pengalaman dan keterampilan, kemudian situasi pemecahan masalah. Saya memang tidak yakin bahwa mampu menjawab pertanyaan yang diketahui membuat Anda menjadi pemecah masalah yang tidak diketahui baik atau buruk . Jadi, saya lebih suka meminta orang untuk memecahkan masalah yang diberikan, untuk memberi mereka beberapa persyaratan, dan meminta mereka untuk menulis kode (tetapi tidak di atas kertas). Saya memberi mereka waktu untuk kembali kepada saya dan memeriksa bagaimana mereka melakukannya, gaya pengkodeannya, bagaimana mereka menggunakan API yang disarankan, dll.

Semua itu dikatakan, pertanyaan favorit saya adalah "apa yang tidak Anda sukai tentang Jawa?" (dalam semangat yang satu ini ). Ini benar-benar pertanyaan yang sangat bagus, memberi Anda umpan balik langsung tentang seberapa banyak kandidat telah menggunakan Java dan mengeksplorasi API-nya dan apakah ia hanya religius tentang hal itu atau tidak (seperti yang ditulis OP).

Pembaruan: Seperti yang disarankan oleh CPerkins, kata-kata yang lebih baik untuk pertanyaan yang disarankan di atas mungkin "Apa yang paling Anda ingin lihat berubah di Jawa?". Dan memang, saya lebih suka cara ini.

Pascal Thivent
sumber
Saya tidak suka pertanyaan "apa yang tidak Anda sukai tentang Jawa?", Saya akan berbohong, karena itu terdengar seperti "mengapa Anda meninggalkan perusahaan terakhir Anda?". ditambah mereka mungkin berpikir - "jika kamu benci java, kami tidak akan menawarkanmu pekerjaan".
IAdapter
@ 01 Ini hak Anda, tetapi saya tidak setuju dengan Anda dan saya pikir Anda melewatkan inti pertanyaan itu.
Pascal Thivent
1
Saya biasanya melihat ini menempatkan lebih seperti: "Apa yang paling ingin Anda lihat berubah di Jawa", daripada "tidak suka".
CPerkins
@CPerkins Itu memang kata-kata yang lebih baik, lebih baik daripada "tidak suka" dan jauh lebih baik daripada "benci" (dalam referensi). Terima kasih.
Pascal Thivent
11

Apa itu 'Sistem', 'keluar', 'println' di System.out.println? Apa yang terjadi ketika Anda memanggil 'taruh' di HashMap?

Adisesha
sumber
apa jawabannya ?? saya tidak pernah memikirkan sistem kelas apa !! saya ingin tahu asnwer :)
palAlaa
10
  1. Jelaskan berbagai pengubah akses yang digunakan di Jawa. Saya memiliki banyak orang yang kesulitan dengan ini, terutama akses standar.
  2. Jika Anda dapat mengubah satu hal tentang bahasa atau platform Java, apakah itu? Pengembang yang baik akan memiliki jawaban di sini sementara mereka yang tidak benar-benar tertarik dengan pengembangan mungkin tidak peduli.
  3. Jika CV mereka mengatakan sesuatu seperti mereka menggunakan EJB2.1 maka tanyakan tentang EJB3 untuk melihat apa yang mereka ketahui tentang itu. Pengembang terbaik akan mengikuti perkembangan terbaru bahkan jika mereka tidak menggunakan versi yang lebih baru.
Mark
sumber
3
Jika hanya ada satu hal yang bisa saya ubah, saya akan menambahkan operator overloading ke bahasa, mungkin hanya dengan satu set terbatas operator overloadable (yaitu, tidak ada overloading newatau ^atau >>, <<dan >>>). Jika saya bisa mengubah satu hal lagi, yang akan menambah benar semantik call-by-referensi. Hal ketiga adalah menambahkan unsignedtipe integral.
Chinmay Kanchi
1
delegasi dan penutupan dan mungkin ungkapan lambda, tapi itu tidak benar-benar diperlukan. Metode Penyuluhan akan sangat bagus juga. Mereka benar-benar dapat membersihkan kode jika digunakan dengan benar.
Joel
10
  • Apa kontrak umum ketika mengesampingkan sama dengan?
  • Apakah opsi yang lebih baik lebih suka daftar atau array?
  • Apa konvensi penamaan yang diterima secara umum?
  • Bagaimana serialisasi bekerja?
  • Bagaimana cara mengimplementasikan Comparable?
  • Apa keuntungan menggunakan Pernyataan Disiapkan JDBC?
  • Apa itu Java EE?
  • Apa itu wadah dan layanan apa yang disediakannya?
JuanZe
sumber
9

Jika Anda merekrut lulusan dengan Java "mengalami" pertanyaan sederhana seperti Menulis beberapa kode yang akan menyebabkan NullPointerException dilempar dapat membedakan kandidat mana yang telah menggunakan Java baru-baru ini, dan tidak berhenti begitu saja ketika mereka menyelesaikan unit / kursus mereka.

David
sumber
16
Apakah "melempar NullPointerException ()" yang baru merupakan jawaban yang benar?
Thorbjørn Ravn Andersen
1
Ya, itu tergantung pada pewawancara. Jika mereka menunjukkan contoh pengujian variabel dan melempar NPE dengan pesan bermanfaat maka saya akan senang. Jika saya pikir mereka menggunakan jawaban itu karena mereka tidak dapat menemukan beberapa kode yang akan secara sah melempar NPE maka saya akan khawatir.
David
9

Apa yang akan dicetak?

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");
    }
}

Jawab : CoolReturn +1

Sedikit lebih sulit:

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;  /* ;) */
    }
}

Jawab : CoolReturn

zaletniy
sumber
kode pertama menunjukkan bahwa akhirnya selalu dikecualikan bahkan jika pernyataan kembali tersedia di blok try, tetapi saya tidak mendapatkan kode kedua ?? apa yang terjadi ketika pembuat pernyataan = nol; terjadi ??
palAlaa
3
@Alaa, hampir seperti nilai sementara diatur ke pembangun, pembangun diatur ke nol di blok akhirnya, dan kemudian nilai sementara adalah apa yang dikembalikan.
deterb
1
@VextoR, ya Alaa telah memberikan deskripsi yang bagus. Kode itu memeriksa bagaimana orang yang diwawancarai memahami percobaan ... akhirnya memblokir dengan kembali ke dalam, dan variabel lingkup secara umum, penanganan variabel
zaletniy
4
Pernyataan kembali adalah mengembalikan referensi ke objek StringBuilder. Mengubah referensi pada akhirnya tidak menghasilkan referensi yang dikembalikan. Namun, mengubah konten objek tidak memengaruhi apa yang dikembalikan, seperti pada contoh pertama.
Derek Litz
8

Apa perbedaan antara kelas abstrak dan antarmuka? Kapan Anda akan menggunakan masing-masing?

Banyak pengembang Java tidak mengetahui hal ini, saya bertanya kepada kebanyakan orang pada kursus ilmu komputer saya di universitas dan sebagian besar tidak dapat menjawabnya.

ZoFreX
sumber
Satu-satunya perbedaan adalah kelas abstrak dapat berisi metode non-abstrak.
TBH
1
Itulah jawaban yang akan Anda miliki jika Anda membaca buku Java, tentu saja. Meskipun kemudian Anda mungkin juga menambahkan bahwa mereka dapat mengandung variabel anggota juga: P Tetapi perbedaan kapan menggunakannya, dan mengapa, bahkan lebih menarik.
ZoFreX
1
penggunaan antarmuka memberi saya teknik yang sangat kuat yaitu polimofisme, yang dapat memanggil metode apa pun yang dikesampingkan dari kelas yang mengimplementasikan antarmuka dengan cara yang tidak terlihat, sehingga Anda tidak perlu tahu jenis setiap kelas anak.
palAlaa
@TBH - Jangan lupa bahwa, dalam model pewarisan tunggal yang saat ini digunakan Java, Anda hanya dapat memperluas satu kelas abstrak, untuk satu set fungsionalitas - tetapi Anda dapat menggabungkan beberapa antarmuka dalam satu kelas untuk beberapa fungsi yang akan dilaksanakan tanpa satu pembatasan warisan.
MetroidFan2002
8

Pertanyaan sederhana seperti,

  • Apa itu JRE dan JDK?
  • Mengapa java mengklaim interoperabilitas?

Meskipun ini sangat mendasar, banyak pengembang tidak tahu jawabannya. Saya menyarankan ini ditanyakan sebelum pertanyaan terkait kode.

Ravisha
sumber
Tidak tahu tentang bagian JDK / JRE. Misalnya, tidak ada perbedaan seperti itu pada Mac. Jadi sebagai pengembang Java di Mac, benar-benar tidak perlu tahu sama sekali tentang itu.
Fabian Steeg
Saya pikir ini adalah pertanyaan yang bagus, dan jika itu membantu mengekspos orang-orang yang cukup salah arah untuk mencoba pengembangan Java yang serius pada Mac, semuanya menjadi lebih baik. Serius, jika Anda mengaku sebagai pengembang Java tetapi tidak akan tahu tautan unduhan mana untuk mengeklik java.sun.com maka ada masalah.
Mark B
Baik menjadi pengembang java kita tidak perlu khawatir sama sekali tentang platform yang dia khawatirkan. Memahami alat-alat java tampaknya merupakan persyaratan dasar. Saya pikir begitu juga. Saya tidak tahu tentang Mac OS. Masih saya tidak m = khawatir banyak tentang OS tempat saya bekerja.
Ravisha
@ mbaird Itu muncul sebagai komentar yang agak kejam. Meskipun saya mengembangkan pada Mac dan saya tahu apa itu JRE / JDK, mari kita jujur, dalam perkembangan aktual, apakah itu benar-benar penting? Terutama dengan IDE yang membuat baris perintah menggunakan sesuatu dari masa lalu, seorang pengembang Java perlu tahu bagaimana menggunakan bahasa lebih dari apa pun.
Alexis King
6

5 pertanyaan J2EE / JEE teratas

Daftar pertanyaan middleware J2EE / JEE yang saya hadapi sangat panjang, tapi di sini adalah 5 teratas yang pernah saya tanyakan, dan mengarah pada diskusi yang baik:

  1. Apa yang terjadi ketika MDB menemukan pengecualian yang tidak bisa ditangani?
    Pertanyaan ini biasanya mengarah ke berbagai diskusi menarik tentang pesan racun, antrian kesalahan, dll.,
  2. Diberikan Topik JMS, dan beberapa konsumen pada JVM yang berbeda, pertanyaan tentang berbagai skenario dengan dan tanpa konsumen tahan lama.
    Pertanyaan ini biasanya memungkinkan saya untuk membahas kapan harus menggunakan pelanggan yang tahan lama, kapan harus menggunakan antrian, dll.,
  3. Jika terjebak dalam situasi di mana mengakses konten Hibernate / JPA POJO mengarah ke pengecualian, bagaimana orang mengatasinya?
    Hal ini menyebabkan diskusi yang indah tentang pemuatan malas, rehidrasi, dll., Bahkan telah menyebabkan membandingkan dan membedakan JPA dengan kacang Entity. Saya merasa berguna untuk dipersiapkan, dan jelas dalam konsep.
  4. Bagaimana layanan web sederhana dapat disediakan?
    Solusi apa pun dari server web sederhana berbasis solusi SOAP / REST canggih, dan apa pun di antaranya, harus cukup baik. Juga, berdasarkan pewawancara, kadang-kadang mengarah ke diskusi yang sangat menarik tentang topik-topik seperti beberapa ide desain - WSDL pertama, gaya doc, perantara SOAP, dll., Hal ini dapat menimbulkan pertanyaan seperti mendaftarkan peningkatan JAX-WS melalui JAX -RPC, atau SOAP1.2 lebih dari SOAP1.1, jawaban yang biasanya didasarkan pada seberapa banyak yang saya ingat.
  5. Injeksi sumber daya JEE 5
    Pertanyaan ini diajukan dalam banyak cara, mulai dari pola Service Locator hingga javax.naming.Contextpertanyaan.

Pertanyaan rumit lain yang saya temukan bermasalah, tetapi yang sering saya hadapi adalah, Bagaimana perpustakaan dependen dipaketkan menjadi arsip?
atau Visibilitas berbagai kelas dalam arsip yang dibundel.
Jika diskusi tidak mengarah ke hierarki loader kelas dari server aplikasi yang berbeda, arsip sumber daya, dll., Yang terbaik adalah mengundurkan diri dan melanjutkan.

5 inti pertanyaan Java:

  1. Pertanyaan di java.util.collections
    Ini adalah ibu dari semua pertanyaan. Setelah Anda dapat secara efektif mendarat pewawancara di daerah ini, dan jika Anda siap, sisa wawancara biasanya tinggal di sini. Pastikan mengetahui Set, List, Map, dan pentingnya Object.equals()dan Object.hashCode()dalam setiap pelaksanaan antarmuka ini.
  2. Pertanyaan refactoring
    Ini bagus jika pewawancara memiliki pikiran terbuka. Jika pewawancara sudah memikirkan solusi spesifik, dan milik Anda tidak cocok dengan miliknya, Anda hampir hancur. Yang terbaik adalah setuju dengan jawaban "Saya mengerti solusi lain adalah mungkin."
  3. Pertanyaan tentang multi-threading di JDK5, membandingkan dengan versi JDK sebelumnya saya telah menemukan yang terbaik untuk dipersiapkan dengan kelas paket java.util.concurrent . Buku Doug Lea memiliki sebagian besar jawabannya.
  4. Apa yang baru di JDK1.6 / JDK1.7 ...?
    Ini adalah pertanyaan yang pasti untuk banyak pewawancara. Meskipun saya membenci ini, yang terbaik adalah bersiap-siap. Setidaknya mengingat beberapa yang telah saya kerjakan, dan memimpin diskusi ke arah lain, sebagian besar dan secara efektif menghindari dan menyelesaikan masalah.
  5. Pola di Java API
    Waktu dan sekali lagi saya telah diminta untuk menunjukkan pola GoF di Java API. Lebih baik bersiap untuk yang satu ini.
CMR
sumber
5

Perbedaan antara dan server web dan wadah web

pengguna256777
sumber
5

Apa yang paling Anda sukai / paling tidak tentang Java dan mengapa?

Carsten
sumber
5

mengapa Anda mengganti metode toString ()?

SWD
sumber
4

Pertanyaan Java yang lebih murni:

Apa perbedaan antara tidur dan menunggu? Tidak banyak orang yang benar-benar mengerti cara menunggu bekerja.

Bagaimana Anda perlu menangani InterruptedExceptions?

David Nouls
sumber
4

Ini adalah pertanyaan yang saya hadapi dalam wawancara saya.

Mengapa metode utama di Java disebut public static void main (String [] args)?

Menjawab:

1. main () harus dideklarasikan kepada publik karena dijalankan oleh JVM setiap kali eksekusi program dimulai. JVM bukan milik paket program kami.

Untuk mengakses utama di luar paket, kami harus mendeklarasikannya sebagai publik. Jika kami mendeklarasikannya sebagai sesuatu selain publik, ia menunjukkan Galat Runtime tetapi bukan galat waktu kompilasi

2. main () harus dinyatakan sebagai statis karena jika suatu metode dinyatakan sebagai statis maka kita dapat memanggil metode itu di luar kelas menggunakan ClassName.methodName ();

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

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

JVM pertama-tama akan memuat kelas Test, dan akan memeriksa argumen Commandline dan memanggil metode utama sebagai Test.main ();

3. main () harus dinyatakan sebagai void main () karena JVM tidak mengharapkan nilai dari main (). Jadi, itu harus dinyatakan sebagai void.

Jika jenis pengembalian lain disediakan, itu adalah RunTimeError yaitu; NoSuchMethodFoundError.

4. main () harus memiliki argumen String sebagai array karena JVM memanggil metode utama dengan mengirimkan argumen baris perintah. Ketika mereka disimpan dalam objek string array itu dilewatkan sebagai argumen ke main ().

Sai Upadhyayula
sumber
Anda dapat menggunakan public static void main(String... args)jika Anda cenderung :-) Ini memiliki tanda tangan yang sama dengan[]
corsiKa
3

Apa perbedaan antara J2SE dan J2EE (atau JSE dan JEE)?

Pengembang harus dapat menunjukkan bahwa edisi perusahaan pada dasarnya adalah definisi antarmuka (yaitu spesifikasi) yang dapat diimplementasikan oleh vendor. Padahal edisi standar adalah implementasi dalam dirinya sendiri

oxbow_lakes
sumber
4
Apakah kemampuan untuk menjaga terminologi pemasaran tetap benar-benar penting di penghujung hari?
Laurence Gonsalves
@Laurence - itu hal konyol untuk dikatakan. Ada perbedaan nyata antara dua hal yang membuat Anda kagum betapa banyak pengembang yang seharusnya tidak mengerti
oxbow_lakes
Maksud saya adalah jika seseorang adalah pembuat kode yang baik, saya tidak peduli jika mereka tahu perbedaan antara J2SE dan J2EE.
Laurence Gonsalves
Saya membaca pertanyaan sebagai "hal-hal yang harus diketahui oleh pengembang JEE + JSE", dalam hal ini saya pikir memahami perbedaan antara kedua teknologi itu relevan.
oxbow_lakes
4
@ Thorbjørn Ravn Andersen Saya ragu bahwa sebagian besar coders Java, termasuk yang baik, sangat menyadari perbedaan di atas, "edisi perusahaan pada dasarnya adalah definisi antarmuka ... Sedangkan edisi standar adalah implementasi dalam dirinya sendiri". Bagi kebanyakan Java coders yang baik, perbedaan yang penting adalah API mana yang tersedia. misalnya: Servlets adalah bagian dari EE, dll. Bagaimanapun juga, sama seperti saya pikir lebih penting untuk menemukan programmer yang baik daripada programmer bahasa-X yang baik, saya pikir lebih penting untuk menemukan programmer Java yang baik daripada programmer JSE / JEE yang baik.
Laurence Gonsalves
3

Bagaimana volatilepengaruhnya terhadap optimasi kode oleh kompiler?

Roma
sumber
3
Entri itu juga harus berisi jawaban yang benar.
Thorbjørn Ravn Andersen
Saya tidak ingat jawaban lengkapnya, lihat lection ini youtube.com/… untuk penjelasan yang bagus. Singkatnya: asumsikan metode yang menggunakan variabel volatile di beberapa titik. Maka kompiler tidak mengoptimalkan kode metode ini setelah titik itu.
Roman
2

Bagaimana dengan kacang sesi dan jelaskan beberapa perbedaan antara kacang sesi tanpa kewarganegaraan dan kenegaraan.

Kristian
sumber
2

Tulis sebuah program untuk menerima dua bilangan bulat dan menampilkan yang terbesar dari dua angka ke file di lokasi pilihan Anda. Sekarang jelaskan apa yang dilakukan setiap pernyataan.

Dimungkinkan untuk menelusuri cukup dalam mulai dari signifikansi pernyataan impor, hingga penghentian abnormal

Semua orang
sumber
2

Inti: 1. Apa yang dicek dan tidak dicentang pengecualiannya? 2. Sambil menambahkan pengecualian baru dalam kode jenis apa (Dicentang / Tidak Dicentang) untuk digunakan kapan?

Servlet: 1. Apa perbedaan antara response.sendRedirect () dan request.forward ()?

YoK
sumber
dapatkah Anda menjawab pertanyaan ini? ini adalah pertama kalinya bagi saya mengetahui tentang "pengecualian dicentang dan tidak dicentang" !!
palAlaa
Pencarian google sederhana dapat mengarahkan Anda ke jawaban: google.co.in/…
YoK
1

Bagaimana cara threadskerjanya? Apa synchronized? Jika ada dua synchronizedmetode dalam suatu kelas dapat mereka dijalankan secara bersamaan oleh dua utas. Anda akan terkejut mendengar banyak orang menjawab ya . Kemudian semua pertanyaan terkait thread, misalnya kebuntuan , kelaparan , dll.

fastcodejava
sumber
2
Itu karena jawabannya 'iya' ya ...
Fortega
@Fortega - Bagaimana bisa? Setiap metode memiliki kunci pada objek. Jika seseorang threadmenjalankan metode ini, tidak ada orang lain yang threaddapat memperoleh kunci.
fastcodejava
1
Jika Anda memiliki dua objek dengan tipe yang sama, Anda dapat memanggil metode pertama pada objek pertama, dan metode kedua pada objek kedua secara bersamaan. Kecuali metodenya tentu saja statis.
Fortega
2
Jika Anda tidak memahami dengan benar bagaimana penguncian itu terjadi, itu sebenarnya bukan masalah. Juga, meskipun mungkin tidak punya otak, itu tidak berarti jawaban saya salah :-)
Fortega
1
Jawabannya bisa membuat kebingungan bagi progrmmers yang tidak menggunakan utas dalam pekerjaan mereka, tetapi saya pikir ini adalah yang baik :)
palAlaa
1

Satu hal yang tidak diketahui oleh banyak programmer Java adalah String tidak dapat diubah, jadi gunakan StringBuilder atau StringBuffer!

String s = "";
for(int i = 0; i < 100; i++) {
  s += "Strings " + "are " + "immutable, " + " so use StringBuilder/StringBuffer to reduce memory footprint";
}
Shervin Asgari
sumber
Dan Number seperti Integer, Long dan sebagainya
Arthur Ronald
Dari segi kinerja, tidak ada lagi perbedaan antara menggabungkan string abadi dan menggunakan StringBuilder. Ini karena kompiler java modern akan mengoptimalkan rangkaian: java.sun.com/docs/books/jls/third_edition/html/… Cara terbaik untuk menggunakan metode apa pun yang lebih mudah dibaca.
Brent Wilson
1
@BrentWilson apa yang Anda tautkan tidak akan melakukan apa yang Anda pikirkan. Ini akan berubah s += "a" + "b" + "c"menjadi Stringbuilder.append(...)skenario. Tetapi itu tidak akan mengoptimalkan forloop. Kode dalam jawaban ini pada akhirnya akan menciptakan total 201 String, 100 StringBuilders, dan (tergantung pada implementasinya) 300 berbeda char[]di dalam StringBuilders tersebut, dan diperkirakan 425k + karakter. Mengubahnya untuk menggunakan StringBuilder langsung akan mengurangi ini menjadi 1 String, 1 StringBuilder, dan 13-15 internal char[]hanya menggunakan ~ 8k karakter saja seperti seharusnya.
corsiKa