Luyện phỏng vấn kỹ thuật: nhóm câu hỏi và cách trình bày

Luyện phỏng vấn kỹ thuật hiệu quả: nắm 4 nhóm câu hỏi hay gặp, trình bày lời giải theo 4 bước rõ ràng và lộ trình luyện tập thực tế cho người đi làm.

10 phút

Vòng phỏng vấn kỹ thuật thường xoay quanh những gì?

Nếu bạn chỉ còn vài tuần để chuẩn bị, hãy nhớ một điều trước tiên. Luyện phỏng vấn kỹ thuật không có nghĩa là học thuộc hàng trăm đề. Điều cần làm là hiểu vòng thi thường đi theo những nhóm kiến thức nào.

Theo những gì chúng tôi quan sát được, phần lớn vòng kỹ thuật đều đi qua bốn nhóm chính. Đó là cấu trúc dữ liệu, thuật toán, ngôn ngữ lập trình cùng hệ thống, và các tình huống thực tế. Bốn nhóm này gần như luôn xuất hiện. Chỉ khác ở chỗ tỷ trọng thay đổi tùy vị trí bạn ứng tuyển.

Đừng vội mở đáp án ra xem khi luyện. Hãy giải đề theo một khung cố định và tập nói to lời giải của mình. Khi ngồi trước người phỏng vấn, bạn không chỉ cần nghĩ ra cách làm. Bạn còn phải kể lại cách nghĩ đó sao cho người khác theo kịp. Chúng tôi từng gặp những ứng viên tư duy rất tốt nhưng trình bày rời rạc, và họ mất điểm không kém gì khi làm sai.

Vậy nên luyện nội dung nào trước? Chúng tôi dựa vào hai tiêu chí. Thứ nhất là câu hỏi đó có xuất hiện nhiều trong tin tuyển dụng không. Thứ hai là nó có khớp với vị trí bạn nhắm tới không. Nếu ứng tuyển backend mà dành cả tháng để học đồ họa máy tính, khả năng cao bạn đang lãng phí thời gian. Hãy bắt đầu từ mô tả công việc thật rồi lần ngược lại xem cần ôn gì.

Vì sao người viết code ổn vẫn trượt vòng kỹ thuật?

Đây là câu hỏi học viên hỏi chúng tôi nhiều nhất. Có những người viết code khá tốt ngoài đời nhưng vẫn không qua được vòng kỹ thuật. Lý do thường không nằm ở kiến thức thuần túy. Người phỏng vấn đánh giá cách bạn suy nghĩ nhiều hơn là đáp án cuối cùng. Họ muốn biết bạn có tiếp cận vấn đề một cách có hệ thống không, và khi bế tắc bạn có biết cách gỡ ra không.

Một lỗi rất phổ biến là bỏ qua bước làm rõ đề bài. Ứng viên nghe xong đề là cầm bút viết ngay. Nhưng nếu không hỏi về dữ liệu rỗng, số phần tử âm hay giới hạn bộ nhớ, lời giải dễ thiếu phần xử lý trường hợp biên. Điểm bị trừ đúng vào chỗ đó. Chỉ cần dành một, hai phút để hỏi lại là đủ. Việc này không làm bạn yếu đi, ngược lại cho thấy bạn cẩn thận.

Lỗi thứ hai là trình bày rối. Chúng tôi từng thấy một ứng viên đưa ra lời giải đúng nhưng nói nhảy từ ý này sang ý khác. Một ứng viên khác có lời giải tương đương nhưng đi từng bước rành mạch, và thường được chấm cao hơn. Phần nói chuyện chiếm không nhỏ trong cảm nhận của người phỏng vấn về bạn.

Bốn nhóm câu hỏi hay gặp và cách chọn ưu tiên

Cấu trúc dữ liệu là cách bạn tổ chức và lưu trữ thông tin để dễ truy xuất và xử lý. Mảng, chuỗi, hash map, cây và đồ thị là những dạng phổ biến nhất. Chúng tôi đặt nhóm này làm trọng tâm vì nó gần như có mặt ở mọi vòng sơ tuyển mà chúng tôi theo dõi. Nếu chỉ có thời gian ôn một nhóm, hãy chọn nhóm này.

Nhóm thuật toán cơ bản gồm sắp xếp, tìm kiếm nhị phân và duyệt đồ thị. Đây là nền móng để giải các bài khó hơn. Khi nắm chắc tìm kiếm nhị phân, nhiều bài toán trông phức tạp sẽ quay về một hình dạng quen thuộc. Vì vậy chúng tôi luôn khuyên học viên đầu tư kỹ phần này, dù lúc đầu nó có vẻ khô khan.

Nhóm thứ ba là câu hỏi về ngôn ngữ và hệ thống, chẳng hạn đa luồng, quản lý bộ nhớ hay thiết kế API. Phần này phụ thuộc nhiều vào vị trí. Với các công việc liên quan đến hệ thống lớn, nhóm này có thể chiếm tỷ trọng đáng kể.

Nhóm cuối là thiết kế hệ thống, thường gặp ở vị trí cấp cao. Người phỏng vấn muốn xem bạn nghĩ về khả năng mở rộng, độ tin cậy và cách đánh đổi giữa các lựa chọn. Đây không phải chỗ để học thuộc một mẫu có sẵn, mà là nơi thể hiện tư duy tổng thể.

  • Mảng, chuỗi và hash map: ưu tiên rất cao.
  • Cây và đồ thị: ưu tiên cao, đặc biệt với backend.
  • Quy hoạch động: ưu tiên trung bình.
  • Thiết kế hệ thống: ưu tiên cao nếu nhắm vị trí senior.

Mức ưu tiên này chỉ mang tính tham khảo. Hãy điều chỉnh theo tin tuyển dụng cụ thể mà bạn đang theo đuổi.

Cách trình bày lời giải trong bốn bước

Chúng tôi thường chia cách trình bày thành bốn bước. Đây là phần nhiều người bỏ qua nhất, nhưng cũng là phần dễ tạo khác biệt nhất. Bạn không cần nói dài, chỉ cần đi theo một trình tự rõ ràng.

Bước đầu tiên là làm rõ đề bài. Hỏi về đầu vào, đầu ra và các trường hợp biên. Bước thứ hai là nêu hướng tiếp cận thô trước, sau đó mới tối ưu dần. Đừng quên nói rõ độ phức tạp về thời gian và bộ nhớ. Nhiều người ngại đưa ra cách làm chậm, nhưng một cách làm thô mà đúng vẫn có giá trị hơn việc im lặng đi tìm cách tối ưu.

Bước thứ ba là viết mã từng bước, đặt tên biến rõ nghĩa và giải thích các đoạn quan trọng ngay khi viết. Bước cuối là tự kiểm thử bằng một ví dụ nhỏ và nói to kết quả để người phỏng vấn theo dõi được suy nghĩ. Nhiều ứng viên bỏ bước này vì nghĩ mình đã đúng rồi. Thế nhưng chính việc chạy thử trên một ví dụ nhỏ giúp không ít người bắt được lỗi off-by-one trước khi bị chỉ ra.

Mẫu luyện một bài: từ đề bài đến lời giải hoàn chỉnh

Làm một bài cụ thể bao giờ cũng hiệu quả hơn đọc lý thuyết suông. Chọn một bài về mảng hoặc hash map, chẳng hạn tìm hai phần tử có tổng bằng một giá trị cho trước. Đặt đồng hồ 25 phút và giải theo đúng bốn bước trên. Đừng mở lời giải mẫu cho đến khi hết giờ.

Trong lúc làm, ghi lại thời gian cho từng bước: bao lâu để hiểu đề, bao lâu để nêu hướng, bao lâu để viết mã và kiểm thử. Sau đó đối chiếu với lời giải mẫu. Đừng chỉ xem mình đúng hay sai. Hãy tìm chỗ bạn trình bày chưa rõ hoặc tốn nhiều thời gian nhất, vì đó mới là phần cần luyện thêm.

Với mỗi bài, chúng tôi khuyên bạn viết lại lời giải thêm một lần sau khoảng hai ngày. Nếu lần hai gọn và mạch lạc hơn, nghĩa là bạn đang tiến bộ. Nếu vẫn lúng túng ở cùng một chỗ, hãy quay lại nhóm kiến thức nền để củng cố trước khi làm tiếp. Để hiểu cách các cấu trúc như hash map được tổ chức trong thực tế, bạn có thể đọc thêm tổng quan về Collections trong Java. Việc hình dung rõ cấu trúc sẽ giúp các buổi luyện mảng và hash map dễ hơn nhiều.

Lộ trình luyện sáu tuần cho người vừa đi làm vừa chuẩn bị

Nếu bạn vừa đi làm vừa ôn, sáu tuần là khoảng thời gian vừa đủ, miễn là đều đặn. Tuần một và tuần hai tập trung nắm chắc mảng, chuỗi và hash map, mỗi ngày làm từ hai đến ba bài. Đừng cố làm thật nhiều bài một lúc. Làm ít nhưng hiểu kỹ sẽ hiệu quả hơn rất nhiều.

Tuần ba và tuần bốn chuyển sang cây và đồ thị. Đây là lúc nên tập nói lời giải thành tiếng, kể cả khi ngồi một mình. Tuần năm, thử phỏng vấn giả lập với bạn bè hoặc đồng nghiệp. Họ sẽ bắt được những chỗ bạn nói chưa rõ mà bản thân không nhận ra. Tuần cuối, ôn lại các bài đã làm sai và viết lại lời giải gọn gàng hơn.

Nếu nền tảng chưa vững, hãy đọc qua lộ trình học lập trình cho người mới trước khi bắt đầu sáu tuần này. Học đúng thứ tự giúp bạn không phải quay lại làm lại những phần đã bỏ qua.

Những sai lầm thường gặp khi luyện phỏng vấn kỹ thuật

Sai lầm lớn nhất là học thuộc lời giải. Thuộc một bài thì không sao, nhưng gặp đề mới bạn sẽ khựng lại vì không biết suy luận từ đâu. Hãy luyện để hiểu cách dẫn đến lời giải, đừng chỉ ghi nhớ đáp án.

Sai lầm thứ hai là chỉ luyện một nhóm câu hỏi và bỏ qua phần trình bày bằng lời. Ứng viên có kỹ năng không đồng đều thường bị loại vì phần giao tiếp còn yếu. Sai lầm thứ ba là không đo thời gian. Quen làm không có áp lực sẽ khiến bạn hoảng khi quá giờ trong ngày thật.

Chuẩn bị kỹ thuật và tâm lý trước ngày phỏng vấn

Vài ngày trước buổi phỏng vấn, kiểm tra môi trường: ngôn ngữ lập trình sẽ dùng, công cụ chia sẻ màn hình, và có sẵn giấy nháp hay không. Chúng tôi từng thấy nhiều ứng viên vấp chỉ vì phần mềm chia sẻ màn hình trục trặc đúng lúc quan trọng.

Đừng học dồn vào đêm trước. Ngủ đủ giấc và xem lại danh sách các câu đã luyện sẽ giúp đầu óc tỉnh táo hơn. Khi bí ý tưởng, đừng im lặng. Hãy nói to suy nghĩ của mình, ngay cả khi nó còn chưa hoàn chỉnh. Người phỏng vấn thường đánh giá cao việc bạn biết tự thoát khỏi bế tắc hơn là việc bạn có đáp án ngay.

Câu hỏi thường gặp

Nên luyện bao nhiêu bài mỗi ngày?

Với người đi làm, khoảng hai đến ba bài mỗi ngày là hợp lý. Chất lượng quan trọng hơn số lượng. Một bài làm kỹ, có ghi chú và đối chiếu đáp án còn có giá trị hơn năm bài làm vội.

Có cần học đủ mọi cấu trúc dữ liệu trước khi phỏng vấn không?

Không cần. Hãy nắm chắc những cấu trúc xuất hiện nhiều nhất trong tin tuyển dụng của vị trí bạn nhắm tới. Biết sâu vài cấu trúc thường hiệu quả hơn biết nông tất cả.

Người chưa đi làm có cần luyện phỏng vấn kỹ thuật không?

Có, và nên bắt đầu sớm. Với người mới, phỏng vấn kỹ thuật thường tập trung vào nền tảng và cách tư duy hơn là kinh nghiệm dự án. Luyện sớm giúp bạn quen với áp lực và cách trình bày lời giải.

Làm sao biết mình đã sẵn sàng đi phỏng vấn?

Một dấu hiệu tốt là bạn giải được bài thuộc nhóm ưu tiên trong thời gian quy định, đồng thời vừa làm vừa nói được lời giải rõ ràng. Nếu vẫn lúng túng khi nói to, hãy luyện thêm vài buổi phỏng vấn giả lập trước khi đi.

Chuyên mục