# GraphQL กับ Rails (Ruby on Rails) > graphql-ruby gem, types, queries, mutations, resolvers, N+1 queries, batching - 20 คำถามสัมภาษณ์ - Senior - [คำถามสัมภาษณ์: Ruby on Rails](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions.md) ## 1. gem ใดที่ใช้กันมากที่สุดในการนำ GraphQL มาใช้ในแอปพลิเคชัน Rails? **คำตอบ** gem graphql-ruby (มักเรียกสั้น ๆ ว่า graphql) เป็นโซลูชันมาตรฐานสำหรับการนำ GraphQL มาใช้ใน Rails มันมอบ Ruby DSL ที่สื่อความหมายได้ดีสำหรับการกำหนด types, queries และ mutations รวมถึงการผสานรวมกับ Rails แบบ native ผ่าน routes และ controllers ดูแลรักษาอย่างต่อเนื่องโดย Robert Mosolgo และถูกใช้งานโดยบริษัทอย่าง GitHub และ Shopify ในระบบ production ## 2. จะกำหนด Object type ใน graphql-ruby เพื่อแทนโมเดล User ได้อย่างไร? **คำตอบ** Object type ใน graphql-ruby สืบทอดจาก Types::BaseObject และเปิดเผยฟิลด์ผ่านเมธอด field แต่ละฟิลด์ระบุชื่อ ชนิด GraphQL (String, Int, ID เป็นต้น) และความเป็น nullable ของมัน แนวทางแบบ declarative นี้ช่วยให้ควบคุมได้อย่างแม่นยำว่าข้อมูลใดของโมเดลถูกเปิดเผยผ่าน GraphQL API ทำให้มีการแยกที่ชัดเจนระหว่างโมเดล ActiveRecord กับการแสดงผลแบบ GraphQL ของมัน ## 3. ความแตกต่างหลักระหว่าง Query และ Mutation ใน GraphQL คืออะไร? **คำตอบ** Queries ใช้สำหรับอ่านข้อมูล (การดำเนินการแบบ GET) ในขณะที่ Mutations ใช้สำหรับแก้ไขข้อมูล (สร้าง อัปเดต ลบ) ตามแบบแผนของ GraphQL queries เป็น idempotent และสามารถทำงานแบบขนานได้ ในขณะที่ mutations จะทำงานตามลำดับเพื่อรับประกันลำดับของผลข้างเคียง การแยกแยะนี้เป็นพื้นฐานสำคัญสำหรับ GraphQL API ที่ออกแบบมาอย่างดี ## มีอีก 17 คำถาม - จะประกาศฟิลด์ที่มี arguments ใน Query type ของ graphql-ruby ได้อย่างไร? - ปัญหาด้านประสิทธิภาพที่สำคัญใดที่มักเกิดขึ้นบ่อยกับ GraphQL และ association ของ ActiveRecord? สมัครฟรี: https://sharpskill.dev/th/login ## หัวข้อสัมภาษณ์ Ruby on Rails อื่นๆ - [พื้นฐาน Ruby](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/ruby-basics.md): 25 คำถาม, Junior - [การเขียนโปรแกรมเชิงวัตถุใน Ruby](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/ruby-oop.md): 20 คำถาม, Junior - [พื้นฐาน Rails](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/rails-fundamentals.md): 18 คำถาม, Junior - [Routing & Controllers](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/routing-controllers.md): 22 คำถาม, Junior - [พื้นฐาน ActiveRecord](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/active-record-basics.md): 25 คำถาม, Junior - [Views และ ERB Templates](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/views-erb-templates.md): 20 คำถาม, Junior - [การเชื่อมโยงของ ActiveRecord](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/active-record-associations.md): 24 คำถาม, Mid-Level - [การสอบถาม ActiveRecord ขั้นสูง](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/active-record-queries.md): 28 คำถาม, Mid-Level - [ฟอร์ม Rails](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/rails-forms.md): 20 คำถาม, Mid-Level - [การยืนยันตัวตนและการอนุญาต](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/authentication-authorization.md): 22 คำถาม, Mid-Level - [Asset Pipeline สมัยใหม่และ frontend](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/rails-asset-pipeline.md): 18 คำถาม, Mid-Level - [โหมด API ของ Rails](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/rails-api-mode.md): 20 คำถาม, Mid-Level - [การทดสอบด้วย RSpec](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/rails-testing-rspec.md): 24 คำถาม, Mid-Level - [ActiveJob & Background Jobs](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/active-job-background-jobs.md): 20 คำถาม, Mid-Level - [ActionCable & WebSockets](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/action-cable-websockets.md): 18 คำถาม, Mid-Level - [ActionMailer](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/action-mailer.md): 18 คำถาม, Mid-Level - [ActiveStorage](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/active-storage.md): 20 คำถาม, Mid-Level - [กลยุทธ์การ Caching](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/caching-strategies.md): 20 คำถาม, Mid-Level - [การ Migration ขั้นสูง](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/database-migrations-advanced.md): 20 คำถาม, Mid-Level - [Rails Engines และแอปแบบโมดูลาร์](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/rails-engines-modular-apps.md): 18 คำถาม, Senior - [การเพิ่มประสิทธิภาพการทำงาน](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/performance-optimization.md): 26 คำถาม, Senior - [Design Patterns ใน Rails](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/rails-design-patterns.md): 22 คำถาม, Senior - [เมตาโปรแกรมมิงใน Ruby](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/ruby-metaprogramming.md): 20 คำถาม, Senior - [ความปลอดภัยของ Rails](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/rails-security.md): 22 คำถาม, Senior - [การดีพลอยและโปรดักชัน](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/rails-deployment-production.md): 20 คำถาม, Senior - [Monitoring & Logging](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/monitoring-logging.md): 20 คำถาม, Senior - [กลยุทธ์การอัปเกรด Rails](https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/rails-upgrade-strategies.md): 18 คำถาม, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/th/technologies/ruby-on-rails/interview-questions/graphql-rails