2008-12-13 35 views
10

Tò mò để có được suy nghĩ của mọi người. Tôi thực hiện các cuộc phỏng vấn thường xuyên, và đã có đủ trong sự nghiệp của tôi để phản ánh về họ, và tôi đã nhận thấy một loạt các câu hỏi. Tôi đã viết C++ cụ thể, nhưng đáng chú ý là tôi đã yêu cầu tôi hỏi các câu hỏi phức tạp về thuật toán qua điện thoại và tôi thậm chí không có ý nghĩa phức tạp về tra cứu băm so với cây nhị phân, ý tôi là giống như phân tích hơn vấn đề, chẳng hạn như "tưởng tượng có 4 ong vấp ngã, mỗi bla bla bla ù ù."Các loại câu hỏi phỏng vấn nào phù hợp với màn hình điện thoại C++?

Hiện tại, tôi muốn giữ màn hình điện thoại hơi cụ thể hơn một chút và để lại các câu hỏi trừu tượng cho bảng trắng. Vì vậy, khi thực hiện các cuộc phỏng vấn qua điện thoại C++, bạn đề cập đến loại chủ đề nào, đặc biệt là cho các nhà phát triển Sr?

Tôi biết có một chủ đề tương tự như vậy, nhưng thẳng thắn có vẻ như đã hoàn toàn bỏ lỡ điểm rằng đây là về màn hình điện thoại chứ không phải phỏng vấn trực tiếp. Thêm vào đó là C++ cụ thể hơn.

+1

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

+0

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

+0

@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

Trả lời

12

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.

+0

Re for_each và transform: Tôi biết một số lập trình viên đã tránh nó bởi vì họ cảm thấy rằng việc tạo ra một lớp functor quá phức tạp. Với C++ 0x đóng cửa (hoặc Boost.Lambda, mặc dù đó là công nghệ khá mới trở lại khi tôi đã có cuộc thảo luận này), tình hình đó sẽ được nhiều, cải thiện nhiều. –

+0

Tôi đoán một phần màn hình điện thoại có thể nói về việc liệu họ có đề cập đến Boost.Lambda hay bị đóng cửa không! :-P –

+0

Điều này có lẽ không phải là một trong những câu hỏi mà bạn nhận được một câu trả lời hoàn hảo cho, nhưng tôi thích của bạn rất nhiều, nó đề với những khó khăn của mã hóa qua điện thoại. – ApplePieIsGood

5

Tôi muốn tìm hiểu xem mọi người có thực sự biết gì về các công cụ họ đang sử dụng hay không. Và tôi cũng thấy rằng các nhà phát triển "cao cấp" có thể có những khoảng trống nghiêm trọng trong kiến ​​thức của họ.

Bạn có thể xem xét đề nghị

  • Thật là một vtable là.
  • Cách các mẫu hoạt động
  • Sự khác biệt giữa heap và chồng là gì. Độ sâu của câu trả lời cho câu trả lời này có thể khá sáng!

Các "bạn thực sự cần phải phỏng vấn tôi" câu trả lời cho câu hỏi cuối cùng sẽ bao gồm

  • phân bổ - giới hạn, sử dụng-trường hợp, chế độ thất bại, hiệu quả, dọn dẹp tài nguyên, hủy
  • ngăn xếp cuộc gọi -frames - điều gì xảy ra khi hàm được gọi, tham số, backtraces
+0

Chắc chắn giống như câu hỏi heap/stack. Bạn có thể dành nhiều thời gian để thảo luận về điều đó. – ApplePieIsGood

+0

Đúng, heap/stack là một câu hỏi hay. Đem lại heap vs stack * alloc *, và các ngữ nghĩa khác nhau cho những đối tượng (stack objects out out of scope, destructor được gọi và cứ thế) – jalf

+0

Mặc dù hãy cẩn thận lựa chọn các ứng cử viên theo cách chuẩn bị tốt cho câu hỏi, thay vì họ hiểu rõ chi tiết kỹ thuật như thế nào. Một phản ứng ban đầu hợp lý cho "sự khác biệt giữa đống và ngăn xếp" là gì, "treo trên giây, những điểm tương đồng *" là gì? –

1
  • Design Patterns
  • Khái niệm cơ bản của C/C++
  • Chức năng ảo
  • Poly cấu xạ
  • Các khái niệm từ loạt Scott Mayer
  • Về mẫu. (Không theo thứ tự cụ thể)

Cuối cùng nhưng không kém phần quan trọng. Tôi sẽ cung cấp cho một số vấn đề mẫu tôi nói với họ để thiết kế các lớp học. Chỉ các giao diện.

+0

Tôi không nhận được yêu cầu của bạn tại đây. Mẫu thiết kế không phải là điểm "cao cấp" nhất trong danh sách của bạn, và "khái niệm cơ bản về C" là "mức thấp nhất"? – Svante

+0

OK, tôi thấy "không theo thứ tự cụ thể" bây giờ, nhưng điều này không mâu thuẫn với câu đầu tiên của bạn và đánh số rõ ràng? – Svante

+0

Cuối cùng nhưng không kém phần quan trọng là có lẽ chỉ là một câu nói khi anh ta liệt kê nó từ đầu mình, không phải để anh ta đặt câu hỏi. – ApplePieIsGood

3

Là một phần của màn hình điện thoại cho các vị trí C++ Tôi đã thực hiện để hỏi 'Ai là Bjarne Stroustrup".

tôi tìm thấy nó tuyệt vời mà nhiều nhiều người tự xưng là thâm niên trong C devs ++ không thể xác định. Gợi ý cho người nói tiếng Anh: Đi tới Câu hỏi thường gặp của anh ấy và nghe cách phát âm chính xác trước khi bạn đặt câu hỏi

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