Mượn bài viết sau từ http://get-that-job-at-google.blogspot.in/
Kiến thức mã hóa C / C ++ và Java là ngôn ngữ lập trình ưa thích cho Người phỏng vấn Google. Bạn phải biết ít nhất một trong số họ thực sự tốt. Bạn sẽ được yêu cầu viết mã trong các cuộc phỏng vấn trên màn hình điện thoại và trong các cuộc phỏng vấn tại chỗ.
Sách được đề xuất cho các cuộc phỏng vấn CS : Giới thiệu về thuật toán - Tác giả Cormen
Phỏng vấn lập trình tiếp xúc
Bẻ khóa các cuộc phỏng vấn mã hóa
Thuật toán phỏng vấn
Các trang web được đề xuất cho thực hành mã hóa : InterviewStreet, Topcoder
Big-O Đây phải là điểm khởi đầu để chuẩn bị cho một cuộc phỏng vấn thuật toán. Bạn không được đấu tranh với phân tích phức tạp cơ bản, vì nó sẽ đảm bảo không được thuê. Bạn nên làm quen và hiểu các ký hiệu O, và .. Tôi khuyên bạn nên đọc phần phân tích độ phức tạp từ sách Cấu trúc dữ liệu và thuật toán.
Sắp xếp Bạn sẽ có thể viết các thuật toán O (n * lgn) như QuickSort và MergeSort một cách dễ dàng. So sánh và hiểu các trường hợp phức tạp nhất, tồi tệ nhất và trung bình. Tôi thấy bảng này trên wiki rất tiện dụng; nó liệt kê các thuộc tính quan trọng của tất cả các thuật toán sắp xếp. Đừng bỏ qua các thuật toán O (n ^ 2) cơ bản như Sắp xếp bong bóng hoặc Sắp xếp chèn, vì các thuật toán khác cải thiện hơn các thuật toán này. Các cuộc phỏng vấn là nhiều hơn về việc cải thiện một ý tưởng cơ bản, các thuật toán sắp xếp sẽ giúp với quá trình này.
Bảng băm Khi nghi ngờ, hãy nghĩ về bảng băm. Chúng rất hữu ích trong hầu hết các vấn đề và thường xuyên giúp chúng tôi cải thiện độ phức tạp thời gian của một số vấn đề bằng cách lưu kết quả vào bộ đệm.
Cây Đi qua các thuật toán xây dựng, chuyển đổi và thao tác cây cơ bản. Bạn sẽ có thể thực hiện các thuật toán dựa trên cây tìm kiếm nhị phân. Bạn nên làm quen với cây cân bằng mặc dù bạn không cần phải viết mã cho chúng trong cuộc phỏng vấn: cây AVL, cây đỏ-đen, cây Trie, cây n-ary, v.v. chúng ta có thể giải quyết nhiều vấn đề về cây bằng cách thực hiện các sửa đổi đơn giản cho một trong những đường ngang này.
Đồ thị Đồ
thị là một khái niệm rất quan trọng trong Khoa học Máy tính. Thực hành ba biểu diễn cơ bản của đồ thị (đối tượng và con trỏ, ma trận và danh sách kề) và làm quen với những ưu và nhược điểm của chúng. Không có nhiều thời gian trong cuộc phỏng vấn vì vậy bạn không nên mong đợi một điều gì đó rất phức tạp. Tuy nhiên, các thuật toán duyệt đồ thị cơ bản (DFS và BFS) là bắt buộc, bạn nên thực hiện chúng trong tất cả các biểu diễn cơ bản. Bạn sẽ có thể thực hiện các thuật toán Dijkstra hoặc Floyd-Warshall cũng như các thuật toán cây bao trùm tối thiểu (Kruskal và Prim). Tìm hiểu về sắp xếp cấu trúc liên kết, vì nó rất hữu ích trong nhiều vấn đề đặt hàng.
Lập trình động Đây có lẽ là chủ đề quan trọng nhất vì các triển khai là nhỏ. Bạn sẽ có thể thực hiện 2-3 thuật toán động trong thời gian 35-40 phút. Khi bạn kiểm tra các tài nguyên trên blog này hoặc trên web, bạn sẽ thấy rằng bạn nên mong đợi ít nhất một câu hỏi lập trình động cho mỗi cuộc phỏng vấn.
Hệ điều hành Tìm hiểu về các quy trình, chủ đề và các vấn đề tương tranh. Biết về mutexes, semaphores, màn hình và cách chúng hoạt động. Hiểu được bế tắc và livelock là gì và làm thế nào để tránh chúng. Tìm hiểu về chuyển đổi ngữ cảnh, lập lịch, vv
Toán học Bạn nên làm quen với việc đếm, tổ hợp và xác suất.
Các ấn phẩm của Google Đọc các ấn phẩm phá cách của Google được liệt kê dưới đây nếu bạn có thời gian. Hệ thống tệp của Google
Google Bigtable
Google MapReduce