Hướng dẫn ace the python coding interview github - ace the python coding phỏng vấn github
Ban đầu tôi đã tạo ra đây như một danh sách việc cần làm ngắn gọn về các chủ đề nghiên cứu để trở thành một kỹ sư phần mềm, nhưng nó đã phát triển thành danh sách lớn mà bạn thấy ngày hôm nay. Sau khi trải qua kế hoạch nghiên cứu này, tôi đã được thuê làm kỹ sư phát triển phần mềm tại Amazon! Bạn có thể sẽ không phải học nhiều như tôi đã làm. Dù sao, mọi thứ bạn cần là ở đây. Tôi đã học khoảng 8-12 giờ mỗi ngày, trong vài tháng. Đây là câu chuyện của tôi: Tại sao tôi học toàn thời gian trong 8 tháng cho một cuộc phỏng vấn của Google Xin lưu ý: bạn sẽ không cần học nhiều như tôi đã làm. Tôi đã lãng phí rất nhiều thời gian cho những điều tôi không cần biết. Thông tin thêm về điều đó dưới đây. Tôi sẽ giúp bạn đến đó mà không lãng phí thời gian quý báu của bạn. You won't need to study as much as I did. I wasted a lot of time on things I
didn't need to know. More info about that below. I'll help you get there without wasting your precious time. Các mục được liệt kê ở đây sẽ chuẩn bị cho bạn một cuộc phỏng vấn kỹ thuật tại bất kỳ công ty phần mềm nào, bao gồm Người khổng lồ: Amazon, Facebook, Google và Microsoft. Nhưng điêu tôt đẹp nhât se đên vơi bạn! Đây là kế hoạch học tập nhiều tháng của tôi để trở thành một kỹ sư phần mềm cho một công ty lớn. Required:
Lưu ý Đây là một kế hoạch nghiên cứu cho kỹ thuật phần mềm, không phát triển web. Các công ty phần mềm lớn như Google, Amazon, Facebook và Microsoft xem kỹ thuật phần mềm khác với phát triển web. Ví dụ, Amazon có Kỹ sư Frontend (Phí) và Kỹ sư phát triển phần mềm (SDE). Đây là 2 vai trò riêng biệt và các cuộc phỏng vấn cho họ sẽ không giống nhau, vì mỗi người có năng lực riêng. Các công ty này yêu cầu kiến thức khoa học máy tính cho vai trò phát triển/kỹ thuật phần mềm.software engineering, not web development. Large software companies like Google, Amazon, Facebook and Microsoft view software engineering as different from web development. For example, Amazon has Frontend Engineers (FEE) and Software Development Engineers (SDE). These are 2 separate roles and the interviews for them will not be the same, as each has its own competencies. These companies require computer science knowledge for software development/engineering roles. Mục lụcKế hoạch nghiên cứu
Sách cho cấu trúc dữ liệu và thuật toán
Tìm kiếm và thao tác chuỗi
Nhận công việc Cập nhật sơ yếu lý lịch của bạn
Đây là kế hoạch học tập nhiều tháng của tôi để trở thành một kỹ sư phần mềm cho một công ty lớn.Một ít kinh nghiệm với mã hóa (biến, vòng lặp, phương thức/chức năng, v.v.) Tính kiên nhẫn Thời gian Đó là một kế hoạch dài. Nó có thể mất nhiều tháng. Nếu bạn đã quen thuộc với rất nhiều điều này, nó sẽ khiến bạn mất ít thời gian hơn. Làm thế nào để sử dụng nóTất cả mọi thứ dưới đây là một phác thảo và bạn nên giải quyết các mục theo thứ tự từ trên xuống dưới. Tôi đang sử dụng hương vị Markdown đặc biệt của GitHub, bao gồm các danh sách các nhiệm vụ để theo dõi tiến trình.
Nếu bạn không muốn sử dụng gitTrên trang này, nhấp vào nút mã gần đầu, sau đó nhấp vào "Tải xuống Zip". Giải nén tệp và bạn có thể làm việc với các tệp văn bản. Nếu bạn đang mở trong trình chỉnh sửa mã hiểu Markdown, bạn sẽ thấy mọi thứ được định dạng độc đáo. Nếu bạn thoải mái với GitTạo một nhánh mới để bạn có thể kiểm tra các mục như thế này, chỉ cần đặt một X trong ngoặc: [x]
Đừng cảm thấy bạn không đủ thông minh
Một lưu ý về tài nguyên videoMột số video chỉ có sẵn bằng cách đăng ký vào lớp Coursera hoặc EDX. Chúng được gọi là MOOCS. Đôi khi các lớp không có trong phiên nên bạn phải đợi một vài tháng, vì vậy bạn không có quyền truy cập. Sẽ thật tuyệt vời khi thay thế các tài nguyên khóa học trực tuyến bằng các nguồn công cộng miễn phí và luôn có sẵn, chẳng hạn như video YouTube (tốt nhất là các bài giảng của trường đại học), để mọi người có thể học này bất cứ lúc nào, không chỉ khi một khóa học trực tuyến cụ thể đang diễn ra. Chọn một ngôn ngữ lập trìnhBạn sẽ cần chọn một ngôn ngữ lập trình cho các cuộc phỏng vấn mã hóa bạn làm, nhưng bạn cũng cần tìm một ngôn ngữ mà bạn có thể sử dụng để nghiên cứu các khái niệm khoa học máy tính. Tốt nhất là ngôn ngữ sẽ giống nhau, do đó bạn chỉ cần thành thạo một. Đối với kế hoạch nghiên cứu nàyKhi tôi thực hiện kế hoạch học tập, tôi đã sử dụng 2 ngôn ngữ cho hầu hết: C và Python
Đây là sở thích của tôi. Bạn làm những gì bạn thích, tất nhiên. Bạn có thể không cần nó, nhưng đây là một số trang web để học một ngôn ngữ mới:
Đối với cuộc phỏng vấn mã hóa của bạnBạn có thể sử dụng một ngôn ngữ mà bạn cảm thấy thoải mái để thực hiện phần mã hóa của cuộc phỏng vấn, nhưng đối với các công ty lớn, đây là những lựa chọn vững chắc:
Bạn cũng có thể sử dụng những thứ này, nhưng đọc xung quanh trước. Có thể có cảnh báo:
Dưới đây là một bài viết tôi đã viết về việc chọn một ngôn ngữ cho cuộc phỏng vấn: chọn một ngôn ngữ cho cuộc phỏng vấn mã hóa. Đây là bài viết gốc Bài viết của tôi dựa trên: chọn ngôn ngữ lập trình cho các cuộc phỏng vấn Bạn cần phải rất thoải mái trong ngôn ngữ và có kiến thức. Đọc thêm về các lựa chọn:
Xem các tài nguyên cụ thể về ngôn ngữ ở đây Sách cho cấu trúc dữ liệu và thuật toánCuốn sách này sẽ tạo thành nền tảng của bạn cho khoa học máy tính. Chỉ cần chọn một, bằng một ngôn ngữ mà bạn sẽ thoải mái. Bạn sẽ thực hiện rất nhiều việc đọc và mã hóa. C
Python
JavaPython
C++Lựa chọn của bạn:
Sách chuẩn bị phỏng vấnBạn không cần phải mua một loạt những thứ này. Thành thật mà nói "bẻ khóa cuộc phỏng vấn mã hóa" có lẽ là đủ, nhưng tôi đã mua nhiều hơn để cho bản thân thực hành nhiều hơn. Nhưng tôi luôn làm quá nhiều. Tôi đã mua cả hai. Họ đã cho tôi rất nhiều thực hành.
Nếu bạn có hàng tấn thời gian thêm:Chọn một:
Đừng phạm sai lầm của tôiDanh sách này đã tăng lên trong nhiều tháng, và vâng, nó đã ra khỏi tầm tay. Dưới đây là một số sai lầm tôi đã mắc phải vì vậy bạn sẽ có trải nghiệm tốt hơn. Và bạn sẽ tiết kiệm nhiều tháng. 1. Bạn sẽ không nhớ tất cảTôi đã xem hàng giờ video và ghi chép rất nhiều, và nhiều tháng sau, tôi không nhớ nhiều. Tôi đã dành 3 ngày để xem các ghi chú của mình và làm flashcards, vì vậy tôi có thể xem xét. Tôi không cần tất cả kiến thức đó. Xin vui lòng, đọc để bạn sẽ không phạm sai lầm của tôi: Giữ lại kiến thức khoa học máy tính. 2. Sử dụng flashcardsĐể giải quyết vấn đề, tôi đã tạo một trang web Flashcards nhỏ nơi tôi có thể thêm flashcards của 2 loại: chung và mã. Mỗi thẻ có định dạng khác nhau. Tôi đã tạo một trang web đầu tiên trên thiết bị di động, vì vậy tôi có thể xem lại trên điện thoại hoặc máy tính bảng của mình, bất cứ nơi nào tôi có. Tự làm miễn phí:
Tôi không khuyên bạn nên sử dụng flashcards của mình. Có quá nhiều và hầu hết trong số họ là những câu đố mà bạn không cần. There are too many and most of them are trivia that you don't need. Nhưng nếu bạn không muốn lắng nghe tôi, bạn đi đây:
Hãy nhớ rằng tôi đã quá nhiệt tình và có các thẻ bao gồm tất cả mọi thứ, từ ngôn ngữ lắp ráp và câu đố Python đến học máy và thống kê. Đó là quá nhiều cho những gì được yêu cầu. Lưu ý trên flashcards: Lần đầu tiên bạn nhận ra bạn biết câu trả lời, đừng đánh dấu nó như đã biết. Bạn phải xem cùng một thẻ và trả lời chính xác nhiều lần trước khi bạn thực sự biết nó. Sự lặp lại sẽ đặt kiến thức đó sâu sắc hơn trong não của bạn. The first time you recognize you know the answer, don't mark it as known. You have to see the same card and answer it several times correctly before you really know it. Repetition will put that knowledge deeper in your brain. Một giải pháp thay thế cho việc sử dụng trang web flashcard của tôi là Anki, đã được đề xuất cho tôi nhiều lần. Nó sử dụng một hệ thống lặp lại để giúp bạn nhớ. Nó thân thiện với người dùng, có sẵn trên tất cả các nền tảng và có hệ thống đồng bộ hóa đám mây. Nó có giá 25 đô la trên iOS nhưng miễn phí trên các nền tảng khác. Cơ sở dữ liệu flashcard của tôi ở định dạng Anki: https://ankiweb.net/shared/info/25173560 (cảm ơn @xiewenya). Một số sinh viên đã đề cập đến các vấn đề định dạng với không gian trắng có thể được khắc phục bằng cách thực hiện các như sau: boong mở, thẻ chỉnh sửa, nhấp vào thẻ, chọn nút radio "Kiểu dáng", thêm thành viên "không gian trắng: pre;" đến lớp thẻ. 3. Các câu hỏi phỏng vấn mã hóa trong khi bạn đang họcCÁI NÀY RẤT QUAN TRỌNG. Bắt đầu thực hiện các câu hỏi phỏng vấn mã hóa trong khi bạn đang học các cấu trúc và thuật toán dữ liệu. Bạn cần áp dụng những gì bạn đang học để giải quyết các vấn đề, hoặc bạn sẽ quên. Tôi đã phạm sai lầm này. Khi bạn đã học một chủ đề và cảm thấy hơi thoải mái với nó, ví dụ, danh sách được liên kết:linked lists:
Tiếp tục làm vấn đề trong khi bạn đang học tất cả những thứ này, không phải sau đó. Bạn không được thuê để biết kiến thức, nhưng cách bạn áp dụng kiến thức. Có nhiều tài nguyên cho điều này, được liệt kê dưới đây. Tiếp tục đi. 4. Tập trungCó rất nhiều phiền nhiễu có thể mất thời gian quý giá. Tập trung và tập trung là khó khăn. Bật một số nhạc mà không có lời bài hát và bạn sẽ có thể tập trung khá tốt. Những gì bạn sẽ không thấy được bảo hiểmĐây là những công nghệ phổ biến nhưng không phải là một phần của kế hoạch nghiên cứu này:
Kế hoạch hàng ngàyKhóa học này đi qua rất nhiều môn học. Mỗi người có thể sẽ mất một vài ngày, hoặc thậm chí một tuần hoặc hơn. Nó phụ thuộc vào lịch trình của bạn. Mỗi ngày, lấy chủ đề tiếp theo trong danh sách, xem một số video về chủ đề đó và sau đó viết một triển khai cấu trúc dữ liệu hoặc thuật toán đó trong ngôn ngữ bạn đã chọn cho khóa học này. Bạn có thể xem mã của tôi ở đây:
Bạn không cần phải ghi nhớ mọi thuật toán. Bạn chỉ cần có khả năng hiểu nó đủ để có thể viết triển khai của riêng bạn. Thực hành câu hỏi mã hóa
Sau đó quay lại và đọc cái này. Tại sao bạn cần thực hành thực hiện các vấn đề lập trình:
Có một giới thiệu tuyệt vời cho giải quyết vấn đề giao tiếp, có phương pháp trong một cuộc phỏng vấn. Bạn cũng sẽ nhận được điều này từ các cuốn sách phỏng vấn lập trình, nhưng tôi đã tìm thấy điều này Viết mã trên bảng trắng hoặc giấy, không phải máy tính. Kiểm tra với một số đầu vào mẫu. Sau đó nhập nó và kiểm tra nó trên máy tính. Nếu bạn không có bảng trắng ở nhà, hãy chọn một tấm vẽ lớn từ một cửa hàng nghệ thuật. Bạn có thể ngồi trên ghế dài và luyện tập. Đây là "bảng trắng sofa" của tôi. Tôi đã thêm cây bút trong bức ảnh chỉ cho tỷ lệ. Nếu bạn sử dụng bút, bạn sẽ ước mình có thể xóa. Nhanh chóng lộn xộn. Tôi sử dụng bút chì và cục tẩy.I use a pencil and eraser. Thực hành câu hỏi mã hóa không phải là ghi nhớ câu trả lời cho các vấn đề lập trình. Vấn đề mã hóaĐừng quên sách phỏng vấn mã hóa chính của bạn ở đây. Giải quyết các vấn đề:
Mã hóa các video câu hỏi phỏng vấn:
Các trang web thách thức/thực hành:
Bắt đầu nàoĐược rồi, nói đủ, hãy học! Nhưng đừng quên làm vấn đề mã hóa từ trên cao trong khi bạn học! Phân tích độ phức tạp thuật toán / phân tích Big-O / Asmptotic
Chà, đó là đủ về điều đó. Khi bạn trải qua "bẻ khóa cuộc phỏng vấn mã hóa", có một chương về điều này và cuối cùng có một bài kiểm tra để xem liệu bạn có thể xác định được độ phức tạp thời gian chạy của các thuật toán khác nhau không. Đó là một siêu đánh giá và kiểm tra. Cấu trúc dữ liệu
Thêm kiến thức
Cây
is_binary_search_tree
Tóm lại, đây là một đại diện trực quan của 15 thuật toán sắp xếp. Nếu bạn cần thêm chi tiết về chủ đề này, hãy xem phần "Sắp xếp" chi tiết bổ sung về một số chủ đề Đồ thịĐồ thị có thể được sử dụng để thể hiện nhiều vấn đề trong khoa học máy tính, vì vậy phần này dài, giống như cây và phân loại.
Thậm chí nhiều kiến thức
Đánh giá cuối cùng
Video Sedgewick - Thuật toán II
Hướng dẫn chi tiết về cách thiết lập sơ yếu lý lịch của bạn từ đầu, viết nội dung sơ yếu lý lịch hiệu quả, tối ưu hóa nó và kiểm tra sơ yếu lý lịch của bạn
Các trang web để tìm việc làm
Các cuộc phỏng vấn giả:
Đang suy nghĩ khi cuộc phỏng vấn đếnHãy nghĩ về khoảng 20 câu hỏi phỏng vấn mà bạn sẽ nhận được, cùng với các dòng của các mục dưới đây. Có ít nhất một câu trả lời cho mỗi. Có một câu chuyện, không chỉ là dữ liệu, về một cái gì đó bạn đã hoàn thành.
Có câu hỏi cho người phỏng vấnMột số của tôi (tôi đã có thể biết câu trả lời, nhưng muốn ý kiến của họ hoặc quan điểm nhóm của họ):
Khi bạn đã có công việcCongratulations! Tiếp tục học hỏi. Bạn chưa bao giờ thực sự làm được.
Sách bổ sung
Thiết kế hệ thống, khả năng mở rộng, xử lý dữ liệuBạn có thể mong đợi các câu hỏi thiết kế hệ thống nếu bạn có hơn 4 năm kinh nghiệm.
Học thêm
Toán học rời rạc bởi iit ropar nptel
Bài giảng 16 | Lập trình trừu tượng (video)Shai Simonson, Aduni.org:
Khóa học khoa học máy tính
Thực hiện thuật toán
Giấy tờ
Thêm giấy tờ: 1.000 bài báoCC-BY-SA-4.0 |