Cách dùng LeetCode hiệu quả và chiến thắng trong các buổi phỏng vấn kỹ thuật | Học trực tuyến CNTT, học lập trình từ cơ bản đến nâng cao

Cách dùng LeetCode hiệu quả và chiến thắng trong các buổi phỏng vấn kỹ thuật

Chia sẻ kiến thức 05/11/2021

(Mỹ) Evelyn Le nhận được ba lời mời trở thành kỹ sư phần mềm từ Microsoft sau 17 tháng tự học lập trình. Cùng nghe cô chia sẻ về cách thực hành hiệu quả trên LeetCode để chiến thắng trong các buổi phỏng vấn kỹ thuật tại những công ty công nghệ lớn.

Nếu bạn làm trong lĩnh vực công nghệ, bạn có thể đã nghe nói về các buổi whiteboard interview (trong đó ứng viên được yêu cầu giải quyết một vấn đề bằng cách viết code trên một tấm bảng/giấy trắng) và LeetCode – nơi mọi người thực hành giải quyết các vấn đề kỹ thuật bằng cách sử dụng một trong những ngôn ngữ lập trình như Java và Python.

Quy trình tuyển dụng tại các công ty có thể rất khác nhau. Một số yêu cầu bạn xây dựng một dự án trong vòng vài ngày hoặc vài giờ. Một số có thể chỉ yêu cầu bạn giải thích các khái niệm khác nhau trong công nghệ và giải thích về quá trình tư duy của bạn (không cần viết mã).

Nhưng nếu bạn muốn vào các công ty FAANG (Facebook, Amazon, Apple, Netflix, Google) hoặc một trong những gã khổng lồ công nghệ lớn như Microsoft, thì việc giải quyết các vấn đề như trên LeetCode là điều bắt buộc.

Trong bài đăng này, tôi sẽ chia sẻ về cách tôi bắt đầu sử dụng LeetCode và thực hiện các cuộc phỏng vấn kỹ thuật để nhận được ba lời mời làm việc Kỹ sư phần mềm từ ba nhóm khác nhau tại Microsoft sau khi thực hiện khoảng 350 câu hỏi LeetCode ở mức vừa và dễ.

1. Bạn không đơn độc

Đầu tiên, nếu bạn luyện tập trên LeetCode, bạn không đơn độc. Tất cả những người đã trở thành kỹ sư phần mềm tại các công ty công nghệ lớn mà tôi biết đã luyện LeetCode trong nhiều tháng, thậm chí nhiều năm trước khi phỏng vấn.

Dù họ có bằng Cử nhân hay Tiến sĩ Khoa học Máy tính, thực hành trên LeetCode là chìa khóa trong quá trình xin việc của họ. Một số đã làm 100, 400 hoặc thậm chí 800 câu hỏi.

Tuy nhiên, việc quan trọng nhất không phải là ghi nhớ câu trả lời mà là nhận ra các mẫu câu hỏi.

Bởi tôi không nghĩ bộ não của mình có khả năng ghi nhớ hàng trăm câu trả lời. Nhưng nếu tôi hiểu các mẫu câu hỏi và phương pháp trả lời, tôi có thể áp dụng chúng để trả lời các câu hỏi khi phỏng vấn. Hãy tưởng tượng bạn là một thợ cơ khí đang cố gắng sửa xe. Nếu có hộp công cụ phù hợp, nó sẽ giúp công việc của bạn trở nên dễ dàng hơn.

Và điều quan trọng là học, hiểu và ghi nhớ các mẫu câu hỏi. Điều này giúp bạn không phải làm lại từ đầu với mỗi câu hỏi. 

Thứ hai, nếu bạn gặp khó khăn khi giải quyết các vấn đề được đánh giá là dễ trên LeetCode, bạn không phải là người duy nhất. Nếu bạn tìm kiếm các từ khóa như “không thể làm LeetCode” trên internet, bạn sẽ tìm thấy các bài đăng về những người có bằng Khoa học Máy tính nhưng lại không thể giải quyết các vấn đề trên LeetCode dù đã thử nhiều lần. Một số người đã dành nhiều ngày cho một vấn đề dễ mà vẫn không làm được. 

Nếu không tin, bạn hãy xem video này, trong đó Jonathan Ma giải thích cách anh ấy đã đi từ việc không thể giải quyết các vấn đề dễ trên LeetCode cho đến việc nhận được lời mời làm việc từ một công ty FAANG. Đây là một video khác của Sean Lee, người đã trượt các lớp Khoa học Máy tính và các cuộc whiteboard interview nhiều lần trước khi được mời làm việc tại Amazon và các công ty FAANG khác.

>>> Đọc ngay: Học lập trình online có ưu điểm vượt trội gì?

2. Vậy chúng ta phải bắt đầu từ đâu với LeetCode?

Tôi sẽ chia sẻ về trải nghiệm đầu tiên của tôi với LeetCode. Khoảng 1,5 tháng sau khi tôi bắt đầu học Python, tôi tìm cách thực hành những gì tôi đã học (tức là chuỗi, mảng, danh sách liên kết). Tôi cố gắng giải một câu hỏi về danh sách liên kết trên LeetCode và bị tắc trong nhiều ngày. Sau đó, tôi đã thử một câu hỏi chuỗi nhưng vẫn không khá hơn. Nói chung là tôi không thể giải quyết bất kỳ câu hỏi nào trên này.

Sau đó, tôi nói chuyện với những người bạn làm lập trình viên của mình, và họ nói rằng tôi thực sự cần tìm hiểu thêm về cấu trúc dữ liệu và thuật toán trước khi thử làm LeetCode. Thế là tôi đã đăng ký hai khóa học Java trên Coursera và một khóa học Python trên MIT OpenCourseWare. Nhưng vẫn không có gì tiến triển.

Sau đó, tôi xem khóa học Các câu hỏi phỏng vấn kỹ thuật trên Codecademy, nơi các giảng viên hướng dẫn người học về quy trình giải quyết các vấn đề kỹ thuật. Cuối cùng thì tôi cũng đã hiểu. 

2.1 Đọc câu hỏi và hiểu các ví dụ

Sau khi đọc câu hỏi, chúng ta cần xem xét kỹ các ví dụ được cung cấp bởi LeetCode và cố gắng giải quyết vấn đề bằng cách sử dụng các ví dụ đơn giản đó. Ví dụ, cố gắng giải bài toán với một mảng có bốn phần tử thay vì n phần tử ngay từ đầu. Sau đó, cố gắng tổng quát lời giải cho một mảng có n phần tử.

2.2 Tìm kiếm gợi ý

Nếu bạn vẫn gặp khó khăn, hãy xem các Chủ đề hoặc Gợi ý liên quan ở cuối câu hỏi. Nếu vẫn thấy tắc, hãy chuyển đến phần Thảo luận dưới mỗi câu hỏi để xem giải pháp của người khác. Cố gắng đọc code và hiểu quá trình suy nghĩ của họ. Đến một lúc nào đó, bạn sẽ nhìn ra mẫu câu hỏi và kỹ thuật được dùng trong các câu trả lời đó.

2.3 Tìm kiếm trợ giúp trên YouTube hoặc từ người có kinh nghiệm hơn

Copy và paste số và tiêu đề câu hỏi vào thanh tìm kiếm trên YouTube. Bạn sẽ tìm thấy nhiều video của những người đã giải quyết các câu hỏi đó và có thể giải thích chi tiết về cách giải cho bạn.

Tôi thường xem qua một vài video cho đến khi hiểu cách tiếp cận. Thông thường, những video có nhiều lượt xem nhất cung cấp những lời giải thích tốt nhất. Tuy nhiên cũng có một số video có lượt xem ít hơn nhưng cũng có câu trả lời rất hay. 

Nếu bạn đang giải quyết những câu hỏi LeetCode đầu tiên của mình, tôi khuyên bạn nên dành vài giờ, thậm chí vài ngày, để cố gắng tự khám phá ra giải pháp. Bằng cách đó bạn sẽ tìm ra bạn đang mắc kẹt ở đâu và vì sao. 

Sau đó, hãy làm theo các bước trên để đọc lời giải của người khác. Sau đó, cố gắng ghi nhanh các kỹ thuật mà họ sử dụng và mẫu câu hỏi. Rất có thể những kỹ thuật và mẫu đó sẽ hữu ích cho những câu hỏi tiếp theo. 

2.4 Thực hành, thực hành và thực hành

Không ai sinh ra đã biết cách giải quyết các câu hỏi LeetCode. Chìa khóa là phải thực hành. Cố gắng giữ một lịch trình nhất quán. Ví dụ: cố gắng giải một câu hỏi LeetCode mỗi ngày hoặc cách ngày. Đối với tôi, học cách viết code giống như học một ngoại ngữ mới. Nếu kiên trì luyện tập, chúng ta sẽ tiến bộ hơn.

Như Johnathan Ma đã nói: “Điều này không liên quan đến trí thông minh hay bất cứ điều gì. Chìa khóa ở đây thực sự chỉ là thực hành vì cuối cùng thì câu hỏi nào trông cũng sẽ giống nhau. Họ chỉ thay đổi ngữ cảnh hoặc từ ngữ hoặc cốt truyện đằng sau nó.”

>>> Xem thêm tại: Bí quyết để bạn vượt trội trong nghề lập trình viên

3. Phần kết luận

Khi mới bắt đầu viết code, tôi đã rất dị ứng với việc học cấu trúc dữ liệu và thuật toán, vì nghĩ rằng chúng quá khó, và tôi không đủ thông minh. Thực ra hiện tại tôi vẫn nghĩ như vậy. Nhưng dù sao tôi vẫn quyết định học và thực hành.

Khi tôi thực hành trên LeetCode, tôi cảm thấy như mình đang đi trong bóng tối. Tôi không chắc mình sẽ đi đến đâu và liệu nỗ lực của tôi có được đền đáp hay không. Bây giờ tôi có thể tự tin nói rằng LeetCode đã giúp tôi tham gia Chương trình LEAP của Microsoftnhận được ba lời mời làm việc tại Microsoft. Chắc chắn đây không phải là yếu tố duy nhất, nhưng nó là yếu tố then chốt.

Nếu bạn hoàn toàn không thích các buổi whiteboard interview và không quan tâm đến LeetCode, chắc chắn có rất nhiều cuộc phỏng vấn xin việc không yêu cầu nó. Nhưng nếu bạn thích các thuật toán hoặc muốn vào một công ty công nghệ lớn, bạn nên thử LeetCode.

Khi mới bắt đầu, bạn có thể sử dụng phiên bản miễn phí trước. Nhưng nếu muốn có quyền truy cập vào các câu hỏi bị khóa hoặc câu hỏi riêng của một công ty, sẽ cần mua phiên bản Premium.

>>> Nếu bạn đang có nhu cầu tìm hiểu về khóa học lập trình đi làm ngay. Hãy liên hệ với FUNiX ngay tại đây:

>>> Xem thêm chuỗi bài viết liên quan:

7+ bước giúp bạn học lập trình viết code tốt hơn
Học lập trình tại FUNiX không chỉ giúp bạn giỏi code
Những website luyện thuật toán lập trình giúp bạn học code hiệu quả

(Bài đăng này không được tài trợ bởi LeetCode.)

Vân Nguyễn (dịch)

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!