Dường như có sự khác biệt lớn giữa những gì tôi mong đợi một người đã học lập trình trong một vài năm ở trường đại học và những gì người ta thực sự biết.
Tôi không cảm thấy như mình đang hỏi những câu hỏi quá phức tạp trong các cuộc phỏng vấn. Một số câu hỏi thông thường của tôi là:
Sự khác biệt giữa loại tham chiếu và loại giá trị là gì?
Nếu có vẻ như người được phỏng vấn không thực sự hiểu câu trả lời của anh ta hoặc nếu anh ta không biết thuật ngữ tôi đang sử dụng, tôi sẽ tìm hiểu thêm chi tiết bằng cách yêu cầu anh ta giải thích cho tôi những gì xảy ra khi tôi viết int i = 0; trong một phương thức, những gì về đối tượng o = 0, đối tượng o = new MyClass (), v.v ...
Về cơ bản, tôi làm tất cả những gì có thể để lừa người được phỏng vấn nói với tôi về cuộc gọi, đống, v.v. và tôi cố gắng duy trì các khái niệm ngôn ngữ học. Nếu người được phỏng vấn nói với tôi rằng anh ta đã làm rất nhiều C, hoặc C ++ hoặc c #, tôi sẽ đi sâu hơn vào ngôn ngữ cụ thể và có thể vào các chi tiết thực hiện.
Nếu cần, tôi hỏi người được phỏng vấn rằng một cuộc gọi là gì, hoặc nơi các đối số được chuyển đến một chức năng trong ngôn ngữ bắt buộc của sự lựa chọn của anh ta được lưu trữ.
hầu hết những người được phỏng vấn không biết gì về một cuộc gọi là gì, chứ đừng nói đến việc cân nhắc quyền anh, v.v.
Sự khác biệt giữa một lớp trừu tượng và một giao diện. Trong trường hợp nào bạn nên sử dụng cái này hơn cái kia?
Thông thường, tôi cũng yêu cầu họ tưởng tượng một thiết kế của một thư viện nhỏ với trường hợp sử dụng nhằm mục đích sử dụng một số kế thừa và một số nhà máy trừu tượng
Hầu hết những người được phỏng vấn chỉ không biết mục đích thực sự của thừa kế là gì. Họ thường biết một số từ khóa (ảo, ghi đè, v.v.), nhưng không thực sự biết khi nào nên sử dụng chúng, chứ đừng nói đến việc giải thích bảng ảo là gì.
Ngay cả khi tôi sàng lọc CV trước đó, ngay cả đối với những người có 5 năm kinh nghiệm trong các dự án thực tế liên quan đến kiến trúc phức tạp, tôi sẽ nói rằng ít hơn 25% trong số tất cả những người được phỏng vấn của tôi có thể trả lời đúng hai câu hỏi đó. Và khi tôi nói đúng, tôi không có nghĩa là 'chuyên sâu' ... chỉ để có một ý tưởng gần đúng về khái niệm này là gì.
Về đàn em, tôi rất ổn khi thuê một người không biết cách tổ chức thời gian của mình rất tốt, hoặc một người không quen với các quy trình xây dựng công nghiệp chẳng hạn, nhưng tôi có cảm giác rằng nếu ai đó không nghe thấy từ đó " callstack "sau một vài năm học Khoa học Máy tính, anh ta hoặc là ngu ngốc, hoặc không có động lực, hoặc chọn trường đại học của mình rất không chính xác.
Bạn có nghĩ rằng tôi quá cực đoan ở đây? Có phổ biến để học những khái niệm cơ bản này sau khi bạn hoàn thành trường đại học? Bạn có biết những người không quen thuộc với những điều này và trở thành những kỹ sư phần mềm rất giỏi sau một vài năm không? Và bạn có nghĩ rằng công ty của tôi có thể có một vấn đề trong việc thu hút những người tài năng, hoặc bạn có gặp phải vấn đề tương tự trong quá trình tuyển dụng của riêng bạn không?
Biên tập. liên quan đến điều "loại ngay lập tức", nó chỉ là một bản dịch nghĩa đen từ tiếng Pháp sang tiếng Anh, vì chúng tôi thường thực hiện các cuộc phỏng vấn bằng tiếng Pháp. Tôi đã sửa nó trong câu hỏi của tôi. Tuy nhiên, tôi nghĩ rằng tất cả các bạn đều hiểu một cách hoàn hảo những gì tôi muốn nói, loại ý nghĩa của tôi, phải không?