300+ вопросов с собеседований для Ruby-разработчиков уровня Junior

Что нужно знать, когда проходишь техническое собеседование по Ruby? Сайт DOU.UA попросил интервьюеров-практиков прислать свои списки вопросов, а затем обобщил их в одной статье. Представляем вам перевод первой части этого материала, с вопросами для джуниоров.

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 из стандартной библиотеки.

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх