# Lập trình meta trong Ruby (Ruby on Rails) > define_method, method_missing, class_eval, instance_eval, hooks, DSLs - 20 câu hỏi phỏng vấn - Senior - [Câu hỏi phỏng vấn: Ruby on Rails](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van.md) ## 1. Lập trình meta trong Ruby là gì? **Câu trả lời** Lập trình meta là khả năng của một chương trình để viết hoặc sửa đổi mã trong lúc chạy. Trong Ruby, điều này cho phép định nghĩa method, class và module một cách động, giúp mã linh hoạt và ngắn gọn hơn. Kỹ thuật này được sử dụng rộng rãi trong các framework như Rails để tạo ra các DSL thanh lịch và giảm trùng lặp mã. ## 2. Mục đích của phương thức define_method trong Ruby là gì? **Câu trả lời** define_method cho phép tạo các phương thức một cách động trong thời gian chạy. Nó nhận một tên phương thức (symbol hoặc string) và một block định nghĩa thân phương thức. Khác với def, define_method bắt các biến cục bộ từ scope bao quanh thông qua một closure, điều này hữu ích để tạo các phương thức với hành vi được tham số hóa. ## 3. Phương thức method_missing được Ruby gọi khi nào? **Câu trả lời** method_missing được gọi tự động khi một đối tượng nhận được lời gọi phương thức không tồn tại trong chuỗi kế thừa của nó. Nó nhận tên phương thức được gọi cùng các đối số, cho phép xử lý động các lời gọi này. Đây là nền tảng của nhiều mẫu metaprogramming như ghost methods được dùng trong ActiveRecord. ## Còn 17 câu hỏi nữa - Sự khác biệt chính giữa class_eval và instance_eval là gì? - Hook nào được gọi khi một module được include vào một lớp? Đăng ký miễn phí: https://sharpskill.dev/vi/login ## Các chủ đề phỏng vấn Ruby on Rails khác - [Kiến thức cơ bản về Ruby](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/ruby-basics.md): 25 câu hỏi, Junior - [Lập trình hướng đối tượng trong Ruby](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/ruby-oop.md): 20 câu hỏi, Junior - [Kiến thức cơ bản về Rails](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/rails-fundamentals.md): 18 câu hỏi, Junior - [Routing & Controllers](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/routing-controllers.md): 22 câu hỏi, Junior - [Kiến thức cơ bản về ActiveRecord](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/active-record-basics.md): 25 câu hỏi, Junior - [Views & Template ERB](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/views-erb-templates.md): 20 câu hỏi, Junior - [Liên kết ActiveRecord](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/active-record-associations.md): 24 câu hỏi, Mid-Level - [Truy vấn ActiveRecord nâng cao](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/active-record-queries.md): 28 câu hỏi, Mid-Level - [Form Rails](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/rails-forms.md): 20 câu hỏi, Mid-Level - [Xác thực & Phân quyền](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/authentication-authorization.md): 22 câu hỏi, Mid-Level - [Asset Pipeline hiện đại & frontend](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/rails-asset-pipeline.md): 18 câu hỏi, Mid-Level - [Chế độ API của Rails](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/rails-api-mode.md): 20 câu hỏi, Mid-Level - [Kiểm thử với RSpec](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/rails-testing-rspec.md): 24 câu hỏi, Mid-Level - [ActiveJob & Background Jobs](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/active-job-background-jobs.md): 20 câu hỏi, Mid-Level - [ActionCable & WebSockets](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/action-cable-websockets.md): 18 câu hỏi, Mid-Level - [ActionMailer](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/action-mailer.md): 18 câu hỏi, Mid-Level - [ActiveStorage](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/active-storage.md): 20 câu hỏi, Mid-Level - [Chiến lược Caching](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/caching-strategies.md): 20 câu hỏi, Mid-Level - [Migration nâng cao](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/database-migrations-advanced.md): 20 câu hỏi, Mid-Level - [Rails Engines & ứng dụng mô-đun](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/rails-engines-modular-apps.md): 18 câu hỏi, Senior - [Tối ưu hóa hiệu năng](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/performance-optimization.md): 26 câu hỏi, Senior - [Design Patterns trong Rails](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/rails-design-patterns.md): 22 câu hỏi, Senior - [Bảo mật Rails](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/rails-security.md): 22 câu hỏi, Senior - [GraphQL với Rails](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/graphql-rails.md): 20 câu hỏi, Senior - [Triển khai & Sản xuất](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/rails-deployment-production.md): 20 câu hỏi, Senior - [Monitoring & Logging](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/monitoring-logging.md): 20 câu hỏi, Senior - [Chiến lược nâng cấp Rails](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/rails-upgrade-strategies.md): 18 câu hỏi, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/ruby-metaprogramming