[Закрываются] хорошие вопросы об интервью архитектуры

Рассмотрите возможность аннотирования с использованием расчета процента группировки. Так как вам нужно добавить три числа с последовательностью из шести, annotate могут отличаться от группирующих рядов. Кроме того, используйте соответствующий процент от пола и возраста. А ниже другой base::ave вызов заменяет ваш dplyr::group_by:

agg_df <- aggregate(list(value = 1:NROW(df)), df[c("age_group", "Gender")], length)

dat <- within(agg_df, {
  proportion <- ave(value, age_group, FUN = function(x) (x/sum(x)*100))
  proportionR <- round(proportion, digits=0)

  age_per <- round((ave(value, age_group, Gender, FUN=sum) / sum(value)) * 100)      
  grp_pct <- round((ave(value, age_group, FUN=sum) / sum(value)) * 100)
})

dat
#   age_group Gender value grp_pct age_per proportionR proportion
# 1     45-54      F     2      33      13          40   40.00000
# 2     35-44      F     1      20       7          33   33.33333
# 3     25-34      F     2      47      13          29   28.57143
# 4     45-54      M     3      33      20          60   60.00000
# 5     35-44      M     2      20      13          67   66.66667
# 6     25-34      M     5      47      33          71   71.42857



ggplot(dat, aes(x = age_group, y = value, fill = Gender)) +
  geom_col() + coord_flip() + ylab("Visits 2018-2019") +xlab("") +
  scale_fill_manual(values= c("#740404", "#AB6868", "#D5B3B3"), 
                    labels = c("Females", "Males", "N/A")) +
  theme(legend.title=element_blank()) +
  geom_text(aes(label = paste0(age_per, "%")), hjust = 2.7, 
            position = "stack", color = "white", size =5) + 
  annotate("text", x=1, y=5.25, label = paste0(dat$grp_pct[[1]], "%")) +
  annotate("text", x=2, y=3.25, label = paste0(dat$grp_pct[[2]], "%")) +
  annotate("text", x=3, y=7.25, label = paste0(dat$grp_pct[[3]], "%"))

Plot Output


Для динамического аннотирования вы можете использовать функциональную форму ggplot, используя Reduce, где + (на самом деле не арифметический оператор плюс) выставляется как оператор +.gg(). Затем вызовите mapply, чтобы выполнить итерацию по unique(grp_pct), чтобы передать координату x и указать метку. Остальной проблемой является то, что лучшая координата у неизвестна.

Reduce(ggplot2:::`+.gg`, 

       c(list(ggplot(dat, aes(x = age_group, y = value, fill = Gender)),
              geom_col(), coord_flip(), ylab("Visits 2018-2019"), xlab(""),
              scale_fill_manual(values= c("#740404", "#AB6868", "#D5B3B3"),
                              labels = c("Females", "Males", "N/A")),
              theme(legend.title=element_blank()),
              geom_text(aes(label = paste0(age_per, "%")), hjust = 2.7, 
                        position = "stack", color = "white", size =5) 
         ),
         Map(function(x_loc, g_lab) annotate("text", x=x_loc, y=7.25,
                                                label = paste0(g_lab, "%")),
             seq(length(unique(dat$grp_pct))), unique(dat$grp_pct)
         )
       )
)

Plot Output

34
задан user60456 3 May 2009 в 03:28
поделиться

7 ответов

Архитектура - это одна из тех вещей, которая не является простым вопросом (например, использование шаблона проектирования) и намного более субъективна, чем другие темы интервью. Часто не существует единой правильной архитектуры, поэтому сложно оценить кого-то. Максимум, что вы можете получить - это представление о том, как думает собеседник.

Я бы предложил, чтобы вы описали интервьюируемому сложный продукт или часть продукта, с которым вы (интервьюер) наиболее близко знакомы. Затем попросите его подумать о том, как он это спроектирует, объяснит свои рассуждения, а затем сконцентрируйтесь на конкретных решениях и задайте вопросы.

Конечно, делайте это только в том случае, если:

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

Дополнительным бонусом является то, что вы увидите, как вы могли бы справиться с разногласиями, если он был нанят.

Альтернативный подход, если ваш продукт когда-либо подвергался повторному проектированию, - это описать архитектуру старой версии и спросить собеседник, как он будет перестроить его. Если результат близок к текущей архитектуре, скорее всего, кандидат будет хорошо соответствовать стилю и мышлению вашей группы.

40
ответ дан 27 November 2019 в 16:10
поделиться

Проблема с такими вопросами заключается в том, что на самом деле нет «правильного» ответа, поэтому главное - получить кандидат начинает говорить. Я бы попросил их описать архитектуру, которую они реализовали и которой они гордятся. А затем продолжайте с такими вещами, как «чем вы больше всего гордитесь?». И затем вы можете спросить их, какие ошибки они совершили в прошлом, такого рода вещи.

Я чувствую себя более комфортно в этом, потому что вы чувствуете человека, а не его способность отвечать на постоянный вопрос.

4
ответ дан 27 November 2019 в 16:10
поделиться

«Итак, я не собираюсь вас здесь дурачить: вы можете сказать мне кое-что, что убедит меня в том, что вы много знаете об архитектуре?»

15
ответ дан 27 November 2019 в 16:10
поделиться

Предполагая, что вы уже проверили их на предмет соответствия культуре / личностным навыкам и навыкам развития, я бы предложил следующее:

  1. Попросите кандидата описать архитектуру системы среднего и крупного масштаба, которую он фактически спроектировал и / или внедрил. Задайте пробные вопросы о компромиссах, которые они сделали.

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

  3. Представьте кандидату набор требований для нетривиальной системы (т.е. распределенная система для просмотра медицинских изображений в больничной среде. Попросите их на досках повышать уровень детализации компонентов системы, пока вы не почувствуете себя комфортно с их способностью извлекать требования у заинтересованной стороны (вас) и делать соответствующие компромиссы в их дизайне.

Ничто из этого не гарантирует, что вы выберете лучшего «архитектора» (у меня та же проблема с титульным архитектором, что и у Джоэла и Джеффа). Тем не менее, это, безусловно, хорошие методы фильтрации, и они должны помочь вам определить кого-то, кто заслуживает внимания вашей команды.

Ничто из этого не гарантирует выбора лучшего «архитектора» (у меня та же проблема с титульным архитектором, что и у Джоэла и Джеффа). Тем не менее, это, безусловно, хорошие методы фильтрации, и они должны помочь вам определить кого-то, кто заслуживает внимания вашей команды.

Ничто из этого не гарантирует выбора лучшего «архитектора» (у меня та же проблема с титульным архитектором, что и у Джоэла и Джеффа). Тем не менее, это, безусловно, хорошие методы фильтрации, и они должны помочь вам определить кого-то, кто заслуживает внимания вашей команды.

16
ответ дан 27 November 2019 в 16:10
поделиться

Меня немного беспокоит ваш вопрос. На первый взгляд, я бы предложил что-то вроде: «Пожалуйста, опишите влияние форм прерий Среднего Запада на современные образцы декоративно-прикладного искусства». 1236 Убирая язык со щеки, я бы предложил то, что Крис делал выше. Предоставьте кандидату возможность взаимодействовать с вами и вашей командой в разработке архитектуры, соответствующей вашей работе. Если вы не чувствуете, что можете судить об их компетентности, основываясь на том, как они решают проблемы вместо обычных проблем, вам НУЖНО привлечь к собеседованию кого-то еще. Или же возьмите страницу из книги Джоэла и Джеффа и вычеркните термин «архитектура» и начните искать компетентных разработчиков программного обеспечения.

По моему мнению, умение проектировать или «архитектор» - это навык, не набор знаний. Задавая им кучу вопросов, таких как «как это повлияет на производительность при использовании J2EE vX против J2EE vY» или «что лучше, CORBA или RMI», вы просто будете выглядеть глупо.

5
ответ дан 27 November 2019 в 16:10
поделиться

«Вы читали код, завершенный Макконнеллом?»

2
ответ дан 27 November 2019 в 16:10
поделиться
  1. Спросите, кто в "сообществе" они следуют и восхищаются за их архитектурные способности и почему? Это даст вам представление о философских наклонностях их архитектурного стиля. Кроме того, если они не могут никого назвать или почему им восхищаются, это большой красный флаг, потому что они явно не поспевают за лучшими практиками и достижениями сообщества.
  2. Попросите их назвать какую-то проблему / минус / компромисс с шаблоном архитектурного дизайна, подходящим для интервью. Если они не могут этого сделать, это красный флаг, поскольку они могут быть неосознанно некомпетентными (например, фанатами), а не иметь реального опыта и понимания в этой области. Намного проще назвать преимущества, которые дает данная архитектура, тогда как для понимания недостатков требуется более глубокое понимание.
16
ответ дан 27 November 2019 в 16:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: