Tôi muốn hỏi về quản lý tài nguyên/bộ nhớ, vì nó là chủ đề quan trọng trong C++ và không yêu cầu mã cụ thể. Chỉ cần phác thảo một kịch bản giả định đơn giản, và hỏi làm thế nào họ sẽ đảm bảo một số tài nguyên quan trọng được giải phóng ngay cả khi đối mặt với lỗi/trường hợp ngoại lệ. Giả sử họ đang phát triển một ứng dụng mạng, làm cách nào để đảm bảo rằng chúng tôi đóng đúng các ổ cắm của mình? Tất nhiên câu trả lời thích hợp sẽ là bọc nó trong một đối tượng RAII, nhưng đừng hỏi họ trực tiếp (thật dễ dàng để google "RAII", trong khi câu hỏi trên "làm thế nào bạn đảm bảo tài nguyên được phát hành đúng" hoặc họ không biết các kỹ thuật thích hợp, nếu họ trả lời "quấn tất cả mọi thứ trong cố gắng/nắm bắt", họ có thể có một vấn đề và mối quan hệ này độc đáo với các câu hỏi về sự khác biệt giữa đống và ngăn xếp. Nói chung, tôi muốn nói một cuộc thảo luận về tất cả các thành ngữ C++ khác nhau có thể là một ý tưởng tốt, bởi vì nhiều người trong số họ không đòi hỏi nhiều mã thực tế, nhưng vẫn là khái niệm quan trọng về ngôn ngữ cụ thể.
Hãy xem liệu họ có biết về con trỏ thông minh hay không (tốt nhất là hãy cho họ biết tình huống mà con trỏ thông minh được gọi đến và xem cách họ giải quyết vấn đề), và có thể mẫu/metaprogrammin (trong trường hợp sau) nếu họ biết rằng có thể, thay vì yêu cầu họ mã hóa các siêu ký tự thực tế trên điện thoại)
Bạn cũng có thể hỏi về một số khu vực chung của hành vi không xác định (giá trị của a và b sau khi thực hiện a = b++ + b++?
?) Hoặc phân bổ một mảng gồm 10 phần tử và thêm 10 hoặc 11 vào con trỏ mảng và hỏi kết quả là gì trong mỗi trường hợp (+ = 10 là hợp pháp, cung cấp cho bạn con trỏ kết thúc, + = 11 là không xác định). Hoặc cung cấp cho họ một kịch bản mà họ cần phải sao chép rất nhiều đối tượng, và hỏi làm thế nào họ sẽ làm điều đó (đồng bằng cho vòng lặp sao chép mỗi phần tử tại một thời điểm, memcpy hoặc std :: copy là câu trả lời rõ ràng. , không an toàn cho các đối tượng không phải POD)
Hoặc hỏi về kiểu mã hóa của chúng nói chung. Làm thế nào để họ cảm thấy về vòng lặp? Họ có thích các vòng lặp cũ không? Họ có biết làm thế nào để sử dụng std :: for_each hoặc std :: transform?
Edit: Seems a = b++ + b++
(câu trả lời là hành vi không xác định, btw) đề nghị đặc biệt tạo ra rất nhiều ý kiến. Có lẽ mọi người đọc quá nhiều vào nó. Như OP cho biết ông thích hỏi cụ thể (không trừu tượng, và dễ giải thích/trả lời/thảo luận qua điện thoại) câu hỏi, mà sẽ tiết lộ một chút về kỹ năng C++ của người được phỏng vấn, và đây là một đơn giản (và có, có lẽ nitpicky) ví dụ về điều đó. Lý do đằng sau nó là 1) nó có một ý nghĩa trực quan, đó là sai, và 2) bạn phải có một mức độ nhất định của kinh nghiệm với C + + trước khi bạn nhận ra điều này. Và tất nhiên 3), nó ngắn và dễ dàng để hỏi qua điện thoại. Nó không yêu cầu bất cứ ai viết mã xuống. Không, nó sẽ không tiết lộ liệu ứng cử viên có phải là "lập trình viên vĩ đại" hay không, nhưng khi tôi hiểu câu hỏi, đó không phải là mục tiêu. Nếu ai đó hiểu sai, nó không có ý nghĩa gì nhiều, nhưng nếu họ hiểu đúng, bạn có thể khá chắc chắn rằng họ biết một chút về C++. Nhưng nếu bạn đọc câu trả lời của tôi một lần nữa, bạn sẽ thấy rằng đó chỉ là một ví dụ nhanh về một loại câu hỏi mà tôi nghĩ nên được đại diện. C++ có đầy đủ các hành vi không xác định, ngay cả trong mã trông hoàn toàn vô hại và trực quan. Yêu cầu ứng cử viên nhận ra một số trường hợp điều này có thể hữu ích, cho dù đó là "sửa đổi cùng một biến hai lần trong cùng một biểu thức" ví dụ ở trên hoặc một điều gì đó khác.
Dù bạn làm gì, vui lòng không hỏi câu hỏi về câu hỏi bên cạnh Microsoft.Và nếu bạn làm thế, xin vui lòng không yêu cầu họ một lần nữa trong cuộc phỏng vấn mặt đối mặt. – zaratustra
Tại sao tôi chưa bao giờ được hỏi những loại câu hỏi này? Tôi đã có một vài bài kiểm tra IQ (vui vẻ), nhưng không có gì như thế này. Tất cả các cuộc phỏng vấn của tôi giống như cuộc trò chuyện giữa bạn bè. Nó có văn hóa không? – Guge
@Guge: Không được hỏi các câu hỏi công nghệ có liên quan như những câu hỏi được đề cập ở đây và thay vào đó là trò chuyện thú vị, có thể là dấu hiệu cho thấy thiếu kiến thức nghiêm trọng về phía tuyển dụng. Nếu được cung cấp một vị trí, bạn có thể muốn suy nghĩ hai lần về nó. – Reunanen