JavaRush /Blog Java /Random-VI /Nghỉ giải lao #58. 20 câu hỏi phỏng vấn quan trọng mà nhà...

Nghỉ giải lao #58. 20 câu hỏi phỏng vấn quan trọng mà nhà phát triển Java nên biết. Lợi ích của việc biết nhiều ngôn ngữ lập trình

Xuất bản trong nhóm

20 câu hỏi phỏng vấn quan trọng mà nhà phát triển Java nên biết

Nguồn: Dev.toNghỉ giải lao #58.  20 câu hỏi phỏng vấn quan trọng mà nhà phát triển Java nên biết.  Lợi ích của việc biết nhiều ngôn ngữ lập trình - 1

1. Hai loại ngoại lệ trong Java là gì? sự khác biệt giữa chúng là gì?

Trả lời: Có hai loại ngoại lệ trong Java: ngoại lệ được kiểm tra và không được kiểm tra.
  1. Các ngoại lệ không được kiểm tra không cần phải được khai báo trong câu lệnh từ khóa phương thức hoặc hàm tạo nếu chúng có thể được ném ra khi phương thức hoặc hàm tạo đó thực thi và truyền vượt ra ngoài ranh giới của phương thức hoặc hàm tạo.
  2. Mặt khác, các ngoại lệ được kiểm tra phải được khai báo trong câu lệnh từ khóa hoặc phương thức của hàm tạo.

2. JVM là gì? Tại sao Java được gọi là "ngôn ngữ lập trình độc lập nền tảng"?

Trả lời: Máy ảo Java (JVM) là một máy ảo tiến trình có thể thực thi mã byte Java. Mỗi tệp nguồn Java được biên dịch thành một tệp mã byte, được JVM thực thi. Ngôn ngữ Java được thiết kế để tạo ra các chương trình ứng dụng có thể chạy trên mọi nền tảng mà không cần phải viết lại hoặc biên dịch lại cho từng nền tảng riêng lẻ. Máy ảo Java thực hiện được điều này vì nó nhận biết được độ dài lệnh cụ thể và các tính năng khác của nền tảng phần cứng cơ bản.

3. Sự khác biệt giữa applet và ứng dụng Java là gì?

Trả lời:
  • Applet chạy trong cửa sổ trình duyệt hỗ trợ Java.
  • Ứng dụng Java là một chương trình Java độc lập có thể chạy bên ngoài trình duyệt.
Cả hai đều yêu cầu Máy ảo Java (JVM). Tuy nhiên, một ứng dụng Java yêu cầu một phương thức chính có chữ ký cụ thể để bắt đầu thực thi. Các ứng dụng Java không cần phương thức như vậy để bắt đầu thực thi. Ngoài ra, các ứng dụng Java thường sử dụng chính sách bảo mật hạn chế, trong khi các ứng dụng Java thường sử dụng chính sách bảo mật thoải mái hơn.

4. Sự khác biệt giữa JDK và JRE là gì?

Trả lời:
  • Môi trường chạy thi hành Java (JRE) về cơ bản là một Máy ảo Java (JVM) chạy các chương trình Java của bạn. Nó cũng bao gồm các plugin trình duyệt để chạy applet.
  • Bộ công cụ phát triển Java (JDK) là bộ công cụ phát triển phần mềm đầy đủ tính năng cho ngôn ngữ Java, bao gồm JRE, trình biên dịch và các công cụ (như JavaDoc và Java Debugger) để cho phép người dùng phát triển, biên dịch và chạy các ứng dụng Java.

5. servlet là gì?

Trả lời: servlet là một lớp ngôn ngữ lập trình Java được sử dụng để xử lý các yêu cầu của máy khách và tạo nội dung web động. Servlets chủ yếu được sử dụng để xử lý hoặc lưu trữ dữ liệu được gửi bằng biểu mẫu HTML, cung cấp nội dung động và quản lý thông tin trạng thái không có trong HTTP không trạng thái.

6. Trang JSP là gì?

Trả lời: Trang máy chủ Java (JSP) là một tài liệu văn bản chứa hai loại văn bản:
  • dữ liệu tĩnh,
  • các phần tử JSP.
Dữ liệu tĩnh có thể được thể hiện ở bất kỳ định dạng văn bản nào, chẳng hạn như HTML hoặc XML. JSP là công nghệ trộn nội dung tĩnh với nội dung được tạo động.

7. Chỉ thị là gì? Những loại chỉ thị nào có sẵn trong JSP?

Trả lời: Chỉ thị là các hướng dẫn được xử lý bởi công cụ JSP khi trang được biên dịch thành một servlet. Chỉ thị được sử dụng để đặt hướng dẫn cấp trang, chèn dữ liệu từ tệp bên ngoài và chỉ định thư viện thẻ tùy chỉnh. Các chỉ thị được xác định giữa <%@ và %>. Các loại chỉ thị khác nhau được hiển thị dưới đây:
  • Lệnh Bao gồm: Được sử dụng để bao gồm một tệp và kết hợp nội dung của tệp với trang hiện tại.
  • Chỉ thị trang: Nó được sử dụng để xác định các thuộc tính nhất định trên trang JSP, chẳng hạn như trang lỗi và bộ đệm.
  • Taglib: Được sử dụng để khai báo một taglib tùy chỉnh được sử dụng trên trang.

8. Phương thức System.gc() và Runtime.gc() làm gì?

Trả lời: Những phương pháp này có thể được sử dụng làm gợi ý cho JVM để kích hoạt việc thu thập rác. Thông thường, Máy ảo Java (JVM) chạy thu gom rác định kỳ hoặc khi bộ nhớ trống đạt mức thấp.

9. HashMap và Hashtable có gì khác biệt?

Trả lời: Có một số khác biệt giữa HashMap và Hashtable trong Java:
  1. Hashtable được đồng bộ hóa trong khi HashMap thì không. Điều này làm cho HashMap hoạt động tốt hơn đối với các ứng dụng không có luồng, vì các đối tượng không được đồng bộ hóa thường hoạt động tốt hơn các đối tượng được đồng bộ hóa.
  2. Hashtable không cho phép khóa hoặc giá trị null. HashMap cho phép bạn sử dụng một khóa null và bất kỳ số lượng giá trị null nào.
  3. Một trong các lớp con của HashMap là LinkedHashMap, vì vậy nếu bạn muốn thứ tự lặp có thể dự đoán được (thứ tự chèn mặc định), bạn có thể dễ dàng hoán đổi HashMap cho LinkedHashMap. Điều này sẽ không dễ dàng như vậy nếu bạn đang sử dụng Hashtable.

10. JDBC là gì?

Trả lời: JDBC là lớp trừu tượng cho phép người dùng lựa chọn giữa các cơ sở dữ liệu. Với JDBC, các nhà phát triển có thể viết các ứng dụng cơ sở dữ liệu bằng Java mà không phải lo lắng về các chi tiết đằng sau một cơ sở dữ liệu cụ thể.

11. Từ khóa “static” có nghĩa là gì? Bạn có thể ghi đè phương thức riêng tư hoặc tĩnh trong Java không?

Trả lời: Từ khóa tĩnh có nghĩa là một thành viên hoặc phương thức biến có thể được truy cập mà không yêu cầu phiên bản của lớp mà nó thuộc về . Người dùng không thể ghi đè các phương thức tĩnh trong Java vì việc ghi đè phương thức dựa trên liên kết động khi chạy và các phương thức tĩnh bị ràng buộc vĩnh viễn tại thời gian biên dịch. Một phương thức tĩnh không được liên kết với bất kỳ phiên bản nào của lớp, vì vậy khái niệm này không được áp dụng.

12. Ý nghĩa của khối lệnh cuối cùng khi xử lý các ngoại lệ là gì?

Trả lời: Khối cuối cùng sẽ luôn được thực thi, bất kể có ném ngoại lệ hay không. Ngay cả khi không có câu lệnh bắt và xảy ra ngoại lệ. Một điều cuối cùng cần đề cập là khối cuối cùng được sử dụng để giải phóng các tài nguyên như bộ đệm I/O, kết nối cơ sở dữ liệu, v.v.

13. Sự khác biệt giữa Ngoại lệ và Lỗi trong Java là gì?

Trả lời: Lỗi là tình trạng nghiêm trọng mà mã chương trình không thể xử lý được. Ngoại lệ là một tình huống đặc biệt có thể được xử lý bằng mã chương trình.

14. Khi nào một đối tượng đủ điều kiện để thu gom rác trong Java?

Trả lời: Một đối tượng Java sẽ bị thu gom rác khi nó không còn khả dụng đối với chương trình hiện đang sử dụng nó.

15. Vòng lặp là gì?

Trả lời: Giao diện Iterator cung cấp một số phương thức có thể lặp qua bất kỳ bộ sưu tập nào . Mọi bộ sưu tập Java đều chứa một phương thức Iterator trả về một phiên bản Iterator . Trình lặp có thể xóa các phần tử khỏi bộ sưu tập cơ bản trong quá trình lặp.

16. Truyền tham chiếu và truyền giá trị là gì?

Trả lời:
  • Khi một đối tượng được truyền theo giá trị , điều đó có nghĩa là một bản sao của đối tượng được truyền. Bằng cách này, ngay cả khi thay đổi được thực hiện đối với đối tượng này, nó sẽ không ảnh hưởng đến giá trị ban đầu.
  • Khi một đối tượng được truyền bằng tham chiếu , điều đó có nghĩa là đối tượng đó không thực sự được truyền mà là một tham chiếu đến đối tượng được truyền. Bằng cách này, mọi thay đổi được thực hiện bởi phương pháp bên ngoài cũng được phản ánh ở mọi nơi.

17. Java applet là gì?

Trả lời: Java applet là một chương trình có thể được đưa vào một trang HTML và được thực thi trong trình duyệt máy khách hỗ trợ Java. Applet được sử dụng để tạo các ứng dụng web động và tương tác.

18. HashMap hoạt động như thế nào trong Java?

Trả lời: HashMap trong Java lưu trữ các cặp khóa-giá trị. HashMap yêu cầu hàm băm, sử dụng hashCode và các phương thức bằng để thiết lập và truy xuất các phần tử đến và từ bộ sưu tập. Khi phương thức put được gọi , HashMap tính toán giá trị băm của khóa và lưu cặp ở chỉ mục thích hợp trong bộ sưu tập. Nếu khóa tồn tại, giá trị của nó sẽ được cập nhật bằng giá trị mới. Một số đặc điểm quan trọng của HashMap là dung lượng, hệ số tải và sự thay đổi kích thước ngưỡng.

19. Các giao diện chính của Java Collections Framework là gì?

Trả lời: Khung công tác bộ sưu tập Java là một tập hợp các giao diện và lớp được thiết kế để hỗ trợ các hoạt động trên các bộ sưu tập đối tượng. Các giao diện chính được tìm thấy trong Khung công tác sưu tập Java là:
  • Bộ sưu tập đại diện cho một nhóm đối tượng, được gọi là các phần tử của nó.
  • Tập hợp là một bộ sưu tập không thể chứa các phần tử trùng lặp.
  • Danh sách là một bộ sưu tập được sắp xếp có thể chứa các phần tử lặp lại.
  • Bản đồ là một đối tượng ánh xạ các khóa tới các giá trị và không thể chứa các khóa trùng lặp.

20. Java hỗ trợ những kiểu dữ liệu nào? Autoboxing và Unboxing là gì?

Trả lời: Ngôn ngữ lập trình Java hỗ trợ tám kiểu dữ liệu nguyên thủy sau:
  • byte
  • ngắn
  • int
  • dài
  • trôi nổi
  • gấp đôi
  • boolean
  • ký tự
Autoboxing là một chuyển đổi tự động được thực hiện bởi trình biên dịch Java giữa các kiểu nguyên thủy và các lớp trình bao bọc đối tượng tương ứng của chúng. Nếu phép biến đổi diễn ra theo hướng ngược lại thì thao tác này được gọi là Unboxing . Cảm ơn bạn đã đọc và chúc may mắn trong cuộc phỏng vấn kỹ thuật của bạn!

Lợi ích của việc biết nhiều ngôn ngữ lập trình

Nguồn: Dev.to Cá nhân tôi tin rằng mọi nhà phát triển nên biết nhiều hơn một ngôn ngữ lập trình. Nói cách khác, nếu chúng ta đang nói về ngôn ngữ lập trình thì nhà phát triển phải là người biết nhiều thứ tiếng.Nghỉ giải lao #58.  20 câu hỏi phỏng vấn quan trọng mà nhà phát triển Java nên biết.  Lợi ích của việc biết nhiều ngôn ngữ lập trình - 2

Ngôn ngữ chính và phụ

Để làm cho mọi việc dễ dàng hơn, hãy để tôi làm rõ một số thuật ngữ được sử dụng trong bài viết này. Tôi tin rằng mọi nhà phát triển nên có một ngôn ngữ mà mình thích. Tôi gọi ngôn ngữ này là ngôn ngữ chính. Tôi sẽ gọi bất kỳ ngôn ngữ nào khác ngoài ngôn ngữ chính phụ trợ. Tất nhiên, một nhà phát triển có thể thay đổi ngôn ngữ chính của mình (nhiều lần) trong suốt sự nghiệp của mình. Điều này ổn. Có nhiều lý do giải thích điều này.

Chuyên gia

Trong các cuộc thảo luận về các nhà phát triển đa ngôn ngữ, người ta thường đưa ra lập luận rằng kiến ​​thức về ngôn ngữ thứ hai của nhà phát triển phải trả giá bằng việc kém thành thạo ngôn ngữ chính của họ. Những người ủng hộ ý tưởng này cho rằng việc học từng ngôn ngữ mới cần có thời gian và lúc này bạn không thể dành thời gian để tiếp thu kiến ​​thức về ngôn ngữ chính của mình nữa. Dòng suy nghĩ này có vẻ sai đối với tôi. Tôi thấy một sự tương tự khác: thể thao. Người ta biết rằng chơi một môn thể thao sẽ cải thiện thành tích của bạn ở môn khác. Tất nhiên, bạn có thể giành huy chương vàng ở cả hai nội dung thi đấu và phi tiêu khó có thể giúp bạn trở thành vận động viên bơi lội giỏi hơn. Mặt khác, nếu bạn là người leo núi thì yoga sẽ giúp bạn phát triển sự dẻo dai và thăng bằng. Vì vậy, tập yoga sẽ giúp bạn leo núi giỏi hơn so với khi không tập yoga. Tôi nghĩ việc học thêm từng ngôn ngữ sẽ thường xuyên cải thiện kỹ năng của bạn bằng các ngôn ngữ khác mà bạn biết.

Nhiều công cụ hơn

Ngoài ra, việc biết nhiều ngôn ngữ lập trình sẽ cải thiện đáng kể kho vũ khí của bạn với tư cách là một nhà phát triển. Nó mở rộng tầm nhìn của bạn và cho phép bạn nhìn những thứ nhất định từ những quan điểm khác nhau. Hãy lấy một ví dụ từ cuộc sống hàng ngày. Nếu bạn đã từng sử dụng tuốc nơ vít thì hẳn bạn đã quen thuộc với vít đầu Phillips. Thoạt nhìn, tất cả các vít đầu Phillips đều giống nhau và có vẻ như chúng đều có thể được siết chặt bằng một tuốc nơ vít. Đúng, có thể bạn sẽ gặp khó khăn khi vặn hoặc tháo một số vít, nhưng nhìn chung, một chiếc tuốc nơ vít là đủ đối với bạn. Nghỉ giải lao #58.  20 câu hỏi phỏng vấn quan trọng mà nhà phát triển Java nên biết.  Lợi ích của việc biết nhiều ngôn ngữ lập trình - 3Nhưng một ngày nọ, bạn bước vào một cửa hàng dụng cụ, nhìn vào tất cả những chiếc tua vít xinh đẹp đó và phát hiện ra rằng có nhiều loại tua vít Phillips khác nhau. Bạn thấy chiếc tuốc nơ vít mình đang có là Phillips (PH) và quyết định mua người chị em song sinh của nó, Pozidriv (PZ). Và rồi đột nhiên hóa ra rằng đối với một số ốc vít thì cái này phù hợp hơn, và đối với những cái khác - cái khác. Chúng trông giống nhau, nhưng chúng không thể thay thế cho nhau . (Nếu bạn đang thắc mắc các chữ cái PH và PZ trên tua vít của bạn có ý nghĩa gì - thì giờ bạn đã biết rồi). Với nhiều kiến ​​thức hơn và một công cụ bổ sung, bạn sẽ có thể thực hiện công việc tốt hơn vào lần tới khi cần siết vít đầu Phillips. Điều tương tự cũng xảy ra với các ngôn ngữ lập trình.

Bạn không cần phải trả tiền cho kiến ​​thức bổ sung

Vì vậy, cá nhân tôi không thấy giá trị của việc học thêm một ngôn ngữ lập trình. Bạn sẽ xuất sắc như nhau ở cả hai ngôn ngữ chứ? Có lẽ là không, nhưng không chắc đó là mục tiêu của bạn. Bạn có học được điều gì mới về ngôn ngữ chính của mình không? Tôi hoàn toàn chắc chắn về điều này. Biết một ngôn ngữ mới sẽ tiết lộ sự khác biệt giữa chúng. Và điều này sẽ đánh thức sự tò mò của bạn. Bạn sẽ thắc mắc tại sao mọi thứ lại được thực hiện khác đi trong một ngôn ngữ mới và chúng làm gì. Để kết luận, tôi sẽ đưa ra một ví dụ từ cuộc sống. Tôi đã sử dụng một công cụ dòng lệnh được viết bằng Python. Mỗi lần tôi cài đặt công cụ này trên một máy mới, đều xảy ra sự cố và với mỗi bản cập nhật, số lượng sự cố lại tăng lên. Nếu bạn có Go trong hộp công cụ của mình, bạn sẽ nhận thấy ngay lợi thế của nó trong trường hợp này. Go cho phép bạn biên dịch các tạo phẩm của nó thành một tệp nhị phân độc lập. Bạn có thể chắc chắn rằng sau khi được biên dịch, tệp nhị phân sẽ hoạt động trên mọi máy mà bạn đã biên dịch. Vì vậy, tôi đã chuyển Python CLI sang Go. Với phiên bản mới này, tôi không còn phải lo lắng về việc thay đổi thời gian chạy hoặc sự phụ thuộc của bên thứ ba nữa. Đây là một ví dụ tuyệt vời về việc chọn công cụ thích hợp nhất cho nhiệm vụ. Và để có thể lựa chọn, bạn cần phải trở thành một nhà phát triển đa ngôn ngữ.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION