fbpx
Hàng triệu nội dung hữu ích dành riêng cho bạn đã sẵn sàng. Tìm hiểu thêm
Góc nhìn

50+ câu hỏi phỏng vấn cấu trúc dữ liệu và thuật toán cho lập trình viên

Anh Đức Phạm Level 5
.
20 min read

Có rất nhiều sinh viên tốt nghiệp khoa học máy tính và lập trình viên apply các vị trí lập trình, coding và software development tại các công ty mới khởi nghiệp như Uber và Netflix; hay các tập đoàn lớn như Amazon , Microsoft và Google ; và các công ty dựa trên dịch vụ như Infosys hoặc Luxsoft, nhưng nhiều ứng viên không biết loại câu hỏi phỏng vấn lập trình nào sẽ xảy ra khi bạn apply vào các công ty này.

Trong bài viết này, tôi sẽ chia sẻ một số câu hỏi phỏng vấn lập trình thường hỏi từ các cuộc phỏng vấn khác nhau cho các lập trình viên ở các cấp độ kinh nghiệm khác nhau, từ những người mới tốt nghiệp đại học đến lập trình viên từ một đến hai năm kinh nghiệm .

Các cuộc phỏng vấn mã hóa bao gồm chủ yếu về cấu trúc dữ liệu và các câu hỏi dựa trên thuật toán cũng như một số câu hỏi logic như, Làm thế nào để bạn trao đổi hai số nguyên mà không sử dụng một biến tạm thời?

Tôi nghĩ sẽ rất hữu ích khi chia các câu hỏi phỏng vấn mã hóa thành các lĩnh vực chủ đề khác nhau. Các lĩnh vực chủ đề mà tôi thấy thường xuyên nhất trong các cuộc phỏng vấn là array, danh sách liên kết, chuỗi, cây nhị phân, cũng như các câu hỏi từ thuật toán (ví dụ: thuật toán chuỗi, thuật toán phân loại như quicksort hoặc radix sort, một số câu hỏi hỗn hợp) và bạn sẽ tìm thấy trong bài viết này.

không đảm bảo rằng bạn sẽ được hỏi về cấu trúc mã hóa hoặc dữ liệu và các câu hỏi về thuật toán, nhưng chúng sẽ cho bạn đủ ý tưởng về các loại câu hỏi mà bạn có thể mong đợi trong một cuộc phỏng vấn việc làm lập trình thực sự.

Một khi bạn đã trải qua những câu hỏi này, bạn sẽ cảm thấy đủ tự tin để tham dự bất kỳ cuộc phỏng vấn qua điện thoại hoặc trực tiếp nào.

Btw, sẽ vô ích nếu khi thử những câu hỏi này nếu bạn không có đủ kiến ​​thức về cấu trúc dữ liệu và thuật toán cơ bản hoặc bạn chưa bao giờ làm việc với chúng.

Trong trường hợp đó, bạn nên tham gia một khóa học tốt như Thuật toán và Cấu trúc Dữ liệu Phần 1 và 2 của Robert Horvick để làm mới kỹ năng DS và thuật toán của bạn.

Top 50 câu hỏi về cấu trúc dữ liệu và giải thuật

Đây là danh sách của tôi về một số câu hỏi phỏng vấn mã hóa thường gặp nhất từ ​​các cuộc phỏng vấn công việc lập trình :

1. Câu hỏi phỏng vấn về cấu trúc dữ liệu ( mảng)

Một mảng là cấu trúc dữ liệu cơ bản nhất, lưu trữ các phần tử tại một vị trí bộ nhớ liền kề. Nó cũng là một trong những chủ đề yêu thích của người phỏng vấn và bạn sẽ nghe rất nhiều câu hỏi về một mảng trong bất kỳ cuộc phỏng vấn mã hóa nào, ví dụ như đảo ngược mảng, phân loại mảng hoặc tìm kiếm các phần tử trên mảng.

Lợi ích chính của cấu trúc dữ liệu mảng là nó cung cấp tìm kiếm O (1) nhanh nếu bạn biết chỉ mục, nhưng việc thêm và loại bỏ một phần tử từ mảng là chậm vì bạn không thể thay đổi kích thước của mảng khi nó được tạo.

Để tạo một mảng ngắn hơn hoặc dài hơn, bạn cần phải tạo một mảng mới và sao chép tất cả các phần tử từ cũ sang mới.

Chìa khóa để giải quyết các câu hỏi dựa trên mảng là có kiến ​​thức tốt về cấu trúc dữ liệu mảng cũng như các nhà xây dựng lập trình cơ bản như vòng lặp, đệ quy và toán tử cơ bản.

Dưới đây là một số câu hỏi phỏng vấn mã hóa dựa trên mảng phổ biến cho thực tiễn của bạn:

  1. Làm thế nào để bạn tìm thấy số bị thiếu trong một số nguyên nhất định của 1 đến 100? ( giải pháp )
  2. Làm thế nào để bạn tìm thấy số trùng lặp trên một mảng số nguyên nhất định? ( giải pháp )
  3. Làm thế nào để bạn tìm thấy số lớn nhất và nhỏ nhất trong một mảng số không phân loại? ( giải pháp )
  4. Làm thế nào để bạn tìm thấy tất cả các cặp của một mảng số nguyên có tổng bằng một số cho sẵn? ( giải pháp )
  5. Làm thế nào để bạn tìm thấy số trùng lặp trong một mảng nếu nó chứa nhiều bản sao? ( giải pháp )
  6. Các bản sao bị loại bỏ khỏi một mảng đã cho trong Java như thế nào? ( giải pháp )
  7. Làm thế nào là một mảng nguyên sắp xếp tại chỗ bằng cách sử dụng thuật toán quicksort? ( giải pháp )
  8. Làm thế nào để bạn loại bỏ các bản sao từ một mảng tại chỗ? ( giải pháp )
  9. Làm thế nào để bạn đảo ngược một mảng tại chỗ trong Java? ( giải pháp )
  10. Các bản sao bị xóa khỏi một mảng mà không sử dụng bất kỳ thư viện nào? ( giải pháp )

Những câu hỏi này sẽ không chỉ giúp bạn phát triển các kỹ năng giải quyết vấn đề mà còn cải thiện kiến ​​thức của bạn về cấu trúc dữ liệu mảng.

Nếu bạn cần thêm các câu hỏi nâng cao dựa trên mảng thì bạn có thể xem thêm Coding Interview Bootcamp: Thuật toán + Cấu trúc dữ liệu , khóa học bootcamp trên các thuật toán, đặc biệt được thiết kế để chuẩn bị phỏng vấn để kiếm việc làm trên các đại gia kỹ thuật như Google, Microsoft, Apple , Facebook, v.v.

Và, nếu bạn cảm thấy 10 không đủ câu hỏi và bạn cần thực hành nhiều hơn, thì bạn cũng có thể xem danh sách 30 câu hỏi mảng này .

2. Câu hỏi phỏng vấn về Linked list Progamming

Linked list là một cấu trúc dữ liệu chung bổ sung cho cấu trúc dữ liệu mảng. Tương tự như mảng, nó cũng là một cấu trúc dữ liệu tuyến tính và lưu trữ các phần tử theo kiểu tuyến tính.

Tuy nhiên, không giống như mảng, nó không lưu trữ chúng ở các vị trí tiếp giáp; thay vào đó, chúng nằm rải rác khắp nơi trong bộ nhớ, được kết nối với nhau bằng cách sử dụng các nút.

Danh sách liên kết không là gì ngoài danh sách các nút nơi mỗi nút chứa giá trị được lưu trữ và địa chỉ của nút tiếp theo.

Bởi vì cấu trúc này, thật dễ dàng để thêm và loại bỏ các phần tử trong danh sách liên kết , vì bạn chỉ cần thay đổi liên kết thay vì tạo mảng, nhưng tìm kiếm rất khó và thường yêu cầu thời gian O (n) để tìm một phần tử trong danh sách liên kết đơn lẻ.

Bài viết này cung cấp thêm thông tin về sự khác biệt giữa mảng và cấu trúc dữ liệu danh sách được liên kết.

Nó cũng có trong các giống như một danh sách liên kết đơn lẻ, cho phép bạn đi qua theo một hướng (tiến hoặc lùi); một danh sách được liên kết kép , cho phép bạn duyệt qua cả hai hướng (tiến và lùi); và cuối cùng, danh sách được liên kết tròn, tạo thành một vòng tròn.

Để giải quyết các câu hỏi dựa trên danh sách liên kết, một kiến ​​thức tốt về đệ quy là quan trọng, bởi vì một danh sách liên kết là một cấu trúc dữ liệu đệ quy .

Nếu bạn lấy một nút từ danh sách được liên kết, cấu trúc dữ liệu còn lại vẫn là danh sách được liên kết và do đó, nhiều sự cố danh sách được liên kết có các giải pháp đệ quy đơn giản hơn các giải pháp lặp lại.

Dưới đây là một số câu hỏi phỏng vấn danh sách được liên kết phổ biến nhất và phổ biến nhất và giải pháp của họ:

  1. Làm thế nào để bạn tìm thấy phần tử trung gian của một danh sách được liên kết đơn lẻ trong một lần vượt qua? ( giải pháp )
  2. Làm cách nào để kiểm tra xem danh sách được liên kết đã cho có chứa chu trình không? Làm thế nào để bạn tìm thấy nút khởi đầu của chu kỳ? ( giải pháp )
  3. Làm thế nào để bạn đảo ngược một danh sách liên kết? ( giải pháp )
  4. Làm thế nào để bạn đảo ngược một danh sách liên kết đơn lẻ mà không cần đệ quy? ( giải pháp )
  5. Các nút bị trùng lặp được xóa trong danh sách được liên kết chưa được phân loại như thế nào? ( giải pháp )
  6. Làm thế nào để bạn tìm thấy chiều dài của một danh sách liên kết đơn lẻ? ( giải pháp )
  7. Làm thế nào để bạn tìm thấy nút thứ ba từ cuối trong một danh sách liên kết đơn lẻ? ( giải pháp )
  8. Làm thế nào để bạn tìm thấy tổng của hai danh sách liên kết bằng cách sử dụng Stack? ( giải pháp )

Những câu hỏi này sẽ giúp bạn phát triển các kỹ năng giải quyết vấn đề cũng như cải thiện kiến ​​thức của bạn về cấu trúc dữ liệu danh sách được liên kết.

Nếu bạn gặp khó khăn khi giải quyết các câu hỏi mã hóa danh sách được liên kết này thì tôi đề nghị bạn làm mới cấu trúc dữ liệu và kỹ năng thuật toán của mình bằng cách xem qua Cấu trúc dữ liệu và Thuật toán: Lặn sâu Sử dụng khóa học Java .

Bạn cũng có thể xem danh sách này 30 câu hỏi phỏng vấn danh sách được liên kết cho các câu hỏi thực hành khác.

3. Câu hỏi phỏng vấn mã hóa chuỗi

Cùng với mảng và các cấu trúc dữ liệu danh sách liên kết, một chuỗi là một chủ đề phổ biến khác về các cuộc phỏng vấn công việc lập trình. Tôi chưa bao giờ tham gia vào một cuộc phỏng vấn mã hóa mà không có câu hỏi dựa trên chuỗi .

Một điều tốt về chuỗi là nếu bạn biết mảng, bạn có thể giải quyết các câu hỏi dựa trên chuỗi một cách dễ dàng bởi vì chuỗi là gì, nhưng một mảng ký tự .

Vì vậy, tất cả các kỹ thuật bạn học bằng cách giải các câu hỏi mã hóa dựa trên mảng có thể được sử dụng để giải quyết các câu hỏi lập trình chuỗi.

Dưới đây là danh sách các câu hỏi mã hóa chuỗi được hỏi thường gặp của tôi từ các cuộc phỏng vấn công việc lập trình:

  1. Làm thế nào để bạn in các ký tự trùng lặp từ một chuỗi? ( giải pháp )
  2. Làm thế nào để bạn kiểm tra xem hai chuỗi là đảo chữ cái của nhau? ( giải pháp )
  3. Làm thế nào để bạn in ký tự không lặp lại đầu tiên từ một chuỗi? ( giải pháp )
  4. Làm thế nào có thể một chuỗi cho trước được đảo ngược bằng cách sử dụng đệ quy? ( giải pháp )
  5. Làm cách nào để kiểm tra xem chuỗi có chứa chỉ các chữ số không? ( giải pháp )
  6. Các ký tự trùng lặp được tìm thấy như thế nào trong một chuỗi? ( giải pháp )
  7. Làm thế nào để bạn đếm một số nguyên âm và phụ âm trong một chuỗi nhất định? ( giải pháp )
  8. Làm thế nào để bạn đếm sự xuất hiện của một ký tự đã cho trong một chuỗi? ( giải pháp )
  9. Làm thế nào để bạn tìm thấy tất cả các hoán vị của một chuỗi? ( giải pháp )
  10. Làm thế nào để bạn đảo ngược các từ trong một câu nhất định mà không sử dụng bất kỳ phương thức thư viện nào? ( giải pháp )
  11. Làm thế nào để bạn kiểm tra xem hai chuỗi là một vòng quay của nhau? ( giải pháp )
  12. Làm thế nào để bạn kiểm tra xem một chuỗi đã cho là palindrome? ( giải pháp )

Những câu hỏi này giúp cải thiện kiến ​​thức của bạn về chuỗi như một cấu trúc dữ liệu. Nếu bạn có thể giải quyết tất cả các câu hỏi về Chuỗi này mà không cần bất kỳ sự trợ giúp nào thì bạn đang ở trong tình trạng tốt.

Đối với các câu hỏi nâng cao hơn, tôi đề nghị bạn giải quyết các vấn đề được đưa ra trong Hướng dẫn thiết kế thuật toán của Steven Skiena , một cuốn sách có bản ngã khó khăn nhấtcâu hỏi rithm.

Nếu bạn cần thực hành nhiều hơn, đây là danh sách khác của 20 câu hỏi mã hóa chuỗi .

4. Câu hỏi phỏng vấn mã hóa cây nhị phân

Cho đến nay, chúng tôi đã chỉ xem xét cấu trúc dữ liệu tuyến tính, nhưng tất cả thông tin trong thế giới thực không thể được biểu diễn trong thời trang tuyến tính, và đó là nơi cấu trúc dữ liệu cây giúp.

Cấu trúc dữ liệu cây là cấu trúc dữ liệu cho phép bạn lưu trữ dữ liệu của mình theo kiểu phân cấp. Tùy thuộc vào cách bạn lưu trữ dữ liệu, có nhiều loại cây khác nhau, chẳng hạn như cây nhị phân , trong đó mỗi nút có tối đa hai nút con nodes.a

Cùng với người anh em họ của nó cây tìm kiếm nhị phân , nó cũng là một trong cấu trúc dữ liệu cây phổ biến nhất. Do đó, bạn sẽ tìm thấy rất nhiều câu hỏi dựa trên chúng, chẳng hạn như cách đi qua chúng, đếm các nút, tìm độ sâu và kiểm tra xem chúng có cân bằng hay không.

Điểm mấu chốt để giải các câu hỏi về cây nhị phân là kiến ​​thức mạnh mẽ về lý thuyết, ví dụ: kích thước hoặc chiều sâu của cây nhị phân, lá là gì và nút là gì, cũng như hiểu biết về các thuật toán duyệt ngang phổ biến, ví dụ: trước, sau và trong quá trình truyền tải.

Dưới đây là danh sách các câu hỏi mã hóa dựa trên cây nhị phân phổ biến từ kỹ sư phần mềm hoặc phỏng vấn việc làm của nhà phát triển:

  1. Cây tìm kiếm nhị phân được triển khai như thế nào? ( giải pháp )
  2. Bạn làm cách nào để thực hiện quá trình truyền tải đơn đặt hàng trước trong cây nhị phân đã cho? ( giải pháp )
  3. Làm thế nào để bạn duyệt qua một cây nhị phân đã cho theo thứ tự mà không cần đệ quy? ( giải pháp )
  4. Làm cách nào để bạn thực hiện quá trình truyền tải theo thứ tự trong một cây nhị phân đã cho? ( )
  5. Làm thế nào để bạn in tất cả các nút của cây nhị phân đã cho bằng cách sử dụng tra cứu trật tự mà không đệ quy? ( )
  6. Làm cách nào để bạn triển khai thuật toán truyền tải thứ tự bài đăng? ( )
  7. Làm thế nào để bạn duyệt qua một cây nhị phân trong quá trình truyền tải theo thứ tự mà không cần đệ quy? ( )
  8. Tất cả các lá của cây tìm kiếm nhị phân được in ra sao? ( giải pháp )
  9. Làm thế nào để bạn đếm một số nút lá trong một cây nhị phân đã cho? ( giải pháp )
  10. Làm thế nào để bạn thực hiện tìm kiếm nhị phân trong một mảng nhất định? ( giải pháp )

Nếu bạn cảm thấy rằng sự hiểu biết của bạn về mã hóa cây nhị phân là không đủ và bạn không thể tự mình giải quyết các câu hỏi này, tôi đề nghị bạn quay lại và chọn một cấu trúc dữ liệu và khóa học thuật toán tốt như Từ 0 đến 1: Cấu trúc và thuật toán dữ liệu trong Java .

5. Các câu hỏi phỏng vấn mã hóa khác

Ngoài các câu hỏi dựa trên cấu trúc dữ liệu, hầu hết các cuộc phỏng vấn công việc lập trình cũng yêu cầu thuật toán, thiết kế, thao tác bit và logic chung- câu hỏi dựa trên, mà tôi sẽ mô tả trong phần này.

Điều quan trọng là bạn phải thực hành các khái niệm này bởi vì đôi khi chúng trở nên khó giải quyết trong cuộc phỏng vấn thực tế. Có thực hành chúng trước khi không chỉ làm cho bạn quen thuộc với họ mà còn mang lại cho bạn sự tự tin hơn trong việc giải thích các giải pháp cho người phỏng vấn.

  1. Thuật toán sắp xếp bong bóng được triển khai như thế nào? ( )
  2. Thuật toán quicksort lặp lại được triển khai như thế nào? ( giải pháp )
  3. Bạn triển khai thuật toán sắp xếp chèn như thế nào? ( )
  4. Thuật toán sắp xếp hợp nhất được triển khai như thế nào? ( )
  5. Làm cách nào để bạn triển khai thuật toán sắp xếp nhóm? ( )
  6. Làm cách nào để bạn triển khai thuật toán sắp xếp đếm? ( )
  7. Thuật toán sắp xếp radix được triển khai như thế nào? ( )
  8. Làm cách nào để trao đổi hai số mà không sử dụng biến thứ ba? ( )
  9. Làm thế nào để bạn kiểm tra xem hai hình chữ nhật có chồng lên nhau không? ( giải pháp )
  10. Bạn thiết kế máy bán hàng tự động như thế nào? ( )

Nếu bạn cần thêm các câu hỏi mã hóa như vậy, bạn có thể nhận trợ giúp từ các sách như Bẻ khóa cuộc phỏng vấn mã , bởi Gayle Laakmann McDowell thể hiện 189+ câu hỏi và giải pháp lập trình. Một cuốn sách hay để chuẩn bị cho các cuộc phỏng vấn công việc lập trình trong một thời gian ngắn.

Bằng cách này, càng có nhiều câu hỏi bạn giải quyết trong thực tế thì bạn càng chuẩn bị tốt hơn. Vì vậy, nếu bạn nghĩ 50 là không đủ và bạn cần nhiều hơn, hãy xem thêm 50 câu hỏi lập trình cho phỏng vấn qua điện thoại và các cuộc phỏng vấn này và khóa học để chuẩn bị kỹ lưỡng hơn.

Bây giờ bạn đã sẵn sàng cho cuộc phỏng vấn mã hóa

Đây là một số câu hỏi phổ biến nhất bên ngoài cấu trúc dữ liệu và các thuật toán giúp bạn thực hiện tốt trong cuộc phỏng vấn của bạn.

Tôi cũng đã chia sẻ rất nhiều câu hỏi trong blog , vì vậy nếu bạn thực sự quan tâm, bạn luôn có thể đến đó và tìm kiếm chúng.

Những các câu hỏi về mã hóa, cấu trúc dữ liệu và thuật toán phổ biến là những thứ bạn cần biết để phỏng vấn thành công với bất kỳ công ty nào, dù lớn hay nhỏ, cho bất kỳ cấp độ công việc lập trình nào.

Nếu bạn đang tìm kiếm một công việc phát triển phần mềm hoặc lập trình vào năm 2018, bạn có thể bắt đầu chuẩn bị với danh sách các câu hỏi mã hóa này.

Danh sách này cung cấp các chủ đề tốt để chuẩn bị và cũng giúp đánh giá sự chuẩn bị của bạn để tìm hiểu các lĩnh vực của bạn về sức mạnh và điểm yếu.

Một kiến ​​thức tốt về cấu trúc dữ liệu và thuật toán là quan trọng để thành công trong các cuộc phỏng vấn mã hóa và đó là nơi bạn nên tập trung phần lớn sự chú ý của mình. / p>

Kết

Cảm ơn bạn đã đọc hết bài viết … Chúc may mắn với cuộc phỏng vấn lập trình của bạn! Nó chắc chắn sẽ không dễ dàng, nhưng bằng cách làm theo lộ trình và hướng dẫn này, bạn đang tiến gần hơn một bước để trở thành Kỹ sư DevOps .

Nguồn: Medium.com: ” 50+ Data Structure and Algorithms Interview Questions for Programmers ” của Javinpaul.

Chào mừng trở lại.

Đăng nhập sẽ giúp cá nhân hoá nội dung trang chủ của bạn, theo dõi các chủ đề yêu thích và tương tác với các bài viết bạn yêu thích.


Chào mừng trở lại.

Đăng nhập sẽ giúp cá nhân hoá nội dung trang chủ của bạn, theo dõi các chủ đề yêu thích và tương tác với các bài viết bạn yêu thích.


Chào mừng tham gia.

Đăng nhập sẽ giúp cá nhân hoá nội dung trang chủ của bạn, theo dõi các chủ đề yêu thích và tương tác với các bài viết bạn yêu thích.


Nhấp vào “Đăng ký” để chấp nhận Điều khoản dịch vụ và chính sách bảo mật của Toppick.