Kiến thức tuyệt vời về C ++ [đã đóng]


8

Gần đây tôi thấy một trang tuyển dụng cho một công ty phần mềm nơi một trong những yêu cầu là "Kiến thức tuyệt vời về C ++."

Bây giờ, tôi biết điều này bằng cách nào đó ngụ ý là kiến ​​thức chuyên môn về C ++, nhưng chính xác thì kiến ​​thức chuyên gia phù hợp ở đâu. Có phải đó là kiến ​​thức và kinh nghiệm của (giả sử) tám năm lập trình bằng ngôn ngữ, có và biết các đặc tính của một miền cụ thể. Hoặc, đó có phải là một cách tiếp cận bề mặt hơn, rõ ràng hơn đối với một hoặc nhiều tên miền và đồng thời là sự hiểu biết chi tiết hơn về toàn bộ ngôn ngữ?

Ví dụ, bạn không thể là một chuyên gia viết trình điều khiển hệ thống và công cụ trò chơi cùng một lúc. Vì vậy, nơi mà kiến ​​thức tuyệt vời hoặc chuyên gia phù hợp với?


5
"Ví dụ, bạn không thể kỳ vọng vào việc viết trình điều khiển hệ thống và công cụ trò chơi cùng một lúc." Tại sao không?
Pubby

1
Vâng, tôi không mong đợi bất cứ điều gì.
Edward Strange

6
Điều đó có nghĩa là bạn có thể vượt qua chu kỳ phỏng vấn của họ và các câu hỏi C ++ mà họ đưa ra cho bạn. Nó không mang cùng một ý nghĩa giữa người sử dụng lao động, con người hoặc mô tả và thời gian sử dụng ngôn ngữ không liên quan đến mức độ hiểu biết và chuyên môn của một người về ngôn ngữ đó (một số người chỉ viết mã bằng bất kỳ ngôn ngữ nào bằng cách chỉ biết một vài ngôn ngữ đầu tiên chương của một cuốn sách, không bao giờ học bất cứ điều gì ngoài đó).
wkl

1
Đã viết cả trình điều khiển hệ thống và công cụ trò chơi, tôi phải ở bên cạnh @Pubby tại đây =)
Patrick Hughes

Tuyệt vời là một từ mơ hồ, vì phiên bản của tôi có thể ở đây / dưới đó và của bạn ở trên đó. Tôi sẽ nói rằng một "kiến thức tuyệt vời" có nghĩa là bạn có thể mã hóa một chương trình không tầm thường trong vòng chưa đầy 2 giờ (có thể là chương trình đồng hồ báo thức như pomodoro, với cài đặt & âm thanh).
Adel

Câu trả lời:


17

Nếu họ nói "Kiến thức tuyệt vời" thì bạn sẽ có thể xác định và sử dụng chính xác tất cả các tính năng của ngôn ngữ - bao gồm cả các tính năng từ Tiêu chuẩn C ++ 11 mới nhất hiện đang được hỗ trợ phổ biến (thật không may, có nghĩa là Visual Studio là mẫu số chung thấp nhất ở đây ). Một người có kiến ​​thức C ++ xuất sắc có thể tạo ra các đặc điểm loại hoặc biểu thức mẫu của riêng họ; họ có thể xây dựng các thùng chứa, thuật toán và bộ cấp phát của riêng mình. Họ biết khi nào nên sử dụng kế thừa và khi nào nên sử dụng mẫu và khi nào nên sử dụng. Họ biết cách sử dụng RAII để quản lý tất cả trạng thái yêu cầu dọn dẹp của họ.

Ngoài ra, họ có thể đối phó với việc tương tác với rác kiểu C, vì điều đó không may vẫn là một phần của ngôn ngữ.


2
Boy, có vẻ như bạn mong đợi rất nhiều, đặc biệt là khi các chuyên gia tôi nghe về không biết những gì member()trong danh sách khởi tạo. : P
Edward Strange

1
Thật không may đồng ý với cả câu trả lời này và Crazy Eddie.
Klaim

+1 Trông giống như một mô tả hoàn toàn dễ chịu. Nếu không phải là "Chuyên gia", đây sẽ là gì?
Độc lập

2
phải công bằng đây là những gì các chuyên gia nên có ý nghĩa, nhưng có thể hoặc có thể không gì đặc biệt này có nghĩa là công ty của nó
jk.

@DeadMG Câu trả lời hay. Cũng giống như thêm: người ta có thể không biết một ngôn ngữ hoàn hảo, nếu bạn có 30 tuổi và có 20 năm kinh nghiệm lập trình bằng các ngôn ngữ khác nhau, bạn không thể bao quát mọi thứ bằng một ngôn ngữ. Mất bao lâu để hoàn toàn trở nên xuất sắc trong một ngôn ngữ là chuyện nhỏ. Bạn có thể không bao giờ là một chuyên gia trong một ngôn ngữ, nhưng có thể là một chuyên gia trong việc giải quyết vấn đề. Tôi không nghĩ rằng những người đã viết các yêu cầu tuyển dụng đã nghĩ về điều này.
Đêm

8

Tôi không nghĩ có một định nghĩa được chấp nhận rộng rãi về những gì tạo nên kiến ​​thức "xuất sắc" về C ++.

Khó có thể đưa ra một câu trả lời rõ ràng cho những gì sẽ tạo thành kiến ​​thức "tốt", "xuất sắc", "tuyệt vời", (v.v.) về bất kỳ ngôn ngữ, khung, nền tảng hoặc những gì có bạn. Trong nhiều trường hợp, thật khó để vạch ra một ranh giới rõ ràng giữa kiến ​​thức thực sự hữu ích và về cơ bản là biết rất nhiều điều vặt vãnh.

Điều này đặc biệt đúng trong trường hợp của một thứ như C ++ đã tồn tại hàng thập kỷ, được áp dụng theo nhiều cách khác nhau và được viết theo nhiều phong cách khác nhau trong thời gian đó. Có một số lượng gần như đáng sợ mà ai đó có thể tìm hiểu về ngôn ngữ gần như hoàn toàn không liên quan đến việc sử dụng nó để giải quyết vấn đề tốt. Biết tất cả các quy tắc của những thứ như độ phân giải quá tải hoặc thứ tự một phần của các mẫu hàm chỉ có thể hữu ích nếu bạn đang cố gắng thuê ai đó làm việc trên trình biên dịch (hoặc một cái gì đó rất giống nhau). Tôi đã sử dụng C ++ kể từ lần đầu tiên nó trở nên phổ biến rộng rãi và chưa sử dụng (hoặc thậm chí muốn) một phần thứ tự các mẫu hàm trong mã thực.

Mặc dù không đáp ứng về mặt kỹ thuật cho câu hỏi được hỏi, tôi vội vàng khuyên mọi người bao gồm yêu cầu như vậy trong quảng cáo việc làm hãy cố gắng giữ cân bằng trong tâm trí. Tôi nghĩ rằng sự nhấn mạnh quá mức thường được đặt vào các ngôn ngữ lập trình, với chi phí cho những thứ như khả năng giải quyết vấn đề và thuật toán chung. Biết một ngôn ngữ lập trình tốt giúp người ta thể hiện tốt các giải pháp, nhưng thường là trợ giúp tối thiểu (tốt nhất) trong việc thiết kế giải pháp đó. Một giải pháp tuyệt vời được thể hiện kém sẽ hầu như luôn luôn đánh bại một giải pháp tầm thường, bất kể nó được thể hiện tốt như thế nào.


1
+1 một nhà tuyển dụng có thể coi C với các lớp là 'xuất sắc', một người khác có thể muốn có kiến ​​thức đầy đủ về câu trả lời hiện đại của C ++ a la DeadMG
jk.

@jk. Bất cứ ai coi C với các lớp "xuất sắc" là một kẻ ngốc.
DeadMG

+1 Điểm rất hay trong đoạn cuối, tôi đã nghĩ rất nhiều khi hỏi câu hỏi này.
Đêm

2

Tôi hy vọng người đó sẽ hiện hành với tiêu chuẩn C ++, các khái niệm, cấu trúc và từ khóa mới được thêm vào. Ví dụ, ít nhất anh ta nên biết tham chiếu giá trị là gì và tại sao nó có thể hữu ích.


0

Làm thế nào tốt là một cầu thủ bóng đá xuất sắc? Nó phụ thuộc vào loại bạn đang xem, giải đấu quốc tế, trẻ em, v.v.

Một kiến ​​thức tuyệt vời về C ++ có lẽ có nghĩa là bạn nên biết tất cả các từ khóa và khi chúng được sử dụng cùng với STL.

Đôi khi nó cũng sẽ bao gồm các patters thiết kế và boost nhưng đôi khi nó sẽ không bao gồm bất kỳ điều nào ở trên và sẽ yêu cầu bạn vượt qua bài kiểm tra mã hóa của họ và gây ấn tượng với người phỏng vấn của họ.

Thành thật mà nói đơn giản là không có định nghĩa thực tế. Bạn có cảm thấy như bạn có thể viết một ứng dụng phức tạp, đa luồng, nhiều tầng sử dụng C ++ và một số thư viện ngoại vi (STL, MFC, boost, v.v.). Nếu câu trả lời là có thì có lẽ bạn đã bắn vào các vị trí cấp chuyên gia.

Nếu câu trả lời là không, bạn có thể lãng phí thời gian.


0

Một lập trình viên C ++ xuất sắc biết khi nào nên sử dụng vô số 'tính năng' mà ngôn ngữ cung cấp và khi nào không.


Tôi không biết tại sao bạn lại bị hạ thấp, đó là câu trả lời lành mạnh nhất.
zvrba

Có lẽ là do sự châm biếm xung quanh các tính năng.
DeadMG

0

Đừng tập trung vào ngữ nghĩa của "xuất sắc", chỉ cần áp dụng cho công việc nếu nó có vẻ thú vị và bạn cảm thấy như vậy. Hãy để nhà tuyển dụng quyết định xem bạn có "xuất sắc" hay không.

Một "lập trình viên xuất sắc" biết sức mạnh thô của công cụ và dưới ánh sáng của nó đánh giá một số yếu tố quyết định việc thực hiện vấn đề trước mắt, những yếu tố đó là: đơn giản thực hiện, khả năng mở rộng / tái sử dụng, hiệu quả.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.