Hướng dẫn javascript for technical interviews - javascript cho các cuộc phỏng vấn kỹ thuật
Tốt nghiệp khá sớm và có một vài cuộc phỏng vấn mã hóa sắp tới. Show
Nội dung chính ShowShow
Tôi chắc chắn cảm thấy thoải mái nhất với JS vì đó là ngôn ngữ mà tôi đã dành nhiều thời gian nhất, nhưng không chắc đây có phải là ngôn ngữ tốt nhất để sử dụng cho các cuộc phỏng vấn mã hóa hay không. Tôi có một số kinh nghiệm với Java và Python nhưng tôi không thành thạo họ như trong JS. Vì tôi có một vài tháng, tôi rất sẵn lòng đi sâu vào bất kỳ ngôn ngữ nào khác nếu cần thiết. Các bạn có thể chia sẻ kinh nghiệm hoặc suy nghĩ cá nhân của bạn với các cuộc phỏng vấn mã hóa / OAS với JS không? Xin chào, tôi cần một số gợi ý từ cộng đồng này- Bây giờ tôi đang ở năm cuối và sẽ bắt đầu chuẩn bị cho các cuộc phỏng vấn xin việc. Tôi về cơ bản bắt đầu thực hành các cấu trúc dữ liệu và thuật toán. Tôi là một nhà phát triển Stack đầy đủ chuyên về phát triển Frontend (React). Tôi sẽ nhắm mục tiêu vai trò nhà phát triển Full Stack (MERN) cho sự nghiệp của tôi. Tôi biết hầu hết mọi người sử dụng C ++/Java/Python để thực hiện DS+Algo nhưng vì tôi đang nhắm mục tiêu vai trò nhà phát triển Stack đầy đủ, tôi nghĩ đến việc sử dụng 0 để làm điều tương tự.Tôi không nghĩ rằng sử dụng C ++ sẽ từ chối tôi vì tôi sẽ sử dụng JS cho công việc hàng ngày của mình. Vì vậy, đây là câu hỏi của tôi- Tôi có nên tiếp tục và sử dụng JavaScript để thực hành DS+Algo để chuẩn bị các cuộc phỏng vấn việc làm không?Bất kỳ đề xuất/mẹo/tài nguyên nào sẽ được đánh giá cao 🙂 Xin đừng ngần ngại thảo luận/chia sẻ ý kiến/kinh nghiệm của bạn. Nó sẽ hữu ích cho tôi và những người khác có cùng một sự nhầm lẫn. Tóm lại, để làm tốt trong các cuộc phỏng vấn mã hóa: Quyết định ngôn ngữ lập trình Nghiên cứu các nguyên tắc cơ bản CS Do đó, tôi đã dành ba tháng qua để tìm ra cách cải thiện kỹ năng phỏng vấn mã hóa của mình và cuối cùng nhận được lời đề nghị từ các công ty công nghệ lớn như Google, Facebook, Airbnb, Lyft, Dropbox và nhiều hơn nữa.Google, Facebook, Airbnb, Lyft, Dropbox and more. Google, Facebook, Airbnb, Lyft, Dropbox and more. Trong bài đăng này, tôi sẽ chia sẻ những hiểu biết và mẹo tôi đạt được trên đường đi. Các ứng viên có kinh nghiệm cũng có thể mong đợi các câu hỏi thiết kế hệ thống, nhưng đó là phạm vi của bài đăng này. Nhiều khái niệm thuật toán được thử nghiệm trong các cuộc phỏng vấn mã hóa không phải là những gì tôi thường sử dụng tại nơi làm việc, nơi tôi là một kỹ sư đầu tiên (Web). Đương nhiên, tôi đã quên khá nhiều về các thuật toán và cấu trúc dữ liệu này, điều mà tôi đã học được chủ yếu trong những năm thứ nhất và năm thứ hai của tôi. Thật căng thẳng khi phải sản xuất mã (làm việc) trong một cuộc phỏng vấn, trong khi ai đó xem xét kỹ lưỡng mọi tổ hợp phím mà bạn thực hiện. Điều tồi tệ hơn là với tư cách là một người được phỏng vấn, bạn đã khuyến khích truyền đạt quá trình suy nghĩ của mình cho người phỏng vấn. Tôi đã từng nghĩ rằng việc có thể suy nghĩ, viết mã và giao tiếp đồng thời là một kỳ công không thể, cho đến khi tôi nhận ra rằng hầu hết mọi người chỉ không giỏi trong các cuộc phỏng vấn khi họ bắt đầu. Phỏng vấn là một kỹ năng mà bạn có thể trở nên tốt hơn bằng cách nghiên cứu, chuẩn bị và thực hành cho nó. Tìm kiếm công việc gần đây của tôi đã dẫn tôi vào hành trình cải thiện kỹ năng phỏng vấn mã hóa của tôi. Các kỹ sư trước thích nói về cách quá trình tuyển dụng hiện tại bị phá vỡ vì các cuộc phỏng vấn kỹ thuật có thể bao gồm các kỹ năng không liên quan đến phát triển mặt trước. Ví dụ, viết một thuật toán giải quyết mê cung và hợp nhất hai danh sách các số được sắp xếp. Là một kỹ sư đầu tiên, tôi có thể đồng cảm với họ. Mặt trước là một miền chuyên dụng trong đó các kỹ sư phải quan tâm đến nhiều vấn đề liên quan đến tính tương thích của trình duyệt, mô hình đối tượng tài liệu, hiệu suất JavaScript, bố cục CSS, v.v. Không phổ biến đối với các kỹ sư mặt trước để thực hiện một số thuật toán phức tạp được thử nghiệm trong các cuộc phỏng vấn. Tại các công ty như Facebook và Google, People là những kỹ sư phần mềm đầu tiên, các chuyên gia tên miền thứ hai. Thật không may, các quy tắc được đặt ra bởi các công ty, không phải các ứng cử viên. Có một sự nhấn mạnh cao về các khái niệm khoa học máy tính nói chung như thuật toán, mẫu thiết kế, cấu trúc dữ liệu; Kỹ năng cốt lõi mà một kỹ sư phần mềm tốt nên sở hữu. Nếu bạn muốn công việc, bạn phải chơi theo các quy tắc do các bậc thầy trò chơi đặt ra - cải thiện kỹ năng phỏng vấn mã hóa của bạn! Bài này được cấu trúc thành hai phần sau. Hãy thoải mái bỏ qua phần mà bạn quan tâm.
Nội dung cho bài viết này có thể được tìm thấy ở đây. Tôi sẽ cập nhật ở đó khi cần thiết. Nếu bạn quan tâm đến nội dung trước, hãy xem Sổ tay phỏng vấn trước của tôi ở đây. Chọn một ngôn ngữ lập trìnhTrước bất cứ điều gì khác, bạn cần chọn một ngôn ngữ lập trình cho cuộc phỏng vấn mã hóa thuật toán của bạn. Hầu hết các công ty sẽ cho phép bạn viết mã bằng ngôn ngữ bạn chọn. Ngoại lệ duy nhất tôi biết là Google. Họ cho phép các ứng cử viên của họ chỉ chọn từ Java, C ++, Python, Go hoặc JavaScript. Đối với hầu hết các phần, tôi khuyên bạn nên sử dụng một ngôn ngữ mà bạn cực kỳ quen thuộc, thay vì ngôn ngữ mới đối với bạn nhưng công ty sử dụng rộng rãi. Có một số ngôn ngữ phù hợp hơn các ngôn ngữ khác để phỏng vấn mã hóa. Sau đó, có một số mà bạn hoàn toàn muốn tránh. Từ kinh nghiệm của tôi với tư cách là một người phỏng vấn, hầu hết các ứng cử viên chọn Python hoặc Java. Các ngôn ngữ khác thường được chọn bao gồm JavaScript, Ruby và C ++. Tôi hoàn toàn sẽ tránh các ngôn ngữ cấp thấp hơn như C hoặc GO, đơn giản vì chúng thiếu các hàm thư viện tiêu chuẩn và cấu trúc dữ liệu. Cá nhân, Python là lựa chọn thực tế của tôi cho các thuật toán mã hóa trong các cuộc phỏng vấn. Nó ngắn gọn và có một thư viện lớn các chức năng và cấu trúc dữ liệu. Một trong những lý do hàng đầu tôi đề nghị Python là nó sử dụng API nhất quán hoạt động trên các cấu trúc dữ liệu khác nhau, chẳng hạn như 1, 2 và ký hiệu cắt trên các chuỗi (chuỗi, danh sách và bộ dữ liệu). Nhận phần tử cuối cùng trong một chuỗi là 3 và đảo ngược nó chỉ đơn giản là 4. Bạn có thể đạt được rất nhiều với cú pháp tối thiểu trong Python.Java cũng là một lựa chọn tốt. Nhưng bởi vì bạn sẽ phải liên tục khai báo các loại trong mã của mình, điều đó có nghĩa là nhập thêm phím phím. Điều này sẽ làm chậm tốc độ mà bạn mã và nhập. Vấn đề này sẽ rõ ràng hơn khi bạn phải viết trên bảng trắng trong các cuộc phỏng vấn tại chỗ. Những lý do để chọn hoặc không chọn C ++ tương tự như Java. Cuối cùng, Python, Java và C ++ là những lựa chọn tốt. Nếu bạn đã sử dụng Java một thời gian và không có thời gian để làm quen với một ngôn ngữ khác, tôi khuyên bạn nên gắn bó với Java thay vì nhặt Python từ đầu. Điều này giúp bạn tránh phải sử dụng một ngôn ngữ cho công việc và một ngôn ngữ khác để phỏng vấn. Hầu hết thời gian, nút cổ chai là trong suy nghĩ và không phải là văn bản. Một ngoại lệ đối với quy ước cho phép ứng viên chọn bất kỳ ngôn ngữ lập trình nào mà họ muốn là khi cuộc phỏng vấn dành cho vị trí dành riêng cho miền, chẳng hạn như các vai trò của Front-end, iOS hoặc Android Engineer. Bạn cần phải làm quen với các thuật toán mã hóa trong JavaScript, Objective-C, Swift và Java, tương ứng. Nếu bạn cần sử dụng cấu trúc dữ liệu mà ngôn ngữ không hỗ trợ, chẳng hạn như hàng đợi hoặc đống trong JavaScript, hãy hỏi người phỏng vấn nếu bạn có thể cho rằng bạn có cấu trúc dữ liệu thực hiện các phương pháp nhất định với độ phức tạp thời gian được chỉ định. Nếu việc thực hiện cấu trúc dữ liệu đó không quan trọng để giải quyết vấn đề, người phỏng vấn thường sẽ cho phép nó. Trong thực tế, nhận thức được các cấu trúc dữ liệu hiện có và lựa chọn các cấu trúc thích hợp để giải quyết vấn đề trong tay là quan trọng hơn là biết các chi tiết thực hiện phức tạp. Xem lại CS101 của bạnNếu bạn đã ra khỏi trường đại học một thời gian, rất nên xem xét các nguyên tắc cơ bản của CS. Tôi thích xem lại nó khi tôi thực hành. Tôi quét qua các ghi chú của mình từ trường đại học và sửa đổi các thuật toán khác nhau khi tôi làm việc về các vấn đề thuật toán từ LeetCode và phá vỡ cuộc phỏng vấn mã hóa. Nếu bạn quan tâm đến cách các cấu trúc dữ liệu được triển khai, hãy xem Lago, một kho lưu trữ GitHub chứa các cấu trúc dữ liệu và các ví dụ thuật toán trong JavaScript. GitHub - Yangshun/Lago: 📕 Cấu trúc dữ liệu và thư viện thuật toán trong TypeScript Cấu trúc dữ liệu và thư viện thuật toán trong TypeScript - GitHub - Yangshun/Lago: 📕 Cấu trúc dữ liệu và thư viện thuật toán trong TypeScript YangshungithubGitHubGitHub Làm chủ thông qua thực hànhTiếp theo, có được sự quen thuộc và làm chủ các thuật toán và cấu trúc dữ liệu trong ngôn ngữ lập trình đã chọn của bạn. Thực hành và giải quyết các câu hỏi thuật toán bằng ngôn ngữ đã chọn của bạn. Trong khi bẻ khóa cuộc phỏng vấn mã hóa là một tài nguyên tốt, tôi thích giải quyết các vấn đề bằng cách gõ mã, để nó chạy và nhận phản hồi tức thì. Có nhiều thẩm phán trực tuyến khác nhau, chẳng hạn như LeetCode, Hackerrank và CodeForces để bạn thực hành các câu hỏi trực tuyến và làm quen với ngôn ngữ. Từ kinh nghiệm của tôi, các câu hỏi Leetcode tương tự như các câu hỏi được hỏi trong các cuộc phỏng vấn. Các câu hỏi của HackerRank và CodeForces giống với các câu hỏi trong chương trình cạnh tranh. Nếu bạn thực hành đủ các câu hỏi LeetCode, có một cơ hội tốt là bạn sẽ thấy hoặc hoàn thành một trong những câu hỏi phỏng vấn thực tế của bạn (hoặc một số biến thể của nó). Tìm hiểu và hiểu sự phức tạp về thời gian và không gian của các hoạt động chung trong ngôn ngữ đã chọn của bạn. Đối với Python, trang này sẽ có ích. Ngoài ra, hãy tìm hiểu về thuật toán sắp xếp cơ bản đang được sử dụng trong hàm ngôn ngữ ____ ____10 và độ phức tạp về thời gian và không gian của nó (trong Python It Lốc Timsort, là một lai tạo). Sau khi hoàn thành một câu hỏi trên LeetCode, tôi thường thêm độ phức tạp về thời gian và không gian của mã bằng văn bản dưới dạng nhận xét trên cơ thể chức năng. Tôi sử dụng các ý kiến để nhắc nhở bản thân để truyền đạt phân tích thuật toán sau khi tôi hoàn thành việc thực hiện. Đọc về phong cách mã hóa được đề xuất cho ngôn ngữ của bạn và gắn bó với nó. Nếu bạn chọn Python, hãy tham khảo Hướng dẫn kiểu PEP 8. Nếu bạn chọn Java, hãy tham khảo Hướng dẫn kiểu Java của Google. Tìm hiểu về và quen thuộc với những cạm bẫy và cảnh báo ngôn ngữ phổ biến. Nếu bạn chỉ ra chúng trong cuộc phỏng vấn và tránh rơi vào họ, bạn sẽ kiếm được điểm thưởng và gây ấn tượng với người phỏng vấn, bất kể người phỏng vấn có quen thuộc với ngôn ngữ hay không. Có được một tiếp xúc rộng rãi với các câu hỏi từ các chủ đề khác nhau. Trong nửa sau của bài viết, tôi đề cập đến các chủ đề thuật toán và các câu hỏi hữu ích cho mỗi chủ đề để thực hành. Thực hiện khoảng 100 đến 200 câu hỏi LeetCode, và bạn nên tốt. Nếu bạn thích các khóa học trong đó việc học có cấu trúc hơn, đây là một vài khuyến nghị. Không có cách nào là tham gia các khóa học trực tuyến là phải để vượt qua các cuộc phỏng vấn.In no way is taking online courses a must in order to pass interviews.In no way is taking online courses a must in order to pass interviews.
Và tất nhiên, thực hành, thực hành, và thực hành nhiều hơn! Các giai đoạn của một cuộc phỏng vấn mã hóaXin chúc mừng, bạn đã sẵn sàng để đặt các kỹ năng của mình để thực hành! Trong một cuộc phỏng vấn mã hóa, bạn sẽ được người phỏng vấn đưa ra một câu hỏi kỹ thuật. Bạn sẽ viết mã trong một trình soạn thảo hợp tác thời gian thực (màn hình điện thoại) hoặc trên bảng trắng (tại chỗ) và có 30 đến 45 phút để giải quyết vấn đề. Đây là nơi mà niềm vui thực sự bắt đầu! Người phỏng vấn của bạn sẽ tìm cách thấy rằng bạn đáp ứng các yêu cầu của vai trò. Tùy thuộc vào bạn để cho họ thấy rằng bạn có các kỹ năng. Ban đầu, có thể cảm thấy kỳ lạ khi nói chuyện trong khi bạn viết mã, vì hầu hết các lập trình viên không tạo thói quen giải thích to suy nghĩ của họ trong khi họ đang gõ mã. Tuy nhiên, thật khó để người phỏng vấn biết bạn đang nghĩ gì khi chỉ nhìn vào mã của bạn. Nếu bạn truyền đạt cách tiếp cận của bạn cho người phỏng vấn ngay cả trước khi bạn bắt đầu mã, bạn có thể xác thực cách tiếp cận của bạn với họ. Bằng cách này, hai bạn có thể đồng ý về một cách tiếp cận chấp nhận được. Chuẩn bị cho một cuộc phỏng vấn từ xaĐối với màn hình điện thoại và các cuộc phỏng vấn từ xa, có một tờ giấy và bút hoặc bút chì để ghi lại bất kỳ ghi chú hoặc sơ đồ nào. Nếu bạn được đưa ra một câu hỏi về cây và đồ thị, nó thường giúp nếu bạn vẽ các ví dụ về cấu trúc dữ liệu. Sử dụng tai nghe. Hãy chắc chắn rằng bạn đang ở trong một môi trường yên tĩnh. Bạn không muốn cầm điện thoại bằng một tay và gõ vào tay kia. Cố gắng tránh sử dụng loa. Nếu phản hồi là xấu, giao tiếp được thực hiện khó khăn hơn. Phải lặp lại bản thân sẽ chỉ dẫn đến việc mất thời gian quý giá. Phải làm gì khi bạn nhận được câu hỏiNhiều ứng cử viên bắt đầu mã hóa ngay khi họ nghe câu hỏi. Đó thường là một sai lầm lớn. Đầu tiên, hãy dành một chút thời gian và lặp lại câu hỏi cho người phỏng vấn để đảm bảo rằng bạn hiểu câu hỏi. Nếu bạn hiểu sai câu hỏi, thì người phỏng vấn có thể làm rõ. Luôn luôn tìm kiếm sự làm rõ về câu hỏi khi nghe nó, ngay cả khi bạn nghĩ rằng nó rõ ràng. Bạn có thể phát hiện ra rằng bạn đã bỏ lỡ một cái gì đó. Nó cũng cho người phỏng vấn biết rằng bạn chú ý đến chi tiết. Xem xét hỏi các câu hỏi sau.
Sau khi bạn đã làm rõ đủ phạm vi và ý định của vấn đề, hãy giải thích cách tiếp cận cấp cao của bạn với người phỏng vấn, ngay cả khi đó là một giải pháp ngây thơ. Nếu bạn bị mắc kẹt, hãy xem xét các cách tiếp cận khác nhau và giải thích to tại sao nó có thể hoặc không hoạt động. Đôi khi người phỏng vấn của bạn có thể bỏ gợi ý và dẫn bạn đến con đường đúng. Bắt đầu với một cách tiếp cận vũ phu. Truyền đạt nó cho người phỏng vấn. Giải thích sự phức tạp về thời gian và không gian và làm rõ lý do tại sao nó xấu. Không có khả năng cách tiếp cận vũ phu sẽ là phương pháp mà bạn sẽ mã hóa. Tại thời điểm này, người phỏng vấn thường sẽ xuất hiện đáng sợ, chúng ta có thể làm tốt hơn không? câu hỏi. Điều này có nghĩa là họ đang tìm kiếm một cách tiếp cận tối ưu hơn. Đây thường là phần khó nhất của cuộc phỏng vấn. Nói chung, hãy tìm kiếm công việc lặp đi lặp lại và cố gắng tối ưu hóa chúng bằng cách lưu trữ kết quả tính toán ở đâu đó. Tham khảo nó sau, thay vì tính toán lại tất cả. Tôi cung cấp một số lời khuyên về giải quyết các câu hỏi cụ thể cụ thể của chủ đề dưới đây. Chỉ bắt đầu mã hóa sau khi bạn và người phỏng vấn của bạn đã đồng ý về cách tiếp cận và bạn đã được bật đèn xanh. Bắt đầu mãSử dụng một phong cách tốt để viết mã của bạn. Đọc mã được viết bởi người khác thường không phải là một nhiệm vụ thú vị. Đọc mã định dạng khủng khiếp được viết bởi người khác thậm chí còn tồi tệ hơn. Mục tiêu của bạn là làm cho người phỏng vấn của bạn hiểu mã của bạn để họ có thể nhanh chóng đánh giá xem mã của bạn có thực hiện được những gì nó được sử dụng và nếu nó giải quyết một vấn đề nhất định. Sử dụng tên biến rõ ràng và tránh các tên là chữ cái đơn, trừ khi chúng được lặp lại. Tuy nhiên, nếu bạn đang mã hóa trên bảng trắng, tránh sử dụng tên biến dài dòng. Điều này làm giảm số lượng văn bản bạn sẽ phải làm. Luôn giải thích cho người phỏng vấn những gì bạn đang viết hoặc gõ. Đây không phải là về đọc, nguyên văn, cho người phỏng vấn mã bạn đang sản xuất. Nói về phần của mã bạn hiện đang thực hiện ở cấp độ cao hơn. Giải thích tại sao nó được viết như vậy, và những gì nó đang cố gắng đạt được. Khi bạn sao chép và dán vào mã, hãy xem xét liệu nó có cần thiết không. Đôi khi nó là, đôi khi nó không phải là. Nếu bạn thấy mình sao chép và dán một đoạn mã lớn kéo dài nhiều dòng, có lẽ bạn có thể tái cấu trúc mã bằng cách trích xuất các dòng đó thành một hàm. Nếu nó chỉ là một dòng bạn đã sao chép, thường thì nó vẫn ổn. Tuy nhiên, hãy nhớ thay đổi các biến tương ứng trong dòng mã được sao chép của bạn khi có liên quan. Sao chép và dán lỗi là một nguồn lỗi phổ biến, ngay cả trong mã hóa hàng ngày! Sau khi mã hóaSau khi bạn đã hoàn thành mã hóa, đừng thông báo ngay cho người phỏng vấn rằng bạn đã hoàn thành. Trong hầu hết các trường hợp, mã của bạn thường không hoàn hảo. Nó có thể chứa lỗi hoặc lỗi cú pháp. Những gì bạn cần làm là xem lại mã của bạn. Đầu tiên, hãy xem qua mã của bạn từ đầu đến cuối. Nhìn vào nó như thể nó được viết bởi người khác, và bạn đang nhìn thấy nó lần đầu tiên và cố gắng phát hiện ra lỗi trong đó. Đó chính xác là những gì người phỏng vấn của bạn sẽ làm. Xem xét và khắc phục bất kỳ vấn đề bạn có thể tìm thấy. Tiếp theo, đưa ra các trường hợp kiểm tra nhỏ và bước qua mã (không phải thuật toán của bạn) với đầu vào mẫu đó. Người phỏng vấn thích nó khi bạn đọc suy nghĩ của họ. Những gì họ thường làm sau khi bạn đã hoàn thành mã hóa là giúp bạn viết bài kiểm tra. Đó là một điểm cộng rất lớn nếu bạn viết bài kiểm tra cho mã của mình ngay cả trước khi họ nhắc bạn làm như vậy. Bạn nên mô phỏng một trình gỡ lỗi khi bước qua mã của bạn. Ghi lại hoặc cho họ biết các giá trị của một số biến nhất định khi bạn đi bộ người phỏng vấn thông qua các dòng mã. Nếu có những đoạn mã trùng lặp lớn trong giải pháp của bạn, hãy tái cấu trúc mã để hiển thị cho người phỏng vấn rằng bạn đánh giá cao mã hóa chất lượng. Ngoài ra, hãy chú ý đến những nơi bạn có thể đánh giá ngắn mạch. Cuối cùng, cung cấp cho sự phức tạp về thời gian và không gian của mã của bạn và giải thích lý do tại sao nó như vậy. Bạn có thể chú thích các phần mã của mình với sự phức tạp về thời gian và không gian khác nhau để thể hiện sự hiểu biết của bạn về mã. Bạn thậm chí có thể cung cấp API của ngôn ngữ lập trình đã chọn. Giải thích bất kỳ sự đánh đổi nào trong phương pháp hiện tại của bạn so với các phương pháp thay thế, có thể về thời gian và không gian. Nếu người phỏng vấn của bạn hài lòng với giải pháp, cuộc phỏng vấn thường kết thúc ở đây. Người phỏng vấn cũng hỏi bạn các câu hỏi mở rộng, chẳng hạn như cách bạn xử lý vấn đề nếu toàn bộ đầu vào quá lớn để phù hợp với bộ nhớ hoặc nếu đầu vào đến dưới dạng luồng. Đây là một câu hỏi tiếp theo phổ biến tại Google, nơi họ quan tâm rất nhiều về quy mô. Câu trả lời thường là cách tiếp cận phân chia và chinh phục-thực hiện xử lý phân tán dữ liệu và chỉ đọc một số khối đầu vào từ đĩa vào bộ nhớ, viết lại đầu ra vào đĩa và kết hợp chúng sau. Thực hành với các cuộc phỏng vấn giảCác bước được đề cập ở trên có thể được diễn tập nhiều lần cho đến khi bạn hoàn toàn nội tâm hóa chúng và chúng trở thành bản chất thứ hai cho bạn. Một cách tốt để thực hành là hợp tác với một người bạn và thay phiên nhau phỏng vấn lẫn nhau. Một nguồn tài nguyên tuyệt vời để chuẩn bị cho các cuộc phỏng vấn mã hóa là phỏng vấn. Nền tảng này cung cấp các cuộc phỏng vấn thực hành miễn phí và ẩn danh với các kỹ sư Google và Facebook, điều này có thể dẫn đến việc làm và thực tập thực sự. Nhờ là ẩn danh trong cuộc phỏng vấn, quá trình phỏng vấn bao gồm là không thiên vị và rủi ro thấp. Vào cuối cuộc phỏng vấn, cả người phỏng vấn và người được phỏng vấn có thể cung cấp phản hồi cho nhau với mục đích giúp nhau cải thiện. Làm tốt trong các cuộc phỏng vấn giả sẽ mở khóa trang việc làm cho các ứng viên và cho phép họ đặt cuộc phỏng vấn (cũng ẩn danh) với các công ty hàng đầu như Uber, Lyft, Quora, Asana, v.v. Đối với những người mới tham gia các cuộc phỏng vấn mã hóa, một cuộc phỏng vấn demo có thể được xem trên trang web này. Lưu ý rằng trang web này yêu cầu người dùng đăng nhập. Tôi đã sử dụng Phỏng vấn.io, cả như một người phỏng vấn và người được phỏng vấn. Kinh nghiệm là tuyệt vời. Aline Lerner, Giám đốc điều hành và đồng sáng lập của Phỏng vấn.io, và nhóm của cô rất đam mê cách mạng hóa quá trình phỏng vấn mã hóa và giúp các ứng viên cải thiện kỹ năng phỏng vấn của họ. Cô cũng đã xuất bản một số bài viết liên quan đến phỏng vấn mã hóa trên blog phỏng vấn.io. Tôi khuyên bạn nên đăng ký càng sớm càng tốt với phỏng vấn. Một nền tảng khác cho phép bạn thực hành các cuộc phỏng vấn mã hóa là Pramp. Khi phỏng vấn.io phù hợp với những người tìm việc tiềm năng với những người phỏng vấn mã hóa dày dạn, Pramp có một cách tiếp cận khác. Pramp kết hợp bạn với một người ngang hàng khác cũng là người tìm việc. Hai bạn thay phiên nhau đảm nhận vai trò của người phỏng vấn và người được phỏng vấn. Pramp cũng chuẩn bị các câu hỏi, và cung cấp các giải pháp và lời nhắc để hướng dẫn người được phỏng vấn. Đi ra ngoài và chinh phụcSau khi thực hiện một số lượng lớn các câu hỏi về LeetCode và thực hành đủ thực hiện các cuộc phỏng vấn giả, hãy đi ra ngoài và đưa các kỹ năng phỏng vấn mới tìm thấy của bạn để thử nghiệm. Áp dụng cho các công ty yêu thích của bạn hoặc, tốt hơn là vẫn nhận được sự giới thiệu từ bạn bè của bạn làm việc cho các công ty đó. Giới thiệu có xu hướng được chú ý sớm hơn và có tỷ lệ phản hồi nhanh hơn so với việc áp dụng mà không cần giới thiệu. Chúc may mắn! Mẹo thực tế cho các câu hỏi mã hóaPhần này đi sâu vào các mẹo thực tế cho các chủ đề cụ thể của các thuật toán và cấu trúc dữ liệu, xuất hiện thường xuyên trong các câu hỏi mã hóa. Nhiều câu hỏi thuật toán liên quan đến các kỹ thuật có thể được áp dụng cho các câu hỏi có tính chất tương tự. Bạn càng có nhiều kỹ thuật trong kho vũ khí của mình, cơ hội của bạn để vượt qua cuộc phỏng vấn càng lớn. Đối với mỗi chủ đề, cũng có một danh sách các câu hỏi được đề xuất, có giá trị để thành thạo các khái niệm cốt lõi. Một số câu hỏi chỉ có sẵn với một thuê bao trả tiền cho LeetCode, theo tôi là hoàn toàn đáng giá nếu nó giúp bạn có một công việc. Mẹo chungLuôn xác nhận đầu vào trước. Kiểm tra các đầu vào không hợp lệ, trống rỗng, âm hoặc khác nhau. Không bao giờ cho rằng bạn được cung cấp các tham số hợp lệ. Ngoài ra, làm rõ với người phỏng vấn xem bạn có thể giả định đầu vào hợp lệ (thường là có), có thể tiết kiệm thời gian của bạn từ việc viết mã thực hiện xác thực đầu vào. Có bất kỳ yêu cầu hoặc ràng buộc phức tạp về thời gian và không gian? Kiểm tra các lỗi ngoài một. Trong các ngôn ngữ không có sự ép buộc loại tự động, hãy kiểm tra xem việc kết hợp các giá trị có cùng loại không: ________ 11, ________ 12 và 3.Sau khi bạn hoàn thành mã của mình, hãy sử dụng một vài đầu vào ví dụ để kiểm tra giải pháp của bạn. Là thuật toán được cho là chạy nhiều lần, có lẽ trên máy chủ web? Nếu có, đầu vào có thể có thể được xử lý trước để cải thiện hiệu quả trong mỗi cuộc gọi API. Sử dụng hỗn hợp các mô hình lập trình chức năng và bắt buộc:
Nói chung, để cải thiện tốc độ của một chương trình, chúng ta có thể chọn sử dụng cấu trúc dữ liệu hoặc thuật toán phù hợp hoặc để sử dụng nhiều bộ nhớ hơn. Nó có một không gian cổ điển và giao dịch thời gian. Cấu trúc dữ liệu là vũ khí của bạn. Chọn vũ khí phù hợp cho trận chiến đúng là chìa khóa để chiến thắng. Biết các điểm mạnh của từng cấu trúc dữ liệu và độ phức tạp về thời gian cho các hoạt động khác nhau của nó. Cấu trúc dữ liệu có thể được tăng cường để đạt được độ phức tạp thời gian hiệu quả giữa các hoạt động khác nhau. Ví dụ, HashMap có thể được sử dụng cùng với danh sách liên kết gấp đôi để đạt được độ phức tạp thời gian O (1) cho cả hoạt động 4 và 5 trong bộ đệm LRU.Hashmap có lẽ là cấu trúc dữ liệu được sử dụng phổ biến nhất cho các câu hỏi thuật toán. Nếu bạn bị mắc kẹt trong một câu hỏi, phương sách cuối cùng của bạn có thể là liệt kê thông qua các cấu trúc dữ liệu có thể (rất may có rất nhiều điều đó) và xem xét liệu mỗi người trong số chúng có thể được áp dụng cho vấn đề hay không. Điều này đã làm việc cho tôi đôi khi. Nếu bạn đang cắt các góc trong mã của mình, hãy nói lên điều đó cho người phỏng vấn của bạn và giải thích cho họ những gì bạn sẽ làm ngoài cài đặt phỏng vấn (không có hạn chế về thời gian). Ví dụ: giải thích rằng bạn sẽ viết một regex để phân tích một chuỗi thay vì sử dụng 6, không bao gồm tất cả các trường hợp.Sự phối hợpGhi chúMảng và chuỗi được coi là chuỗi (một chuỗi là một chuỗi các ký tự). Có những lời khuyên để xử lý cả mảng và chuỗi, sẽ được đề cập ở đây. Có giá trị trùng lặp trong chuỗi không? Chúng sẽ ảnh hưởng đến câu trả lời? Kiểm tra trình tự ra khỏi giới hạn. Hãy chú ý về việc cắt hoặc nối các chuỗi trong mã của bạn. Thông thường, các chuỗi cắt và nối đòi hỏi thời gian O (N). Sử dụng các chỉ số bắt đầu và kết thúc để phân định một subarray hoặc con nếu có thể. Đôi khi bạn đi qua trình tự từ phía bên phải chứ không phải từ bên trái. Làm chủ kỹ thuật cửa sổ trượt áp dụng cho nhiều vấn đề về chuỗi con hoặc subarray. Khi bạn được cung cấp hai chuỗi để xử lý, người ta thường có một chỉ số trên mỗi chuỗi để đi qua. Ví dụ, chúng tôi sử dụng cùng một cách tiếp cận để hợp nhất hai mảng được sắp xếp. Trường hợp góc
MảngGhi chúCác mảng được sắp xếp hoặc sắp xếp một phần? Nếu đó là một trong hai, một số hình thức tìm kiếm nhị phân là có thể. Điều này thường có nghĩa là người phỏng vấn đang tìm kiếm một giải pháp nhanh hơn O (n). Bạn có thể sắp xếp mảng không? Đôi khi sắp xếp mảng đầu tiên có thể đơn giản hóa đáng kể vấn đề. Hãy chắc chắn rằng thứ tự của các phần tử mảng không cần phải được bảo tồn trước khi cố gắng sắp xếp nó. Đối với các câu hỏi trong đó việc tổng kết hoặc nhân của Subarray có liên quan, tính toán trước bằng cách sử dụng băm hoặc tiền tố, tổng hậu tố hoặc sản phẩm có thể hữu ích. Nếu bạn được cung cấp một chuỗi và người phỏng vấn yêu cầu không gian O (1), có thể sử dụng chính mảng làm bảng băm. Ví dụ: nếu mảng chỉ có các giá trị từ 1 đến n, trong đó n là độ dài của mảng, hãy phủ nhận giá trị ở chỉ số đó (trừ một) để chỉ ra sự hiện diện của số đó. Thực hành câu hỏi
Nhị phânLiên kết nghiên cứu
Ghi chúCác mảng được sắp xếp hoặc sắp xếp một phần? Nếu đó là một trong hai, một số hình thức tìm kiếm nhị phân là có thể. Điều này thường có nghĩa là người phỏng vấn đang tìm kiếm một giải pháp nhanh hơn O (n). Bạn có thể sắp xếp mảng không? Đôi khi sắp xếp mảng đầu tiên có thể đơn giản hóa đáng kể vấn đề. Hãy chắc chắn rằng thứ tự của các phần tử mảng không cần phải được bảo tồn trước khi cố gắng sắp xếp nó.
Trường hợp góc
Thực hành câu hỏi
Subarray sản phẩm tối đaLiên kết nghiên cứu
Ghi chúCác mảng được sắp xếp hoặc sắp xếp một phần? Nếu đó là một trong hai, một số hình thức tìm kiếm nhị phân là có thể. Điều này thường có nghĩa là người phỏng vấn đang tìm kiếm một giải pháp nhanh hơn O (n). Bạn có thể sắp xếp mảng không? Đôi khi sắp xếp mảng đầu tiên có thể đơn giản hóa đáng kể vấn đề. Hãy chắc chắn rằng thứ tự của các phần tử mảng không cần phải được bảo tồn trước khi cố gắng sắp xếp nó. Đối với các câu hỏi trong đó việc tổng kết hoặc nhân của Subarray có liên quan, tính toán trước bằng cách sử dụng băm hoặc tiền tố, tổng hậu tố hoặc sản phẩm có thể hữu ích. Thực hành câu hỏi
Bit, byte, xây dựng với nhị phânGhi chúCác mảng được sắp xếp hoặc sắp xếp một phần? Nếu đó là một trong hai, một số hình thức tìm kiếm nhị phân là có thể. Điều này thường có nghĩa là người phỏng vấn đang tìm kiếm một giải pháp nhanh hơn O (n). Bạn có thể sắp xếp mảng không? Đôi khi sắp xếp mảng đầu tiên có thể đơn giản hóa đáng kể vấn đề. Hãy chắc chắn rằng thứ tự của các phần tử mảng không cần phải được bảo tồn trước khi cố gắng sắp xếp nó. Đối với các câu hỏi trong đó việc tổng kết hoặc nhân của Subarray có liên quan, tính toán trước bằng cách sử dụng băm hoặc tiền tố, tổng hậu tố hoặc sản phẩm có thể hữu ích.Liên kết nghiên cứu
Ghi chúCác mảng được sắp xếp hoặc sắp xếp một phần? Nếu đó là một trong hai, một số hình thức tìm kiếm nhị phân là có thể. Điều này thường có nghĩa là người phỏng vấn đang tìm kiếm một giải pháp nhanh hơn O (n). Bạn có thể sắp xếp mảng không? Đôi khi sắp xếp mảng đầu tiên có thể đơn giản hóa đáng kể vấn đề. Hãy chắc chắn rằng thứ tự của các phần tử mảng không cần phải được bảo tồn trước khi cố gắng sắp xếp nó.
Hai tổng Thời gian tốt nhất để mua và bán cổ phiếu
Subarray sản phẩm tối đa Khi đi ngang qua ma trận, luôn đảm bảo rằng vị trí tiếp theo của bạn nằm trong ranh giới của ma trận. Nhiều mẹo để thực hiện DFS trên ma trận có thể được tìm thấy ở đây. Một mẫu đơn giản để thực hiện DFS trên ma trận xuất hiện một cái gì đó như thế này:
Trường hợp góc
Thực hành câu hỏi
Đồ thị trốngGhi chúCác mảng được sắp xếp hoặc sắp xếp một phần? Nếu đó là một trong hai, một số hình thức tìm kiếm nhị phân là có thể. Điều này thường có nghĩa là người phỏng vấn đang tìm kiếm một giải pháp nhanh hơn O (n). Bạn có thể sắp xếp mảng không? Đôi khi sắp xếp mảng đầu tiên có thể đơn giản hóa đáng kể vấn đề. Hãy chắc chắn rằng thứ tự của các phần tử mảng không cần phải được bảo tồn trước khi cố gắng sắp xếp nó. 2.Đối với các câu hỏi trong đó việc tổng kết hoặc nhân của Subarray có liên quan, tính toán trước bằng cách sử dụng băm hoặc tiền tố, tổng hậu tố hoặc sản phẩm có thể hữu ích. Nếu bạn được cung cấp một chuỗi và người phỏng vấn yêu cầu không gian O (1), có thể sử dụng chính mảng làm bảng băm. Ví dụ: nếu mảng chỉ có các giá trị từ 1 đến n, trong đó n là độ dài của mảng, hãy phủ nhận giá trị ở chỉ số đó (trừ một) để chỉ ra sự hiện diện của số đó. Thực hành câu hỏiHai tổng Thời gian tốt nhất để mua và bán cổ phiếu
Trường hợp góc
Thực hành câu hỏi
Subarray tối đaGhi chúCác mảng được sắp xếp hoặc sắp xếp một phần? Nếu đó là một trong hai, một số hình thức tìm kiếm nhị phân là có thể. Điều này thường có nghĩa là người phỏng vấn đang tìm kiếm một giải pháp nhanh hơn O (n). Bạn có thể sắp xếp mảng không? Đôi khi sắp xếp mảng đầu tiên có thể đơn giản hóa đáng kể vấn đề. Hãy chắc chắn rằng thứ tự của các phần tử mảng không cần phải được bảo tồn trước khi cố gắng sắp xếp nó. 2.Đối với các câu hỏi trong đó việc tổng kết hoặc nhân của Subarray có liên quan, tính toán trước bằng cách sử dụng băm hoặc tiền tố, tổng hậu tố hoặc sản phẩm có thể hữu ích. Nếu bạn được cung cấp một chuỗi và người phỏng vấn yêu cầu không gian O (1), có thể sử dụng chính mảng làm bảng băm. Ví dụ: nếu mảng chỉ có các giá trị từ 1 đến n, trong đó n là độ dài của mảng, hãy phủ nhận giá trị ở chỉ số đó (trừ một) để chỉ ra sự hiện diện của số đó. Thực hành câu hỏiHai tổng Thời gian tốt nhất để mua và bán cổ phiếu Đồ thị trống
Đồ thị bản sao
Trường hợp góc
Thực hành câu hỏi
Số lượng các thành phần được kết nối trong một biểu đồ không mong muốnGhi chúCâu hỏi khoảng là câu hỏi đưa ra một mảng mảng hai phần tử (một khoảng). Hai giá trị đại diện cho một giá trị bắt đầu và một giá trị cuối. Các câu hỏi khoảng được coi là một phần của họ mảng, nhưng chúng liên quan đến một số kỹ thuật phổ biến. Do đó, họ có phần đặc biệt của riêng họ. Một ví dụ về một mảng khoảng: 2.Các câu hỏi khoảng thời gian có thể là khó khăn cho những người không có kinh nghiệm với họ. Điều này là do số lượng trường hợp tuyệt đối để xem xét khi các mảng khoảng thời gian trùng nhau. Làm rõ với người phỏng vấn xem 3 và 4 có được coi là khoảng thời gian chồng chéo hay không, bởi vì nó ảnh hưởng đến cách bạn sẽ viết séc bình đẳng của mình.Nếu câu hỏi yêu cầu thực hiện một nhà điều hành như Power, Squareroot hoặc Division, và nó nhanh hơn O (N), tìm kiếm nhị phân thường là cách tiếp cận. Một số công thức phổ biến
Trường hợp góc
Thực hành câu hỏi
Ma trậnGhi chúCâu hỏi khoảng là câu hỏi đưa ra một mảng mảng hai phần tử (một khoảng). Hai giá trị đại diện cho một giá trị bắt đầu và một giá trị cuối. Các câu hỏi khoảng được coi là một phần của họ mảng, nhưng chúng liên quan đến một số kỹ thuật phổ biến. Do đó, họ có phần đặc biệt của riêng họ. Một ví dụ về một mảng khoảng:
6Trường hợp góc
Thực hành câu hỏi
Câu hỏi khoảng là câu hỏi đưa ra một mảng mảng hai phần tử (một khoảng). Hai giá trị đại diện cho một giá trị bắt đầu và một giá trị cuối. Các câu hỏi khoảng được coi là một phần của họ mảng, nhưng chúng liên quan đến một số kỹ thuật phổ biến. Do đó, họ có phần đặc biệt của riêng họ.Ghi chúCâu hỏi khoảng là câu hỏi đưa ra một mảng mảng hai phần tử (một khoảng). Hai giá trị đại diện cho một giá trị bắt đầu và một giá trị cuối. Các câu hỏi khoảng được coi là một phần của họ mảng, nhưng chúng liên quan đến một số kỹ thuật phổ biến. Do đó, họ có phần đặc biệt của riêng họ. Một ví dụ về một mảng khoảng: Các câu hỏi khoảng thời gian có thể là khó khăn cho những người không có kinh nghiệm với họ. Điều này là do số lượng trường hợp tuyệt đối để xem xét khi các mảng khoảng thời gian trùng nhau. Làm rõ với người phỏng vấn xem 3 và 4 có được coi là khoảng thời gian chồng chéo hay không, bởi vì nó ảnh hưởng đến cách bạn sẽ viết séc bình đẳng của mình.Thực hành câu hỏi
Ma trậnGhi chúCâu hỏi khoảng là câu hỏi đưa ra một mảng mảng hai phần tử (một khoảng). Hai giá trị đại diện cho một giá trị bắt đầu và một giá trị cuối. Các câu hỏi khoảng được coi là một phần của họ mảng, nhưng chúng liên quan đến một số kỹ thuật phổ biến. Do đó, họ có phần đặc biệt của riêng họ. Một ví dụ về một mảng khoảng: Nhiều trò chơi dựa trên lưới có thể được mô hình hóa như một ma trận. Ví dụ, tic-tac-toe, sudoku, ô chữ, kết nối 4 và tàu chiến. Không có gì lạ khi được yêu cầu xác minh điều kiện chiến thắng của trò chơi. Đối với các trò chơi như tic-tac-toe, kết nối 4 và ô chữ, việc xác minh phải được thực hiện theo chiều dọc và chiều ngang. Một mẹo là viết mã để xác minh ma trận cho các ô ngang. Sau đó chuyển đổi ma trận, tái sử dụng logic được sử dụng để xác minh ngang để xác minh các ô dọc ban đầu (hiện đang nằm ngang). Việc chuyển một ma trận trong Python chỉ đơn giản là: Ma trận trống. Kiểm tra xem không có mảng nào là 0 chiều dài.
Đặt số 0 ma trận
Tìm từĐệ quy 7Đệ quy rất hữu ích cho hoán vị, bởi vì nó tạo ra tất cả các kết hợp và câu hỏi dựa trên cây. Bạn nên biết cách tạo ra tất cả các hoán vị của một chuỗi cũng như cách xử lý các bản sao. Hãy nhớ luôn xác định một trường hợp cơ sở để đệ quy của bạn sẽ kết thúc.Đệ quy ngầm sử dụng một ngăn xếp. Do đó, tất cả các phương pháp đệ quy có thể được viết lại một cách lặp đi lặp lại bằng cách sử dụng một ngăn xếp. Cảnh giác với các trường hợp trong đó mức độ đệ quy đi quá sâu và gây ra tràn chồng (giới hạn mặc định trong Python là 1000). Bạn có thể nhận được điểm thưởng khi chỉ ra điều này cho người phỏng vấn.
Sợi dâyMột palindrom là một từ, cụm từ, số hoặc chuỗi các ký tự khác đọc cùng một lùi và về phía trước, chẳng hạn như Madam hoặc Racecar.palindrome is a word, phrase, number, or other sequence of characters that reads the same backward and forward, such as madam or racecar.palindrome is a word, phrase, number, or other sequence of characters that reads the same backward and forward, such as madam or racecar. Dưới đây là những cách để xác định xem một chuỗi có phải là một palindrom:
Thứ tự của các ký tự trong các vấn đề chuỗi, vì vậy các hashmap thường không hữu ích. Khi một câu hỏi là về việc đếm số lượng palindromes, một mẹo phổ biến là có hai con trỏ di chuyển ra ngoài, ra khỏi giữa. Lưu ý rằng palindromes có thể có chiều dài chẵn hoặc lẻ. Đối với mỗi vị trí xoay giữa, bạn cần kiểm tra nó hai lần: một khi điều đó bao gồm nhân vật và một lần không có ký tự.
Trường hợp góc
Thực hành câu hỏi
CâyLiên kết nghiên cứu
Ghi chúMột cây là một biểu đồ acyclic không mong muốn và được kết nối. Đệ quy là một cách tiếp cận phổ biến cho cây. Khi bạn nhận thấy rằng vấn đề cây con có thể được sử dụng để giải quyết toàn bộ vấn đề, hãy thử sử dụng đệ quy. Khi sử dụng đệ quy, luôn luôn nhớ kiểm tra trường hợp cơ sở, thường là nơi nút là 8.Khi bạn được yêu cầu đi qua một cây theo cấp độ, hãy sử dụng tìm kiếm đầu tiên về độ sâu. Đôi khi có thể hàm đệ quy của bạn cần trả về hai giá trị. Nếu câu hỏi liên quan đến việc tổng kết các nút trên đường đi, hãy chắc chắn kiểm tra xem các nút có thể âm hay không. Bạn nên rất quen thuộc với việc viết đơn đặt hàng trước, theo đơn đặt hàng và sau đơn đặt hàng đệ quy. Là một phần mở rộng, thử thách bản thân bằng cách viết chúng một cách lặp đi lặp lại. Đôi khi những người phỏng vấn hỏi các ứng viên cho cách tiếp cận lặp đi lặp lại, đặc biệt nếu ứng viên hoàn thành việc viết phương pháp đệ quy quá nhanh. Cây nhị phânTruyền hàng theo thứ tự của một cây nhị phân là không đủ để tuần tự hóa một cây. Traversal đặt hàng trước hoặc sau đơn đặt hàng cũng được yêu cầu. Cây tìm kiếm nhị phân (BST)Truyền tải theo thứ tự của một BST sẽ cung cấp cho bạn tất cả các yếu tố theo thứ tự. Hãy rất quen thuộc với các thuộc tính của một BST. Xác thực rằng một cây nhị phân là một BST. Điều này xuất hiện thường xuyên hơn dự kiến. Khi một câu hỏi liên quan đến BST, người phỏng vấn thường tìm kiếm một giải pháp chạy nhanh hơn O (n). Trường hợp góc
Thực hành câu hỏi
Liên kết nghiên cứuLiên kết nghiên cứu
Ghi chúMột cây là một biểu đồ acyclic không mong muốn và được kết nối. Đệ quy là một cách tiếp cận phổ biến cho cây. Khi bạn nhận thấy rằng vấn đề cây con có thể được sử dụng để giải quyết toàn bộ vấn đề, hãy thử sử dụng đệ quy. Khi sử dụng đệ quy, luôn luôn nhớ kiểm tra trường hợp cơ sở, thường là nơi nút là 8.Thực hành câu hỏi
Khi sử dụng đệ quy, luôn luôn nhớ kiểm tra trường hợp cơ sở, thường là nơi nút làLiên kết nghiên cứu
Ghi chúMột cây là một biểu đồ acyclic không mong muốn và được kết nối. Đệ quy là một cách tiếp cận phổ biến cho cây. Khi bạn nhận thấy rằng vấn đề cây con có thể được sử dụng để giải quyết toàn bộ vấn đề, hãy thử sử dụng đệ quy. Thực hành câu hỏi
Mã hóa và giải mã chuỗiAnagram hợp lệ Đoàn A -ANTRAM
Lá nó lên đến cây nhị phân Ghi chú Một cây là một biểu đồ acyclic không mong muốn và được kết nối. Đệ quy là một cách tiếp cận phổ biến cho cây. Khi bạn nhận thấy rằng vấn đề cây con có thể được sử dụng để giải quyết toàn bộ vấn đề, hãy thử sử dụng đệ quy. Khi sử dụng đệ quy, luôn luôn nhớ kiểm tra trường hợp cơ sở, thường là nơi nút là Khi sử dụng đệ quy, luôn luôn nhớ kiểm tra trường hợp cơ sở, thường là nơi nút là rows, cols = len(matrix), len(matrix[0]) copy = [[0 for _ in range(cols)] for _ in range(rows)8. Tóm lại, để làm tốt trong các cuộc phỏng vấn mã hóa:Quyết định ngôn ngữ lập trình. Nghiên cứu các nguyên tắc cơ bản CS Thực hành giải quyết các câu hỏi thuật toán Nội tâm hóa các cuộc phỏng vấn của DO và don Thực hành bằng cách thực hiện các cuộc phỏng vấn kỹ thuật giả JavaScript.. Phỏng vấn thành công để có được công việcBằng cách làm theo các bước này, bạn sẽ cải thiện các kỹ năng phỏng vấn mã hóa của mình và tiến một bước gần hơn (hoặc có thể nhiều hơn) để hạ cánh công việc mơ ước của bạn.you can use any one of the following eight languages: C#, C++, Java, C, Python, Ruby, Swift, and JavaScript. Tất cả tốt nhất!Nội dung cho bài viết này có thể được tìm thấy ở đây. Cập nhật trong tương lai sẽ được đăng ở đó. Kéo yêu cầu cho các đề xuất và sửa chữa được hoan nghênh.. Learning enough python for interviewing will take 12–17 hours and will improve your chances of receiving an offer. I'm a Lead/Senior Software engineer at a small company based out of Boulder. I've interviewed for 20+ different software jobs over the years. Nếu bạn thích bài viết này, hãy chia sẻ nó với bạn bè của bạn!Bạn cũng có thể theo dõi tôi trên GitHub và Twitter.it will be absolutely fine as long as you understand the gotchas of the language you are using to code your interview problem and can explain them if asked. |