Ruby on Rails インタビューの質問と回答トップ 53 (2024)

ここでは、新人だけでなく経験豊富な Ruby 開発者候補者が夢の仕事に就くための、Ruby on Rails の面接での質問と回答を紹介します。

1) Ruby on Rails とは何ですか?

  • Ruby: これは、PERL、Smalltalk、Eiffel、Ada、Basic、Lisp からインスピレーションを得たオブジェクト指向プログラミング言語です。
  • Rails: Webアプリケーションを構築するために使用されるフレームワークです

2) Ruby のクラス ライブラリとは何ですか?

Ruby のクラス ライブラリは、データ型、スレッド プログラミング、さまざまなドメインなど、さまざまなドメインで構成されます。

無料 PDF ダウンロード: Ruby on Rails インタビューの質問と回答


3) Rails の命名規則について言及してください。

  • 変数: 変数を宣言する場合、すべての文字は小文字で、単語はアンダースコアで区切られます。
  • クラスとモジュール: モジュールとクラスは MixedCase を使用し、アンダースコアはありません。 各単語は大文字で始まります
  • データベーステーブル: データベース テーブル名には小文字と単語の間にアンダースコアを含める必要があり、すべてのテーブル名は invoice_items のように複数形にする必要があります。
  • 型: これは壊れていない MixedCase で表され、常にテーブル名とともに単数形になります。
  • コントローラ: コントローラーのクラス名は複数形で表され、OrdersController が注文テーブルのコントローラーになります。

4) Ruby on Rails の「Yield」とは何ですか?

コードブロックを受け取ったRubyメソッドは、「Yield」を指定して呼び出すことでコードブロックを呼び出します。


5) Rails の ORM (オブジェクト リレーションシップ モデル) とは何ですか?

Rails の ORM またはオブジェクト関係モデルは、クラスがデータベース内のテーブルにマップされ、オブジェクトがテーブル内の行に直接マップされることを示します。


6) Ruby における false と nil の違いについて言及してください。

Rubyでは、falseはブール値を表すFalseClassのオブジェクトであり、Nilは値が存在しないことを示すNilClassのオブジェクトです。 object_id は 4 です。

Ruby on Rails の面接での質問
Ruby on Rails の面接での質問


7) Rails の良い点について言及してください。

Rails は次のような多くの機能を提供します

  • メタプログラミング: Rails はコード生成を使用しますが、重労働な処理についてはメタプログラミングに依存します。 Ruby はメタプログラミングに最適な言語の XNUMX つと考えられています。
  • アクティブなレコード: Active Record Framework を通じてオブジェクトをデータベースに保存します。 Rails バージョンの Active Record はスキーマ内の列を識別し、メタプログラミングを使用してそれらをドメイン オブジェクトに自動的にバインドします。
  • 足場: Rails には、スキャフォールディングまたは一時的なコードを自動的に作成する機能があります。
  • 設定よりも規約: 他の開発フレームワークとは異なり、Rails は命名規則に注意深く従えば、多くの設定を必要としません。
  • XNUMX つの環境: Rails には、テスト、開発、運用の XNUMX つのデフォルト環境が付属しています。
  • 組み込みのテスト: ハーネスと呼ばれるコードと、テスト ケースを作成して実行するフィクスチャをサポートします。

8) サブディレクトリのアプリ/コントローラーとアプリ/ヘルパーの役割を説明してください。

  • アプリ/コントローラー: ユーザーからの Web リクエストはコントローラーによって処理されます。 コントローラーのサブディレクトリは、Rails がコントローラー クラスを検索する場所です。
  • アプリ/ヘルパー: ヘルパーのサブディレクトリには、ビュー、モデル、およびコントローラー クラスを支援するために使用されるヘルパー クラスが保持されます。

9) 文字列とシンボルの違いについて説明してください。

どちらも同じように動作しますが、互いに反対の動作が異なります。 違いは、object_id、メモリ、およびプロセスを一緒に使用した場合の調整にあります。 シンボルは不変オブジェクトのカテゴリに属しますが、文字列は変更可能なオブジェクトとみなされます。


10) シンボルと変数の違いを説明してください。

シンボルは次の点で変数と異なります

  • 変数というよりは文字列に似ています
  • Rubyでは文字列は可変ですが、シンボルは不変です
  • 作成する必要があるシンボルのコピーは XNUMX つだけです
  • Ruby ではシンボルが enum に対応するものとしてよく使用されます。

11) Ruby on Rails の Rails Active Record とは何ですか?

Rails のアクティブ レコードは、Rails に付属のオブジェクト/リレーショナル マッピング (ORM) レイヤーです。 これは、次のような標準の ORM モデルに従います。

  • クラスへのテーブルマップ
  • 行はオブジェクトにマップされます
  • 列はオブジェクト属性にマップされます

12) Rails の実装方法を説明する アヤックス?

Ajax を利用した Web ページは、最新の情報を取得するためにページを更新する必要がある他の Web ページとは異なり、新規または変更された Web ページをサーバーから取得します。

Rails は次の方法で Ajax オペレーションをトリガーします

  • いくつかのトリガーが起動します: トリガーは、ユーザーがリンクまたはボタンをクリックしたこと、ユーザーがフィールドまたはフォームのデータに変更を加えたことなどです。
  • Web クライアントはサーバーを呼び出します。 Java スクリプト メソッド XMLHttpRequest は、トリガーにリンクされたデータをサーバー上のアクション ハンドラーに送信します。 データは、チェックボックスの ID、フォーム全体、または入力フィールドのテキストである可能性があります。
  • サーバーは次の処理を行います: サーバー側のアクション ハンドラーはデータに対して何らかの処理を実行し、 HTML Web クライアントへのフラグメント化
  • クライアントは応答を受け取ります。 Rails が自動的に生成するクライアント側 JavaScript は HTML フラグメントを受け取り、それを使用して現在のコンテンツの特定の部分を更新します。

13) サブジェクトのコントローラーを作成する方法について言及しますか?

サブジェクトのコントローラーを作成するには、次のコマンドを使用できます。

C:\ruby\library> Ruby スクリプト/コントローラ サブジェクトの生成


14) Rails 移行とは何ですか?

Rails Migration を使用すると、Ruby がデータベース スキーマに変更を加えられるようになり、バージョン管理システムを使用して実際のコードと同期した状態を維持できるようになります。


15) Rails への移行で何ができるかを列挙してください。

Rails Migration では次のことができます

  • テーブルを作成
  • ドロップテーブル
  • テーブル名の変更
  • 列を追加
  • 列の名前を変更
  • 列を変更する
  • 列などを削除します

16) 移行を作成するコマンドは何ですか?

移行コマンドを作成するには、次のものが含まれます

C:\ruby\application>ruby script/移行テーブル名を生成


17) self.up メソッドと self.down メソッドがいつ使用されるかを説明してください。

新しいバージョンに移行する場合、 セルフアップ メソッドが使用されるときに セルフダウン メソッドは、必要に応じて変更をロールバックするために使用されます。


18) Rails コントローラーの役割について言及してください。

Rails コントローラーはアプリケーションの論理的な中心です。 これにより、ユーザー、ビュー、モデル間の対話が容易になります。 また、次のような他のアクティビティも実行します

  • 外部リクエストを内部アクションにルーティングできます。 URLを非常にうまく処理します
  • コードを増大させることなくビュー テンプレートの機能を拡張するヘルパー モジュールを規制します。
  • それはセッションを規制します。 ユーザーにアプリケーションとの継続的な対話の印象を与える

19) Active support の「HashWithIndependent」と Ruby の「Hash」の違いについて述べてください。

  ハッシュ Ruby のコア ライブラリのクラスは、標準を使用して値を返します。 「==」 キーの比較。 これは、に保存されている値が シンボル 同等の文字列を使用してキーを取得することはできません。 一方、 ハッシュ付き無関係アクセス 記号キーと文字列キーを同等のものとして扱います。


20) クロスサイト リクエスト フォージェリ (CSRF) とは何か、そして Rails がそれからどのように保護されているかについて説明してください。

CSRF は、ハッカーがユーザーに代わって別の Web サイトにページ リクエストを送信し、損害を与えたり、機密データを漏らしたりする攻撃の形式です。 CSRF 攻撃から保護するには、以下を追加する必要があります 「偽造から守る」 あなたへ アプリケーションコントローラー。 これにより、Rails はリクエストを処理するために CSRF トークンを必要とします。 CSRF トークンは、Rails フォーム ビルダーを使用して作成されたすべてのフォームの隠しフィールドとして指定されます。


21) Rails の Mixin とは何ですか?

Ruby の Mixin は多重継承の代替手段を提供し、mixin モジュールを使用して他のクラス内にインポートできます。


22) Ruby でインスタンス変数、グローバル変数、クラス変数を定義する方法を説明してください。

  • Ruby インスタンス変数は — で始まります @
  • Ruby クラス変数は — で始まります @@
  • Ruby のグローバル変数は — で始まります $

23) データベースを作成せずに Rails アプリケーションを実行する方法を説明してください。

アプリケーションを実行するには、environment.rb 内の行のコメントを解除します。

path=> ルートパス conf/environment.rb

config.frameworks = [ action_web_service, :action_mailer, :active_record]

24) Ruby on Rails のオブザーバーとコールバックの違いについて言及してください。

  • Rails オブザーバー: オブザーバーはコールバックと同じですが、メソッドがオブジェクトのライフサイクルに直接関連付けられていない場合に使用されます。 また、観察者の寿命は長く、いつでも取り外したり取り付けたりすることができます。 たとえば、モデルの値を UI に表示し、ユーザー入力からモデルを更新します。
  • Rails コールバック: コールバックは、オブジェクトのライフサイクルの特定の瞬間に呼び出すことができるメソッドです。たとえば、オブジェクトが検証、作成、更新、削除されたときに呼び出すことができます。コールバックの有効期間は短いです。 たとえば、スレッドを実行し、スレッドの終了時に呼び出されるコールバックを提供します。

25) Rails の rake とは何ですか?

Rake は Ruby Make です。 これは、Unix ユーティリティ「make」を置き換える Ruby ユーティリティであり、「Rakefile」と「.rake ファイル」を使用してタスクのリストを作成します。 Rails では、Rake はスクリプトによるデータベースの移行、データベースへのスキーマのロードなどの通常の管理タスクに使用されます。


26) アプリケーションのすべてのルートをリストする方法を説明してください。

アプリケーションのすべてのルートをリストするには、ターミナルに rake ルートを記述します。


27) Rails のスイーパーとは何ですか?

スイーパーは、モデル オブジェクトが変更されたときにキャッシュを期限切れにするか終了する責任があります。


28) Ruby Rails でエラーを報告するために参照する必要があるログについて言及しますか?

Rails は、Apache からのエラーを log/Apache.log に報告し、Ruby コードからのエラーを log/development.log に報告します。


29) 動的足場と静的足場の違いを説明してください。

動的足場 静的足場
  • 実行時にコンテンツ全体とユーザー インターフェイスを自動的に作成します
  • アプリケーションで使用する新規、削除、編集メソッドの生成が可能になります。
  • データベースを同期する必要はありません
  • フィールドを含むデータを作成するには、コマンドに手動で入力する必要があります。
  • そのような生成を行う必要はありません
  • データベースを移行する必要があります

30) Ruby on Rails におけるガベージ コレクションの機能について説明してください。

Ruby on Railsのガベージコレクションの機能には以下のものがあります。

  • プログラムの実行終了時に残されたポインタ値を削除できます。
  • プログラマは、実行時に動的に作成されるオブジェクトを追跡する必要がなくなります。
  • アクセスできないオブジェクトをメモリから削除するという利点があり、他のプロセスがメモリを使用できるようになります。

31) Ruby on Rails におけるリダイレクトとレンダリングの違いについて言及してください。

  • リダイレクトは、ページがブラウザに発行されない場合、またはページが見つからない場合にエラー メッセージを発行するために使用されるメソッドです。 ブラウザに新しいリクエストを処理して発行するように指示します。
  • レンダリングはコンテンツを作成するために使用されるメソッドです。 レンダリングは、レンダリングが必要な変数を使用してコントローラーが適切に設定されている場合にのみ機能します。

32) Rails における RJ の目的について言及してください。

RJs は、AJAX リクエストに応じてブラウザによって eval ブロッ​​クで実行される JavaScript を生成するテンプレートです。 Rails が提供する JavaScript、プロトタイプ、ヘルパーを定義するために使用されることがあります。


33) Ruby on Rails のポリモーフィック アソシエーションとは何ですか?

ポリモーフィック アソシエーションにより、ActiveRecord オブジェクトを複数の ActiveRecord オブジェクトに接続できます。 Polymorphic Association の好例は、ユーザーがビデオ、写真、リンク、ステータス更新など、どこにでもコメントできるソーシャル サイトです。photos_comments、video_comment などの個別のコメントを作成する必要がある場合、それは現実的ではありません。 。


34) Ruby on Rails の制限について言及してください。

Ruby on Rails は、MVC を使用して CRUD Web アプリケーションを作成するように設計されています。 これにより、Rails は他のプログラマーにとって役に立たなくなる可能性があります。 Rails がサポートしていない機能には次のようなものがあります。

  • データベースの外部キー
  • 複数のデータベースに一度にリンクする
  • ソープウェブサービス
  • 複数のデータベースサーバーへの同時接続

35) super() の呼び出しと super call の違いについて言及してください。

  • 素晴らしい(): super() への呼び出しは、おそらく予想どおり、引数なしで親メソッドを呼び出します。 いつものように、コード内で明示的であることは良いことです。
  • スーパーコール: super への呼び出しは、子メソッドに渡されたものと同じ引数を使用して親メソッドを呼び出します。 したがって、子メソッドに渡された引数が親メソッドが期待しているものと一致しない場合、エラーが発生します。

36) Dig、Float、Max について説明してください。

  • Float クラスは、関数が常に変更される場合に使用されます。
  • Dig は、浮動小数点を XNUMX 進数で表現したい場合に使用します。
  • Max は、Float が大量に必要な場合に使用されます。

37) Ruby の正規表現を定義する方法を説明してください。

Ruby の正規表現は、他の文字列の照合や検索に役立つ特別な文字シーケンスです。 正規表現リテラルは、任​​意の区切り文字またはスラッシュとそれに続く %r の間のパターンです。


38) 定義された演算子とは何ですか?

Define 演算子は、渡された式が定義されているかどうかを示します。 式が定義されている場合は説明文字列が返され、定義されていない場合は null 値が返されます。


39) Ruby のいくつかの機能を挙げてください。

  • フリーフォーマット - プログラムの任意の行と列から書き込みを開始できます。
  • 大文字と小文字を区別 – 大文字と小文字は区別されます
  • コメント – 引用符で囲まれていないコメントが続くもの #、それが表示される行の末尾までは、インタープリタによって無視されます。
  • ステートメントの区切り文字 - XNUMX 行に複数のステートメントを置く場合はセミコロンで区切る必要がありますが、行末にセミコロンを付ける必要はありません。

40) Ruby クラスで使用できる変数のタイプについて言及しますか?

Rubyクラスで利用できる変数の種類は以下の通りです。

  • ローカル変数
  • グローバル変数
  • クラス変数
  • インスタンス変数

41) Ruby でブロックを宣言する方法を説明してください。

Ruby では、ブロック内のコードは常に中括弧 ({}) で囲まれます。 「yield ステートメント」を使用してブロックを呼び出すことができます。


42) put ステートメントと putc ステートメントの違いを説明してください。

文字列全体を画面に出力する Puts ステートメントとは異なります。 Putc ステートメントを使用すると、一度に XNUMX 文字を出力できます。


43) Ruby のクラス ライブラリとは何ですか?

Ruby クラス ライブラリは、スレッド プログラミング、データ型、さまざまなドメインなどのさまざまなドメインで構成されます。これらのクラスは、高い抽象レベルで柔軟な機能を提供し、さまざまな問題に役立つ強力な Ruby スクリプトを作成できます。ドメイン。 関連するクラス ライブラリを持つ次のドメインは、

  • GUIプログラミング
  • ネットワークプログラミング
  • CGIプログラミング
  • テキスト処理

44) Rubyでは定義された演算子について説明していますか?

定義された演算子は、渡された式が定義されているかどうかを示します。 式が定義されていない場合は null が返され、式が定義されている場合は説明文字列が返されます。


45) これら XNUMX つの変数、@@name と @name のスコープの違いについて言及してください。

これら XNUMX つの変数の範囲の違いは次のとおりです。

  • @@name はクラス変数です
  • @name はインスタンス変数です

46) Ruby の Collect Iterator の構文について言及してください。

Ruby の収集イテレータの構文は collection = collection.collect です。


47) Ruby コードでは、プログラマーが次のような式を短縮形式で使用していることがよく観察されます。 配列array.map { |element| の代わりに .map(&:method_name) 要素.メソッド名 }。 このトリックは実際にどのように機能するのでしょうか?

パラメータの前に「&」を付けて渡される場合。 Ruby は、それをブロックとして使用できるようにするために、それに対して to_proc を呼び出します。 したがって、シンボル to_Proc は、渡されたものに対して対応する名前のメソッドを呼び出します。 したがって、速記トリックが機能するのに役立ちます。


48) Ruby における補間とは何ですか?

Ruby 補間は、文字列をリテラルに挿入するプロセスです。 {} の開き括弧と閉じ括弧内にハッシュ (#) を配置すると、リテラルに文字列を挿入できます。


49) Ruby でクラス変数を表すために使用される表記法とは何ですか?

ルビーでは、

  • 定数は大文字で始める必要があり、メソッド内で定義しないでください。
  • ローカルは _ アンダースコア記号または小文字で始まる必要があります
  • グローバル変数は $ 記号で始まる必要があります。 初期化されていないグローバルの値は「nil」です。 上げる 警告。 プログラム内のどこでも参照できます。
  • クラス変数は二重の @@ で始まる必要があり、メソッド定義で使用する前に最初に初期化する必要があります。

50) Proc と Block の違いについて言及してください。

プロシージャとブロックの違い、

  • Block はメソッドの構文の一部にすぎませんが、proc にはブロックの特性があります
  • プロシージャはオブジェクトですが、ブロックはオブジェクトではありません
  • 引数リストには最大 XNUMX つのブロックを含めることができます
  • ブロックのみ変数に格納できませんが、Proc は変数に格納できます。

51) 一重引用符と二重引用符の違いについて言及してください。

一重引用符で囲まれた文字列は、ASCII エスケープ コードを処理せず、文字列補間も行いません。


52) Ruby の gem とプラグインの違いについて言及してください。

  • 宝石: gem は単なる Ruby コードです。 これはマシンにインストールされ、そのマシン上で実行されているすべての Ruby アプリケーションで使用できます。
  • 接続する: プラグインも Ruby コードですが、アプリケーション フォルダーにインストールされ、その特定のアプリケーションでのみ使用できます。

53) extend と include の違いについて言及してください。

「include」はモジュールのメソッドをクラスのインスタンスで使用できるようにし、「extend」はこれらのメソッドをクラス自体で使用できるようにします。

これらの面接の質問は、あなたの活力(口頭)にも役立ちます

シェアする

14のコメント

  1. アバター ハサヌザマン・スモン 言います:

    収量は関数ではありません。 ブロックを実行する際に使用するrubyキーワードです。

    1. アバター テリー・レイ 言います:

      具体的には、yield はスレッド (Main.thread が最も可能性が高い) の制御を、パラメーターとして明示的に渡されたブロック、つまり def my_method(&my_block) に渡します。あるいは、次のようにブロックが暗黙的に渡された可能性もあります。

      my_class.my_method は行う
      # このブロック内のコードは呼び出しメソッドの内部に渡されます
      end

  2. アバター ソヌ 言います:

    とても素敵です…これからも頑張ってください

  3. アバター Razzaq 言います:

    素晴らしいコンテンツ!

  4. アバター ホルヘ・アルマンド 言います:

    質問 #6 では、Ruby には「Boolean」クラスが存在しないため、「Boolean 型」も存在しません。 TrueClass と FalseClass のみです。

    1. アレックス・シルバーマン アレックス・シルバーマン 言います:

      更新されています。

  5. アバター アヒラシュ 言います:

    グッド

  6. アバター テリー・レイ 言います:

    実際には Thread.main …悪いです :)

  7. アバター test 言います:

    Ruby は Python からインスピレーションを得たものではなく、次のもの (Perl、Smalltalk、Eiffel、Ada、BASIC、Lisp) からインスピレーションを受けました。

    1. アレックス・シルバーマン アレックス・シルバーマン 言います:

      更新されています。

      1. アバター インディアン 言います:

        うん…

  8. アバター ムーニク 言います:

    Ruby と Rails の素晴らしい概要

  9. アバター 奇妙な 言います:

    6) nil.object_id は 8 に等しい

コメントを残す

あなたのメールアドレスは公開されません。 必須フィールドは、マークされています *