Как упорядочить свои мысли на доске и разбить техническое собеседование

1656641551 kak uporyadochit svoi mysli na doske i razbit tehnicheskoe sobesedovanie

Даг Аркури

Об организационных способностях и прикладной науке склеивания многих вещей в ремесле разработки программного обеспечения

nr4-uz-0grKWKASaukL9ZmlB53DbS05ocd8t
Азбука программирования не включала O для организации.

Несколько недель назад яркая личность опубликовала на Hacker News хорошо продуманный и краткий пост о самом важном навыке в разработке программного обеспечения. В этой публикации Джон Д. Кук привел цитату из статьи Джеймса Хейга «Организационные навыки побеждают алгоритмическое волшебство». Оба автора рассматривают тему программной инженерии организация как навык. Они противопоставляют это мастерство информатики, проверенное на собеседованиях, изложенное в академических кругах или рекламируемое в публикациях блога. Их созерцание заставило меня задуматься о том, как можно улучшить наше ремесло.

Глубоко размышляя над сообщениями обоих авторов, я пробежал свой опыт со временем. Я сочувствую тем, кто проходит технические собеседования, не получив классическую подготовку. Мой последний опыт несколько лет назад был неорганизованным.

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

Это заставило меня написать продолжение в собственном стиле. Это потому, что я был тронут серьезностью этих сообщений. Почему бы не ответить на задаваемые вопросы, даже если мой пример ответа не совпал точно? Я бросал эту идею туда-сюда и остановился на одном вопросе. Джон спросил:

…как представить немного разумной организации?

Немного подумав об этом, я отвел взгляд от экрана и увидел свою доску, стоящую передо мной. Моя голова закружилась вокруг столбов. Трудные технические собеседования? Организация? Управление государством? Падение веса? Сложность кода? Возможно, упражнение на технической доске интервью могло бы стать выдающейся точкой разработки программного обеспечения.

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

Редко кто хорошо выступает за доской. Вы должны продемонстрировать искусный процесс мышления и многое помнить. Вы должны общаться, но как вы общаетесь, игнорируя крик в своей голове, говорящий «спешите!» во время восторженного передвижения?

Лучший подход

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

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

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

-HAbsJmoAIRdELQHI8RvBtTWsP8UJamCLic4
Типичная белая доска размером 5 на 3 фута, разрезанная на три части.

Три секции будут организованы для временного пространства для работы над решением проблемы.

Шаг 1: проблема

Обязательно запишите проблему полным предложением сверху. Это заставит вас ощутить маркер и поможет вам преодолеть первоначальное волнение «как мне это решить?».

1rWyb8VlNsRkDJuO3JVJPwKOK1aJ6jJse86e
Очень важно рассмотреть приведенную выше постановку проблемы.

Записав вопрос, посмотрите на него на мгновение и начните думать над вопросами. Рисуйте линии с достаточным пространством. Не беспокойтесь о паузе, дайте интервьюеру понять, что вы думаете о вопросах, которые нужно задать.

Шаг 2: Предположение

Подумайте о некоторых общих вопросах. Например, какой язык программирования вы предпочитаете? Перейдите на правую сторону доски. Вопросов нет? Проблема может содержать понятия, которых вы не знаете. Спросите, какие они. Затем начните отвечать на проблемные вопросы. Первое, что нужно спросить, это пример параметра введение и выход. Спросите, есть ли данные предварительно отсортированный.

Kx78DCzOWsekTcYbq7IHTLHPiI86LGMeLiki
Предположение – это все вопросы, на которые нужно найти ответ.

Уточнение предположений может упростить проблему. Когда вы задаете каждый вопрос, вы должны записывать каждую пару ответов в зоне предположений. Когда вы получите ответ, получите вторичный маркер (другого цвета), чтобы выделить ответ. Может помочь взять с собой собственные маркеры.

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

Шаг 3: подход

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

KaGXec4BDotCR4yui4XjlYCaou68b3k8s7NO
Подход – это стратегия, структура и блокнот визуализации.

Здесь очень грубый псевдокод, шаги и визуализации. Сообщите своему интервьюеру, что это не ваша реализация, а место, где вы систематизируете свои мысли по поводу стратегии и подхода, частично о структурах данных и абстрактных типах данных. Нарисуйте решение как рисунок.

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

Как минимум, это произойдет несколько раз, когда вы узнаете средние случаи, лучшие случаии худшие случаи. Это зависит от стратегии, границ и ограничений. Запрос расслабление на такой подход, как «Для этого примера я могу использовать небольшой набор данных?» «Могу я предположить, что входной массив отсортирован?» Проверка вводимых данных является еще одним генератором вопросов.

Шаг 4: использование кода

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

Даже если вам трудно решить, вы – мастер организации.

D7wu7tK8joDe2EtBsBUJstNdCUH6hZZ2TLfL
Основное событие расположено по центру, поэтому его можно поддерживать со всех сторон.

Конечно, есть вероятность найти что-нибудь в акте. Повернитесь налево и восстановите подход, сломайте и попросите помощи. Возникают новые вопросы. Идите вправо. Ходите вперед и назад слева направо в центр, пока вам не удастся. Ты будешь.

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

Бонусный шаг 5: тест

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

CXfiUeO43n5271PhhKqn5FPG5xvheGJQMYXE
Тесты никогда не должны быть необязательными.

Теперь, скорее всего, безопасно удалить все вопросы из этой области. Удалите вопросы и попытайтесь написать модульные тесты. В конце концов у вас все получится, потому что вы организовали уверенно.

Суммируя

Вот так. Это было несколько минут чистой организации без большой теории. Он опирается на несколько обычных концепций.

  1. Разрезание разделить проблему на две части от начала до конца.
  2. Строительные леса — Концепция временной архитектуры или где мы устанавливаем опорную конструкцию, строя вокруг себя.
  3. Гейтинг — мы не должны переходить к следующему шагу, пока мы не будем чувствовать себя комфортно и уверены в деле надлежащего решения проблемы. Проявляйте уверенность, но активно взаимодействуйте с вопросом «Пропустил ли я какие-то предположения?» или «Есть ли в моем подходе дыры?» прежде чем продолжить.
  4. государство— организация обрабатывается зрительно, чтобы сохранить сложность проблемы. Избегайте использования резинки, если можете.
aAuYzHGrTqKnY7xJ1B4K1GmBryaY3iNX67y8
Подход к фактической проблеме организации по решению. Если вы левша, попробуйте изменить настройки

Вывод

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

Вы не можете оценить подвиг организации, пока не почувствуете дезорганизацию. – Джон

Я согласен. Это касается любого человеческого опыта, включая проекты с кодом, людьми и техническими досками. Но сделать шаг назад и ответить на проблему с помощью процесса организации – это подвиг инженера. Проблема и потенциальное решение.

Ключ к технике есть потенциальная организация . Большой кинетическая энергия происходит от действия хитрой и непрерывной организации в течение времени.

Никогда не недооценивайте это явление.

Только если неорганизованный беспорядок является вашей ответственностью, то, что для вас важно, чем практическое исследование, вы можете сосредоточиться на этом и оценить совершенствование. – Джон

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

Большинство нашего ремесла является прикладной наукой. Редко одаренные могут мастерить и вмешиваться, чтобы найти новые структуры данных или алгоритмы. Наш является одним из язык шаблонаи а ремесло. Это редкое искусство, если вообще. Это должно много сделать с определением последних организационных навыков и расклейки и склеивания вещей очень хорошо, неоднократно. Возможно, с помощью некоторых инструментов из панели инструментов. Но будьте аккуратны с инструментами организации, которые наталкиваются на нас обменом или энтузиазмом.

Помните, что есть гордость за усовершенствование кода с помощью организации и структуры. Я написал несколько сообщений об организации и теме, связывающей организацию со сложностью системы. Существует сильная связь. Вот почему я глубоко благодарен за мысли Джона и Джеймса. Они организованы сообщения без спеши истечение времени.

-6Qm9owYwAYEHCUXT67dk0t6-vvKZOCw1KiL
Как это может выглядеть с первой попытки? Попытайтесь повторить, чтобы обнаружить больше шаблонов.

Если вы оказались в такой ситуации, попросите побольше доску!

Добавить комментарий

Ваш адрес email не будет опубликован.