2012-02-09 31 views
8

Tôi nhận được những câu hỏi này trong một cuộc phỏng vấn.Java: Các câu hỏi về phương pháp sao chép

  1. Chúng ta có cần chăm sóc phương pháp sao chép trong môi trường đồng thời không? Chúng ta có thể đồng bộ hóa phương pháp sao chép không?

  2. Liệu có ý nghĩa gì khi sử dụng phương pháp sao chép trong các lớp đơn?

Tôi không có câu trả lời thuyết phục cho điều này trong khi phỏng vấn.

+13

Đừng lo lắng về điều đó. Đây là những câu hỏi phỏng vấn khủng khiếp, vì vậy bạn có thể không muốn làm việc ở đó. – corsiKa

+0

Bạn có biết singleton nghĩa là gì không? –

+1

Đây là đâu? Tôi có thể làm việc ở đó không? –

Trả lời

1
  1. Nếu bạn đang nhân bản một đối tượng mà có thể thay đổi trong các chủ đề khác, sau đó bạn có thể sẽ cần phải có được một số loại [đọc] khóa cũng giống như khi bạn đang làm bất kỳ hoạt động khác trên đó. Về mặt lý thuyết bạn sẽ cần một khóa trên đối tượng mới nếu nó có thể bao giờ được xuất bản không an toàn (tôi đề nghị không xuất bản đối tượng mutable không an toàn!). Nó sẽ không phải là một singleton nếu bạn có thể làm một ví dụ khác của nó (có antipattern monostate giống như antipattern singleton, chỉ tồi tệ hơn và có thể liên quan đến nhiều đối tượng không có mục đích rõ ràng). Tôi đoán nếu bạn đang phân lớp một số lớp đã triển khai Cloneable bạn muốn ghi đè clone và ném CloneNotSupportedException là có thể hoặc trả lại this.

2
  1. lẽ có 99,99% của thời đại nhưng bạn chỉ cần phải suy nghĩ tại bản sao giống như bất kỳ các phương pháp khác của lớp học của bạn và đồng bộ hóa nó nếu cần thiết tùy thuộc vào bối cảnh cụ thể của bạn. Không có gì sai khi đồng bộ hóa một phương thức không được đồng bộ trong lớp Cơ sở của nó. Mặt khác, không đồng bộ hóa phương thức trong khi ghi đè một phương thức được đồng bộ hóa có thể là một sai lầm ngay cả khi mã biên dịch tốt và không có cảnh báo nào được phát hành ...

  2. Câu trả lời thuyết phục có thể là KHÔNG với một vài từ trên mẫu thiết kế singleton.

Các vấn đề liên quan