500+ вопросов на собеседовании по Ruby - Блог ITVDN
ITVDN: курсы программирования
Видеокурсы по
программированию

Выбери свою IT специальность

Подписка

500+ вопросов на собеседовании по Ruby

advertisement advertisement

Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 14 июня 2021 года. Оригинальная версия на украинском языке доступна по ссылке.

  1. Junior Ruby Developer
  2. Middle Ruby Developer
  3. Senior Ruby Developer

Что нужно знать, когда проходишь техническое собеседование по Ruby? Конечно, ко всем вопросам готовым не будешь, но мы попросили интервьюеров-практиков прислать свои списки вопросов, а затем обобщили их в одном материале.

Junior

Общие вопросы

1. Какие принципы программирования вы знаете и какие из них вы пытаетесь соблюдать чаще всего?

2. Что такое парадигма ООП? Какие основные составляющие парадигмы?

3. Зачем нужна инкапсуляция? Что может произойти и не произойти, если все методы будут иметь модификатор доступа public?

4. Что такое наследование? Назовите пример(ы) плохого наследования (такое наследование, которое не стоило бы реализовывать).

5. Что такое полиморфизм? Приведите пример использования полиморфизма.

6. Что такое паттерн/шаблон проектирования? Какие шаблоны знаете?

7. Что такое клиент и сервер? Какая механика их взаимодействия?

8. Опишите путь, который проходит запрос после того, как в браузер ввести URL любого ресурса.

9. Что такое протокол HTTP? Какая разница между HTTP и HTTPS?

10. Что такое API? Может ли веб-приложение использовать более одного API?

11. Что такое REST API? Какие действия чаще всего выполняются над ресурсами?

12. Что такое сессия? Что такое cookies? Какая разница между ними?

13. Какие веб-уязвимости знаете? Как от них защититься? Какие есть инструменты, чтобы автоматически контролировать защиту от веб-уязвимостей?

14. Какими критериям пользуетесь для выбора библиотеки?

15. Что такое рефакторинг? Какие должны быть условия для выполнения рефакторинга?

16. Знаете ли вы семейство UNIX-подобных операционных систем (Linux, MacOS)? Назовите команды, которые чаще всего используете в терминале.

17. Что такое аутентификация?

18. Что такое авторизация?

19. Из каких частей состоит HTTP Request и HTTP Response?

20. Какие HTTP-статусы (HTTP-коды) знаете? На какие группы вы могли бы их разделить?

21. Какие HTTP-методы знаете? Зачем используется каждый из них?

Git

22. Знакомы ли вы с системой Git?

23. Для чего нужны ветки в Git? Как сделать ветку?

24. Как скопировать с Git-хостинга (GitHub / GitLab / Bitbucket / другие) проект?

25. Что такое флаг -f? Для чего он и какие минусы использования?

26. Что такое Pull Request? Зачем ветви соединяют через Pull Request?

27. Какие еще команды чаще всего применяете, когда пользуетесь Git?

Ruby

28. Как вы контролируете версии Ruby на своей локальной машине?

29. Что такое метапрограммирование? Какие плюсы и минусы при использовании метапрограммирования?

30. Какой менеджер библиотек для Ruby знаете? Как добавлять библиотеки? Как контролировать версии библиотек?

Style guide

31. Что такое style guide и зачем его используют?

32. Какой популярный линтер контролирует выполнение большей части пунктов с Ruby Style Guide?

Основы Ruby

33. Какие типы переменных есть в Ruby?

34. Что вернётся в результате сложения 10.5 и 10?

35. Чем отличаются переменные, начинающиеся с @, @@ и $?

36. Что такое attr_reader, attr_writer, attr_accessor и зачем они?

37. Что такое метод?

38. Что значит "?" в конце названия методов? Что означает "!" в конце названия методов?

39. Чем отличается энумератор map от each?

40. Что такое модуль? Какие есть варианты подключения модулей в класс?

41. Что такое класс и зачем он нужен?

42. Что такое модуль и зачем его используют? Чем модуль отличается от класса?

43. Что такое константа?

44. Что такое блок? Что такое yield? Можно ли передавать блоки в методы? Каким образом?

45. Что такое proc?

46. Что такое lambda?

47. В чем разница между proc и lambda?

48. Что такое eigenclass?

49. Какие виды условных операторов есть в Ruby? (if, unless, ternary, case)

50. Есть ли разница между операторами && и and?

51. Какие виды циклов есть в Ruby? (loop, while, until, for, each(), times(), upto())

Типы данных

52. Какие типы данных есть в Ruby?

53. Что такое интерполяция?

54. Что такое конкатенация?

55. Что такое массив в Ruby?

56. Что такое Hash в Ruby? Чем Hash отличается от массива?

57. Что такое символ и зачем он нужен?

58. Что такое Range и зачем его используют?

59. Что такое Time и Date?

60. Что такое Struct?

61. Что такое File?

Структура классов и объектов

62. Что такое BasicObject?

63. Что такое Numeric?

64. Что такое Enumerable?

65. Что такое Struct?

66. Что такое OpenStruct?

67. Что такое Set?

68. Что такое Queue?

69. Что такое Object?

70. Что такое Kernel?

ООП на Ruby

71. Есть ли интерфейсы в Ruby?

72. Что такое getter и setter в Ruby? Как их создавать?

73. Что такое инстансная переменная?

74. Что такое константа класса?

75. Какая разница между методом класса и методом объекта?

76. Какие есть области видимости?

77. Какие есть модификаторы доступа? Как private отличается от protected?

78. Поддерживает ли Ruby множественное наследование?

79. Как наследуются методы? Можно ли переопределить метод?

80. Зачем метод super?

81. Что такое Singleton-метод?

82. Что такое миксины? Зачем они и чем отличаются от декоратора?

83. Что такое include и extend и в чем разница между ними?

84. Какой путь поиска метода в иерархии классов?

85. Какая разница между последовательными и именуемыми аргументами метода?

86. Что такое exception? Когда они применяются? Как вызвать exception? Как отловить exception?

Метапрограммирование

87. Что означает open class?

88. Что такое monkey patching?

89. Возможно ли создать класс динамически? Если да, то как именно?

90. Какие есть способы динамического управления методами, переменными и классами (define_method(), class_eval(), module_eval())?

91. Как происходит поиск метода в иерархии? Как можно обработать отсутствие метода (method_missing())?

92. Что такое алиас метода? Для чего нужны алиасы?

93. Как получить значение инстансной переменной? Как задать значение? Как проверить существование инстансной переменной (instance_variable_get(), instance_variable_set(), instance_variable_defined())?

94. Какие методы интроспекции есть в Ruby (class(), ancestors(), methods(), private_methods(), instance_variables(), singleton_methods(), local_variables())?

95. Что такое хуки и зачем их используют (inherited(), included(), method_added(), singleton_method_added(), method_missing())?

RubyGems

96. Что такое gem? Что такое RubyGems?

97. С какой целью используют RVM? Что такое gemset?

98. Что такое Bundler и зачем он?

99. Что такое Gemfile и для чего его используют?

100. За что отвечает каждый из gem`ов? Если знаете нюансы в работе какого-либо из них — обязательно озвучьте.

active_admin
active_model_serializers
bundle audit
bcrypt
devise
jwt
cancancan / pundit
draper
kaminari
sidekiq
rspec
shoulda-matchers
faker
factory_bot
simplecov
rubocop (with extensions)
pry

Ruby on Rails

101. Что такое MVC? Является ли Rails MVC-фреймворком?

102. Что такое миграция? Для чего она нужна? Какие правила создания миграций?

103. Что такое роуты? Что такое resource и resources в роутах?

104. Чем отличается has_many through от has_and_belongs_to_many?

105. Зачем используют concerns?

106. Как работать с sensitive-данными в Rails-приложениях (токены, ключи и т. д.)? Как работает механизм credentials в Rails?

107. С какой целью используют локалы (locals)?

Style guide

108. Знакомы ли вы с RoR style guide?

Структура файлов в Rails

109. Из чего состоит Rails-приложение? Какая архитектура директорий? Зачем нужна каждая из них?

110. Чем отличается lib от vendor?

111. Как создать background job в Rails?

112. Какие способы загрузки ассоциаций в Rails?

Модели и ActiveRecord

113. Зачем нужны модели? Что представляет собою модель?

114. Что такое ORM? Что такое ActiveRecord?

115. Какие есть правила наименования моделей и таблиц в базе данных?

116. Что такое миграции и зачем нужен этот механизм? Как создавать миграции?

117. Какие виды валидаций есть в AR?

118. Как можно вызвать валидацию? Когда валидация вызывается автоматически? Как можно отключить валидацию при сохранении?

119. Что такое callback в Rails?

120. Какие есть виды колбеков в AR?

121. Какие виды ассоциаций есть в AR?

122. Что такое has_one и belongs_to?

123. Что такое has_many?

124. Что такое has_many: through?

125. Что такое has_one: through?

126. Что такое has_and_belongs_to_many?

127. Что такое полиморфная ассоциация?

128. Что такое STI?

129. Каким образом можно получить данные из базы данных? Как получить один объект и коллекцию? Как задать условия выборки?

130. Что такое скоупы? Какова их функция?

131. Як выполнить произвольный SQL-запрос?

132. Как посмотреть информацию о том, как выполнялся запрос, какие использовались ключи и т. п.?

Контроллеры

133. Что такое контроллер? Какую задачу выполняет?

134. Что такое action? Что такое CRUD action?

135. Что такое permit params?

136. Что такое ActiveRecord? Как он реализован в Rails-фреймворке?

137. Что такое параметры? Как они попадают в контроллер? Что такое дефолтные параметры (в роутах)? Что такое стронг-параметры?

138. Что такое cookies и зачем они? Где хранятся cookies? Как получить доступ к cookies?

139. Что такое сессии и в чем их задача? Где хранятся сессии? Как получить доступ к сессии?

140. Какие виды фильтров есть в Rails? (Before / after / around actions)

141. Зачем нужен объект Request? Какую информацию он содержит?

142. Для чего нужен объект Response? Какую информацию он содержит?

143. Что такое стриминг? Каким образом можно отдать файл на загрузку (Send_data, send_file)?

144. Что такое Rescue в контроллерах и для чего применяется?

145. Как принудительно включить использование HTTPS-протокола?

Маршрутизация

146. Что такое роуты и в чем их функция?

147. Что означает аббревиатура CRUD?

148. Если нужно сделать новый CRUD для определенного ресурса, какие классы вы создадите и какие файлы измените?

149. Что такое ресурсы?

150. Что такое Singular ресурсы и что отличает их от обычных ресурсов?

151. Что делают неймспейсы в роутах?

152. Что такое вложенные ресурсы?

153. Что такое shallow nesting?

154. Что означает RESTful роуты?

155. Что такое нересурсные роуты?

156. Что такое actions в роутах?

View

157. Что такое view и для чего он нужен?

158. Что такое layout? Чем отличается от view?

159. Что такое шаблонизатор и с какими шаблонизаторами приходилось работать?

160. Зачем нужен метод render? Что рендерить с его помощью?

161. Как передаются переменные во view?

162. Что такое partial? Когда стоит его применять?

163. Что такое хелпер и зачем его используют?

164. Какие есть хелперы для генерации роутов?

165. Какие есть хелперы для генерации форм?

166. Как создавать собственные хелперы?

Интернационализация Rails

167. Что такое i18n? Зачем нужна i18n? Как она устроена в RoR? В каком виде можно хранить переводы?

ActionMailer

168. Что такое ActionMailer и какие задачи он решает?

AssetsPipeline

169. Что такое AssetsPipeline и какие задачи он выполняет?

Инструменты консоли и rake-таски

170. Какие есть консольные команды для работы с RoR? Что такое rake-таски?

Безопасность

171. Знаете ли вы какие-то уязвимые места, защиту от которых Rails предоставляет out of the box?

172. Какие атаки могут быть при неправильном использовании сессий? Почему нельзя хранить важные данные в сессиях?

173. Что такое CSRF? Как правильно защититься от CSRF?

174. В чем уязвимость Open Redirect? Как защититься от возможных атак, связанных с Open Redirect?

175. Какие уязвимости связаны с загрузкой файлов? Почему важно фильтровать имена и расширения файлов? Как защититься от опасности?

176. Почему нельзя загружать файлы в каталог, доступный снаружи? Что будет, если злоумышленник загрузит файл с кодом?

177. Какие уязвимости связаны с управлением пользователями (ссылка активации, пароли в чистом виде)? Как защититься?

178. Что такое инъекции и как происходит такая атака? Как их избежать?

179. Как организовать безопасную генерацию приглашений? Что такое deep_munge?

Конфигурация

180. Где располагается основная конфигурация программы?

181. Что такое initializers? Зачем они?

182. Что такое окружение? Каково его назначение?

183. Как и где настраивается взаимодействие с базой данных?

184. Как и где настраивается Assets, генераторы, мидлвары, i18n?

185. Можно ли указывать произвольные настройки? Если да, то где и каким образом?

Кэширование

186. Что такое кэш и зачем нужен этот механизм?

187. Какие виды кэширования есть в Rails?

188. Где может храниться кэш?

189. Зачем использовать кэширование страниц?

190. Зачем использовать кэширование экшенов?

191. Зачем использовать кэширование фрагментов?

192. Что такое Memcached?

193. Зачем и как реализуется низкоуровневое кэширование?

194. Как и когда кэшируется SQL?

195. Как тестировать кэширования в режиме разработки?

Реляционные базы данных

Теория реляционных баз данных

196. Что такое СУБД?

197. Что такое реляционная база данных?

198. Что такое нормализация базы данных?

199. Что такое нормальная форма?

200. Сколько есть нормальных форм баз данных?

201. Опишите первые три нормальные формы баз данных.

202. Что такое денормализация баз данных?

203. В чем разница между Primary Key, Foreign Key? Зачем они?

204. Какая разница между LEFT JOIN, INNER JOIN, RIGHT JOIN?

205. Как добавить запись в таблицу без ORM?

206. Как обновить запись в таблице без ORM?

207. Как удалить запись из таблицы без ORM?

208. Как прочитать записи в таблице без ORM?

209. Какие правила группировки данных в таблице вы знаете?

SQL

210. Что такое DML (Data Manipulation Language)?

211. Что такое DDL (Data Definition Language)?

212. Что такое DCL (Data Control Language)?

213. Что такое TCL (Transaction Control Language)?

214. Как выбрать данные из нескольких таблиц? Какие виды JOIN вы знаете?

215. Какие агрегированные показатели можно использовать во время выборки из таблицы?

216. Что такое таблица в базе данных?

217. Как создать таблицу?

218. Как выбрать записи из таблицы?

219. Как вставить запись в таблицу?

220. Как изменить запись в таблице?

221. Как удалить запись из таблицы?

222. Как объединить выборку из разных таблиц?

223. Что такое группировка или агрегирование?

224. Каким образом можно задавать условия агрегирования?

Индексы баз данных

225. Что такое индексы в базе данных?

226. Для чего нужны индексы?

227. Какие виды индексов существуют?

228. Что такое первичный ключ?

229. Что такое внешний ключ?

230. Что такое составной ключ?

Полнотекстовый индекс в базах данных

231. Что такое полнотекстовый поиск и в чем его задача?

232. Что такое полнотекстовый индекс?

233. Что такое ts_vector?

234. Что такое ts_query?

PostgreSQL

235. Что такое select distinct и какова его функция?

236. Каким образом можно сортировать результаты выборки?

237. Как ограничить количество результатов выборки?

238. Как проводить поиск по подстрокам?

239. Какие виды объединений (JOIN) есть в PostgreSQL?

240. Что такое подзапросы и в чем их задача?

241. Какие типы данных есть в PostgreSQL?

242. Какие есть виды символьных типов данных?

243. Какие есть виды типов данных для работы с датой и временем?

244. Что такое тип enum? Когда он используется?

245. Как можно создавать таблицы в базе данных?

246. Как изменять структуру таблицы?

247. Как удалять таблицы?

248. Как очистить таблицу?

249. Возможно ли задавать значения по умолчанию для полей? Если да, то как именно?

250. Возможно ли контролировать уникальность значений при вставке? Если да, то каким образом?

251. Что такое функции в PostgreSQL?

252. Какие операторы есть в PostgreSQL?

Базы данных NoSQL

Redis

253. Что такое Redis и зачем используют этот инструмент?

Elasticsearch

254. Что такое Elasticsearch и зачем его используют?

Статический анализ кода

255. Что такое Overcommit и зачем нужен?

256. Что такое Danger и для чего используется?

257. Что такое статические анализаторы кода? Зачем их используют?

258. Какие анализаторы для Ruby / Ruby on Rails знаете?

259. Какие статические анализаторы кода для JavaScript знаете?

Тестирование

260. Какие виды тестирования знаете? Какие из них вы практиковали при использовании Rails?

261. Какой фреймворк для тестирования используете?

262. Какие показатели качества для своих тестов можете назвать?

263. С помощью какой библиотеки вы контролируете процент покрытия тестами?

264. Расскажите об основах тестирования в Ruby. Что такое RSpec? Какая разница между describe, context и it?

265. Какая разница между юнит-тестами и интеграционными?

266. Что проверяют приёмным тестированием?

267. Что проверяют интеграционным тестированием?

268. Что тестируют в моделях?

269. Что тестируют в контроллерах?

270. Что тестируют в сериалайзерах?

271. Как тестировать API?

272. Как тестировать различные Service Objects?

273. Что такое RSpec? Какие задачи выполняет этот инструмент?

274. В чем разница между let и let! в RSpec?

275. Какие хуки в RSpec знаете?

276. Что выполняется раньше: let! или хук before (:all) ?

277. Что такое Capybara? Какие задачи решает Capybara?

278. Что такое стабы?

279. Что такое моки?

280. Что такое матчер?

281. Какую задачу выполняет гем Shoulda Matchers?

282. Какую задачу выполняет Faker?

283. Зачем нужны Webmock и VCR? Чем они отличаются?

284. Что такое WebKit и PhantomJS? В чем разница между ними? Какие еще есть драйверы?

285. Как работать с базой данных в тестах? Как работает gem database_cleaner?

Дополнительные RubyGems и Rails плагины

286. Какую задачу выполняет Devise?

287. Какую задачу выполняет Rake?

288. Какую задачу выполняет Cancancan и Pundit?

289. Какую задачу выполняет Kaminari и Will_paginate?

290. Какую задачу выполняет Carrierwave?

291. Какую задачу выполняет MiniMagick?

292. Какую задачу выполняет Aasm?

293. Какую задачу выполняет ActiveAdmin?

294. Какую задачу выполняет Nokogiri?

295. Какую задачу выполняет Formtastic и SimpleForm?

296. Какую задачу выполняет Omniauth?

297. Какую задачу выполняет Draper?

298. Какую задачу выполняет Faye?

299. Какую задачу выполняет Pusher?

300. Какую задачу выполняет Sidekiq, Resque?

301. Какую задачу выполняет Mongoid?

Управление, сервисы и DevOps

302. Что такое SSH? Как и для чего используется?

303. Каким образом можно настроить аутентификацию на хосте без пароля?

304. Какие задачи выполняет Heroku? В чем его особенность?

305. Какие задачи выполняет Digitalocean?

306. Какие задачи выполняет Docker?

Мониторинг

307. Какие задачи выполняют Airbrake, DataDog, NewRelic?

308. С какой целью используют Monit?

Ruby Web Tools

309. Какие есть веб-серверы, написанные на Ruby?

310. Что такое Sinatra?

311. Что такое API? Для чего используется? Что такое сериалайзеры и зачем они нужны?

312. Что такое клиент-серверная модель?

313. Какая разница между GET- и POST-запросами?

314. Что такое HTTParty и какие задачи он выполняет?

315. Что такое Faraday и какие задачи он выполняет?

316. Что такое Rack? Что такое Rack-application? Что такое Rack middleware?

317. Что такое push-технология?

Интеграции

318. Есть ли опыт интеграции с Facebook? Если да, то на каком проекте?

319. Есть ли опыт интеграции с Twitter? Если да, то на каком проекте?

320. Есть ли опыт интеграции с LinkedIn? Если да, то на каком проекте?

321. Есть ли опыт интеграции с Google? Если да, то на каком проекте?

Практические задания

322. Описать в ООП-стиле: один из предметов интерьера в контексте конкретного бизнеса. Например, кресло, на котором сидит кандидат, теперь надо продавать в магазине.

323. Написать консольную версию игры «крестики-нолики», где входные данные передаются через gets, а выводят через puts. Два пользователя на одной машине должны иметь возможность сыграть партию.

324. Отсортировать массив.

325. Написать функцию, которая вернет уникальные элементы массива, не используя функцию uniq или set, to_set со стандартной библиотеки.

Middle

Общее

1. Что такое SOLID? Приведите примеры на каждую из букв.

2. Что такое микросервисная архитектура? Какие плюсы и минусы вы видите во время её использования?

3. Знаете ли вы шаблоны проектирования Singleton / Factory / Facade / Decorator / Template Method / Strategy?

4. Можно ли измерить скорость выполнения алгоритма? Какие факторы влияют на скорость? Какие виды зависимостей вы знаете?

5. Что такое методология Scrum? На каких активностях / встречах может присутствовать / быть полезным Software Developer?

6. Какие инструменты для логирования используете в работе?

7. Какие инструменты для мониторинга веб-приложений используете?

8. С помощью какого/каких инструментов вы деплоили приложения на staging / production? Опишите процесс.

9. Если один из ендпоинтов в приложении отрабатывает очень долго, что делать, чтобы улучшить скорость?

10. Чем отличается библиотека от фреймворка?

11. Что такое трехзвенная архитектура? Зачем и когда ее используют? Приведите примеры.

12. Что такое кэширование? Зачем и когда его используют? Приведите примеры.

13. Что такое функциональное разделение? Зачем и когда его используют? Приведите примеры.

14. Что такое Comet-сервер? Зачем и когда его используют? Приведите примеры.

15. Что такое денормализация? Зачем и когда ее используют? Приведите примеры.

16. Что такое деградация функциональности? Зачем она и в каких случаях используется? Приведите примеры.

17. Что такое сервис-ориентированная архитектура? Зачем и когда ее используют? Приведите примеры.

18. Что такое монолитное приложение? Зачем и когда его используют? Приведите примеры.

19. Что такое асинхронная обработка? Зачем и когда ее применяют? Приведите примеры.

20. Что такое ленивые вычисления? Зачем и когда их используют? Приведите примеры.

Предметно-ориентированное проектирование

21. Что такое DDD? В чем преимущества перед классическим MVC?

22. Что такое домен?

23. Что такое модель?

24. Что такое контекст?

25. Что такое сущность?

26. Что такое value object?

27. Что такое агрегирование?

Git и code review

28. Что делают команды cherry-pick, log, stash, reset, squash?

29. Что такое Gitflow? Какие правила использования Git на вашем прошлом проекте?

30. Каких правил именования комитов / ветвей / Pull Request`ов вы придерживаетесь?

31. На что обращаете внимание при code review?

32. Что бы вы могли назвать плохо проведенным code review?

Базы данных

33. Для чего нужны индексы?

34. Какие есть виды индексов?

35. Ускоряют ли индексы все операции с базами?

36. Что такое DB view?

37. Чем отличаются materialized db view от non-materialized db view?

38. Как можно сохранить данные в различные таблицы и гарантировать, что все они или запишутся, или нет?

39. Можно ли строить индексы по нескольким полям? Важен ли порядок этих полей в индексе?

40. Какие вы знаете constraints при создании столбцов?

41. В чем разница между SQL и NoSQL базами данных?

42. Как бы вы импортировали большие массивы данных в БД (1-2 миллиона строк в CSV-файл)?

43. Что такое N+1 и как избегать?

Реляционные базы данных

44. Какие различия между джоинами FULL OUTER JOIN, CROSS JOIN, NATURAL JOIN, INTERSECT и EXPECT?

45. Какие специфические типы данных есть в PostgreSQL?

46. Что такое view? С какой целью используется?

47. Что такое materialized view?

48. Что такое recursive view?

49. Что такое хранимая процедура и зачем она нужна?

50. Что такое партиционирование и какую проблему оно решает?

51. Умеете ли вы работать с чистыми SQL-запросами?

52. Каким образом можно работать с геолокацией в PostgreSQL?

53. Какие способы резервного копирования данных? Что такое pg_dump? В каком виде можно создавать резервные копии?

NoSQL базы данных

Redis

54. Что такое Redis? Какие задачи он выполняет?

55. Какие типы данных есть в Redis и для чего нужен каждый из них?

56. Что такое pub / sub?

57. Что такое транзакции?

58. Что такое mass insertion?

59. Что такое партиционирование?

60. Умеете ли работать с Redis в консоли?

61. Умеете ли настраивать Redis?

Elasticsearch

62. Что такое Elasticsearch и какие задачи он выполняет?

63. Что такое кластер?

64. Что такое нода?

65. Что такое индекс?

66. Что такое тип?

67. Что такое документ?

68. Что такое шарды и реплики?

69. Что такое Query DSL?

70. Что такое мапинг?

Статический анализ кода

71. Что такое overcommit и зачем нужна эта утилита?

72. Что такое danger и для чего используют эту утилиту?

73. Какую задачу выполняет каждый из нижеперечисленных гемов?

  • Rubocop;
  • Reek;
  • Rails Best Practices;
  • Brakeman;
  • RubyCritic;
  • SimpleCov;
  • Bundle Audit;
  • Bundle Leak;
  • Traceroute.

74. Какие задачи выполняет каждый из нижеперечисленных модулей?

  • Eslint;
  • Stylelint;
  • Prettier.

Ruby

75. Какие проблемы в Ruby (как в языке программирования) вы видите? Какие, по вашему мнению, нужно решать как можно быстрее?

76. Какими библиотеками, кроме фреймворка Rails, пользовались для создания структуры проекта?

77. Как можно в Ruby запросить сторонний API? Какой встроенный класс позволяет это сделать?

78. Что такое Thread? Чем он отличается от Process?

79. Есть ли в Ruby возможность создать абстрактный класс? Есть ли способ искусственно создать абстрактный класс?

80. Есть ли в Ruby возможность множественного наследования? Есть ли способ искусственно заменить множественное наследование?

81. Назвать максимально точный путь поиска методов в Ruby

82. Какие минусы использования method_missing знаете?

83. Можно ли узнать идентификатор объекта в памяти, если да, то каким образом?

84. Какие виды enumerator для массива вы знаете?

85. Что такое мемоизация методов? Зачем ее используют?

86. С помощью какого хука можно посчитать количество потомков определенного класса?

87. В чем разница запуска rspec и bundle exec rspec?

88. Создавали ли вы гем в Ruby? Какая механика / последовательность действий для создания гема?

89. Что такое Rack middleware?

90. Есть такой код:

            users = User.where (id: [1,3,4])

            users.where (name: "Alex")

            users.inspect

После какой строчки кода ActiveRecord выполняет запрос в базу?

Ruby on Rails

91. Что такое ActiveSupport? Зачем нужен? Какие задачи выполняет? Приведите пример методов, которые добавляет ActiveSupport.

92. Что такое Action Cable? Зачем используют этот фреймворк?

93. Как создать функциональность для отправки имейла в Rails-приложении?

94. Какие библиотеки для background jobs использовали? Какая механика работы таких библиотек?

95. Какие и виды кэша в Rails знаете? Где можно хранить кэш?

96. Какие библиотеки / подходы для создания API документации знаете / используете?

97. Что такое Swagger? Какие преимущества создания API документации в Swagger-формате?

98. Что такое Query Objects? Когда и как их можно использовать?

99. Что такое Decorators? Когда и как их можно использовать?

100. Что такое Form Objects / Contract? Когда и как их можно использовать?

101. Где и как вы рекомендуете держать бизнес-логику в Rails-приложении?

102. Что такое JSON API формат? Использовали ли вы библиотеки для сериализации объектов в JSON API формате?

Тестирование

103. Работали ли вы с feature-тестами? Что такое capybara?

104. Что такое TDD? Какие преимущества / недостатки использования TDD-подхода видите?

105. Что такое BDD? В чем отличие между TDD и BDD?

106. Что может быть причиной того, что тесты на проекте выполняются очень долго?

107. Что такое принцип тестирования FIRST?

108. Как порекомендуете писать тесты на код, в котором посылается запрос на сторонний сервис (API)?

109. Какие инструменты помогают контролировать качество тестов?

110. Какие составляющие response`a вы тестируете, когда пишете тест на определенный эндпоинт?

111. Является ли 100% code coverage на проекте залогом низкой вероятности что-то «сломать» во время багфиксинга / имплементации новой функциональности? Объясните свой ответ.

Управления, сервисы и DevOps

112. Опишите CI / CD-подход на своем последнем проекте? Как бы вы его изменили?

113. Какие в целом Continuous strategies знаете? Чем отличается Continuous Deployment от Continuous Delivery?

114. Что такое Docker? Чем отличается Docker от виртуальной машины?

115. Для чего используют docker-compose?

116. Умеете ли вы работать с Docker?

117. Что такое image в Docker? Как работать с ним в Docker?

118. Что такое container в Docker? Как работать с контейнерами? Как запускать и останавливать контейнеры? Как узнать список рабочих контейнеров?

119. Что такое Docker Daemon?

120. Что такое Docker Client?

121. Что такое Docker Hub?

122. Что такое Docker Compose?

Практические задания

123. Написать клиент для открытого API ресурса с использованием только низкоуровневых библиотек: Net::HTTP, HTTP.rb, Faraday, etc.

124. Как бы вы посчитали количество пассажиров, которые заходят или выходят на определенной станции метро?

125. Посчитать количество автомобилей в пробке.

126. Организовать автомобильную стоянку.

127. Написать функцию, которая вернет уникальные элементы массива, не используя uniq или set, to_set со стандартной библиотеки. Ожидается вариант с применением хеш-таблицы, где ключами будут уникальные элементы из массива, а значениями true.

Senior

Общие вопросы

1. Опишите основные способы аутентификации в API.

2. Назовите основные принципы построения REST API.

3. Вам нужно спроектировать API, какие основные вопросы будете задавать клиенту?

4. Какие основные преимущества и недостатки монолитной архитектуры?

5. Какие основные преимущества и недостатки микросервисной архитектуры?

6. Что такое SOLID? Какие из принципов, по вашему мнению, чаще всего нарушаются, какие являются наиболее критичными?

7. Опишите Singleton-паттерн. Где и когда вы его использовали?

8. Опишите принцип работы DNS?

9. Что такое code smells? Каковы основные признаки плохого кода?

10. Что такое reverse proxy, для чего он нужен?

11. Что такое load balancer, основные разновидности?

12. Что такое MVC и как не попасть с ним в беду?

13. Опишите процесс обработки HTTP-запроса на примере любого веб-фреймворка в Ruby (Rails, Hanami, Sinatra, Roda, etc).

14. Чем отличается refactoring от оптимизации? Как и когда нужно выполнять каждый из вышеназванных процессов?

15. Знаете ли вы GraphQL? Какие плюсы и минусы вы видите по сравнению с REST?

16. Что такое multi-tenant architecture? Когда рекомендуете ее использовать?

17. Чем отличается понятие Dependency Inversion от Dependency Injection и от Inversion of Control?

18. Что такое GDPR? Назовите правила, которые использовали, чтобы быть GDPR compliant?

Метапрограммирование и DSL

19. Параллельное выполнения кода через Thread, Fiber, Ractor. Объясните на примерах.

20. Дизайн-паттерны: Service, Form, Value, Policy, Guard, etc. Объясните на примерах.

21. Расскажите об архитектурных паттернах: Monolith, Microservices, Distributed app, etc.

22. Как организовать бизнес-логику, когда в проект уже 1000+ бизнес-операций?

23. Что такое Sidekiq? Как правильно организовывать очереди?

24. Расскажите об оптимизации быстродействия через benchmark, lineprof и flamegraph.

25. Работали ли вы с Garbage collector? Расскажите.

26. Расскажите о собственных примерах решений, которыми гордитесь и почему.

Ruby / Rails

27. Что такое Thread? Какие особенности использования тредов в разработке?

28. Что такое Process? Какие особенности использования процессов в разработке?

29. Что такое Mutex? Приведите примеры использования мьютексов в разработке?

30. Если нужно определить, сколько выполняется тот или иной код, как порекомендуете это сделать?

31. Какие недостатки видите в Ruby? Когда и как они могут себя проявить во время разработки?

32. Можно ли передать контекст выполнения одного метода в другой метод? Если да, то как это сделать?

33. Какие callback-s знаете в Ruby?

34. Как реализовать Singlethon-класс Ruby? Опишите базовые концепты.

35. Как работает Garbage collection в Ruby? Опишите базовые концепты.

36. Что такое Ractor? Какая разница между классической моделью работы с тред и работой с помощью Ractor?

37. Как работают Lazy Enumerators? Чем они отличаются от классических Enumerators? Как и когда они могут помочь?

38. Назвать примеры использования Fiber`ов

39. Как include добавляет метод модуля в класс? Что происходит на уровне MRI? В чем разница по сравнению с extend и prepend?

40. У вас есть задача импортировать пользователей в базу Rails-приложения. Пользователи записаны в CSV-файле, где каждая строка - это данные. Опишите ваш подход к решению проблемы. Как изменится решение, если файл станет очень большим (> 300000 строк)?

41. Если в модели User у вас есть callback, то какие могут возникнуть проблемы при решении предыдущей задачи?

42. Как мы можем отслеживать прогресс Background Job?

43. Опишите жизненный цикл Request - Response в Rails. Через какие основные компоненты фреймворка проходит запрос и для чего они нужны?

44. Какие основные типы тестов используете и с какой целью?

45. Как вы относитесь к интеграционным тестам?

46. Что такое полиморфные ассоциации в ActiveRecord?

47. Как бы вы порекомендовали построить semantic versioning для Rails API, работающего с мобильными приложениями (iOS, Android, Web)? Поверхностно опишите стратегию.

48. Если необходимо, чтобы каждый запрос, пришедший к Rails app независимо от роута, возвращал 403 статус как можно быстрее, как бы вы порекомендовали реализовать код для этой задачи?

49. Какие, по вашему мнению, пять основных минусов Rails? Что бы вы порекомендовали изменить, чтобы нейтрализовать эти минусы?

50. Можно ли в Rails работать с несколькими базами, если да, то как это сделать?

Базы данных

51. Что такое транзакция? Какие основные свойства транзакций?

52. Что такое database lock и чем он отличается от транзакций?

53. Что такое Pessimistic и Optimistic locking?

54. У нас есть таблица Users. Мы добавили к ней индекс в трех полях: first_name, last_name, email. Именно в таком порядке. Теперь делаем запрос SELECT * FROM users WHERE first_name = "Alex" AND email = "<a href="mailto:test@mail.com"> test@mail.com </a>". Поможет ли нам индекс ускорить такой запрос, и почему?

55. Что такое Database View? Какие виды есть?

56. Что такое Database trigger?

57. Что такое партицирование? Опишите кейсы, когда партицирование было бы полезным?

58. Поверхностно опишите шаги для реализации партицирования на примере любой СУБД.

59. Что такое триггеры? Как и когда их можно использовать? Какие плюсы и минусы вы видите в сравнении с тем, чтобы использовать триггеры / колбеки на уровне бэкенд?

60. Что такое WAL? Какую роль он играет?

61. Была ли у вас возможность / необходимость использовать шардинг? Чем отличается шардинг от партицирования?

62. Опишите принципы, преимущества и недостатки работы с primary / secondary (master / slave) репликацией?

63. Знакомы ли вы с CAP-теоремой? Если да, объясните основную идею.

64. Знаете ли вы ACID? Как вы понимаете букву "I" в этой аббревиатуре?

65. Представьте ситуацию, когда ваш сервер, на котором размещен redis, по неизвестным причинам перезапустился. Что рекомендуете сделать заранее, чтобы такие ситуации не нанесли большой вред?

Тестирование

66. Знаете ли вы, что такое Load Testing? Чем может помочь разработчик при Load Testing?

67. Какие инструменты используют для того, чтобы собрать как можно больше метрик при Load Testing?

68. Какие подходы вы бы порекомендовали использовать, чтобы ускорить тесты на CI?

69. Как внедрить процесс написания тестов, если проект (Rails API) их совсем не имеет?

Практические задания

70. Написать реализацию структуры данных Set. Объяснить алгоритмическую сложность добавления элементов к сету.

71. Спроектировать реферальную систему (то есть, пользователь может пригласить других пользователей, которые становятся его рефералами, они приглашают своих рефералов, и так формируется древовидная структура). Есть модель:

class Users <ActiveRecord :: Base

            end

Как бы вы связали ее с рефералами?

72. Добавьте метод:

class Users <ActiveRecord :: Base

            end

который возвращает рефералы пользователя поуровнево. Например, user имеет рефералы user1, user2. user1 имеет реферала user3, user2 имеет рефералов user4 и user5. Должны получить результат:

{0 => [user]

            1 => [user1, user2],

            2 => [user3, user4, user5}

Спасибо за вопросы Денису Земляному, Николаю Воронину, Сергею Гнилицкому, Владимиру Свередюку, Михаилу Одинюку, Виктору Нову, Александру Шестопалу, Андрею Зеленцу, Кириллу Шевченко, Виктору Новицкому.

КОММЕНТАРИИ И ОБСУЖДЕНИЯ
advertisement advertisement

Покупай подпискус доступом ко всем курсам и сервисам

Библиотека современных IT знаний в удобном формате

Выбирай свой вариант подписки в зависимости от задач, стоящих перед тобой. Но если нужно пройти полное обучение с нуля до уровня специалиста, то лучше выбирать Базовый или Премиум. А для того чтобы изучить 2-3 новые технологии, или повторить знания, готовясь к собеседованию, подойдет Пакет Стартовый.

Стартовый
  • Все видеокурсы на 3 месяца
  • Тестирование по 10 курсам
  • Проверка 5 домашних заданий
  • Консультация с тренером 30 мин
59.99 $
Оформить подписку
Базовый
  • Все видеокурсы на 6 месяцев
  • Тестирование по 16 курсам
  • Проверка 10 домашних заданий
  • Консультация с тренером 60 мин
89.99 $
Оформить подписку
Премиум
  • Все видеокурсы на 1 год
  • Тестирование по 24 курсам
  • Проверка 20 домашних заданий
  • Консультация с тренером 120 мин
169.99 $
Оформить подписку
Notification success