Computer >> Máy Tính >  >> Lập trình >> Ruby

Những thách thức trong cuộc phỏng vấn mã hóa Ruby &Cách giải quyết chúng

Thực hiện các thử thách mã hóa là một cách tuyệt vời để cải thiện Ruby và kỹ năng giải quyết vấn đề của bạn. Và để chuẩn bị cho các cuộc phỏng vấn viết mã !

Tại sao?

Bởi vì trong một thử thách, bạn sẽ tập trung toàn bộ vào việc giải quyết 1 vấn đề cụ thể.

Bạn không phải lo lắng về bất cứ điều gì khác.

Loại thực hành này sẽ mở rộng kỹ năng tư duy của bạn, cho phép bạn khám phá các đặc điểm ngôn ngữ thú vị &trở thành một nhà phát triển Ruby giỏi hơn.

Một số thử thách này đòi hỏi kiến ​​thức chuyên môn về thuật toán máy tính, cấu trúc dữ liệu hoặc khái niệm, chẳng hạn như một số thủ thuật toán học.

Sẽ không sao nếu bạn không thể giải quyết hầu hết những điều này.

Đừng lo lắng!

Bây giờ :

Tôi nghĩ có thể hữu ích nếu đọc một vài giải pháp để hiểu về quá trình giải quyết những thách thức này.

Bắt đầu với…

Thử thách 1:Tìm bản sao

Thử thách đầu tiên này là đưa ra một mảng có Integer giá trị bạn cần để tìm tất cả các số trùng lặp.

Đây là một ví dụ :

numbers = [1,2,2,3,4,5]

find_duplicates(numbers)
# [2]

Hãy bắt đầu với một câu hỏi…

“Làm cách nào để biết một số cụ thể có bị trùng lặp hay không?”

Tôi không cố tìm giải pháp trong một bước.

Ở giai đoạn này, tôi chỉ muốn hỏi và trả lời một câu hỏi sẽ giúp tôi tiến gần hơn đến giải pháp.

Viết ra một vài ý tưởng :

  • Tôi có thể đếm mỗi số chúng ta có trong mảng, sau đó count =2 có nghĩa là trùng lặp.
  • Tôi có thể xem qua mọi phần tử và giữ danh sách các phần tử “đã thấy”, nếu tôi nhìn thấy một phần tử hai lần thì chúng tôi đã tìm thấy một phần tử trùng lặp.
  • Tôi có thể nối các số thành một chuỗi và cố gắng đối sánh các số trùng lặp với một biểu thức chính quy.

Tại thời điểm này, "cái nào là tốt nhất" không quan trọng.

Đừng lo lắng về điều đó!

Ngay bây giờ, điều quan trọng là phải có được một giải pháp hiệu quả. Chọn một cái mà bạn cảm thấy tốt và viết mã cho nó.

Ví dụ :

seen = []

numbers.each_with_object([]) do |n, dups|
  dups << n if seen.include?(n)

  seen << n
end

# [2]

Đây có vẻ là giải pháp chính xác.

Bây giờ :

Bạn muốn thử các đầu vào khác (các mảng khác nhau) để đảm bảo điều này thực sự hoạt động, việc viết các bài kiểm tra đơn vị là rất tốt cho việc này.

Nếu giải pháp hoạt động 100% thì bạn có thể thử các giải pháp khác và sử dụng giải pháp dễ hiểu hơn.

Đừng tìm kiếm sự hoàn hảo.

Tìm kiếm sự học hỏi, hiểu biết và tiến bộ mỗi ngày!

Thử thách 2:Từ hợp lệ

Với một mảng ký tự &một từ, hãy tìm hiểu xem liệu từ có thể được tạo từ những ký tự này hay không.

Ví dụ :

word = "orange"
characters = %w(e n g a r o)

valid_word?(characters, word)
# true

Một lần nữa, chúng tôi bắt đầu với một câu hỏi để định hướng quá trình suy nghĩ của chúng tôi.

“Làm thế nào chúng tôi có thể đảm bảo rằng từ có thể được tạo ra bằng những ký tự này?”

Đưa ra ý tưởng.

Bỏ đi những phiền nhiễu và suy nghĩ về nó.

Có thể hữu ích khi thực hiện việc này trên giấy .

Ý tưởng của tôi:

  • Đối với mọi ký tự trong word , xóa ký tự đó khỏi characters mảng, nếu bạn không thể xóa tất cả các ký tự thì hãy trả về false
  • Đếm tất cả các ký tự trong word &characters , sau đó trừ số lượng

Đây là một giải pháp khả thi :

word
  .each_char
  .all? { |ch| characters.delete_at(characters.index(ch)) rescue nil }

Giải pháp của bạn là gì?

Chia sẻ nó trong phần bình luận.

Tóm tắt

Bạn đã học về các thách thức mã hóa và cách sử dụng chúng để cải thiện kỹ năng Ruby của mình!

Hãy nhớ :

Hoàn toàn ổn nếu không thể giải quyết một thử thách cụ thể. Hãy nghĩ về nó giống như một ông chủ trò chơi điện tử, nếu ông chủ ở cấp 100 và bạn đang ở cấp 70 thì sẽ rất khó để đánh bại ông chủ này.

Bạn sẽ làm gì trong trường hợp đó?

Bạn tăng cấp và nhận kinh nghiệm với những thử thách dễ dàng hơn (trùm cấp thấp hơn) và bạn nhận được thiết bị tốt hơn (tìm hiểu thêm về Ruby và lập trình).

Chúc may mắn vui vẻ! 🙂