Ruby on Rails to bez wątpienia jeden z najbardziej rozpoznawalnych frameworków w środowisku Ruby. Jego popularność wynika z prostoty użytkowania, oparcia na architekturze MVC, silnej społeczności programistów i możliwości skalowania aplikacji.
Z Ruby on Rails korzystają tak znane firmy jak GitHub, Dribbble, Shopify, Airbnb, Etsy, Kickstarter, Twitch oraz Zendesk. To tylko kilka przykładów z długiej listy.
Jeżeli posiadasz średnie lub zaawansowane umiejętności w zakresie Ruby on Rails, warto przygotować się na pytania, które mogą pojawić się podczas kolejnej rozmowy kwalifikacyjnej. Dobre przygotowanie do rozmowy zwiększa pewność siebie i może pomóc w zdobyciu wymarzonej pracy.
Rozmowy rekrutacyjne mogą budzić obawy, jeśli nie jesteś do nich odpowiednio przygotowany. Odpowiednie przygotowanie zwiększa pewność siebie i może otworzyć drogę do nowej, satysfakcjonującej pracy.
Poniżej przedstawiamy typowe pytania, które możesz usłyszeć na rozmowie kwalifikacyjnej dotyczącej Ruby on Rails, wraz z przykładowymi odpowiedziami.
Czym jest Ruby on Rails?
Ruby to zorientowany obiektowo język programowania charakteryzujący się przejrzystą składnią.
Ruby on Rails, natomiast, to framework oparty na Ruby, wykorzystywany przez programistów do tworzenia aplikacji internetowych.
Omów zalety Ruby on Rails
- Mniejsza ilość kodu: W Railsach można osiągnąć wiele, używając jedynie kilku linijek kodu.
- Rozbudowana biblioteka i klejnoty (gems): Dostępnych jest wiele bibliotek i klejnotów rozszerzających funkcjonalność aplikacji Ruby on Rails.
- Przystępność nauki: Kod w Ruby on Rails jest bardzo intuicyjny i przypomina język angielski.
- Szeroka społeczność: Ruby on Rails ma dużą i aktywną społeczność, co ułatwia rozwiązywanie problemów i naukę.
Omów ograniczenia Ruby on Rails
- Niższa wydajność: W porównaniu do Django czy Node.js, Railsy mogą być mniej wydajne pod względem szybkości działania.
- Ograniczona dokumentacja: Niektóre klejnoty mogą mieć słabszą dokumentację.
- Ograniczona elastyczność: Ruby on Rails jest frameworkiem opiniotwórczym, co może ograniczać swobodę programisty.
Co to jest kontroler Rails?
Kontroler Rails jest centralnym elementem logicznym aplikacji Ruby on Rails. Zarządza, koordynuje i kontroluje interakcje pomiędzy użytkownikami, modelami i widokami.
Co to jest aktywny rekord Railsów?
Active Record to technika mapowania obiektowo-relacyjnego (ORM). Stanowi warstwę kodu Ruby pośredniczącą między logiką aplikacji a bazą danych. Po wprowadzeniu zmian w kodzie, uruchamiane są „migracje”, które aktualizują strukturę bazy danych.
Co to jest MVC i jak działa?
Model-View-Controller (MVC) to wzorzec architektoniczny, który oddziela logikę biznesową od logiki wejścia i prezentacji danych.
- Model: Odpowiada za całą logikę danych w aplikacji Rails.
- Widok: Jest elementem aplikacji, który widzi użytkownik.
- Kontroler: Służy jako pośrednik, umożliwiający komunikację między modelem a widokiem.
Co to jest kontroler akcji w Ruby on Rails?
Kontroler akcji to „C” w architekturze MVC. Odbiera przychodzące żądania, analizuje je i generuje odpowiednie dane wyjściowe.
Czym jest rake w Railsach?
Rake to narzędzie do wykonywania zadań w aplikacjach Ruby i Ruby on Rails. Rails posiada predefiniowane zadania Rake, które służą do uruchamiania testów, migracji i tworzenia baz danych.
Czym jest yield w Ruby on Rails?
Yield to słowo kluczowe używane wewnątrz metod do wywoływania bloku kodu. Yield może przekazać dowolną liczbę argumentów do bloku. Bloki w tym kontekście są bezimiennymi metodami akceptowanymi jako dodatkowe argumenty dla innych metod.
Co to jest Garbage Collection Ruby on Rails?
Garbage Collection to mechanizm kontroli pamięci używanej przez programy. W Ruby on Rails, to interpreter, a nie programista, monitoruje wykorzystanie obiektów przez program. Dzięki temu programiści mogą skoncentrować się na logice i konwencji zamiast na ręcznym zarządzaniu pamięcią.
Jaka jest rola Garbage Collection w aplikacji Rails?
Garbage Collection uwalnia pamięć komputera, aby umożliwić wykonywanie innych procesów. Osiąga to poprzez usuwanie obiektów, które nie są już używane przez program.
Co to jest potok aktywów?
Potok aktywów w Ruby on Rails to system, który optymalizuje zasoby CSS i JavaScript poprzez ich minimalizację i łączenie. Pozwala on na automatyczne łączenie wszystkich zasobów aplikacji Rails, w tym tych z bibliotek zewnętrznych (klejnotów).
Rozróżnij rusztowania dynamiczne i statyczne
Rusztowanie to proces automatycznego generowania podstawowych części aplikacji Rails.
Rusztowanie statyczne generuje kod na podstawie polecenia, tworząc szkielet aplikacji z określonymi danymi. Po jego utworzeniu należy uruchomić migracje.
Rusztowanie dynamiczne generuje zawartość i interfejs użytkownika w czasie rzeczywistym, umożliwiając tworzenie, modyfikowanie i usuwanie akcji.
Co to jest biblioteka klas?
Biblioteka klas obejmuje różne obszary w Ruby on Rails, takie jak typy danych czy programowanie wielowątkowe. Ułatwia programistom tworzenie abstrakcji kodu, co pozwala na ponowne wykorzystanie tej samej logiki w różnych częściach aplikacji.
Opisz asocjację polimorficzną w Railsach
Asocjacja polimorficzna to rodzaj powiązania w Active Record, w którym obiekt może przyjmować różne formy. W kontekście Railsów, umożliwia ona definiowanie jednego modelu, który może być powiązany z innymi modelami bez konieczności pisania powtarzalnego kodu.
Co to jest interpolacja ciągów znaków w języku Ruby?
Interpolacja ciągów znaków polega na wstawianiu wartości zmiennych w łańcuchach tekstowych za pomocą symboli zastępczych. Najprostszym sposobem jest użycie operatora dodawania.
Przykład:
name = "Titus" puts "Hello " + name
Wynik:
Witaj Tytusie
Co to jest model relacji obiektowych (ORM)?
ORM to warstwa pośrednicząca pomiędzy bazami danych a aplikacjami obiektowymi. W Railsach, ORM mapuje klasy na tabele w bazie danych, ułatwiając pracę z danymi.
Wyjaśnij migrację Railsów
Migracje umożliwiają programistom wygodne modyfikowanie struktury bazy danych. Pozwalają na śledzenie i zarządzanie zmianami schematu bazy danych w kontrolowanym środowisku. Dzięki temu programiści nie muszą zarządzać poszczególnymi skryptami SQL.
Wyjaśnij konwencję nazewnictwa w Railsach
- Klasy i moduły: Używamy notacji MixedCase bez podkreśleń. Nazwy zaczynają się dużą literą.
- Tabele bazy danych: Nazwy tabel powinny być zapisane małymi literami w liczbie mnogiej.
- Zmienne: Nazwy zmiennych piszemy małymi literami z użyciem snake_case, gdzie słowa oddzielone są podkreśleniem.
- Modele: Nazwy modeli zapisujemy w notacji MixedCase, w liczbie pojedynczej.
- Kontrolery: Nazwy kontrolerów są w liczbie mnogiej.
Jaka jest różnica między łańcuchem a tekstem w Railsach?
Typ `:string` jest odpowiedni dla krótkich tekstów do 255 znaków, takich jak nazwy, loginy, e-maile, hasła czy tytuły.
Typ `:text` jest przeznaczony dla dłuższych opisów, na przykład komentarzy do postów na blogu czy opisów produktów.
class CreatePosts < ActiveRecord::Migration def self.up create_table:posts do |t| t.string:description t.text :content end end
Wyjaśnij fałszerstwo żądań między witrynami (CSRF)
CSRF to atak, w którym atakujący zmusza uwierzytelnionego użytkownika do wykonania niepożądanych akcji w jego imieniu.
Aby chronić się przed atakami CSRF, Rails wymaga od programistów dodania `protect_from_forgery` do ApplicationController. Aplikacja będzie wymagała tokena CSRF przy każdej próbie uwierzytelnienia użytkownika.
Wyjaśnij, czym jest mixin w Railsach
Mixin to sposób na dodanie funkcjonalności do klasy. Klasa może korzystać z wielu różnych mixinów. Eliminują one konieczność korzystania z wielokrotnego dziedziczenia.
Jakie jest zastosowanie obciążenia i wymagania w Ruby?
`require()` służy do importowania bibliotek lub klejnotów.
`load()` służy do wykonania bloku kodu.
Jaka jest różnica między wywołaniami zwrotnymi a obserwatorami w Ruby on Rails?
Obserwatorzy w Railsach są używani, gdy metoda nie jest bezpośrednio związana z cyklem życia obiektu. Ich cykl życia jest długi i mogą być podłączane i odłączane w dowolnym momencie.
Wywołania zwrotne są aktywowane w określonych momentach cyklu życia obiektu, na przykład podczas aktualizacji, tworzenia czy walidacji. Są aktywne tylko przez krótki czas.
Czym są uprzęże i mocowania w Ruby?
Mocowania (fixtures) to zbiory danych wykorzystywanych w testach, najczęściej zapisywane w plikach z rozszerzeniem `.yml`.
Uprzęże (harnesses) to środowisko lub narzędzie służące do uruchamiania testów. Konfiguracja uprzęży znajduje się w wiązkach przewodów.
Jaka jest różnica między rozszerzeniem a włączeniem?
`include` dodaje metody instancji do klasy. Dzięki temu kod staje się dostępny za pośrednictwem metod klasowych.
`extend` dodaje metody instancji zdefiniowane w module do rozszerzonej klasy.
Czy klejnoty i wtyczki są takie same w Ruby?
Klejnoty (gems) to spakowane biblioteki Ruby, które można zainstalować. Mają one uniwersalny charakter i nie zależą od Railsów.
Wtyczki (plugins) w Ruby on Rails są specyficzne dla aplikacji Rails. Modyfikują lub dodają funkcjonalność do podstawowej struktury Rails.
Kim są obserwatorzy kolejowi?
Obserwatorzy Rails oferują mechanizm, w którym jeden obiekt informuje inne o zmianie swojego stanu. Wykorzystuje się je w relacjach jeden-do-wielu, gdzie zmiana jednego obiektu automatycznie aktualizuje wszystkie zależne obiekty.
Jakie polecenie jest używane do tworzenia migracji?
bin/rails db:migrate
Pokaż, jak zdefiniować klasę, instancję i zmienne globalne w języku Ruby
- Zmienne klasy: Mogą być używane w dowolnym miejscu w klasie, a także przez klasy dziedziczące. Zaczynają się od `@@`.
- Zmienne instancji: Używane w zakresie lokalnym, specyficznym dla obiektu. Mogą mieć różne wartości w różnych obiektach. Zaczynają się od `@`.
- Zmienne globalne: Dostępne w całym programie. Zaczynają się od `$`.
Jaką rolę pełni rakfile dostępny w katalogu demo w Ruby?
Rakefile pomaga w testowaniu i pakowaniu kodu Rails. Plik ten definiuje zadania, które wykonują testy lub demonstrują funkcje aplikacji.
Co to jest zamiatarka w Railsach?
Zamiatarki pełnią rolę mechanizmów usuwania przestarzałych danych z pamięci podręcznej (cache). Działają jako pół-filtry i pół-obserwatorzy, implementując wywołania zwrotne. Metoda `expire_cache` identyfikuje przestarzałe fragmenty pamięci podręcznej i usuwa je.
Co to są filtry?
Filtry to metody, które wykonują się „przed” lub „po” akcji kontrolera. Są one dziedziczone i uruchamiane przy każdym żądaniu, które trafia do aplikacji, pod warunkiem, że są ustawione w `ApplicationController`.
Rozróżnij przekierowanie i renderowanie w Railsach
Render: Służy do renderowania szablonu i wysłania go klientowi w odpowiedzi na żądanie. Przeglądarka wyświetli zawartość wygenerowaną przez szablon.
Przekierowanie (redirect): Generuje nowe żądanie HTTP do innego adresu URL. Klient jest przekierowywany do innego kontrolera lub akcji. Ta metoda przydaje się, gdy chcesz zmienić adres URL widoczny dla użytkownika w przeglądarce.
Rozróżnij wywołanie super() i super wywołanie
- `super`: Wysyła wiadomość do rodzica bieżącego obiektu, przekazując mu wszystkie argumenty wywołanej metody.
- `super()`: Nie wysyła żadnych argumentów do rodzica.
Jaka jest różnica między procedurami a blokami?
- Bloki: Fragmenty kodu otoczone `do/end` lub nawiasami klamrowymi. Są tworzone i wykonywane przy każdym wywołaniu metody.
- Procs: Bloki kodu powiązane ze zbiorem zmiennych lokalnych. Kod ten może być wywoływany w różnych kontekstach i nadal ma dostęp do zmiennych.
Jaka jest różnica między instrukcjami put i print?
`puts` służy do wyświetlania tekstu na ekranie z automatycznym przejściem do nowej linii.
puts "Hello World!!!"
Wynik: `Hello World!!!` (w nowej linii)
`print` wypisuje tekst na ekranie bez przechodzenia do nowej linii.
print "Hello World!!!"
Wynik: `Hello World!!!` (bez nowej linii na końcu)
Co to są wyszukiwarki dynamiczne?
Wyszukiwarki dynamiczne umożliwiają wyszukiwanie rekordów w bazie danych bez użycia bezpośrednich zapytań SQL. Wykorzystują słowo kluczowe `find_by_` po którym następuje nazwa szukanego atrybutu.
Wyjaśnij, w jaki sposób Rail implementuje ajax
- Wyzwalacz: Użytkownik inicjuje akcję, na przykład poprzez wysłanie formularza lub kliknięcie przycisku.
- Wysłanie danych: Metoda JavaScript wysyła dane związane z wyzwalaczem do serwera.
- Przetworzenie danych: Serwer przetwarza dane i odsyła kod HTML do przeglądarki.
- Aktualizacja strony: Skrypt JavaScript odbiera dane i aktualizuje stronę bez jej przeładowywania.
Wyjaśnij Dig, Float i Max
- `Dig`: Metoda do wyodrębniania wartości z zagnieżdżonych skrótów lub tablic.
- `Float`: Typ danych w Ruby reprezentujący liczby rzeczywiste zmiennoprzecinkowe.
- `Max`: Metoda używana w tablicach i haszach do zwracania maksymalnej wartości.
array = [2, 9, 4, 7, 3] maximum = array.max
Konsola zwróci wartość 9, ponieważ jest to największa liczba w tablicy.
Podsumowanie
Przedstawione powyżej pytania to tylko przykłady tych, które możesz usłyszeć na rozmowie kwalifikacyjnej dotyczącej Ruby on Rails. Jeśli masz doświadczenie jako inżynier oprogramowania, warto sprawdzić również pytania do rozmowy o Node.js. Zanim pójdziesz na rozmowę kwalifikacyjną, upewnij się, że dobrze rozumiesz wymagania stanowiska inżyniera Rails.