Có thể kết hợp C và C ++ trong một cuộc phỏng vấn không? [đóng cửa]


8

Nếu tôi được yêu cầu trong một cuộc phỏng vấn để viết ra một số mã, tôi có nên hoàn toàn gắn bó với C ++ hay có thể chấp nhận "trộn" hai thứ đó để viết mã dễ dàng như tôi nghĩ không?

Tôi sẽ giải thích điều đó: nếu tôi được yêu cầu tạo kiểu dữ liệu "ngăn xếp", một lớp C ++ hoàn toàn phù hợp, trong khi nếu tôi cần phân tích một số chuỗi thì strtok / sscanf dễ hơn STL rất nhiều. Mặt khác, nếu tôi cần một STL container chung và các mẫu là cách để đi.

Mọi thứ có thể được thực hiện bằng C hoặc bằng C ++, nhưng trong một cuộc phỏng vấn tôi không thể mã hóa mọi thứ hoặc nhớ mọi chức năng tiêu chuẩn / STL. Một sự đánh đổi chấp nhận được là gì?


1
Hầu hết các lập trình viên C ++ sẽ nói rằng bạn không nên kết hợp trong C thuần túy mà không có lý do chính đáng thực sự (mà tốt hơn là bạn có thể biện minh).
Giàn khoan

2
Tôi đoán rằng "Tôi không thể nhớ hàm STL để xử lý việc tách chuỗi", thật tuyệt phải không?
John Smith

14
Rằng bạn biết đủ để thậm chí hỏi câu hỏi này sẽ là một dấu hiệu tích cực trong cuốn sách của tôi nếu tôi là người phỏng vấn. Chỉ cần hỏi họ những gì họ muốn.
GrandmasterB

2
sprintf và FILE có thể giúp cuộc sống của tôi dễ dàng hơn vào các thời điểm trong thế giới C ++
Thomas Eding

Nếu tôi là một người phỏng vấn tôi sẽ không ấn tượng nếu ai đó trả lời câu hỏi này bằng cách nói họ sẽ gọi chức năng gì.
James

Câu trả lời:


13

Để thực sự mang tính mô phạm, C ++ cung cấp hỗ trợ cho C, về cơ bản, có thể chỉ là một tập hợp con , nhưng nếu chủ đề là C ++ thì ngôn ngữ lập trình C được bao gồm, và đây không phải là ý kiến, tôi sẽ không tranh luận về vấn đề đó trong chuyên môn Môi trường.


Đã đồng ý. Hơn nữa, C là một phần của C ++, vậy tại sao không sử dụng nó để hưởng lợi? Theo tôi, việc bám hoàn toàn vào một phần của ngôn ngữ và không chạm vào phần kia không phải là cách sử dụng tốt ngôn ngữ này.
Pijusn

17

Trừ khi được chỉ định, hầu hết các câu hỏi lập trình sẽ cho phép bạn sử dụng bất kỳ ngôn ngữ nào bạn muốn khi trả lời một câu hỏi cụ thể. Bạn có thể muốn giải thích ngôn ngữ nào bạn đang sử dụng để trả lời câu hỏi cụ thể để tránh nhầm lẫn và giải thích lý do tại sao bạn sử dụng ngôn ngữ đó.

Nếu bạn không chắc chắn liệu điều này có ổn với người phỏng vấn hay không, hãy hỏi - bạn hoàn toàn có thể chấp nhận nếu bạn có thể trả lời các câu hỏi khác nhau bằng các ngôn ngữ khác nhau (trong hầu hết các câu trả lời trên giấy, mã giả sẽ được chấp nhận nhiều hơn).


4
Vâng, đó là những gì tôi đã nghĩ: mã giả. Tôi không có kiến ​​thức cơ bản trong đầu và tôi có xu hướng ghi nhớ các kỹ thuật và cách sử dụng công cụ thay vì khai báo cú pháp hoặc API (có thể thay đổi). Nếu tôi có thể giả mã nó và tôi có lượng kinh nghiệm lập trình "kha khá" với một ngôn ngữ, thì tôi nghĩ tôi có thể mã hóa nó là gì.
John Smith

2
Nó sẽ là một dấu hiệu tích cực trong cuốn sách của tôi nếu ứng viên có thể dễ dàng chuyển đổi giữa C | C ++ | C ++ & STL và có thể giải thích lý do tại sao họ chọn một con đường cụ thể.

6
@JohnPell - Theo kinh nghiệm của tôi, tôi hiểu các nguyên tắc và cách thức và thời điểm áp dụng chúng vấp ngã kiến ​​thức ngôn ngữ sâu sắc mỗi lần.
Oded

10

Bạn chỉ nên hỏi người phỏng vấn xem anh ta thích gì hơn, nếu bạn biết cách sử dụng cả hai.

Tùy thuộc vào câu trả lời của anh ta, bạn có thể khám phá:

  1. nếu anh ta thực sự biết sự khác biệt giữa C và C ++;
  2. nếu anh ta biết về thư viện chuẩn C ++;
  3. nếu nó quan trọng với anh ta.

Không có câu trả lời chung cho câu hỏi này. Nó quá phụ thuộc vào công việc và mục tiêu của nhà tuyển dụng. Nếu anh ấy muốn bạn thể hiện kiến ​​thức ngôn ngữ thì anh ấy sẽ cụ thể. Nếu anh ấy muốn bạn cho bạn thấy kỹ năng giải quyết vấn đề và kỹ năng giao tiếp, thì anh ấy sẽ không thực sự quan tâm.


8

Trừ khi người phỏng vấn của bạn yêu cầu rõ ràng rằng bạn viết mã bằng C hoặc C ++, tôi sẽ chỉ sử dụng những gì phù hợp cho cuộc phỏng vấn.

Đối với tôi, nếu ứng cử viên của tôi trộn lẫn hai thứ đó, tôi sẽ quan tâm hơn đến chiến lược của anh ta hoặc lý do trộn lẫn hai ngôn ngữ. Có ai đó trong nhóm của tôi có thể cung cấp giải pháp và có thể biện minh cho giải pháp đó là vô cùng quý giá.


1
+1, Biện minh là chìa khóa. Tôi muốn nói rằng đây là chìa khóa để trở thành một nhà phát triển giỏi nói chung (tất nhiên bên cạnh kỹ năng lập trình).
K.Steff

1

Nếu tôi được yêu cầu trong một cuộc phỏng vấn để viết ra một số mã, tôi có nên hoàn toàn gắn bó với C ++ hay có thể chấp nhận "trộn" hai thứ đó để viết mã dễ dàng như tôi nghĩ không?

Điều đó hoàn toàn phụ thuộc vào loại công việc bạn đang ứng tuyển và ngôn ngữ họ mong đợi bạn sử dụng. Nói chung, nếu bạn đang viết C ++, tốt nhất nên bám vào C ++ càng xa càng tốt. Tuy nhiên, tôi mong mọi lập trình viên C ++ biết ít nhất một chút về C (và ngược lại).

Tôi sẽ giải thích điều đó: nếu tôi được yêu cầu tạo kiểu dữ liệu "ngăn xếp", một lớp C ++ hoàn toàn phù hợp, trong khi nếu tôi cần phân tích một số chuỗi thì strtok / sscanf dễ hơn STL rất nhiều. Mặt khác, nếu tôi cần một STL container chung và các mẫu là cách để đi.

Nếu họ mong đợi bạn viết toàn bộ loại dữ liệu làm việc trong cuộc phỏng vấn, bạn nên cảnh giác. Thật tốt nếu họ hỏi bạn về các chi tiết kỹ thuật, nhưng nếu họ mong đợi bạn dành hàng giờ để viết chương trình trong cuộc phỏng vấn, điều đó có thể nói điều gì đó không tốt về nhà tuyển dụng.

Nếu bạn sử dụng scanf (), có lẽ bạn đã mắc một lỗi lớn cho dù là C hay C ++. Bạn giải thích rõ hơn với người phỏng vấn rằng bạn chỉ đang viết một cái gì đó nhanh & bẩn và sẽ không bao giờ sử dụng scanf trong mã sản xuất. Có nhiều hố rơi với các chức năng thư viện C khác nhau.

Người phỏng vấn không nên mong đợi bạn nhớ mọi chức năng trong thư viện chuẩn C và C ++, nhưng họ sẽ mong bạn biết những chức năng nào nguy hiểm một cách trắng trợn. được (), getchar (), scanf (), setjmp (), v.v.


hoàn toàn đồng ý, đó chỉ là một ví dụ, tôi sẽ sử dụng scanf_s và nếu tôi có thể HOÀN TOÀN tránh nó trong mã sản xuất
John Smith

0

Tôi nghĩ rằng khi bạn thực sự được yêu cầu thực hiện một nhiệm vụ ngắn trong C ++, thì việc thực sự gắn bó với C ++ và không trộn C với nó là vô cùng quan trọng. Modern C không phải là một tập hợp con của C ++ hiện đại, vì việc trộn lẫn hai thứ đó chỉ có nghĩa là bạn không quen thuộc với việc C ++ hiện đại, sạch sẽ như thế nào.

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.