Trải nghiệm C # có dịch tốt sang C ++ không? [đóng cửa]


13

Các lớp lập trình của tôi ở trường là C ++, nhưng cuối cùng tôi đã làm một công việc làm C # trong vài năm qua. Nếu có một vị trí yêu cầu nói 1 hoặc 2 năm kinh nghiệm trong C ++, liệu kinh nghiệm của tôi về C # có đáng để xem xét không? Làm thế nào hiệu quả tôi có thể được ở một vị trí như vậy? Vì vậy, tôi có cần phải bắt đầu như một lập trình viên C ++ cấp mới để có được kinh nghiệm cần thiết không?


4
Phần khó nhất sẽ là học các thành ngữ của C ++ và cách làm "chính xác". Trong C #, những thứ như quản lý bộ nhớ và kiểm tra giới hạn được đưa vào ngôn ngữ và khung. Trong C ++ có nhiều cách khác để tự bắn vào chân mình.
Robert Harvey

1
@RobertHarvey: Chỉ khi bạn chưa bao giờ nghe về con trỏ thông minh. Hoặc container.
DeadMG

11
@DeadMG: Tôi không biết ý của bạn là gì. Ngay cả khi bạn đã nghe nói về họ, bạn vẫn phải học chúng.
Robert Harvey

2
Sê-ri C ++ hiệu quả hơn rất nhiều so với sê-ri C # hiệu quả.
Công việc

@Robert: Chà, nếu bạn làm container và con trỏ thông minh, thì bạn không phải quản lý một chút ký ức. Và học chúng là C ++ 101.
DeadMG

Câu trả lời:


13

Vấn đề ở đây là C ++ và C # về cơ bản là các ngôn ngữ cực kỳ khác nhau với các cách tiếp cận khác nhau đối với nhiều vấn đề. Thật dễ dàng để gộp chúng thành "Ngôn ngữ OO", nhưng thực tế đơn giản là nhiều thành ngữ C # được coi là mã rất xấu trong C ++ (và ngược lại).

Nếu bạn thực sự biết sự khác biệt và thành ngữ C ++ trông như thế nào, thì tôi thấy không có lý do gì mà nó không ổn cả.


5

Tôi đã ở trong cùng một chiếc thuyền khoảng 2 năm trước. Kinh nghiệm c # của bạn có thể sẽ không có giá trị nhiều cho một công việc c ++ như c ++ dành cho công việc ac #. Điều đó nói rằng, nếu bạn biết c # thực sự hoạt động như thế nào (rất ít lập trình viên c # thực sự làm) và học tốt c ++ của bạn thì c ++ sẽ không thành vấn đề. Vấn đề sẽ là cách bạn đã quen với các mẫu thiết kế nhất định sẽ ở mức quá cao cho c ++.

Chẳng hạn, từ mô hình truy cập dữ liệu ADO.NET đẹp mắt sang sử dụng cppcon để truy cập mysql, System.Collections.Generic để sử dụng stl, đa kế thừa, thu gom rác để dọn dẹp bộ nhớ của bạn trong các hàm hủy và v.v ... tất cả đều có xu hướng để được chuyển tiếp khó khăn. C ++ không phải là vấn đề, học các lib, mẫu thiết kế và cách sử dụng chúng là một thách thức. Hầu hết các nhà tuyển dụng không nhận ra điều này. Nếu bạn có thể thiết kế cơ bản và có thể sử dụng các tính năng thường được sử dụng thực tế của c ++ thì bạn sẽ ổn trong cuộc phỏng vấn.

Tuy nhiên, sẵn sàng cho công việc là một câu chuyện khác. Đó là một thử thách thú vị, tôi hy vọng tất cả đều tốt.


Tất cả các công việc C ++ tôi thấy muốn có 2-3 năm kinh nghiệm trong C ++ nhưng của tôi là ở C #. Điều này thực sự gây khó chịu cho tôi, tôi muốn làm C ++! Bạn nói đúng về nhà tuyển dụng, họ đã bắn hạ tôi. Làm thế nào tôi có thể có được trải nghiệm này nếu không ai cho phép tôi thử? Tôi tự tin rằng nếu ai đó cho tôi vào cửa, tôi có thể học nhanh chóng, tôi không biết làm thế nào tôi có thể vượt qua họ về điều đó.
MetaGuru

Tôi đã nhảy vào một dự án c ++ trong công việc hiện tại của tôi. Đó có lẽ là đặt cược tốt nhất của bạn. Hoặc, bạn luôn có thể có được một dự án nguồn mở trong c ++.
Jonathan Henson

@Ryan Như Jonathan đã nói, có rất nhiều cách để có kinh nghiệm về C ++. Ở nơi tôi đến, bạn phải chứng minh bạn có kinh nghiệm (thay vì tuyên bố phổ biến; có 1 năm kinh nghiệm gấp năm lần). Điều này hoạt động theo cả hai cách - một người không có nhiều kinh nghiệm "giấy" có thể có cơ hội chứng minh anh ấy / cô ấy là tốt. Chỉ cần chắc chắn rằng bạn thực sự biết C ++ trước khi thử!
Tối đa

3

Tôi không thể nói cho mọi nhà tuyển dụng nhưng cá nhân tôi xem lập trình là kỹ năng và ngôn ngữ cụ thể là một điều tốt đẹp để có. Vẫn hoàn toàn có thể được thuê trong một công việc lập trình khác không phải là kỹ năng chính của bạn.

Phải nói rằng rất khó có khả năng tôi sẽ thuê một người hoàn toàn không có kinh nghiệm về ngôn ngữ mà tôi thuê họ. Dành một vài ngày cuối tuần để học và có một vài dự án thú cưng để củng cố CV của bạn. Ngay cả những người nhỏ chứng tỏ bạn có khả năng học hỏi và nhạy bén.


3

Bạn chính xác trong tình huống tương tự tôi đã ở 4 năm trước.

Tôi đã làm một số C ++ trong quá trình học, nhưng tôi ghét nó. Tôi đã làm rất nhiều nhà phát triển web khi có thể vào thời gian rảnh rỗi và có một công việc trong lĩnh vực đó.

Khi tôi chuyển đi, tôi đã nộp đơn xin việc C ++ với 2 năm kinh nghiệm về C ++. Vâng, tôi đã làm mới những ký ức C ++ của mình trước cuộc phỏng vấn và khi đến thời điểm cho các bài kiểm tra, tôi đã xoay sở để thoát khỏi một vài điều mà tôi không chắc là mình đã làm đúng.

Nhưng hầu hết các cuộc phỏng vấn là về giải quyết vấn đề và giải pháp sáng tạo và C ++ kết thúc chỉ là một yếu tố nhỏ.

Vì vậy, cơ hội thực sự phụ thuộc vào nhà tuyển dụng và vị trí họ có.

Nếu bạn đang thông qua một cơ quan tuyển dụng, bạn sẽ "có thể" được cho biết hồ sơ của bạn không phù hợp. Nhưng với một nhà tuyển dụng thực sự, cơ hội của bạn sẽ tốt hơn khi họ thực sự biết họ cần gì.


1
chỉ cần chắc chắn rằng bạn biết kẻ hủy diệt ảo là gì để bạn vượt qua màn hình điện thoại.
Kevin

2
Như những người khác nói, nó đảm bảo bạn nhớ một vài điều cơ bản về quản lý bộ nhớ trong C ++. Đó là sự khác biệt cơ bản. Mặt khác liên quan đến thư viện và khung công tác Hầu hết các công ty (lớn) đều có libs và trình bao bọc riêng, vì vậy họ không mong đợi bạn biết việc triển khai của họ. Trái ngược với C # nơi hầu hết các lib cấp cao được sao lưu vào khung .net và yêu cầu sẽ là phải biết một bộ lib liên quan đến vị trí.
Coyote

Vậy bạn đã có được công việc chưa? Tôi thực sự muốn chuyển sang làm C ++ nhưng thiếu kinh nghiệm về tài liệu của tôi là đóng cửa, không biết làm cách nào để xây dựng nó.
MetaGuru

Đúng ... Làm việc ở đó được 3 năm. Đó là một trải nghiệm tuyệt vời ... nhưng tôi đã phải bắt kịp với những đặc điểm của C ++ trong vài tháng đầu.
Coyote

1

Nó phụ thuộc. Nếu bạn có thể trả lời một số câu hỏi phỏng vấn cơ bản về con trỏ và như vậy, thì bạn sẽ ổn thôi.

Nó cũng có lợi nếu bạn có thể liệt kê sự khác biệt giữa các mẫu C ++ và .NET generic.

Ngoài ra, thật dễ dàng để bắt kịp phần còn lại khi bạn đi cùng.


1

Đúng. Nó có thể không liên quan như kinh nghiệm C ++, nhưng nó là tốt.

Nhà tuyển dụng giỏi sẽ quan tâm đến cách bạn nghĩ , hơn bao nhiêu năm bạn có một ngôn ngữ cụ thể.

Một vị trí C ++ cấp nhập cảnh là tốt: bạn có thể học nhanh và làm tốt công việc. Một công ty tốt sẽ cung cấp cho bạn nhiều cơ hội để phát triển. Nếu không, bạn có thể đi đến một nơi khác và có cả kinh nghiệm về C # và C ++.


0

Nó thực sự phụ thuộc vào bản chất của doanh nghiệp mà bạn đang áp dụng. Nếu họ đang tìm kiếm một người có kỹ năng lập trình và kiến ​​trúc dựa trên OO tốt, C # có thể tốt như điều tiếp theo.

Nếu họ tự hào về tốc độ / khả năng phản hồi của phần mềm, thì bạn sẽ cần biết các thuật toán của mình vì điều này quan trọng hơn tối ưu hóa vi mô - Bảng Hash so với tra cứu tuyến tính, v.v. C # vẫn có liên quan ở đây, nhưng bạn cần để chứng minh sự hiểu biết về các đặc tính hiệu suất - chẳng hạn, không phải ai cũng biết về ngen.exe.

Nếu chúng vào môi trường được nhúng / di động và / hoặc không rác, bạn thực sự cần biết về cách quản lý bộ nhớ hiệu quả. Con trỏ thông minh, như @DeadMG đã chỉ ra, là chìa khóa ở đây, nhưng hiểu được cấu hình cấp phát bộ nhớ cũng vậy. Các lập trình viên trò chơi thường phân bổ trước các mảng lớn của các đối tượng và tái chế chúng để biết các yêu cầu bộ nhớ từ trước và giảm các ẩn số trên cơ sở mỗi khung hình. Đây cũng là kỹ thuật được sử dụng trong TableViews cuộn trong iOS.

Nếu có bất kỳ hoạt động tích hợp nào, bạn có thể cần chuyên môn ở cấp độ C về mặt sắp xếp dữ liệu giữa các ngôn ngữ (như P / Gọi) nhưng cũng hiểu được mức độ byte về cách các cấu trúc dữ liệu này có thể được sử dụng, điều này không phổ biến trong C # theo kinh nghiệm của tôi.

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.