# Lập trình hướng đối tượng trong Ruby (Ruby on Rails) > Class, module, kế thừa, mixin, attr_accessor, self, metaprogramming cơ bản - 20 câu hỏi phỏng vấn - Junior - [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àm thế nào để định nghĩa một class trong Ruby? **Câu trả lời** Trong Ruby, một class được định nghĩa bằng từ khóa class theo sau là tên class (theo quy ước viết CamelCase) và kết thúc bằng end. Phương thức initialize đóng vai trò là constructor và được gọi tự động khi tạo một instance mới với Class.new. Các biến instance (có tiền tố @) lưu trữ trạng thái của mỗi đối tượng. ## 2. Vai trò của phương thức initialize trong Ruby là gì? **Câu trả lời** Phương thức initialize là constructor trong Ruby. Nó được gọi tự động khi một đối tượng mới được tạo qua Class.new. Nó cho phép khởi tạo các biến instance và thiết lập trạng thái ban đầu của đối tượng. Khác với các ngôn ngữ khác, constructor không mang tên của class mà luôn được gọi là initialize. ## 3. Sự khác biệt giữa attr_reader, attr_writer và attr_accessor là gì? **Câu trả lời** Ba phương thức class này tự động tạo ra các accessor. attr_reader chỉ tạo getter (đọc), attr_writer chỉ tạo setter (ghi), và attr_accessor tạo cả hai cùng lúc. Điều này tránh phải viết thủ công các phương thức getter/setter lặp đi lặp lại, giúp mã ngắn gọn và dễ đọc hơn. ## Còn 17 câu hỏi nữa - Kế thừa class hoạt động như thế nào trong Ruby? - Sự khác biệt giữa module và class trong Ruby là gì? Đă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 - [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 - [Lập trình meta trong Ruby](https://sharpskill.dev/vi/technologies/ruby-on-rails/cau-hoi-phong-van/ruby-metaprogramming.md): 20 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-oop