RB Ruby  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Классы, экземпляры и видимость методов

Тест «Классы, экземпляры и видимость методов» проверяет чтение кода, объяснение причин, поиск скрытых рисков, выбор исправления и работу с граничными сценариями. В нём 20 вопросов, 10 заданий с Ruby-кодом и 4 тематических шкал.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. Время — 55 минут. У каждого задания ровно один правильный вариант. Фрагменты рассчитаны на Ruby 4.0.6; задания Rails — на Rails 8.1.3. После завершения откроются общий процент, 4 тематических результатов и разбор всех ответов.
Вопрос 1 из 20
Разберите выражения по порядку. Как завершится фрагмент из раздела «Конструктор»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Конструктор
# Проследите выполнение и выберите точный результат.
class User
  attr_reader :name
  def initialize(name)
    @name = name
    :ignored
  end
end
p User.new('Ada').class
Вопрос 2 из 20
Что произойдёт после последней строки в примере по теме «Атрибуты»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Атрибуты
# Проследите выполнение и выберите точный результат.
class Account
  attr_accessor :balance
end
account = Account.new
p account.balance
account.balance = 10
p account.balance
Вопрос 3 из 20
Что произойдёт после последней строки в примере по теме «Открытые и закрытые методы»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
RubyRuby — Открытые и закрытые методы
# Проследите выполнение и выберите точный результат.
class Vault
  def reveal
    [secret, self.secret]
  end
  private
  def secret
    :token
  end
end
p Vault.new.reveal
Вопрос 4 из 20
Какой вывод учитывает и возвращаемое значение, и побочный эффект в теме «Методы класса»? Правильным считается только полностью согласованное утверждение.
RubyRuby — Методы класса
# Проследите выполнение и выберите точный результат.
class Ticket
  @created = 0
  class << self
    attr_reader :created
    def build
      @created += 1
      new
    end
  end
end
2.times { Ticket.build }
p Ticket.created
Вопрос 5 из 20
Какой рабочий сбой вероятнее всего связан именно с механизмом «Конструктор»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Конструктор
# Обычный запуск проходит. Найдите скрытый риск.
class User
  attr_reader :name
  def initialize(name)
    @name = name
    :ignored
  end
end
p User.new('Ada').class
Вопрос 6 из 20
Где в показанном решении «Атрибуты» скрыт дефект, который проявится не на каждом входе? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Атрибуты
# Обычный запуск проходит. Найдите скрытый риск.
class Account
  attr_accessor :balance
end
account = Account.new
p account.balance
account.balance = 10
p account.balance
Вопрос 7 из 20
Какой риск не исчезает после успешного запуска кода «Открытые и закрытые методы»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Открытые и закрытые методы
# Обычный запуск проходит. Найдите скрытый риск.
class Vault
  def reveal
    [secret, self.secret]
  end
  private
  def secret
    :token
  end
end
p Vault.new.reveal
Вопрос 8 из 20
Обычный сценарий проходит. Какой риск остаётся в теме «Методы класса»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
RubyRuby — Методы класса
# Обычный запуск проходит. Найдите скрытый риск.
class Ticket
  @created = 0
  class << self
    attr_reader :created
    def build
      @created += 1
      new
    end
  end
end
2.times { Ticket.build }
p Ticket.created
Вопрос 9 из 20
Что является технической причиной наблюдаемого поведения «Конструктор»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
Вопрос 10 из 20
Какой механизм объясняет и обычный, и граничный сценарий «Атрибуты»? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
Вопрос 11 из 20
Как сформулировать правило блока «Открытые и закрытые методы» без лишних обещаний? Правильным считается только полностью согласованное утверждение.
Вопрос 12 из 20
Какой принцип темы «Методы класса» переносится на другие примеры того же типа? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
Вопрос 13 из 20
Какое изменение устраняет причину проблемы в теме «Конструктор», а не маскирует симптом? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Конструктор
# Выберите изменение, которое исправляет причину.
class User
  attr_reader :name
  def initialize(name)
    @name = name
    :ignored
  end
end
p User.new('Ada').class
Вопрос 14 из 20
Какое инженерное решение лучше всего соответствует механизму «Атрибуты»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Атрибуты
# Выберите изменение, которое исправляет причину.
class Account
  attr_accessor :balance
end
account = Account.new
p account.balance
account.balance = 10
p account.balance
Вопрос 15 из 20
Какой вариант решения «Открытые и закрытые методы» останется понятным при сопровождении? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Вопрос 16 из 20
Какое инженерное решение лучше всего соответствует механизму «Методы класса»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
Вопрос 17 из 20
Какой регрессионный пример обнаружит ошибочное обобщение в теме «Конструктор»? Выберите связку, в которой верны и основной вывод, и его обоснование.
Вопрос 18 из 20
Что нужно воспроизвести отдельно перед выпуском изменения «Атрибуты»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 19 из 20
Чем дополнить базовый тест, чтобы проверить ограничение темы «Открытые и закрытые методы»? Верный вариант не содержит частично правильной подмены причины или следствия.
Вопрос 20 из 20
Чем дополнить базовый тест, чтобы проверить ограничение темы «Методы класса»? Правильным считается только полностью согласованное утверждение.

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу