Working...
1546388_10153606121762796_6681555746358268262_n
Ivan X.
Aug 31 '16 at 09:43

Вопросы на собеседовании

0
Sort by reaction | Sort by date
1546388_10153606121762796_6681555746358268262_n

Принципы ООП

Примеры полиморфизма, наследования в Руби

0 Edit Post

1546388_10153606121762796_6681555746358268262_n 1 Абстракция 2 Наследование 3 Инкапсуляция 4 Полиморфизм Одна сущность - несколько реализаций. Примеры из жизни: автомобиль, но несколько разных марок; собака, но несколько пород; и т.д. Вот так и в программировании, объект может вести себя полиморфно, т.е. иметь разное поведение.2016-08-31 18:19:52 NEW 0
1546388_10153606121762796_6681555746358268262_n

Что такой модуль в Руби?

0 Edit Post

1546388_10153606121762796_6681555746358268262_n Модули в Руби похожи на классы в том, что они содержат набор методов, константы, другие модули и определения классов. Модули задаются как классы, только слово module используется вместо class. В отличие от классов создать объекты на основе модуля нельзя, модуль не может иметь подклассы. Вместо этого вы добавляете недостающую функциональность класса или отдельного объекта с помощью модуля. Модули – одиночки, нет иерархии и наследования. (Вообще класс Module имеет суперкласс — Object, однако любой созданный модуль суперкласса не имеет).2016-08-31 18:21:27 NEW 0
1546388_10153606121762796_6681555746358268262_n

В чем отличие lambda, proc и block в Руби?

0 Edit Post

1546388_10153606121762796_6681555746358268262_n Первое отличие: Блоки видят переменные объявленные в области действия блока, а методы нет.2016-08-31 18:23:54 NEW 0
1546388_10153606121762796_6681555746358268262_n https://habrahabr.ru/post/85578/2016-08-31 18:25:06 NEW 0
1546388_10153606121762796_6681555746358268262_n 2. Proc и lambda по разному реагируют на аргументы2016-08-31 18:32:12 NEW 0
1546388_10153606121762796_6681555746358268262_n 3. По разному реагируют на return внутри proc возвращает результат в своей обьявленной зоне2016-08-31 18:33:47 NEW 0
1546388_10153606121762796_6681555746358268262_n lambda-функции больше похожи на обычный метод и поэтому накладывают дополнительные ограничения на входные параметры: если lambda функция объявлена с двумя параметрами - то при вызове на вход должно быть передано именно 2 параметра, в противном случае будет сгенерировано иключение ArgumentError, в случае Proc-а лишние параметры будут отброшены, а недостающие заполнены значением nil. lambda-функции похожи на обычные еще и тем, что вызов конструкции return приводит к выходу из lambda-функции, а не из родительской2016-08-31 18:35:19 NEW 0
1546388_10153606121762796_6681555746358268262_n

Что такое Form Object?

0 Edit Post

1546388_10153606121762796_6681555746358268262_n Create a plain Ruby class. include ActiveModel::Model (in Rails 3 you had to include Naming, Conversion and Validations instead) Start using your new form class as if it were a regular ActiveRecord model, the biggest difference being that you cannot persist the data stored in this object.2016-09-05 07:19:35 NEW 0
1546388_10153606121762796_6681555746358268262_n

https://gist.github.com/rgorel/7e885c49d89076440ea9

module M
  def initialize
    puts 'M'
  end
end

class A 
  def initialize
    puts 'A'
  end
end

class B < A
  include M
  def initialize
    super
  end
end

B.new # => ?

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

Методы в Руби

В чем отличие?
https://gist.github.com/XmmmiR/17f1a67904166b3dfcb7

class TestC
  def self.call_everyone obj
    obj.public_method
    obj.protected_method
    obj.private_method
  end

  def call_everyone obj
    obj.public_method
    obj.protected_method
    obj.private_method
  end

  def public_method
    puts "I'm public"
  end  
  protected
  def protected_method
    puts "I'm protected, can you see me?"
  end
  private
  def private_method
    puts "I'm private"
  end
end  

test_obj = TestC.new
TestC.call_everyone test_obj
TestC.new.call_everyone test_obj
:027 > TestC.call_everyone test_obj
I'm public
NoMethodError: protected method `protected_method' called for #<TestC:0x007fe707758f50>
        from (irb):4:in `call_everyone'
 :028 > TestC.new.call_everyone test_obj
I'm public
I'm protected, can you see me?
NoMethodError: private method `private_method' called for #<TestC:0x007fe707758f50>
        from (irb):11:in `call_everyone'

0 Edit Post

1546388_10153606121762796_6681555746358268262_n В Java public означает, что метод можно вызвать везде. protected методы можно вызвать только инстансами этого класса, инстансами дочернего класса и инстансами класса в этом же пакете. private методы не может вызвать никто кроме инстанса класса. В Ruby все немного по-другому. public методы на самом деле публичные. private метод может быть вызван только без явного объявления вызывающей стороны. Только self может быть вызывающей стороной приватного метода. О protected методах надо поговорить подробнее. Protected метод может быть вызван инстансом текущего или дочернего класса, однако может иметь вызывающей стороной другой инстанс.2016-09-01 14:00:04 NEW 0
1546388_10153606121762796_6681555746358268262_n

Виды join в MySQL?

В чем отличия?

0 Edit Post

1546388_10153606121762796_6681555746358268262_n a = false b = true a == b => false2016-09-01 14:18:32 NEW 0
1546388_10153606121762796_6681555746358268262_n

ActiveRecord

p = Post.find(123)
p.inspect


p = Post.where(title: params[:title])
p.inspect

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

JS

function f1() {
  a = 1;
}

function f2() {
  'use strict';
  a = 1;
}

function f3() {
  'use strict';
  var a = 1;
}

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

JS

var text = 'outside';

function logIt() {
  console.log(text);
  var text = 'inside';
}

logIt();

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

JS

var a = 10, b = 20;

function f() {
  var a = b = 1;
  console.log(a, b);
}

f();

console.log(a, b);

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

JS

console.log(null > 0, null == 0, null >= 0);

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

JS

var i, shooters = [];
for (i = 0; i < 10; i++) {
  shooters.push(function () {
    return i;
  });
}
console.log( shooters[5]() );

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

JS

Прототипы

var a = {}, b = {};
b.__proto__ = a;

a.key = 'value';
console.log(a.key, b.key);

b.key = 'new';
console.log(a.key, b.key);

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

Как работает Web server?

На примере Rails приложения.

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

что такое rest?

0 Edit Post

1546388_10153606121762796_6681555746358268262_n REST (Representational state transfer) – это стиль архитектуры программного обеспечения для распределенных систем, таких как World Wide Web, который, как правило, используется для построения веб-служб. Термин REST был введен в 2000 году Роем Филдингом, одним из авторов HTTP-протокола. Системы, поддерживающие REST, называются RESTful-системами. В общем случае REST является очень простым интерфейсом управления информацией без использования каких-то дополнительных внутренних прослоек. Каждая единица информации однозначно определяется глобальным идентификатором, таким как URL. Каждая URL в свою очередь имеет строго заданный формат.2016-09-05 07:27:37 NEW 0
1546388_10153606121762796_6681555746358268262_n

В чем разница строки и символов?

irb(main):001:0> :george.object_id == :george.object_id
=> true
irb(main):002:0> "george".object_id == "george".object_id
=> false

0 Edit Post

1546388_10153606121762796_6681555746358268262_n Для строки выделяется память каждый раз, а символ всегда ссылается на ту же область памяти.2016-09-01 14:06:01 NEW 0
1546388_10153606121762796_6681555746358268262_n

оператор having in MySQL

0 Edit Post

1546388_10153606121762796_6681555746358268262_n Используется в join когда нужно в условии использовать агрегационную функцию.2016-09-02 11:52:09 NEW 0
1546388_10153606121762796_6681555746358268262_n

cells

Прослойка для views.

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

middleware

Принцип работы rails

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

solid object

Вынесение бизнес логики из моделей.

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

Антипатерны для БД

0 Edit Post

1546388_10153606121762796_6681555746358268262_n

Ruby метапрограммирование и Lambda/Proc/Block, Javascript — hoisting, прототипы и замыкания

0 Edit Post

1546388_10153606121762796_6681555746358268262_n Метапрограммирование – модное веяние в сфере разработки ПО, набирающее популярность в современных высокоуровневых языках программирования. Формально, мета-программирование – это набор практических приемов, которые позволяют частично генерировать код программы в run-time при помощи более простого кода. Основу мета-программирования составляет интроспекция, это – возможность работать с внутренней структурой кода, как с переменными встроенных типов (просматривать, изменять, дополнять определение типов во время выполнения программы, динамически определять переменные и работать с ними и т.д.2016-09-07 10:11:53 NEW 0
1546388_10153606121762796_6681555746358268262_n Манипулирование значениями переменных, удаление переменных Object#instance_variable_get Object#instance_variable_set Object#remove_instance_variable Module#class_variable_get Module#class_variable_set Module#remove_class_variable Манипулирование значениями констант, удаление констант Module#const_get Module#const_set Module#remove_const Добавление/удаление методов Module#define_method Module#remove_method Запуск динамически генерируемого кода Object#send Object#instance_eval Module#module_eval Kernel#eval Kernel#method_missing Reflection-методы (группа методов, позволяющих исследовать структуру кода в момент исполнения) Object#class Object#instance_variables Object#methods Object#private_methods Object#public_methods Object#singleton_methods Module#class_variables Module#constants Module#included_modules Module#instance_methods Module#name Module#private_instance_methods Module#protected_instance_methods Module#public_instance_methods2016-09-07 10:15:40 NEW 0

Display archived posts

"Sidebar" Chats

Loading...
Working...