Вопрос на собеседовании: библиотека парсинга логов

Один из вопросов, которые я часто задаю на собеседованиях, - это разработка библиотеки обработки логов:


Вам нужно написать библиотеку для обработки логов в следующем формате:

метка_времени<TAB>сообщение

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

Библиотека должна поддерживать следующие операции “из коробки”:

  • фильтрация
  • подсчет
  • гистограммы

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

Read More…

Вопрос на собеседовании: Оптимизация затрат на чтение с диска

Один из вопросов, который я действительно люблю задавать во время кодовых собеседований, звучит так:


Дан непрерывный поток слов, словарь на диске и стоимость чтения с диска, создайте потоковый процессор, который возвращает true, когда слово существует в словаре, при этом минимизируя затраты на чтение с диска. Пример:

Словарь: {Собака, Кошка, Птица, Лев, ...}
Входные данные: [Собака, Кошка, Агхд, ...]
Выходные данные: [True, True, False, ...]

Выходные данные true, true, false, потому что “собака” и “кошка” существуют в словаре слов, а “Агхд” не считается словом.

Read More…

Написание пользовательских историй и требований

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

Read More…

Высокотехнологичные Энергетические (Внимание) Вампиры

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


“Энергетический вампир” — это человек, после общения с которым вы чувствуете себя опустошённым как эмоционально, так и умственно. Это не клинический термин, а скорее разговорный ярлык, который описывает тип личности, истощающей вашу энергию. И это не так уж загадочно, как может показаться.

Read More…

Политики вытеснения кэша: LRU vs Random vs p2c

Каждое интервью я провожу для старших инженеров-программистов в Amazon. В этих интервью я задаю более-менее одни и те же вопросы. Один из них предполагает добавление логики кэширования для улучшения результатов. Я заметил, что кандидаты часто совершают две ошибки, которые мешают им выделиться как профессионалам:

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

В этой статье мы попытаемся разобраться с этими проблемами.

Read More…

Ultra-locality in Decision Making and Free Will

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

Часть первая: Ультра-локальность и свобода воли

Та же самая Joscha Bach: Life, Intelligence, Consciousness, AI & the Future of Humans | Lex Fridman Podcast #392 подкаст, о котором я упоминал в предыдущем посте AI, люди, деревья и грибы: одно и то же программное обеспечение, разное оборудование, вызвала другую цепочку мыслей. Йошка говорил о том, как наши нейроны всегда работают, используя доступные здесь и сейчас данные. Этого достаточно для построения сложных систем, таких как человеческий мозг. Работая вместе, нейроны формируют части, ответственные за память, обработку изображений, шины данных и т.д. Но в конечном итоге каждый из них индивидуально работает только с данными, предоставленными другими нейронами. Аналогичным образом нейронные сети в GPT представляют собой просто перемножение матриц, соединенных друг с другом, образуя память, внимание, генерацию и т.д.

Read More…

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

Изучение идеи о том, что все живые существа обладают духом или способностью работать с нейро-сигналами.

Недавно я слушал Joscha Bach: Life, Intelligence, Consciousness, AI & the Future of Humans | Lex Fridman Podcast #392, где Йосча и Лекс обсуждали различные идеи о сознании, неврологии и ИИ. В какой-то момент они заговорили о способности всех типов клеток обрабатывать нейро-сигналы. Ключевое отличие заключается в том, что нейроны могут обрабатывать данные гораздо быстрее, на больших расстояниях и взаимодействовать с большим количеством соседей одновременно.

Read More…

Матрица: Симуляция, Игра, Реинкарнация или Галлюцинация?

Уже довольно давно размышляю на тему, а что если всё, что мы видим, не существует, и мы все заложники или участники игры или симуляции.

Начало: Матрица и Рик и Морти

Всё началось давно. В школе я увлекался киберпанком, читал и смотрел про хакеров, виртуальную реальность и т.д. Нейромант, Джонни Мнемоник от Уильяма Гибсона, Лабиринт отражений от Сергея Лукьяненко, Матрица и Газонокосильщик были моими любимыми книгами и фильмами. Затем я забыл об этом, пока не произошел взрыв генеративного ИИ и… несколько серий Рика и Морти. В одной серии Морти играет в VR-игру, где он начинает жизнь с новорожденного без воспоминаний о жизни вне игры и живет целую жизнь, пока не умирает в возрасте 60-80 лет. В другой серии он застревает в игре, где его сознание раздроблено на части, действующие как целый мир независимых агентов.

Read More…

Стройная разработка, клиенты и как это связано с культурой письма в Amazon

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

Введение

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

Read More…

Хочешь быть всегда на связи? Подумай еще раз.

В последние несколько лет компании пытаются всё подключить к Интернету, от дверных звонков и фотокамер, до машин. И с этим есть несколько проблем.

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

Read More…