Как стать автором
Обновить
2
0

Пользователь

Отправить сообщение

Как собеседовать работодателя?

Время на прочтение4 мин
Количество просмотров47K
У программистов обычно принято обсуждать собеседования с точки зрения (около)технических вопросов, которые им задает интервьювер.

Надо ли писать код на доске? Надо ли жонглировать бинарными деревьями и знать наизусть все сложности алгоритмов, или просто разговаривать про жизнь и проекты?

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

Читать дальше →
Всего голосов 85: ↑77 и ↓8+69
Комментарии63

Структуры данных для хранения графов: обзор существующих и две «почти новых»

Время на прочтение7 мин
Количество просмотров42K
Всем привет.

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

Итак, начнем. Но не с самого начала – думаю, что такое граф и какие они бывают (ориентированные, неориентированные, взвешенные, невзвешенные, с множественными ребрами и петлями или без них), мы все уже знаем.

Итак, поехали. Какие же варианты структур данных для «графохранения» мы имеем.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии14

Как создать стратегию победы над старением?

Время на прочтение4 мин
Количество просмотров8.4K
Давайте взглянем трезво на ситуацию последних 30 лет. Было невероятное количество ожиданий от тех или иных открытий, но у нас до сих пор нет такой вещи, которая продлевала жизнь человека до 100 лет большинству людей.

Мы связывали свои надежды с различными технологиями: активация теломеразы, ингибиторы окислительного стресса, гены долголетия, сенесцентные клетки — нужного результата нет.

Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии39

Как спроектировать идеальное занятие

Время на прочтение12 мин
Количество просмотров4.5K

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


Ниже сам документ.

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии2

Дмитрий Мацкевич, Dbrain (часть 2): о нейробиологии, внутренней свободе, «дешевом дофамине» и интуиции

Время на прочтение17 мин
Количество просмотров11K


Вторая часть разговора Алексея Иванова с Дмитрием Мацкевичем, CEO и кофаундером Dbrain и популяризатором нейронауки. Это одиннадцатое интервью в серии бесед с топовыми специалистами в своих областях про продуктовый подход, предпринимательство, психологию и изменение поведения. Первая часть интервью тут.

Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии3

Советские мечты о будущем, часть 2. Теперь с сепульками

Время на прочтение8 мин
Количество просмотров28K


В предыдущей серии: мы составили подборку советской мультипликационной научной фантастики. Собрали комментарии о тех мультфильмах, которые не вошли в первую часть — и рассказываем о них сейчас.
Всего голосов 51: ↑50 и ↓1+49
Комментарии24

Тестовые задания на собеседовании разработчика — есть ли в них смысл?

Время на прочтение4 мин
Количество просмотров21K
За свою долгую IT-карьеру я успел побывать по обе стороны собеседований и увидеть весь блеск, нищету, маразм и здравые мысли тестовых заданий, выдаваемых на технических собеседованиях разработчиков ПО.
Читать дальше →
Всего голосов 29: ↑22 и ↓7+15
Комментарии163

Учим английский: как научиться разговаривать как носитель

Время на прочтение4 мин
Количество просмотров28K
image

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

Но как это сделать? Я нашла интересный пост с описанием практических способов улучшения языка и подготовила его адаптированный перевод.
Всего голосов 25: ↑21 и ↓4+17
Комментарии25

История одного удачного применения SRP в Legacy проекте

Время на прочтение4 мин
Количество просмотров1.2K
В этой статье я расскажу на примере эволюции своего проекта историю перехода и видение контрактного программирования.

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

Что-то я буду описывать своим языком.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии5

Шпаргалка для технического собеседования

Время на прочтение8 мин
Количество просмотров213K


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

Читать дальше →
Всего голосов 81: ↑68 и ↓13+55
Комментарии85

Паттерны проектирования в JS: паттерны создания объектов

Время на прочтение5 мин
Количество просмотров14K
Итак, хабровчане, уже в этот четверг в OTUS стартует курс «Fullstack разработчик JavaScript». И сегодня мы делимся с вами еще одной авторской публикацией в преддверии старта курса.



Автор статьи: Павел Якупов


В этой статье мы поговорим о самых простых и распространенных паттернах проектирования в языке Javascript — и постараемся объяснить, какие из них когда нужно применять.
Что такое вообще паттерны проектирования? Паттерны проектирования это термин, который используется для общих, часто используемых решений для общих проблем в создании программ.

Говоря проще, паттерны проектирования — это удачные решения, которые используются достаточно часто. Паттерны проектирования как понятие сформировались еще в то время, когда языка программирования JavaScript не было в помине, в сфере software engineering паттерны проектирования были подробно описаны еще в 1994 году «Большой четверкой». Однако мы в нашей статье обратимся к реализации некоторых несложных паттернов именно на языке программирования JavaScript.
Читать дальше →
Всего голосов 28: ↑16 и ↓12+4
Комментарии14

Исповедь docker хейтера

Время на прочтение10 мин
Количество просмотров122K

Я должен признаться. Я ненавижу docker. Всей своей душой. Это самая ужасная софтина, которую я видел за последние 10 лет.


С одной стороны, я очень уважаю одноименную компанию. Ребята из Docker Inc. реально популяризировали контейнеризацию. Теперь о ней не знает только ленивый. С другой стороны, ничего принципиально нового они не изобрели — контейнеризация на момент, когда Docker "выстрелил", уже существовала более 30 лет (начиная от chroot, вспомним еще jails и zones, ну, и наконец-то — namespaces & cgroups).


Круто, что docker реально ускоряет разработку во множество раз. Если вести ее правильно, то даже без потери в качестве. В любом случае, docker здесь, от него не деться и приходится им пользоваться.


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


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

Читать дальше →
Всего голосов 220: ↑203 и ↓17+186
Комментарии539

Немного о порождающих шаблонах проектирования

Время на прочтение5 мин
Количество просмотров14K

Тема шаблонов проектирования достаточно популярна. По ней снято много роликов и написано статей. Объединяет все эти материалы «анти-паттерн» Ненужная сложность (Accidental complexity). В результате примеры заумные, описание запутанное, как применять не понятно. Да и главная задача шаблонов проектирования – упрощение (кода, и работы в целом) не достигается. Ведь применение шаблона требует дополнительных усилий. Примерно так же, как и Unit тестирование.


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

Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии10

Странные они, статические переменные в PHP

Время на прочтение5 мин
Количество просмотров15K

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


Итак...


Статические переменные, в php это особый вид переменных, которые объявляются при помощи ключевого слова static.


static $foo = 3;

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


  1. могут быть присвоены только константы и константные выражения
  2. время жизни статической переменной не ограничено временем жизни области видимости в которой она была объявлена
  3. могут быть определены в скрипте лишь однажды
  4. не уничтожаются до конца выполнения скрипта

Теперь по порядку.


1. Могут быть присвоены только константы и константные выражения


Это значит что в статическую переменную не может быть присвоен результат работы какой-либо функции или метода, или вообще что-либо что еще не известно на этапе компиляции. То есть вот такое объявление не сработает

Ваш текст
Всего голосов 40: ↑31 и ↓9+22
Комментарии28

Разбор задачи с собеседования Google: поиск соотношения

Время на прочтение21 мин
Количество просмотров39K


Добро пожаловать в очередную из серии статей с разбором задачек, которые я задавал на собеседованиях в Google, прежде чем их запретили после утечки. С тех пор я оставил работу инженера-программиста в Google и перешёл на должность менеджера по разработке в Reddit, но у меня всё ещё осталось несколько замечательных тем. К настоящему моменту мы разобрали динамическое программирование, возведение матриц в степень и синонимичность запросов. На этот раз совершенно новый вопрос.
Читать дальше →
Всего голосов 47: ↑41 и ↓6+35
Комментарии73

Разбираемся в основах Blockchain: Задача Византийских Генералов. Часть 1

Время на прочтение6 мин
Количество просмотров29K
Перевод статьи подготовлен специально для студентов курса «Архитектор высоких нагрузок», который стартует уже в этом месяце.




Блокчейн – это децентрализованная система, состоящая из различных субъектов, которые действуют в зависимости от своих стимулов и имеющейся у них информации.

Всякий раз, когда новая транзакция транслируется по сети, узлы могут включить эту транзакцию в копию своего леджера или проигнорировать ее. Когда большинство участников сети принимают решение о принятии определенного состояния, достигается консенсус.
Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии8

Как проводить код-ревью

Время на прочтение18 мин
Количество просмотров53K
Из документации Google's Engineering Practices

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


См. также Руководство автора CL, в котором даются подробные советы разработчикам, чьи коммиты проходят ревью.
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии17

Сервисы, микросервисы и пакетно-ориентированное программирование

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

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

Хочу поднять тему повторного использования кода в контексте создания сервис-ориентированной и микросервисной архитектуры.
Читать дальше →
Всего голосов 15: ↑11 и ↓4+7
Комментарии5

Вся мощь IntelliJ IDEA на примере одного языка (в картинках)

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

Однако, одна из проблем такого подхода заключается в том, что это значительно удорожает и замедляет сам процесс разработки. Что если всего этого нет? Тогда на помощь приходит IDE, благодаря которой можно изучить текущую логику по “голому” коду.

Когда мы разрабатывали платформу lsFusion со встроенным языком, то у нас было несколько вариантов. Либо изобретать велосипед, и писать с нуля свою собственную IDE, как сделал в свое время 1С, или реализовать плагин к уже существующей. Мы пошли по второму пути, и в этой статье я покажу, что получилось.
Читать дальше →
Всего голосов 27: ↑25 и ↓2+23
Комментарии10

Как обустроить себе рабочее место

Время на прочтение7 мин
Количество просмотров122K
В офисе вопросами обустройства рабочего места озабочен работодатель, но его экономный подход не так уж часто нравится сотрудникам. Помня о том, как приходилось сидеть на неудобном стуле в шумном опенспейсе, начинающий удаленщик пытается закрыться в тихом кабинете и купить себе кресло подороже, да железо пошустрее. И на этом в большинстве случаев фантазия заканчивается. Но вопрос подготовки рабочего места намного шире.

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

image
(рабочее место одного из наших сотрудников)
Читать дальше →
Всего голосов 45: ↑39 и ↓6+33
Комментарии85

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность