Rumah  >  Artikel  >  Java  >  Soalan Asas Java

Soalan Asas Java

WBOY
WBOYasal
2024-08-26 06:33:06750semak imbas

Java pertama kali dikeluarkan oleh Sun Microsystems pada tahun 1995. Pembangunan Java bermula pada awal 1990-an, diketuai oleh James Gosling dan pasukannya. Bahasa ini pada asalnya dipanggil "Oak" tetapi kemudiannya dinamakan semula "Java" selepas sejenis kopi.
Java dicipta untuk menangani keperluan untuk bahasa pengaturcaraan bebas platform yang boleh digunakan untuk mencipta perisian yang boleh dijalankan pada mana-mana peranti, tanpa mengira perkakasan atau sistem pengendalian asas. Matlamat utama adalah untuk membenarkan pembangun "menulis sekali, jalankan di mana-mana", bermakna kod yang ditulis dalam Java boleh dijalankan pada mana-mana platform yang menyokong Mesin Maya Java (JVM).
Reka bentuk Java memfokuskan pada kesederhanaan, mudah alih dan keselamatan, menjadikannya sesuai untuk pelbagai aplikasi, daripada pembangunan web kepada perisian perusahaan. Ia cepat mendapat populariti kerana kepelbagaian dan keupayaan untuk membina aplikasi yang mantap dan berprestasi tinggi merentas platform yang berbeza.

Menjadi salah satu bahasa yang paling banyak digunakan dalam pembangunan perisian hari ini, dan setelah mempelajarinya untuk masa yang lama, saya telah mengumpulkan di sini beberapa soalan dan jawapan tentang dunia Java yang indah.

Dibenci ramai, tetapi disayangi oleh orang lain.

Fundamental Questions of Java

Soalan

1. Apakah perbezaan antara JDK dan JRE?

JDK( Java Development kit ) digunakan oleh pembangun untuk mencipta aplikasi Java dan termasuk alatan, perpustakaan dan penyusun yang diperlukan. JRE (Java Runtime Environment) digunakan oleh pengguna akhir untuk menjalankan aplikasi Java dan menyediakan persekitaran masa jalan dan perpustakaan kelas penting, tetapi tidak termasuk alat pembangunan.

2. Apakah faedah menggunakan Java?

Ini adalah faedah menggunakan Java:

  • Kemudahalihan: Kod Java boleh dijalankan pada mana-mana platform yang mempunyai Mesin Maya Java (JVM).

  • Keselamatan: Java mempunyai model keselamatan terbina dalam yang membantu melindungi pengguna daripada kod hasad.

  • Berorientasikan objek: Java ialah bahasa pengaturcaraan berorientasikan objek, yang memudahkan untuk mencipta kod modular dan boleh digunakan semula.

  • Teguh: Java ialah bahasa teguh yang direka bentuk untuk dipercayai dan cekap.

  • Digunakan secara meluas: Java ialah bahasa yang digunakan secara meluas yang mempunyai komuniti pembangun dan sumber sokongan yang besar.

3. Apakah komponen Java Platform yang berbeza?

Platform Java ialah persekitaran perisian yang menyediakan cara standard untuk membangunkan dan menjalankan aplikasi Java. Ia terdiri daripada komponen berikut:

  • Mesin Maya Java (JVM).

  • Java Runtime Environment (JRE).

  • Kit Pembangunan Java (JDK).

4. Apakah jenis jenis data Java yang berbeza?

Terdapat dua jenis jenis data dalam Java: jenis data primitif dan jenis data bukan primitif.

Jenis data primitif

  • boolean
  • bait
  • pendek
  • int
  • panjang
  • terapung
  • tempat perpuluhan
  • berganda
  • char

Jenis data bukan primitif

  • Rentetan
  • Susun atur
  • Kelas
  • Antara Muka
  • Enum

5. Apakah jenis pernyataan kawalan Java yang berbeza?

Terdapat tiga jenis pernyataan kawalan dalam Java:

  • Pernyataan membuat keputusan (jika, jika lain & tukar).
  • Penyataan gelung (semasa, lakukan sambil & untuk).
  • Penyataan lompat (terus & kembali).

6. Apakah jenis kelas Java & antara muka Java yang berbeza?

Terdapat dua jenis utama kelas Java:

  • Kelas biasa ialah jenis kelas yang paling biasa di Jawa. Mereka boleh mempunyai medan, kaedah dan pembina.

  • Kelas abstrak ialah kelas yang tidak boleh dibuat seketika. Mereka hanya boleh digunakan sebagai kelas asas untuk kelas lain.

Terdapat juga dua jenis utama antara muka Java:

  • Antara muka biasa ialah koleksi kaedah abstrak. Kelas boleh melaksanakan antara muka, dengan itu mewarisi kaedah abstrak antara muka.

  • Antara muka pembuat ialah antara muka yang tidak mengandungi sebarang kaedah. Ia digunakan untuk menunjukkan bahawa kelas mempunyai sifat atau tingkah laku tertentu.

Fundamental Questions of Java

7. Apakah jenis perpustakaan Java & rangka kerja Java yang berbeza?

Pustaka Java ialah koleksi kelas dan antara muka Java yang boleh digunakan semula.

** Beberapa contoh perpustakaan Java:**

Apache Commons
Google Guava
Joda-Time
JUnit
Mockito

Rangka kerja java ialah koleksi kelas, antara muka dan kod Java boleh guna semula yang menyediakan kefungsian khusus.

Beberapa contoh perpustakaan Java:

  • Musim bunga
  • Hibernate
  • JSF
  • Cawan
  • Topang

8. Apakah jenis alatan Java yang berbeza?

Terdapat dua jenis utas dalam Java: utas pengguna dan utas daemon.

  • Urutan pengguna ialah urutan yang dicipta oleh pengguna atau aplikasi. Ia adalah urutan keutamaan tinggi dan JVM akan menunggu mana-mana urutan pengguna menyelesaikan tugasnya sebelum menamatkannya.

  • Benang Daemon ialah utas yang dicipta untuk menyediakan perkhidmatan kepada utas pengguna. Ia adalah urutan keutamaan rendah dan hanya diperlukan semasa urutan pengguna sedang dijalankan. Setelah semua urutan pengguna telah selesai melaksanakannya, JVM akan ditamatkan walaupun terdapat utas daemon masih berjalan.

9. Apakah jenis rangkaian Java yang berbeza?

Terdapat dua jenis utama rangkaian Java:

  • Rangkaian pelanggan-pelayan ialah sejenis rangkaian di mana terdapat aplikasi klien yang meminta perkhidmatan daripada aplikasi pelayan. Aplikasi pelayan kemudiannya menyediakan perkhidmatan kepada aplikasi klien.

  • Rangkaian peer-to-peer ialah sejenis rangkaian di mana dua atau lebih aplikasi berkomunikasi secara langsung antara satu sama lain tanpa memerlukan pelayan.

10. Apakah perbezaan antara pengaturcaraan Prosedur dan OOP?

Pengaturcaraan prosedur ialah pendekatan atas ke bawah untuk pengaturcaraan, di mana atur cara dibahagikan kepada satu siri fungsi yang masing-masing melaksanakan tugas tertentu.
Sebaliknya, OOP ialah pendekatan dari bawah ke atas untuk pengaturcaraan, di mana program dibahagikan kepada objek yang masing-masing mewakili entiti dunia sebenar.

11. Apakah konsep teras OOP?

Konsep teras OOP ialah:

  • Abstraksi: Abstraksi ialah proses menyembunyikan butiran pelaksanaan sesuatu objek daripada pengguna. Ini membolehkan pengguna. Ini membolehkan pengguna menumpukan pada fungsi objek tanpa perlu risau tentang cara ia berfungsi.

    • Encapsulation: Enkapsulasi ialah penggabungan data dan kod ke dalam satu unit. Ini menjadikannya lebih mudah untuk mengekalkan dan mengemas kini kod, dan ia juga menyukarkan pengguna untuk mengubah suai data secara tidak sengaja.
    • Warisan: Warisan ialah keupayaan objek untuk mewarisi sifat dan kaedah objek lain. Ini membolehkan pembangun menggunakan semula kod dan mencipta objek yang lebih kompleks dengan lebih sedikit baris kod.
    • Polimorfisme: Polimorfisme ialah keupayaan objek untuk berpecah secara berbeza bergantung pada konteksnya. Ini membolehkan pembangun menulis kod yang lebih fleksibel dan lebih mudah diselenggara.

12. Apakah perbezaan antara Melebihi beban dan Mengatasi?

Lebih muatan merujuk kepada keupayaan untuk mempunyai berbilang kaedah dengan nama yang sama, tetapi parameter yang berbeza.
Overriding merujuk kepada keupayaan untuk mempunyai kaedah dalam subkelas yang mempunyai tandatangan yang sama seperti kaedah dalam superclass.

13. Apakah perbezaan antara pengikatan statik dan dinamik?

Ikatan statik dan pengikatan dinamik ialah dua cara berbeza untuk menyelesaikan panggilan fungsi dalam pengaturcaraan berorientasikan objek (OOP).

-Ikatan statik: berlaku apabila pengkompil menentukan kaedah yang akan dipanggil pada masa penyusunan. Ini ialah jenis pengikatan yang paling biasa dalam OOP, dan ia digunakan untuk kedua-dua kaedah statik dan bukan maya.

-Pengikatan dinamik: berlaku apabila kaedah yang akan dipanggil tidak ditentukan sehingga masa jalan. Ini digunakan untuk kaedah maya, yang membenarkan polimorfisme.

Fundamental Questions of Java

14. Mengapa Java tidak menyokong Multiple Inheritance?

Java tidak menyokong pelbagai warisan kerana ia boleh membawa kepada beberapa masalah, termasuk:

  • Kekaburan.
  • Kebergantungan bulat.
  • Kerumitan.

15. Bilakah anda menggunakan antara muka dan kelas abstrak dalam Java?

Kelas dan antara muka abstrak kedua-duanya digunakan untuk mencapai abstraksi dalam pengaturcaraan berorientasikan objek.

  • Kelas abstrak adalah serupa dengan kelas biasa, dengan perbezaannya ia boleh memasukkan kaedah abstrak, iaitu kaedah tanpa badan. Kelas abstrak tidak boleh dibuat seketika.

  • Interfaces are a kind of code contract, which must be implemented by a concrete class. Interfaces cannot have state, whereas the abstract class can have state whith instance variables.

16. What are the challenges of using OOP in Java?

There are some challenges associated with using OOP in Java.
These challenges include:

  • Complexity: OOP can make code more complex, especially when dealing with large and complex systems.

    • Overhead: OOP can add some overhead to code, as objects need to be created and managed.
    • Testing: OOP can make code more difficult to test, as objects need to be tested in isolation and in combination.
    • Performance: OOP can impact performance, as objects can add some overhead.

17. What is the difference between an array and a linked list?

In general, arrays are good choice for data structures where the data is accessed frequently and the order of the data is important.

Linked lists are a good choice for data structures where the data is inserted or deleted frequently and the order of the data is not important.

Fundamental Questions of Java

18. Explain the concept of a hash table.

A hash table is a data structure that maps keys to values. It is a very efficient data structure for storing and retrieving data, as it can access data in constant time.

  • put(key, value): This method stores the key-value pair in the hash table.

  • get(key): This method returns the value associated with the key.

  • remove(key): This method removes the key-value pair from the hash table.

19. What is the time complexity of various operations in a binary search tree (BST)?

The time complexity of various operations in a binary search tree (BST) depends on the height of the tree. The height of a BST is the number of nodes on the longest path from the root node to a leaf node.

The following table shows the time complexity of various operations in a BST:

               Operation---------------Time complexity

Fundamental Questions of Java

20. Describe the difference between breadth-first search (BFS) and depth-first search (DFS) algorithms.

Here is a table that summarizes the key differences between BFS and DFS:

Fundamental Questions of Java

21. Explain the concept of a priority queue and provide an example of its application.

A priority queue is a data structure that stores elements along with their associated priorities. It allows efficient retrieval of the element with the highest (or lowest) priority. The priority determines the order in which elements are processed or accessed.

22. Explain the concept of dynamic programming and provide an example problem where it can be applied.

Dynamic programming is a problem-solving technique that involves breaking down complex problems into smaller, overlapping subproblems and solving them in a bottom-up manner.

23. How does a HashSet work internally in Java?

A HashSet internally uses a HashMap to store its elements. When you add an element to a HashSet, it is first hashed using the hashCode() method.
The hash code is then used to find the corresponding bucket in the HashMap. If the bucket is not empty, the element is compared to the other elements in the bucket using the equals() method. If the element is equal to any of the other elements in the bucket, it is not added to the HashSet.

24. What is the time complexity of various operations in a hash table?

The time complexity of various operations in a hash table depends on the hash function used and the number of elements in the hash table. In general, the time complexity of the following operations is:

  • Isertion: O(1) on average, O(n) in the worst case.
  • Search: O(1) on average, O(n) in the worst case.
  • Deletion: O(1) on average, O(n) in the worst case.

25. What is multithreading, and why is it important in Java?

Multithreading is a programming concept that allows multiple tasks to be executed concurrently. In Java, multithreading is implemented using the thread class. A thread object represents a single thread of execution.

Terdapat banyak sebab mengapa multithreading penting di Jawa.
Antara sebab yang paling penting termasuk:

  • Peningkatan prestasi.
  • Tingkat responsif.
  • Mengurangkan penggunaan sumber.

26. Bagaimanakah anda boleh mencipta benang dalam Java?

Terdapat dua cara untuk mencipta urutan dalam Java:

  • Dengan memanjangkan kelas urutan
  • Dengan melaksanakan antara muka Runnable

27. Apakah perbezaan antara proses dan utas?

Proses ialah program dalam pelaksanaan. Ia mempunyai ruang ingatan sendiri, timbunan sendiri dan set sumbernya sendiri.
Benang ialah proses ringan yang berkongsi ruang memori dan sumber yang sama seperti urutan lain dalam proses yang sama.

Beberapa perbezaan utama antara proses dan urutan:
- Proses adalah bebas antara satu sama lain.
- Proses lebih berat daripada benang.
- Proses lebih sukar untuk dibuat dan diurus daripada urutan.

28. Bagaimanakah penyegerakan berfungsi dalam Java? Terangkan konsep kaedah dan blok yang disegerakkan.

Penyegerakan dalam Java ialah mekanisme yang membenarkan berbilang rangkaian untuk mengakses sumber yang dikongsi dengan selamat. Apabila benang disegerakkan pada sumber, ia adalah satu-satunya urutan yang boleh mengakses sumber itu.
Ini menghalang keadaan perlumbaan, iaitu situasi di mana dua atau lebih utas cuba mengakses sumber yang sama pada masa yang sama.

Terdapat dua cara untuk menyegerakkan dalam Java:

  • Menggunakan kaedah yang disegerakkan.
  • Menggunakan blok disegerakkan.

Kaedah disegerakkan:

Kaedah disegerakkan ialah kaedah yang hanya boleh dilaksanakan oleh satu utas pada satu masa. Untuk mengisytiharkan kaedah sebagai disegerakkan, anda perlu menggunakan kata kunci disegerakkan.

Blok disegerakkan

Blok disegerakkan ialah blok kod yang hanya boleh dilaksanakan oleh satu utas pada satu masa. Untuk mengisytiharkan blok kod sebagai disegerakkan, anda perlu menggunakan kata kunci yang disegerakkan dan menentukan objek yang disegerakkan oleh blok itu.

29. Apakah kebuntuan, dan bagaimanakah ia boleh dielakkan?

Kebuntuan ialah keadaan di mana dua atau lebih utas sedang menunggu antara satu sama lain untuk selesai. Ini boleh berlaku apabila dua utas masing-masing cuba mendapatkan kunci pada sumber yang sama.

Untuk mengelakkan kebuntuan, kita boleh melakukan ini:

  • Elakkan menggunakan kunci tanpa perlu.
  • Gunakan kunci dalam susunan yang konsisten.
  • Gunakan alat pengesanan dan pencegahan jalan buntu.

30. Apakah tujuan kata kunci yang tidak menentu dalam Java?

Kata kunci yang tidak menentu digunakan untuk memastikan semua urutan melihat nilai pembolehubah yang sama, walaupun jika nilai itu ditukar oleh urutan lain.

31. Terangkan perbezaan antara penjadualan awalan dan pemotongan masa dalam konteks penjadualan urutan.

Penjadualan preemptive ialah apabila sistem pengendalian boleh mengalih keluar secara paksa thread daripada CPU dan memberikannya kepada thread lain. Penghirisan masa ialah apabila setiap urutan diberi masa tertentu untuk dijalankan pada CPU.

Perbezaan utama ialah dalam penjadualan preemptive, sistem pengendalian boleh mengganggu urutan pada bila-bila masa, manakala dalam pemotongan masa, thread hanya terganggu apabila ia telah menghabiskan masa yang diperuntukkan.

32. Apakah pengecualian dalam Java, dan mengapa pengendalian pengecualian penting?

Di Java, pengecualian ialah peristiwa yang berlaku semasa pelaksanaan program yang mengganggu aliran arahan biasa. Ia adalah objek yang dilemparkan pada masa jalan.

Berikut ialah beberapa faedah pengendalian pengecualian:

  • Menghalang ranap program.
  • Membolehkan anda pulih daripada ralat.
  • Memberi maklumat tentang ralat.
  • Menjadikan kod anda lebih mantap.
  • Menjadikan kod anda lebih mudah dibaca dan difahami.

33. Bagaimanakah Java mengendalikan pengecualian.

Java mengendalikan pengecualian dengan menggunakan mekanisme yang dipanggil penyebaran pengecualian. Apabila pengecualian dilemparkan, ia disebarkan ke atas timbunan panggilan sehingga ia ditangkap. Jika pengecualian tidak ditangkap, program akan ranap.

34. Terangkan blok try-catch-finally dan tujuannya dalam pengendalian pengecualian.

Blok try-catch-finally ialah sintaks Java yang membolehkan anda mengendalikan pengecualian dengan anggun. Ia terdiri daripada tiga bahagian:

  • Blok percubaan.
  • Blok tangkapan.
  • Blok akhirnya.

Berikut ialah beberapa faedah menggunakan blok try-catch-finally:

  • Menghalang ranap program.
  • Membolehkan anda pulih daripada ralat.
  • Memberi maklumat tentang ralat.
  • Menjadikan kod anda lebih mantap.
  • Menjadikan kod anda lebih mudah dibaca dan difahami.

35. Apakah perbezaan antara kata kunci lontaran dan lontaran dalam Java?
Kata kunci lontaran dan lontaran dalam Java digunakan untuk mengendalikan pengecualian.

  • Kata kunci lontaran digunakan untuk membuang pengecualian secara eksplisit
  • Kata kunci throws digunakan untuk mengisytiharkan bahawa kaedah boleh membuang pengecualian.

36. Bagaimanakah anda boleh membuat pengecualian tersuai dalam Java?

Untuk mencipta pengecualian tersuai dalam Java, anda perlu mencipta kelas yang memanjangkan kelas Pengecualian. Kelas pengecualian tersuai boleh mempunyai pembina, kaedah dan medannya sendiri.

Rujukan: https://medium.com/@spinjosovsky/practical-comparison-between-depth-first-search-dfs-vs-breadth-first-serch-bfs-bf360240cf72
https://docs.oracle.com/en/java/
https://www.algotutor.io/campus-program

Atas ialah kandungan terperinci Soalan Asas Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Prinsip Inversi KetergantunganArtikel seterusnya:Prinsip Inversi Ketergantungan