Tự huỷ khi phỏng vấn DSA (Data Structures and Algorithms) do thiếu kỹ năng?


Hi mọi người . Mình tên là Trường .Có hơn 3 năm kinh nghiệm làm Android Developer. Tuy thời gian làm developer khá là ngắn nhưng mình tự nhận là mình đi phỏng vấn khá nhiều công và tạch cũng khá nhiều. Trong quá trình phỏng vấn mình có rút ra một số kinh nghiệm khi pv vòng thuật toán của các Big Tech như Zalo, Naver, Chợ Tốt, ... với tư cách interviewer thì mình nhận ra việc thiếu những kĩ năng, hiểu biết cho từng topic sẽ có thể dẫn tới những hậu quả đáng tiếc. Như các bạn đã biết thì trước mỗi câu hỏi phỏng vấn, interviewer thường đưa cho các bạn 1 bài toán khá fuzzy, vậy nên những thứ bạn cần quan tâm là gì?
DSA-Interview-Questions.jpg 41 KB

Đầu tiên, DSA là viết tắt của "Data Structures and Algorithms", là một lĩnh vực quan trọng trong ngành công nghệ thông tin. Khi phỏng vấn vị trí DSA, các ứng viên thường phải có kiến thức sâu về các cấu trúc dữ liệu và giải thuật. Tuy nhiên, nếu thiếu kỹ năng trong lĩnh vực này, bạn có thể bị tự huỷ khi phỏng vấn.

Việc thiếu kỹ năng trong DSA có thể dẫn đến nhiều vấn đề trong quá trình phát triển sản phẩm. Các cấu trúc dữ liệu và giải thuật không chỉ giúp tối ưu hóa hiệu suất mà còn giúp giải quyết các vấn đề phức tạp trong việc xử lý dữ liệu.
Khi phỏng vấn vị trí DSA, các ứng viên sẽ phải trả lời các câu hỏi liên quan đến các cấu trúc dữ liệu và giải thuật. Điều này đòi hỏi bạn phải có kiến thức và kỹ năng sâu về lĩnh vực này. 

Tuy nhiên, nếu thiếu kỹ năng trong DSA, bạn có thể tự huỷ bản thân khi phỏng vấn. Các nhà tuyển dụng sẽ đánh giá các câu trả lời của ứng viên và đưa ra quyết định tuyển dụng dựa trên kỹ năng của ứng viên. Nếu ứng viên không thể trả lời được các câu hỏi liên quan đến DSA, các nhà tuyển dụng sẽ nghi ngờ về khả năng của ứng viên và có thể loại bỏ bạn khỏi danh sách ứng viên tiềm năng.

Sau đây mình sẽ note lại những điều bạn cần quan tâm ở vòng này là gì theo quan điểm cá nhân và tham khảo kinh nghiệm các anh chị mà mình quen biết : 
  1. Trong phỏng vấn DSA, việc hỏi constraint của bài toán là cực kỳ quan trọng. Nếu interviewer không cho constraint, bạn nên hỏi để xác định rõ ràng và chính xác những giới hạn và điều kiện của bài toán. Việc assume sai constraint có thể làm khó bài toán của bạn đi rất nhiều, thậm chí dẫn đến việc tự huỷ.
  2. Việc nói thinking out loud khi code là rất quan trọng để interviewer có thể hiểu được cách suy nghĩ của bạn. Tuy nhiên, không phải ai cũng dễ dàng nói ra những suy nghĩ của mình một cách chính xác và trôi chảy. Nói như nào, nói gì để phù hợp với từng chủ đề cũng là một nghệ thuật. Cần có kỹ năng nói chuyện trôi chảy và tập trung vào việc trình bày ý tưởng của mình một cách rõ ràng và logic. Việc nói như nào cho từng topic no cũng nghệ cả củ . 
  3. Test code: Ở các Big Tech các bạn sẽ đc trải nghiệm code trên giấy , hoặc White Board . Dĩ nhiên sau khi triển khai ý tường và viết code , Các interviewer sẽ yêu cầu ứng viên chạy chương trình bằng miệng (gọi là run bằng cơm) để giải thích cách chương trình hoạt động và giải quyết các vấn đề phát sinh. Vì vậy, nếu bạn tự tạo test cases và không biết cách trình bày test cases một cách khéo léo, thì sẽ dễ dàng gây lãng phí thời gian và thậm chí có thể gây ra những sai sót nghiêm trọng trong quá trình test. Ngoài ra, nếu bạn không biết cách chọn được các test cases  thích hợp, có thể bạn sẽ gặp phải các test cases quá khó hoặc không chính xác, dẫn đến việc chương trình không hoạt động đúng và làm mất thời gian của bạn và của interviewer. Do đó, việc tạo test cases và trình bày chúng một cách rõ ràng và chính xác là rất quan trọng để giúp bạn vượt qua bước test code thành công.
  4. Cách ứng phó với follow-up ra sao?  Trong quá trình phỏng vấn, sau khi bạn đã giải quyết được một bài toán, interviewer thường sẽ tiếp tục đưa ra các follow-up questions liên quan đến bài toán đó. Điều quan trọng là bạn phải có khả năng ứng phó với các follow-up questions này một cách thành thạo để chứng tỏ năng lực của mình và giữ được sự chú ý của interviewer. Để ứng phó với follow-up questions, trước hết bạn cần hiểu rõ vấn đề được đưa ra, bao gồm cả những yếu tố cơ bản và chi tiết hơn về bài toán. Sau đó, bạn có thể áp dụng kinh nghiệm của mình để phát triển code đi lên từ những gì đã có, đồng thời cũng nên hỏi interviewer về các ràng buộc của bài toán (như đã đề cập trong Mục số 1 bên trên). Ngoài ra, để ứng phó tốt với các follow-up questions, bạn cần phải có sự tự tin trong cách giải quyết bài toán ban đầu của mình, đồng thời cũng nên thể hiện sự cẩn thận và tập trung trong quá trình giải thích. Tránh sự lãng phí thời gian bằng cách giải thích quá nhiều hoặc trả lời các câu hỏi không liên quan đến bài toán. Như vậy, để ứng phó tốt với các follow-up questions, bạn cần phải có kiến thức chuyên môn vững vàng, kỹ năng phát triển code linh hoạt, và sự tự tin và tập trung trong quá trình giải thích.

Summary :
Nếu bạn đang chuẩn bị cho một buổi phỏng vấn vị trí DSA, hãy đảm bảo rằng bạn có kiến thức và kỹ năng đầy đủ trong lĩnh vực này. Bạn có thể chuẩn bị bằng cách tìm hiểu các cấu trúc dữ liệu và giải thuật cơ bản, thực hành trên các bài tập và làm việc trên các dự án thực tế để cải thiện kỹ năng của mình.

Nếu bạn đã phỏng vấn vị trí DSA và bị tạch do thiếu kỹ năng, đừng nản lòng. Hãy xem đó là một cơ hội để cải thiện kỹ năng của mình và tiếp tục học tập và thực hành. Đừng bao giờ bỏ cuộc nhé . 

PS: Bài viết chỉ mang tính chất chia sẻ cá nhân dựa trên kinh nghiệm của bản thân mình và những tiền bối mình quen . Có gì cần bổ sung thì ae cứ comment nhiệt tình ạ.

Lời cuối , Mình cảm ơn các bạn đã dành thời gian đọc . Thanks you guys so much!