Ruby on Rails น่าจะเป็น Ruby framework ที่มีชื่อเสียงที่สุด ความเรียบง่ายในการใช้งาน สถาปัตยกรรม MVC ชุมชน และความสามารถในการปรับขนาดเป็นเหตุผลสำหรับความนิยม
ชื่อใหญ่บางชื่อที่ใช้ Ruby on Rails ได้แก่ GitHub, Dribble, Shopify, Airbnb, Etsy, Kickstarter, Twitch และ Zendesk เป็นต้น
หากคุณเป็นวิศวกร Ruby on Rails ระดับกลางหรือเชี่ยวชาญ การทำความเข้าใจธรรมชาติของคำถามที่คุณอาจพบในการสัมภาษณ์ครั้งต่อไปถือเป็นขั้นตอนที่ชาญฉลาด
การสัมภาษณ์อาจเป็นเรื่องน่ากลัวหากคุณไม่พร้อม อย่างไรก็ตาม หากคุณเตรียมตัวมาดี ความมั่นใจก็จะพุ่งปรี๊ด และคุณอาจโชคดีที่ได้ตำแหน่งใหม่ในบริษัทในฝันของคุณ
เหล่านี้คือคำถามสัมภาษณ์ทั่วไปเกี่ยวกับ Ruby on Rails และคำตอบ
Ruby on Rails คืออะไร?
Ruby เป็นภาษาโปรแกรมเชิงวัตถุที่มีไวยากรณ์ง่ายๆ
Ruby on Rails เป็นเฟรมเวิร์ก Ruby ที่นักพัฒนาใช้เพื่อสร้างเว็บแอปพลิเคชัน
พูดถึงข้อดีของ Ruby on Rails
- โค้ดน้อยกว่าภาษาอื่น: คุณสามารถประสบความสำเร็จได้มากมายด้วยโค้ดเพียงไม่กี่บรรทัดด้วย Rails
- ห้องสมุดและอัญมณีที่กว้างขวาง: มีห้องสมุดและอัญมณีมากมายเพื่อปรับปรุงการทำงานของแอพ Ruby on Rails
- ง่ายต่อการเรียนรู้: รหัสของ Ruby on Rails ดูเหมือนภาษาอังกฤษทั่วไป
- ชุมชนขนาดใหญ่
พูดถึงขีดจำกัดของ Ruby on Rails
- เมื่อเปรียบเทียบกับ Django และ Node.js ความเร็วและประสิทธิภาพของรันไทม์ของ Rails นั้นต่ำ
- เอกสารจำกัดสำหรับอัญมณีบางส่วน
- Ruby on Rails เป็นความเห็นที่จำกัดความยืดหยุ่นของนักพัฒนา
ตัวควบคุม Rails คืออะไร?
เป็นศูนย์กลางทางตรรกะของแอปพลิเคชัน Ruby on Rails ตัวควบคุม Rails จัดการ ประสานงาน และตรวจสอบการโต้ตอบทั้งหมดระหว่างผู้ใช้ แบบจำลอง และมุมมอง
บันทึกที่ใช้งานของ Rails คืออะไร?
Active Record เป็นเทคนิคการแมปความสัมพันธ์ของวัตถุ (ORM) โค้ด Ruby ชั้นนี้ทำงานระหว่างโค้ดลอจิกและฐานข้อมูลของคุณ หลังจากที่คุณเขียนโค้ด Ruby ให้คุณเรียกใช้ ‘การโยกย้าย’ เพื่อทำการเปลี่ยนแปลงกับฐานข้อมูลของคุณ
MVC คืออะไร และทำงานอย่างไร
รูปแบบสถาปัตยกรรม model-view-controller (MVC) แยกตรรกะทางธุรกิจออกจากตรรกะอินพุตและการนำเสนอ
- โมเดล: จัดการลอจิกข้อมูลทั้งหมดในแอป Rails
- ดู: นี่เป็นส่วนหนึ่งของแอปพลิเคชันที่ผู้ใช้ดู
- Controller: เป็นเหมือนสะพานหรือนายหน้าที่ช่วยให้แบบจำลองและมุมมองในการสื่อสาร
ตัวควบคุมการกระทำใน Ruby on Rails คืออะไร?
Action Controller คือ C ในรูปแบบ MVC Action Controller ได้รับคำขอที่เข้ามา ทำความเข้าใจกับคำขอ และสร้างเอาต์พุตที่เหมาะสม
คราดใน Rails คืออะไร?
Rake เป็นตัวรันสำหรับแอพพลิเคชั่น Ruby on Rails และ Ruby Rails ได้กำหนดงาน Rake ไว้ล่วงหน้าสำหรับดำเนินการทดสอบ เรียกใช้การย้ายข้อมูล และสร้างฐานข้อมูล
ผลตอบแทนใน Ruby on Rails คืออะไร?
Yield เป็นคำหลักที่ใช้ภายในเมธอดเพื่อเรียกบล็อก ไม่มีการจำกัดจำนวนอาร์กิวเมนต์ Yield สามารถส่งผ่านไปยังบล็อกได้ บล็อก ในกรณีนี้คือเมธอดที่ไม่มีชื่อที่สามารถส่งผ่านเป็นอาร์กิวเมนต์เพิ่มเติมให้กับเมธอดอื่นๆ
Garbage Collection Ruby on Rails คืออะไร?
Garbage Collection เป็นกระบวนการควบคุมหน่วยความจำที่ใช้โดยโปรแกรมคอมพิวเตอร์ Ruby on Rails ติดตามว่าโปรแกรมกำลังใช้วัตถุใดอยู่แทนที่จะเป็นโปรแกรมเมอร์ นักพัฒนาสามารถมุ่งเน้นไปที่ตรรกะและข้อตกลงแทนที่จะกังวลเกี่ยวกับการจัดสรรหน่วยความจำ
บทบาทของ Garbage Collection ในแอพ Rails คืออะไร?
มันเพิ่มหน่วยความจำในเครื่องของคุณเพื่อให้กระบวนการอื่นดำเนินการ การรวบรวมขยะทำได้โดยการลบวัตถุที่ไม่สามารถเข้าถึงได้ซึ่งโปรแกรมทิ้งไว้หลังจากดำเนินการ
ไปป์ไลน์สินทรัพย์คืออะไร?
ท่อส่งสินทรัพย์ใน Ruby on Rails จัดเตรียมเฟรมเวิร์กที่ย่อขนาดและเชื่อมสินทรัพย์ CSS และ JavaScript เฟรมเวิร์กนี้ช่วยให้แอสเซททั้งหมดในแอพ Rails ของคุณถูกรวมเข้ากับแอสเซทจากเจ็มอื่นๆ โดยอัตโนมัติ
แยกความแตกต่างระหว่างนั่งร้านแบบไดนามิกและแบบคงที่
Scaffolding คือกระบวนการสร้างส่วนสำคัญของแอปพลิเคชัน Rails
Static scaffolding ป้อนคำสั่งที่สร้างข้อมูลที่จำเป็นในฟิลด์ที่เกี่ยวข้องอย่างชัดเจน คุณต้องเรียกใช้การย้ายข้อมูล
โครงสร้างแบบไดนามิกสร้างเนื้อหาและอินเทอร์เฟซผู้ใช้ระหว่างรันไทม์ กระบวนการนี้สามารถใช้เพื่อสร้าง แก้ไข และลบการกระทำในแอพ Rails
ห้องสมุดชั้นเรียนคืออะไร?
ไลบรารีคลาสประกอบด้วยโดเมนใน Ruby on Rails และการเขียนโปรแกรมเธรดและประเภทข้อมูลคือตัวอย่างของโดเมนดังกล่าว ไลบรารีคลาสช่วยให้นักพัฒนาสร้างโค้ดที่เป็นนามธรรมได้ และใช้ตรรกะเดียวกันภายในองค์ประกอบต่างๆ ในแอป
อธิบายสมาคม Polymorphic ใน Rails
Polymorphic Association เป็นประเภทของ Active Record Association ความหลากหลายหมายความว่าวัตถุสามารถมีได้หลายรูปแบบ ในบริบทของ Rails นั้น Polymorphic Association ให้คุณกำหนดโมเดลเดียวที่สามารถเชื่อมโยงหรือเป็นของโมเดลอื่นได้โดยไม่ต้องเขียนโค้ดซ้ำ
การแก้ไขสตริงใน Ruby คืออะไร?
การแก้ไขสตริงเป็นการเพิ่มตัวยึดตำแหน่งที่อ้างอิงถึงค่าอื่นๆ ในวัตถุสตริง การใช้ตัวดำเนินการการบวกเป็นวิธีที่ง่ายที่สุดในการสอดแทรกค่า
พิจารณาตัวอย่างนี้:
name = "Titus" puts "Hello " + name
ผลลัพธ์จะเป็น;
สวัสดีติตัส
Object Relationship Model (ORM) คืออะไร?
ORM เป็นสะพานเชื่อมระหว่างฐานข้อมูลและโปรแกรมเชิงวัตถุ ความสัมพันธ์ของวัตถุใน Rails ระบุว่าเมื่อใดที่คลาสถูกแมปกับตารางภายในฐานข้อมูลของคุณ
อธิบายการโยกย้าย Rails
การโยกย้ายช่วยให้นักพัฒนาสามารถเปลี่ยนแปลงสคีมาฐานข้อมูลได้สะดวก นักพัฒนาสามารถจัดการการเปิดตัวและการย้อนกลับในสคีมาฐานข้อมูลในสภาพแวดล้อมที่มีการควบคุม วิธีการนี้ป้องกันคุณจากการจัดการสคริปต์ SQL แต่ละตัวเพื่อกำหนดการเปลี่ยนแปลงของคุณ
อธิบายหลักการตั้งชื่อใน Rails
- คลาสและโมดูล: ใช้ MixedCase แต่ไม่มีขีดล่าง ชื่อในคลาสและโมดูลขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่
- ตารางฐานข้อมูล: ชื่อของตารางฐานข้อมูลควรเป็นพหูพจน์และตัวพิมพ์งู
- ตัวแปร: ตัวอักษรที่ประกาศตัวแปรควรเป็นตัวพิมพ์เล็กและตัวพิมพ์งูโดยมีเครื่องหมายขีดล่างคั่น
- รุ่น: ใช้ MixedCase เพื่อระบุรุ่นและตรวจสอบว่าชื่ออยู่ในรูปแบบเอกพจน์
- ตัวควบคุม: ชื่อตัวควบคุมเป็นพหูพจน์
ความแตกต่างระหว่างสตริงและข้อความใน Rails คืออะไร?
:string เหมาะสำหรับเมื่อคุณต้องการเก็บข้อความสั้นที่มีอักขระไม่เกิน 255 ตัว คุณสามารถใช้กับชื่อ ชื่อผู้ใช้ อีเมล รหัสผ่าน และตำแหน่ง
:text เหมาะกับคำอธิบายที่ยาว ตัวอย่างความคิดเห็นที่สมบูรณ์แบบในบล็อกโพสต์หรือคำอธิบายร้านค้า
class CreatePosts < ActiveRecord::Migration def self.up create_table:posts do |t| t.string:description t.text :content end end
อธิบายการปลอมแปลงคำขอข้ามไซต์ (CSRF)
Cross-Site Request Forgery (CSRF) คือการโจมตีทางออนไลน์ที่ผู้โจมตีดักจับผู้ใช้ที่ได้รับการรับรองความถูกต้องเพื่อดำเนินการบางอย่างในนามของพวกเขา
Rails ต้องการให้นักพัฒนาเพิ่ม “protect_from_forgery” ให้กับ ApplicationController เพื่อหลีกเลี่ยงการโจมตี CSRF แอปจะต้องใช้โทเค็น CSRF เพื่อรับรองความถูกต้องของผู้ใช้เสมอ
อธิบายว่า mixin คืออะไรใน Rails
มิกซ์อินนำเสนอวิธีควบคุมการเพิ่มฟังก์ชันการทำงานให้กับคลาส มิกซ์อินต่างๆ มากมายรวมกันเป็นคลาส มิกซ์อินขจัดความจำเป็นในการสืบทอดหลายรายการ
การใช้โหลดและต้องการใน Ruby คืออะไร?
ต้องใช้ () เพื่อนำเข้าห้องสมุด / อัญมณี
load() ใช้เพื่อรันบล็อกของโค้ด
อะไรคือความแตกต่างระหว่างการโทรกลับและผู้สังเกตการณ์ใน Ruby on Rails
ผู้สังเกตการณ์ Rails จะใช้เมื่อวิธีการไม่เกี่ยวข้องโดยตรงกับวงจรชีวิตของวัตถุ วงจรชีวิตของพวกมันมีขนาดใหญ่และสามารถติดหรือถอดออกได้ตลอดเวลา
การเรียกกลับสามารถเรียกใช้ได้เฉพาะบางกรณีในวงจรชีวิตของวัตถุเท่านั้น ตัวอย่างของอินสแตนซ์ดังกล่าว ได้แก่ การอัปเดต การสร้าง และการตรวจสอบความถูกต้อง การโทรกลับจะทำงานในช่วงเวลาสั้นๆ เท่านั้น
Harnesses และ Fixtures ใน Ruby คืออะไร?
การแข่งขันหมายถึงวิธีการจัดระเบียบข้อมูลที่คุณต้องการทดสอบ สามารถสร้างได้ในไฟล์ที่ลงท้ายด้วยนามสกุล .yml
Harnesses คือสภาพแวดล้อมหรือนักวิ่งทดสอบสำหรับการทดสอบ Rails มีการติดตั้งการแข่งขันใน Harnesses
ความแตกต่างระหว่างการขยายและการรวมคืออะไร?
“รวม” เพิ่มวิธีการอินสแตนซ์ให้กับชั้นเรียน รหัสจะสามารถเข้าถึงได้ผ่านวิธีการเรียน
“Extend” เพิ่มเมธอดอินสแตนซ์ที่กำหนดในโมดูลไปยังคลาสเสริม
อัญมณีและปลั๊กอินเหมือนกันใน Ruby หรือไม่
Gems เป็นแอพพลิเคชั่น Ruby ที่จำเป็นต้องติดตั้ง มีจุดประสงค์ทั่วไปและไม่ได้ขึ้นอยู่กับ Rails สำหรับฟังก์ชันการทำงาน
ปลั๊กอินใน Ruby on Rails ถูกปรับใช้ร่วมกับแอปพลิเคชัน Rails ของคุณ พวกเขาแก้ไขหรือเพิ่มการทำงานหลักของ Rails
ผู้สังเกตการณ์ทางรถไฟคืออะไร?
ผู้สังเกตการณ์ Rails นำเสนอกลไกที่วัตถุหนึ่งแจ้งวัตถุอื่น ๆ เมื่อสถานะของวัตถุเปลี่ยนแปลง ใช้ได้กับความสัมพันธ์แบบหนึ่งต่อกลุ่ม เช่น เมื่อออบเจ็กต์หนึ่งเปลี่ยนแปลง ออบเจ็กต์ที่ขึ้นต่อกันทั้งหมดจะได้รับแจ้งและเปลี่ยนแปลงโดยอัตโนมัติ
คำสั่งใดที่ใช้ในการสร้างการโยกย้าย
bin/rails db:migrate
แสดงวิธีการกำหนด class, Instance และ global ตัวแปรใน Ruby
- ตัวแปรคลาส: สามารถใช้ได้ทุกที่ภายในคลาส ลูกหลานของคลาสยังสามารถเข้าถึงได้ ขึ้นต้นด้วย @@
- ตัวแปรอินสแตนซ์: ใช้ในขอบเขตเฉพาะที่เฉพาะกับอินสแตนซ์ของวัตถุที่สร้างขึ้น อาจแตกต่างกันไปในแต่ละวัตถุ พวกเขาขึ้นต้นด้วย @
- Global Variables: เข้าถึงได้ทุกที่ภายในโปรแกรม เริ่มต้นด้วย $
rakefile มีบทบาทใดในไดเรกทอรีสาธิตในการเล่น Ruby
Rakefile ช่วยในการทดสอบและบรรจุรหัส Rails ไฟล์กำหนดงานที่ทำการทดสอบหรือสาธิตคุณลักษณะของแอปพลิเคชัน
เครื่องกวาดใน Rails คืออะไร?
Sweeper ทำหน้าที่เป็นตัวยุติในการแคช พวกเขาทำหน้าที่เป็นตัวกรองครึ่งหนึ่งและผู้สังเกตการณ์ครึ่งหนึ่ง และใช้การเรียกกลับสำหรับสองบทบาท ‘expire_cache’ ค้นหาเศษแคชทั้งหมดที่ต้องหมดอายุและล้างข้อมูลเหล่านั้น
ตัวกรองคืออะไร?
เหล่านี้เป็นวิธีการ “ก่อน” หรือ “หลัง” การดำเนินการของผู้ควบคุม เมธอดดังกล่าวสืบทอดมาและจะทำงานพร้อมกับทุกคำขอที่แอปของคุณได้รับ ตราบเท่าที่คุณได้ตั้งค่าไว้ใน ApplicationController
แยกความแตกต่างระหว่างการเปลี่ยนเส้นทางและการเรนเดอร์ใน Rails
Render: ใช้เพื่อเรนเดอร์เทมเพลตแล้วส่งไปยังไคลเอ็นต์เพื่อตอบสนองคำขอ เทมเพลตนี้จะสร้างเพจที่เบราว์เซอร์จะแสดง
เปลี่ยนเส้นทาง: ส่งคำขอ HTTP ใหม่ไปยัง URL อื่น การดำเนินการนี้เปลี่ยนเส้นทางไคลเอ็นต์ไปยังตัวควบคุมหรือการดำเนินการอื่น วิธีนี้มีประโยชน์เมื่อคุณต้องการเปลี่ยนไคลเอนต์ URL ที่เห็นบนเบราว์เซอร์
แยกความแตกต่างระหว่างการเรียก super() และ super call
- Super: ส่งข้อความไปยังพาเรนต์ของวัตถุปัจจุบันเพื่อเรียกใช้อาร์กิวเมนต์ทั้งหมดของเมธอดที่เรียกใช้
- super(): ไม่ส่งข้อโต้แย้งใด ๆ ไปยังพาเรนต์
ความแตกต่างระหว่าง Procs และ Blocks คืออะไร?
- บล็อก: ชิ้นส่วนของโค้ดที่ล้อมรอบด้วยคำสั่ง do/end หรือวงเล็บปีกกา พวกมันถูกสร้างขึ้นและดำเนินการทุกครั้งที่เรียกใช้เมธอด
- Procs: บล็อกของโค้ดที่รวมเข้าด้วยกันกับชุดของตัวแปรในเครื่อง รหัสนี้สามารถเรียกใช้ในบริบทที่แตกต่างกันและยังคงเข้าถึงตัวแปรได้
ความแตกต่างระหว่างคำสั่ง put และ print คืออะไร?
เราใช้ put เมื่อเราต้องการพิมพ์บางสิ่งบนหน้าจอ ตัวอย่างเช่น,
puts “Hello World!!!”
พิมพ์ Hello World!!! บนหน้าจอ
เราใช้การพิมพ์เมื่อเราไม่ต้องการเพิ่มบรรทัดใหม่บนคอนโซล
print “Hello World!!!”
เอาต์พุต Hello World!!! แต่บรรทัดใหม่จะไม่ถูกเพิ่มลงในคอนโซล
เครื่องมือค้นหาแบบไดนามิกคืออะไร
ตัวค้นหาแบบไดนามิกช่วยให้นักพัฒนาสามารถค้นหาบันทึกในฐานข้อมูลได้โดยไม่ต้องใช้แบบสอบถาม SQL แบบดิบ พวกเขาใช้คำหลัก find_by_ ซึ่งตามด้วยแอตทริบิวต์ที่จะค้นหา
อธิบายว่า Rail ใช้ ajax อย่างไร
- ทริกเกอร์ เช่น การส่งแบบฟอร์มหรือการคลิกปุ่ม จะเริ่มต้นขึ้น
- วิธี JavaScript ส่งข้อมูลทริกเกอร์ไปยังตัวจัดการในเซิร์ฟเวอร์
- ตัวจัดการในฝั่งเซิร์ฟเวอร์ทำงานกับข้อมูลและส่ง HTML ไปยังเว็บไคลเอ็นต์
- ตัวจัดการ JavaScript ในฝั่งไคลเอ็นต์ได้รับเนื้อหา HTML และอัปเดตหน้าปัจจุบัน
อธิบาย Dig, Float และ Max
- ด้วยวิธีการ Dig คุณสามารถดึงค่าจากแฮชหรืออาร์เรย์ที่ซ้อนกัน
- Float เป็นประเภทข้อมูล Ruby ที่แสดงจำนวนจริงด้วยความแม่นยำของทศนิยม
- Max เป็นวิธีที่ใช้ได้กับอาร์เรย์และแฮช ส่งกลับค่าสูงสุดในชุดของรายการ/ค่า
array = [2, 9, 4, 7, 3] maximum = array.max
คอนโซลจะแสดงผลเป็น 9 เนื่องจากเป็นตัวเลขที่ใหญ่ที่สุด
บทสรุป
ข้างต้นคือคำถามที่คุณอาจพบใน Ruby on Rails ครั้งต่อไป หากคุณเป็นวิศวกรซอฟต์แวร์รอบด้าน โปรดตรวจสอบคำถามสัมภาษณ์ Node.js เหล่านี้ ตรวจสอบให้แน่ใจว่าคุณเข้าใจรายละเอียดงานของวิศวกร Rails ก่อนเข้าร่วมการสัมภาษณ์ครั้งต่อไป