hầu hết các công ty công nghệ lớn như Microsoft tập trung chủ yếu vào cấu trúc dữ liệu. Nó xuất hiện như thể cấu trúc dữ liệu là điều duy nhất mà họ mong đợi từ một sinh viên tốt nghiệp.
Không, có nhiều hơn. Ví dụ: chúng tôi cũng hy vọng rằng bạn là người học nhanh, có thể học các khung, API mới hoặc thậm chí các ngôn ngữ lập trình trong một khoảng thời gian ngắn. Đó là một thanh tối thiểu trần. Một người mất nhiều thời gian để tìm hiểu một khuôn khổ, API hoặc ngôn ngữ mới sẽ không trở thành nhà phát triển thành công trên hầu hết các nhóm tại Microsoft.
Và tất nhiên còn nhiều khía cạnh khác mà chúng tôi tập trung vào trong các cuộc phỏng vấn ngoài việc chỉ là kiến thức thô về cấu trúc dữ liệu. Khả năng xử lý các thông số kỹ thuật mơ hồ, ví dụ, hoặc khả năng nhận ra các mẫu mã hóa tạo ra mã không an toàn hoặc hàng tá thứ khác. Nhưng khả năng hiểu cấu trúc dữ liệu chắc chắn là một điều rất lớn.
Điều đặc biệt là các cuộc phỏng vấn thiên về kiểm tra kiến thức về cấu trúc dữ liệu cho sinh viên tốt nghiệp CS gần đây. Sinh viên tốt nghiệp gần đây, hầu hết những người không có nhiều kinh nghiệm trong thế giới thực, không được kỳ vọng sẽ giỏi những điều tương tự mà một người có mười lăm năm kinh nghiệm trong ngành sẽ giỏi.
Tôi phải thú nhận rằng tôi không quá mạnh về cấu trúc dữ liệu
Thật tốt khi bạn biết điều đó về bản thân. Nếu bạn không thể hoặc không muốn thay đổi điều đó về bản thân thì lời khuyên của tôi là bạn không nên xin việc với cơ sở có cấu trúc dữ liệu.
có quan điểm chung rằng một lập trình viên giỏi nhất thiết phải là người có kiến thức tốt về cấu trúc dữ liệu.
Điều quan trọng là một lập trình viên giỏi là một lập trình viên giỏi xây dựng các loại chương trình cần được xây dựng. Rất nhiều lập trình viên làm việc trên các nhiệm vụ không đòi hỏi kiến thức sâu về cấu trúc dữ liệu. Một số trong số họ làm việc trên các nhiệm vụ đòi hỏi kiến thức sâu về thiết kế giao diện người dùng, ví dụ. Hoặc chuẩn hóa cơ sở dữ liệu. Hay bất cứ cái gì. Những người đó vẫn có thể là "lập trình viên giỏi" trong lĩnh vực của họ.
Tại sao tất cả điều này nhấn mạnh vào Cấu trúc dữ liệu?
Tôi đặt câu hỏi phỏng vấn về cấu trúc dữ liệu bởi vì trong nhóm của tôi, các nhà phát triển thiết kế, thực hiện và thao tác các cấu trúc dữ liệu phức tạp cả ngày mỗi ngày. Hôm qua chúng tôi đã có bốn giờ họp trong đó một nửa nhà phát triển đã tranh luận về những ưu và nhược điểm của việc thêm trường Boolean duy nhất vào một nút cây cụ thể. Có lẽ không có kỹ năng nào trong nhóm của tôi quan trọng hơn khả năng hiểu cấu trúc dữ liệu ở mức độ sâu. Sẽ thật ngu ngốc nếu không đặt câu hỏi phỏng vấn về nó, vì đó là những gì chúng ta làm.
Không có kiến thức về Cấu trúc dữ liệu có thực sự ảnh hưởng đến sự nghiệp lập trình của một người không?
Vâng, nó chắc chắn sẽ ngăn bạn nhận được một công việc trong nhóm của tôi. Nhưng như tôi đã nói trước đây, lập trình là một lĩnh vực rất lớn . Có rất nhiều loại lập trình máy tính không đòi hỏi kiến thức về cấu trúc dữ liệu.
kiến thức trong môn học này có thực sự là cơ sở đủ để phân biệt một lập trình viên tốt và xấu không?
Không. Nhưng hầu như luôn luôn đủ để phát hiện các nhà phát triển không có khả năng thành công tại Microsoft. Vì đó là điều tôi chủ yếu quan tâm trong việc phát hiện, kiến thức về cấu trúc dữ liệu là một trong những yếu tố tôi kiểm tra trong các cuộc phỏng vấn.