Результати пошуку за запитом: Андр%
Фундамент внутренней оптимизации. 5 железных факторов
Автор: Андрей Афанасьев
Введение
В начале данной статьи хочу поздравить Вас и себя со своей первой публикацией в 2016 году. Искренне желаю встречать на своем пути побольше ценной и интересной информации, а также людей, которые будут делиться бесценным опытом и помогут таким образом в Вашем профессиональном росте:)
А теперь можно приступить непосредственно и к теме данной публикации. Я не сомневаюсь, что многие уже успели перелопатить массу книг и статей о том, какой должна быть качественная внутренняя оптимизация, на что она влияет, какие тренды нас ждут в наступившем году, поскольку такой информации в Интернете целые массивы. Но меня это не остановило. Я уверен, что данный материал обязательно откроет что-то новое, позволит расставить акценты и сосредоточить внимание на самом главном. Тем более, кто дочитает эту статью до конца, получит небольшой, но приятный бонус:)
От слов к делу
Самый встречаемый вопрос, особенно среди новичков, звучит так: ”Внутренняя оптимизация - такой трудоемкий процесс, так много факторов и пунктов проверки. Подскажи, на что стоит обращать внимание в первую очередь?”. Отвечаю. Пожалуй, на всё. Наша жизнь состоит из мелочей и SEO-оптимизация тому не исключение. Практически невозможно сложить красивую картинку из пазла на 100 или даже 1000 элементов, если упустить часть деталей.
Поэтому остается только сосредоточиться, сесть за компьютер, поставить возле себя чашку ароматного кофе или чая, открывать чек-лист, кропотливо и внимательно анализировать проект по каждому из пунктов. В результате Вы получите полноценный труд в виде технического задания, которое, с большой вероятностью, Вам самим понравится и после внедрения обеспечит эффективное дальнейшее SEO-продвижение.
Но, несмотря на важность всех мелочей и нюансов, я подготовил материал, в котором выделю 5 моментов критической важности, то, без чего достигнуть крепких ТОПов и заполучить целевой трафик невозможно, с кратким комментарием по их решению. Плюс все будет лаконично и конструктивно, ведь вычитать «простынь» под силу не каждому :)
Наших 5 железных факторов
1. Семантика&Структура
Моментом №1 в SEO анализе и оптимизации является тот, насколько структура сайта позволяет его продвигать. Довольно часто возникает такая ситуация, что клиент хочет или требует оптимизацию сайта под семантику, к которой сайт совершенно не готов структурно. На сайте может не быть нужной вложенности, категорий и подкатегорий, страниц отзывов и прайсов, без которых эффективной оптимизации под интересную для клиента семантику не получится.
Поэтому, крайне важно параллельно выбирать и анализировать семантику, а также давать рекомендации и правки по структуре сайта. Семантика + структура - очень серьезная связка. Лучше согласовать и внедрить все моменты на берегу, чем когда Вы уже выйдете в открытое плаванье и придется грести веслами обратно. Но также важно помнить, что не любая семантика, которую предлагает или на которой настаивает клиент является правильной. В силу незнания он может быть убежден в одном, но в реальности дела могут обстоять иначе. Нивелируйте это своим погружением в бизнес и опытом.
2. Настройка карты сайта, ЧПУ и хлебных крошек.
Если на предыдущем этапе все ОК, двигаемся дальше. Думаю, каждому из нас хоть раз приходилось заблудиться на улице. В этом случае так хочется у первого встречного прохожого здесь и сейчас получить толковую консультацию, как попасть на улицу, которую мы ищем. А если мы еще и торопимся на жизненно важную встречу, то градус ситуации накален вдвойне. Шучу)
К чему все это? Правильная навигация важна и для поисковых роботов. Он не будет тратить время на то, чтобы сканировать страницы с непонятным назначением, уровнем вложенности и неизвестной глубины. Ему необходимо видеть эту структуру и навигацию. Поэтому на сайте обязательно должны быть настроены:
Человекопонятные url-адреса ЧПУ
Все url-адреса на сайте должны быть приведены к ЧПУ-виду и иметь вид http://url/. Кириллица должна трансформироваться в латиницу. В качестве разделителя слов в ЧПУ следует использовать дефис "-". Также будет неоспоримым плюсом, если в url-адресах будет соблюдаться полная вложенность, т.е. http://url/>/.
Пример не ЧПУ адреса может выглядеть так: site.domain/index.php?id=75. Примером ЧПУ адреса для этой же страницы может быть site.domain/itvdn.
После настройки ЧПУ следует также сделать 301 редирект с не-ЧПУ урлов на ЧПУ. В нашем случае это 301 редирект с site.domain/index.php?id=75 на site.domain/itvdn.
Настройка ЧПУшек и соответствующих редиректов, как правило, решается подключением стандартных плагинов. Если речь идет о самописной системе, скорее всего нужно будет «допиливать» соответствующий функционал.
Реализация «хлебных крошек» Breadcrumbs
Под «хлебными крошками» подразумевается навигационная цепочка, которая отражает вложенность структуры и чаще всего располагается над или под основным текстовым заголовком страницы.
Реализация Breadcrumbs полезна не только для того, чтобы показать поисковику глубину структуры сайта, но и с точки зрения юзабилити. Посетителю будет всегда удобно выйти на уровень или два уровня выше, допустим в каталог, если со страницей товара он полностью ознакомился, но хочет посмотреть что-то еще.
Карта сайта sitemap.xml
Как правило, данные карты генерируются стандартными плагинами в зависимости от того, на какой CMS сделан сайт. Либо есть универсальные решения, например, специальная CMS для генерации карт, которая интегрируется в корень сайта и парсит всю его структуру, в результате чего и генерируется карта сайта. Адрес, по которому должна быть доступна карта, желательно делать site.domain/sitemap.xml. Но и это еще не все. Необходимо после генерации карты скормить ее поисковому роботу в GWT в разделе «Файлы Sitemap».
Если с содержанием карты будет что-то не в порядке, Вы увидите соответствующие предупреждения об этом, которые потребуется исправить. Хочу еще подчеркнуть, что генерация карты сайта происходит в самом конце внедрения ТЗ оп оптимизации, когда устранены дубли, настроены правильные ЧПУ и т.д.
3. Диагностика и устранение дублей.
Дубли – это откровенное зло. Было бы Вам приятно, чтобы кто-то копировал Ваше поведение, одевался также, носил идентичную стрижку? Думаю, что вряд ли. И поисковые роботы в этом молодцы. Они такое рубят, занижают рейтинг целевых страниц и сайта в целом, если в его содержимом содержатся дубли. Каким образом их диагностировать? Для этого есть несколько методов. Самый простой - это воспользоваться данными по повторяющимся метатегам в разделе «Оптимизация HTML». Если дубли присутствуют, Вы увидите данные в таком виде:
Диагностировать дубли можно и с помощью программы NetpeakSpider. Такой вариант даже лучше в том плане, что он сканирует актуальную структуру сайта, а страницы в GWT сканируются периодически и информация может быть не первой свежести на момент, когда Вы ищите дубли.
Дальше сам собой напрашивается вопрос о том, как нам избавиться от них. Если дубль полный, т.е является 100% клоном страницы, которую дублирует, стоит проставить 301 редирект с дубля на основную страницу и отправить данный дубль на принудительную переиндексацию в разделе «Просмотреть как Googlebot».
Существуют и другие методы борьбы с полными дубликатами, например, закрытие их в robots.txt и принудительное удаление через GWT. Но 301 редиректы считаются наиболее эффективным и правильным методом.
В случае частичных дублей, например, когда дублируется только
и/или
и/или заголовки
необходимо переписывать метатеги на дублях вручную, если их много, либо формировать и внедрять шаблоны метатегов, которые в результате генерации будут уникальными для каждой страницы. Пример шаблона автогенерации метатегов может выглядеть, например, так:
После активной борьбы по искоренению дублей Вы в идеале сорвете джек-пот в таком виде:
Резюмируя данный пункт, предлагаю раз и навсегда сказать «Нет!» дублям, вовремя проверять их и давать отпор! Едем дальше…
4. Борьба с аффилиатами
Под аффилиатами подразумевается другой сайт клиента с такими же контактными данными, названием компании, структурой и тематикой. Поисковые системы “за естественную конкуренцию” и ведут борьбу с монополизацией рынка. Поэтому, склеивают аффилиаты, накладывая фильтры и занижая рейтинг сразу всех сайтов.
По статистике 2 из 3 клиентов приходят к нам с аффилиатами. В их качестве зачастую выступают не самостоятельные сайты на отдельных CMS и доменах, а площадки, сгенерированные на платформах типа Prom.ua или Allbiz.
Это плохая практика и что в таком случае требуется делать? Алгоритм простой:
Аргументируем клиенту всю ситуацию, запрашиваем доступы к аффилиатам, проверяем их.
Добавляем каждый аффилиат в Google Webmaster Tools.
Настраиваем 301 редиректы со всех страниц аффилиатов на главную страницу основного сайта.
Отправляем на принудительную переиндексацию аффилиаты.
Если нет возможности проставить 301 редирект, нужно воспользоваться опцией в GWT в разделе «Удалить URL-адреса».
Если внутри платформы нет возможности добавить сайт в панель вебмастеров (а такое случается часто), нужно просто согласовывать полное удаление сайта-аффилиата и ждать, когда он выпадет из индекса.
Такой простой алгоритм действий позволил нам вывести не один сайт из-под фильтра. Вот один из кейсов нашей компании, где мы непосредственно применяли данную методику и вытащили сайт с самого дна поиска на первые позиции.
Также бытует мнение, что достаточно изменить название компании, контактную информацию - и ситуация может измениться. Этот метод не работает. Не тратьте даже время на покупку новых телефонов и не ломайте голову, как бы себя по-новому еще назвать.
5. On-Page оптимизация
Подразумевает заточку и оптимизацию конкретных целевых страниц под семантическое ядро. Здесь важны следующие моменты:
Написание и размещение оптимизированных метатегов.
Подготовка и размещение полезного структурированного качественного текстового контента, при этом оптимизированного под нужные поисковые запросы.
Помимо контента текстового следует использовать качественные (желательно “не тяжелые” по объему памяти) изображения на всю ширину страницы. Это еще в тренде. Не помешают также тематические видеоролики, которые точно повлияют на поведенческие факторы ПФ (снизят показатели отказов и увеличат время нахождения пользователя на странице).
И многие другие интересные вещи, которые Вы узнаете дальше.
На десерт
Как я и обещал в начале данной статьи, Вас ожидает сюрприз. Под этой статьей находится pdf-файл «Полный чек-лист seo-оптимизатора от Abweb».
Запомните, что только титаническая работа позволит получить что-то стоящее не только в сфере SEO. Жду Ваших комментариев, до следующих публикаций!
Полный чек-лист seo-оптимизатора от Abweb
Процедуры и тайминг в отделе SEO
Автор: Андрей Афанасьев
Введение
Всем привет! У меня давно созрела навязчивая мысль написать о том, какой является структура работы в техническом отделе SEO. “Почему именно такая тематика?” - спросите Вы. Это наболевшее. Иногда клиенты, да и просто люди, которые не занимаются всерьез данным продуктом, смотрят на весь процесс со стороны и думают: “Да это же просто дело. Взял проектик, денек-два оптимизировал сайт, ссылочек подкупил, всего делов. Может мне и самому SEO заняться?” Забавляет и интернет-пространство, например, рекламой с лозунгами наподобие: “Хватит платить сеошникам. Продвинь свой сайт самостоятельно!”. Это не может не веселить, если, конечно, не учитывать, что часть пользователей все-таки ведутся на подобные вещи.
Ну а если всерьез, то я скажу банальную вещь, что любая стоящая работа требует не менее качественного подхода. Любое интернет-агентство маленького, среднего или большого размаха разрабатывает и выстраивает свой процесс отработки клиентских проектов. В данной статье мы рассмотрим только работу технического отдела, потому что существует еще и аккаунтинг, и топ-менеджмент, которые тоже важны во взаимодействии компании и клиента. Но там “своя кухня” и она несколько отличается от технической.
Идем дальше…
Как известно, для того, чтобы построить качественный и надежный дом, нужно начать с фундамента. Так вот, в отделе SEO таковым является регламент процедур и тайминга. Это путеводитель как для руководителя отдела, так и для остальных членов команды. Зачем он нужен?
Отвечаю. У каждой компании в отработке находится много текущих + еженедельный поток новых клиентов, которые требуют в разы больше внимания, чем текущие. Когда я приведу пример технологии Abweb, Вы поймете критическую важность этого регламента. Если одновременно ведется работа по десяткам проектов, просто физически невозможно держать все в голове. Необходимо иметь универсальный план действий, который разбит на множество подзадач и переносить его в проекцию каждого проекта.
Ну, теперь конкретно о процессах
Для того, чтобы всю информацию было проще воспринять, я четко структурирую все процессы в виде двух таблиц. Как правило, процесс продвижения можно условно поделить на 2 глобальных этапа: внутренняя и внешняя оптимизация. Поэтому и процедуры для них разные.
Внутренняя оптимизация (1-й месяц)
Процедура
Старт выполнения
Тайминг
Проверка доступов от клиента (админка, FTP, хостинг)
1-й день работ
5 рабочих дней
Создание папки проекта и файла проекта в CRM с семантикой и основными доступами
1-й день работ
Анализ проекта, составление технического задания по внутренней оптимизации для программиста и техническое задание для копирайтера
2-й день работ
Отправка сформированных технических заданий аккаунт-менеджеру, который ведет проект.
В тот же день, когда составлено ТЗ, но не позднее 5-ого рабочего дня со старта проекта
Внедрение правок на тестовом домене.
В день, когда аккаунт-менеджер дал сигнал, что ТЗ на оптимизацию утверждено клиентом.
5 рабочих дней (4 дня реализация + 1 день на исправление багов по программной части)
Написание текстов для целевых страниц.
В день, когда аккаунт-менеджер дал сигнал, что ТЗ на тексты утверждено клиентом.
Отправка выполненного ТЗ по оптимизации на тестовом домене аккаунт-менеджеру.
В день, когда ТЗ было полностью внедрено и проверено.
1 рабочий день
Отправка написанных текстов аккаунт-менеджеру.
В день, когда тексты были полностью написаны и проверены.
Перенос выполненных правок на основной домен.
В день, когда аккаунт-менеджер дал сигнал, что ТЗ на тестовом утверждено клиентом.
2 рабочих дня
Размещение текстов.
В день, когда аккаунт-менеджер дал сигнал, что клиент утвердил тексты.
3 рабочих дня
Тестирование основной функциональности сайта после внесенных правок (форм заказа, авторизация, регистрация, добавление контента и его сохранение и т.д.) + исправление багов, если они есть
В день, когда все правки по внутренней оптимизации были перенесены на основной домен.
2 рабочих дня
Отправка сайта и целевых страниц на принудительную переиндексацию поисковыми системами для скорейшего индексирования ПС
В день, когда все правки по внутренней оптимизации были перенесены на основной домен + протестирован основной функционал
1 рабочий день
Добавление сайта в систему мониторинга для отслеживания позиций.
Когда все внедрено, отправлено на переиндексацию.
Итого примерно
19 рабочих дней
Ситуация выглядит таким образом, что за 16 рабочих дней (условно 3 рабочих недели) вся оптимизация должна быть внесена на основной версии сайта. 1 рабочая неделя отводится на тестирование выполненных правок, переиндексацию сайта, мониторинг динамики по позициям и составления отчета по всей проделанной работе.
Обращаю внимание, что тут предлагается такой подход, в котором сначала все внедряется на тестовой копии (которую обязательно нужно закрыть от индексации), демонстрируется и согласовывается с клиентом и, если все OK, переносится на основной домен. Я склонен считать, что это процесс затратный по времени, но зато безопасный!
Переходим ко второму и последующим месяцам.
Второй и дальнейшие месяцы плюс-минус похожи в плане выполняемых процессов.
Внешняя оптимизация (2-й и последующие месяцы)
Процедура
Старт выполнения
Тайминг
Планирование и составление ссылочной стратегии в виде ТЗ со списком закупаемых анкоров.
После получения оплаты
3 рабочих дня
Регистрация аккаунтов для закупки ссылок по проекту
1 этап закупки ссылок
На 4-й рабочий день
2 рабочих дня
Пополнение ссылочного аккаунта для 1 этапа
Плановая проверка сайта на предмет внутренней оптимизации/составление ТЗ по дооптимизации/отправка аккаунт-менеджеру на утверждение
12-й рабочий день
2 рабочих дня
Внедрение правок по дооптимизации на основании предыдущего пункта
В день, когда аккаунт-менеджер дал сигнал, что ТЗ на дооптимизацию утверждено клиентом.
4 рабочих дня
Пополнение ссылочного аккаунта для 2 этапа
14-й рабочий день
2 рабочих дня
2 этап закупки ссылок
Модерация ссылочных бирж
1 раз в 2 рабочих дня
11 рабочих дней
Наполнение ТЗ на ссылки списком доноров, откуда куплены ссылки
За день до составления и отправления отчета аккаунт-менеджером.
1 рабочий день
Итого примерно
22 рабочих дня
Выше приведена таблица со всеми процедурами и ориентировочными дедлайнами по каждому из них.
Хочу сделать акцент на том, что весь этот грандиозный план действий должен быть ориентиром, но всегда бывают исключения. Сроки реализации задач часто зависят от сложности и объема работ по проекту, оперативности клиента по согласованиям технических заданий, текстов и внесенных правок. Могут также вклиниваться и форс-мажорные задачи, которых мы, как правило, не ожидаем. К таким нюансам нужно быть морально готовым и все равно максимально выстроить процессы под нужные дедлайны.
Достаточно ли этого?
Буду честен. Конечно, нет. Недостаточно лишь прописать процедуры. Чтобы все было “в ажуре”, Вам и нам нужны:
Квалифицированные и перспективные ребята, которые будут закрывать все вопросы и задачи, которые расписаны выше (SEO-специалисты, копирайтеры, программисты и т.д.);
Календарные планы по процессам. Например, календарный план по закупке ссылочной массы на каждый месяц, который позволит не запутаться в большом потоке, когда что закупать;
Правильная постановка задач друг другу в худшем случае с помощью блокнота, а в лучшем - CRM-систем или других программ для фиксирования задач и планирования;
Высокая степень самоорганизованности и четко выстроенный тайм-менеджмент у каждого сотрудника;
Регулярное проведение планерок.
Я с удовольствием поделился с Вами прототипом своего видения по выстраиванию процессов в отделе производства SEO. Буду рад услышать замечания и положительные отзывы. На сегодня пока все;)
ТОП ошибок S'ales-менеджеров
Автор: Андрей Афанасьев
Введение
Приходилось ли Вам, работая в интернет-агенстве или веб-студии, сталкиваться с ситуациями, когда у Вас возникали разногласия с S’ales-менеджерами (менеджерами по продажам услуг компании)? Лично у меня они возникают чуть ли не ежедневно. Вроде бы и цели у нас общие – выстраивать мощный бизнес и зарабатывать хорошие деньги. Но технари и менеджеры по продажам , оказывается, настолько разные по своему мышлению, и идем мы к этим глобальным целям разными дорогами. В данной статье я хочу разобрать психотип технического специалиста и продажника. Исходя из этого мы сможем понять:
Почему возникают спорные ситуации между отделом продаж и отделами по производству;
Какие стандартные “косяки” допускают менеджеры по продажам, которые в дальнейшем существенно вредят производственникам;
Как попытаться избавиться от этих ошибок раз и навсегда.
Основные особенности психотипа технаря
Техническими специалистами в такой структуре, как веб-студия, являются SEO-специалисты, PPC-специалисты, программисты, маркетологи, аккаунт-менеджеры, менеджеры проектов, руководители отделов и другие позиции, которые в этом перечне я случайно мог пропустить. Основная цель технаря – максимально качественно закрывать вопросы разработки стратегии и реализации работ для достижения максимального результата, будь то контекстная реклама, поисковое продвижение или разработка сайтов.
Мышление и построение работы данных категорий сотрудников построено преимущественно на:
Систематичности;
Педантичности;
Четкой последовательности действий, которые формируются на составлении четких дедлайнов (сроков) по каждой задаче и процессу;
Тайм-менеджменте (детальном планировании всего рабочего времени);
Отсутствии какого-либо хаоса и утверждение всех нюансов с заказчиком.
По моему мнению, это идеальная схема построения рабочего процесса технического специалиста, который сможет четко и слаженно, как часовой механизм, решать свои задачи в рамках той компании, в которой работаю сейчас я. С большой вероятностью, у других компаний и фирм данный секрет успеха отличается от того, что приведен выше. Рассмотрим теперь особенность настроев S’ales-менеджеров.
Настрои сейлзов
Как бы гениально это не прозвучало, но основная задача продажника – много продавать. Продавец должен быть стрессоустойчивым, уметь подать продукты компании в такой упаковке, чтобы покупатель, не раздумывая, хотел стать клиентом компании. Исходя из этого, менеджеры по продажам пользуются следующими векторами в своей работе:
Нагенерировать как можно больше лидов (людей, которые проявили хотя бы минимальный интерес к продукту) путем обработки, например, входящих обращений или холодных звонков;
Постоянно контактировать с лидами до момента, пока клиент все-таки не подпишет договор и не заплатит деньги;
Назначить как можно больше встреч, где убедить клиента в целесообразности и необходимости услуг проще, чем по телефону;
Выполнить план продаж путем заключения как можно большего количества договоров.
Такие настроения оправданы, потому что зачастую мотивация S’ales-менеджера состоит из небольшой ставки + хорошего процента от суммы бюджетов подписанных договоров. Поэтому основной кусок пирога заложен именно в этой процентной части.
А теперь про типичные «косяки» продажников
Настоящий менеджер по продажам – это охотник за процентами. На этом я уже поставил акцент в предыдущем пункте. Когда я наблюдаю за своими коллегами-сейлзами, порой у меня возникает ощущение, что они готовы на все ради продажи. Извините, я без критики и осуждения. Просто такое рвение доставляет нам неприятности и проблемы следующего характера:
Продажа ради продажи. Иногда к нам на стол попадает такой проект, с которым ты просто не знаешь, что делать, либо который со старта обречен на провал. Проходит месяц-два, и клиент отказывается от услуги, потому что, к примеру, SEO на первых порах не тот тип рекламы, который нужен проекту.
Несогласованный или весьма заниженный бюджет на проект. Бывают такие ситуации, что ко мне подходят и говорят что-то типа: “Клиент очень «горячий». Можем подписать прямо сейчас, если ты дашь добро. У него бюджет 3500 грн., из которых на ссылки 1000 грн.”. И это при среднем чеке компании, например, в 6000 грн. и очень конкурентной тематике проекта типа котлов или окон. Увы, с таким бюджетом нет смысла заходить на рынок. Да и коммерческий интерес компании-исполнителя невелик.
Не доходит ключевая информация. Для лучшего понимания проблематики смоделирую ситуацию. Например, у нового клиента компании есть два сайта A и B одной тематики. Сайт A клиент хочет продвигать, а сайт B – старый, который он трогать не хочет. Сайт B имеет уже какую-то видимость и позиции, но является аффилиатом по отношению к A, поэтому отдел SEO предлагает клиенту склеить 301 редиректом непродвигаемый сайт с продвигаемым. Когда поступает такое предложение, клиент возмущенно говорит, что сайт B уже продвигался ранее другой компанией и попал под текстовый фильтр Panda, и основная идея появления нового сайта A и его дальнейшей раскрутки связана именно с этим. И немаловажно то, что заказчик утверждает, что вся эта информация была донесена до менеджера, который подписывал договор. Чья недоработка и в чем она заключается, я думаю, понятно…
Обещание золотых гор. Ради подписанного договора сейлз на эмоциях может пообещать клиенту четкие сроки и даже гарантии на вывод в ТОП. Это большая ошибка, которую потом придется разгребать аккаунт-менеджерам. Клиента нужно обязательно ориентировать на какие-то примерные сроки, но давать 100% гарантии на вывод в ТОП никак нельзя. Гарантировать можно только максимально внимательный и профессиональный подход и перечень работ, прописанных в договоре.
Включение в общий бюджет дополнительных доработок. Иногда те лиды, которые являются «горячими» или «теплыми» манипулируют до безумия заинтересованным в продаже менеджером. Это может заключаться в том, что заказчик обещает долгосрочное сотрудничество по SEO-оптимизации или продвижению, если в общий бюджет будут включены некоторые доработки по сайту. И очень часто заказчики почему-то считают, что все они весьма простые типа CTRL+C и CTRL+V и все готово. То ли от незнания специфики правок, то ли от желания докрутить клиента до продажи как можно быстрее, менеджеры часто обещают: ”Все просто. Все будет. Все сделаем!” И в 80% случаев эти доработки оказываются такого масштаба, что в рамках лояльности их не сделаешь и нужно оценивать отдельными сроками и бюджетами. На эти грабли менеджеры наступают регулярно и до тех пор, пока их не заставляют самостоятельно выруливать такие ситуации. Такое нужно мгновенно искоренять!
Это далеко не весь список казусов, которые происходят с менеджерам по продажам. Это золотая классика, которая, я уверен, повторяется у многих компаний и фирм данного сегмента бизнеса.
Как искоренить весь этот бардак?
Это намного проще, чем может показаться на первый взгляд. Для этого всего лишь нужно:
Ввести обязательную систему брифования со стандартным списком вопросов, которые еще на этапе переговоров помогут получить важную информацию для составления более-менее прозрачой картины о проекте будь-то SEO, контекст или веб;
Внедрить многоуровневое утверждение проектов через руководителей отдела продаж, отдела по производстенной части и аккаунтинга. Пока каждый руководитель детально не изучит условия договора и особенности заказа, ничего подписано быть не должно!
Использовать систему передачи проекта в письменном виде руководителям отделов со стоимостями по проектам. (Как, сколько, за что клиент заплатил и что должен в итоге получить);
Проведение периодических ликбезов и занятий, на которых менеджеры по продажам могут задавать вопросы техническим специалистам, тем самым повышать свой уровень до уверенной компетенции в продукции.
Ну, и как резюме…
Подытожить данный материал, над которым я работал не один вечер, хочется следующим обращением:
Уважаемые менеджеры по продажам.
Мы Вас очень ценим и уважаем. Вы - локомотив нашего бизнеса и от Вас зависит многое. Но, пожалуйста, согласовывайте с нами каждый нюанс и мелочи и прислушивайтесь к производственникам Вашей компании. Давайте жить дружно ;)
11 золотых истин правильного SEO
Автор: Андрей Афанасьев
Введение
Приветствую всех профессионалов или просто любителей великого дела – продвижения сайтов. Я постараюсь не затрагивать того, о чем пестрят страницы многих блогов и порталов и перетирать уже и так “до дыр” затертые темы относительно современного SEO. Работая руководителем интернет-рекламы в компании Abweb, мне с командой технических специалистов удалось накопить значительный бекграунд, который позволит поделиться прикольными “фишками” с Вами.
По заголовку данной статьи на меня может сразу политься поток критики по поводу понятия “правильное SEO”. Ребята, расслабтесь. Я расскажу об 11 золотых истинах правильного SEO относительно клиента и самому подходу к рабочемму процессу, которые мы составили с коллегами на основании реальных событий и опыта. Поэтому, данный материал будет полезен как для любителей своего дела, так и для клиентов, которые сотрудничают или собираются сотрудничать с интернет-агентством.
Прописные истины 2015. Какие они у нас?
1. Начнем с глобального. SEO – это специфическая услуга, в которой априори не может быть гарантий. Какого бы уровня не был специалист - Senior, Middle или Junior, никто из них одинаково не сможет дать 100% гарантии, но вероятность успешного результата все же есть. О гарантиях есть официальный материал Google, где указано, что гарантий даже стоит остерегаться!
Пусть этот аргумент станет палочкой-выручалочкой для тех продажников, от которых клиенты в договоре просят прописывать гарантии или возврат денег.
2. Поисковое продвижение не бывает быстрым. Да, иногда удается достигнуть очень быстрого результата, но на это влияет ряд факторов (трастовость ресурса, возраст, текущая история продвижения, качество самого сайта, ниша). Но, зачастую, результата нужно ждать 6 месяцев, а то и больше. Донесите до клиента, что Google - искусственный интеллект, который не доверяет первичным манипуляциям. И при дальнейшей модификации алгоритмов эти сроки аж никак не будут становиться меньше.
3. Качественно составленная семантика – первый шаг к успеху. Грамотно проработанное семантическое ядро - это действительно залог хорошего результата. Тут важны 2 аспекта: правильно подобрать запросы (не продвигать те ключи, которые не подходят тематике или типажу сайта) и корректно выбрать посадочные страницы под них. Например, часто возникает ситуация, когда основные запросы “садят” на страницу категории, хотя под них идеально подходит главная страница, которая продвигается значительно легче. Поэтому, это очень ответственный этап!
Чтобы сделать это максимально правильно, ориентируйтесь на тех, кто в ТОПе по продвигаемым ключевым словам, проводите анализ конкурентов. Просмотрите, какие целевые страницы они выбирают для продвижения и берите за базис их стратегию.
4. Внутренняя и внешняя оптимизация – неразрывные звенья. Невозможно получить ТОПы, выполнив лишь 1 фронт работ. Нужно хорошо оптимизировать сайт, устранить все ошибки, написать и разместить тексты, составить и разместить оптимизированные мета-теги, а потом выполнять работы по наращиванию ссылочной массы. Часто клиенты пытаются навязывать свое мнение, что один из этапов нужно пропустить (явно для того, чтобы сократить бюджет). Но это неверно. Только такой симбиоз даст что-то толковое!
5. Эра контента наступила. И это факт. Поисковые машины научились определять полезность контента. Есть сторонники OLDSCHOOL-теорий, что тексты никто не читает и главное, чтобы плотность ключевика там была процентов 5 не меньше. Это эра динозавров.
Нами лично было проведено много экспериментов, которые дали положительные результаты. Страница, которая содержит только текст с определенной оптимизацией под ключевики, ранжируется в поисковых системах хуже, чем структурированная и реально полезная страница. Такая страница должна содержать изображения, видеоматериалы, маркировочные списки и, желательно, конкретные предложения и прайсы. Все это выявляет большой интерес и важность для пользователя, попавшего на Вашу посадочную страницу. Пример удачной страницы одного из наших довольных клиентов:
Тут не просто голый текст, а реально важная информация для клиента, которая и делает контент полезным.
6. Вечные ссылки рулят. Вечные ссылки – это такие ссылки, которые оплачиваются разово, которые размещаются в теле постового материала или тематической статьи и “живут” на площадке столько, сколько существует сама площадка. Такие ссылки выглядят очень естественно (что несомненно нравится клиентам) и хорошо воспринимаются поисковыми системами.
И не нужно переживать, что ссылка будет мигать или будет снята за неуплату аренды, как это было в далеких 2000-ых. Единственный минус – дороговизна такой ссылки, но зато результат того стоит.
7. Стремительная положительная динамика от внутренней оптимизации видна в течении 1-ого месяца, а от продвижения ссылочным через 2-3.Часто клиенты спрашивают: “После внутренней оптимизации сайта произошел стремительный рост позиций, а после закупки ссылок мы топчемся на месте уже 2-й месяц?”. Очень типичная ситуация, на которую есть железный аргумент. Индексация сайта и индексация внешних ссылок на сайт – это два разных процесса, которые длятся по-разному. Для индексации ссылки и учета ее на ранжирование продвигаемого сайта поисковик проводит несколько апдейтов (2-3 месяца), а для учета всех изменений по сайту (текстов, метатегов) ему может быть достаточно 1 посещения Гугл-ботом (1-3 недели). Вот почему происходит такая разница в динамике по позициям на разных этапах, и успокойте заказчика.
8. Принудительная переиндексация целевых страниц помогает сдвинуть динамику. В инструменте Google Webmaster Tools есть инструмент, который позволяет отправлять страницы на целевую переиндексацию, чтобы привлечь быстроробота на страницу.
В основном, этот прием применяют для того, чтобы робот поисковика быстрее учел внесенные изменения в текст страницы или метатеги. Но, как показывает практика, если Вы долго не видите положительной динамики по позициям по продвигаемым страницам, можно попробовать отправить их через данный инструмент. Очень часто помогает сдвинуть позиции с мертвой точки. Невероятно, но факт!
9. Прозрачное SEO – это подушка безопасности. Это так, ибо зачастую данная услуга продается без гарантий. Максимальная прозрачность и этапность работ, открытый бюджет (Open Budget), а также промежуточная и ежемесячная отчетность поможет сгладить все конфликтные “углы”. Заказчик регулярно будет видеть перечень работ и какие манипуляции проводятся. Также, в конечном итоге даже при возникновении конфликтной ситуации можно попытаться вывернуть ее в то русло, что оплачена, в первую очередь, проведенная работа, а не ТОПовые позиции, которых ждет клиент и деньги не выброшены зря.
10. Для построения чего-то серьезного нужна не менее серьезная структура.Часто клиенты ошибочно считают, что весь цикл коммуникаций и все работы должно проводить то лицо, которое заключало с ними договор и продавало услугу, критикуя при этом структуру построения коммуникаций. Это ошибочно! (исключение - фриланс) Любая уважающая себя компания понимает и выстраивает свою иерархию по должностям и отделам, и в такой структуре один человек не может выполнять все процессы.
В интернет-агентствах зачастую структура состоит из sales менеджеров, аккаунт-менеджеров, технических специалистов и руководителей. И это правильно. Каждый должен выполнять определенный круг задач с максимальным качеством. Поэтому меня возмущают вакансии типа совмещающие в себе этакий микс с разных направлений и отраслей. Это важно доносить и клиентам.
11. Эксперименты - двигатель прогресса. Пускай и говорят, что работа сеошников во многом похожа на тыканье пальцем в небо. Зато, как приятно достигать неожиданного положительного результата при проведении очередного эксперимента. Признаюсь честно, мы точечно тестируем множество тактик и стратегий (те же арендные ссылки с Sape, ссылочные прогоны или переспам в метатегах), чтобы понимать четкую картину того, что пишут на большинстве блогов и можем ли мы с этой информацией согласиться или ее опровергнуть. Для нас эксперименты – это двигатели прогресса. Экспериментируйте и Вы!
Надеюсь, что этот дебютный материал будет полезным тем, кто только начинает свой путь в SEO или уже успешно по нему шагает. Ждем комментов ;)
Лучшие видео курсы, статьи и вебинары ITVDN в 2023 году
Автор: Влад Сверчков
Привет, друзья!
Бурный и насыщенный событиями 2023 год уже позади. Многие украиноязычные курсы, статьи и другие активности на ITVDN уже в фазе активного создания, а пока можно взглянуть на всё лучшее, что было опубликовано в прошлом году!
Предлагаем вашему вниманию ТОП-10 видео курсов ITVDN, вебинаров и статей за 2023 год.
Лучшие курсы
В 2023 году мы выпустили целых 30 новых видео курсов на украинском языке по таким направлениям, как FrontEnd, Python, Java, C#/.NET, PHP, Unity/Game разработка, мобильная разработка на Android и т. д.
ТОП-10 лучших новых видео курсов в 2023 (по количеству просмотров):
Python Базовый.
JavaScript Стартовый.
HTML5 & CSS3 Стартовый.
React Базовый.
Python Стартовый.
Docker.
Основы использования Git.
SQL Базовый.
TypeScript.
Основы администрирования Windows Server.
Лучшие вебинары
В 2023 году мы провели 73 вебинара, среди которых были обзоры IT-специальностей, советы по подготовке к собеседованию и получению первой работы в IT, а также практические вебинары по разным языкам программирования и технологиям.
ТОП-10 вебинаров 2023 года по количеству просмотров и “лайков”:
Kotlin – язык Full Stack разработчика. Автор – Григор Артём, инженер-исследователь.
Пишем веб-сайт на Django с помощью ChatGPT. Автор – Лазорик Михаил, Software developer.
Пишем игру Танки 2D на Pygame. Автор – Догонов Дмитрий, Python Developer.
Spring Cloud: интеграция с внешними веб-сервисами на примере Feign Client. Автор – Боговик Максим, консультант по Java стеку технологий.
Математика для программиста (Часть 1 и Часть 2). Автор – Ольга Задорожная, Software Engineer в Meta (Facebook).
Microsoft Azure – что это? Обзор возможностей и примеры использования. Автор – Олег Заревич, DevOps инженер.
Redux vs React Query. Что лучше выбрать для проекта? Автор – Тысячный Влад, Middle React.js / React Native Developer.
Разрабатываем блог на Django с нуля. Автор – Окаль Юрий, Senior BackEnd Developer в TanSoft Canada.
PyCharm с нуля. Лучшая IDE для Python разработки. Автор – Константин Зивенко, BackEnd Developer из Черногории (свитчер в 35+ лет), имеет 3 высших образования и опыт работы на руководящих должностях в крупных компаниях (максимальное количество подчиненных – около 10 000 человек).
Как стать разработчиком после 35 лет. Автор – Валевский Андрей, Java Software Engineer, ментор по Java.
Лучшие статьи
В 2023 году мы опубликовали 8 статей, вот пятерка, которая пользуется наибольшей популярностью среди читателей:
Что должен знать FrontEnd разработчик в 2023 году.
Какой язык программирования следует учить первым.
Как стать тестировщиком, QA, QC в 2023 году? Что нужно знать и уметь, чтобы получить работу в IT-компании?
ТОП-10 телеграм-каналов для поиска работы в IT.
Кто такой DevOps инженер? Обязанности, инструменты и ЗП.
Обогащайте себя знаниями и навыками на ITVDN! Пусть счастье будет вашим верным спутником в новом году!
150+ питань з .NET для Junior, Middle та Senior
Автор: Редакція ITVDN
Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 10 ноября 2020 года. Оригинальная версия на украинском языке доступна по ссылке.
На DOU размещено более 450 вакансий для .NET-разработчиков, что свидетельствует о популярности этой технологии. Редакция DOU собрала вопросы, которые .NET-разработчики задают своим коллегам на технических собеседованиях. Готовьтесь на здоровье :)
Вопросы для Junior
Общее
1. Назовите основные принципы ООП.
2. Что такое наследование, инкапсуляция, абстракция, полиморфизм: приведите примеры (желательно из собственного опыта). От какого класса неявно наследуются все классы в .NET? Разрешено ли множественное наследование в C#?
3. Что такое рекурсия?
4. Что такое лямбда-выражение?
5. Что такое параллельное программирование (многопоточность) и его назначение? Какие классы используются?
6. Что такое JSON?
7. Как вы понимаете REST?
8. Расскажите о SPA concept.
9. Какие GoF-паттерны использовали?
10. Какая разница между GET и POST HTTP методами?
11. Какую проблему решает Docker? Каковы его плюсы и минусы?
12. Чем принципиально отличаются unit-тесты от интеграционных тестов?
Обработка исключений
13. Что такое Exception?
14. Для чего служат try, catch, finally? В каком случае может не выполниться блок finally?
15. Что такое call stack? Какие ключевые слова вы знаете?
Платформа .NET
16. Что такое ASP.NET?
17. Какие существуют типы Action filters?
18. Что такое Web Service?
19. Что такое CLR?
20. Что такое сборщик мусора (Garbage Collector) на базовом уровне?
21. Что такое делегат?
22. Отличается ли Delegate от Action?
23. Что такое LINQ и для чего используется? Приведите несколько примеров применения LINQ.
24. Что такое пространство имен (namespace) и зачем это нужно?
Типы данных, коллекции и структуры данных
25. Какие типы данных вы знаете?
26. Какие примитивные типы знаете?
27. Что такое Nullable-тип?
28. Что такое тип значения, а что такое тип ссылки? Что из этого class, а что struct? В каком участке памяти они хранятся?
29. Чем отличаются value от reference type? String - это reference или value?
30.В чем отличие между string builder и string?
31. Что такое дженерики? Какие проблемы они решают?
32. Что такое boxing / unboxing?
33. Что такое Array, List, HashSet, Dictionary? Приведите примеры использования этих структур данных. Какая сложность операций с ними (поиск, вставка, удаление)?
34. Какие знаете коллекции?
35. Что делает оператор yield?
Классы, структуры и интерфейсы
36. Что такое класс?
37. Чем отличается класс от абстрактного класса?
38. Чем отличается абстрактный класс от интерфейса? Для чего нужны интерфейсы и какие задачи они выполняют?
39. Какие вы знаете модификаторы доступа?
40. В чем разница между обычным классом и статическим?
41. В чем разница переопределения метода между ключевыми словами new и override?
42. Какое различие между const и read only?
43. Разница между структурой и классом. Приведите примеры структур.
44. Может ли экземпляр структуры храниться в куче (heap)? Как это сделать?
Асинхронность
45. Что такое асинхронность и чем она отличается от многопоточности?
46. Какие есть ключевые слова для использования асинхронности в коде?
47. Что означают ключевые слова async / await?
Базы данных
48. Разница между реляционными и нереляционными базами, плюсы и минусы использования обоих вариантов.
49. Что такое индексы в RDBMS?
50. Какие типы JOIN существуют в SQL?
Тестирование
51. Для чего нужны unit-тесты?
52. Какие преимущества и недостатки использования unit-тестов?
53. Из каких трех логических блоков состоит unit-тест?
Вопросы для Middle
Общее
54. Вы набираете google.com в браузере. Расскажите как можно подробнее, что происходит в это время на HTTP-уровне?
55. Как работает HTTPS?
56. Как вы понимаете SOLID?
57. Какие протоколы сериализации вы знаете и где они применяются?
58. Что такое в вашем понимании чистая функция? Какие у нее преимущества?
59. Что такое dependency injection и зачем оно нужно?
60. Что такое cohesion и coupling (связанность и связность)?
61. Что такое IaaS, PaaS, SaaS и каковы различия между ними?
62. Какие способы отладки программы вы используете?
63. Какие знаете паттерны? Объясните суть перечисленных.
64. В чем суть паттерна Singleton? Почему его еще называют антипаттерном?
65. Для чего нужен паттерн Strategy?
66. Какие ключевые различия между распределенными системами и монолитными?
67. Какие паттерны проектирования распределенных систем вы знаете?
68. Какие есть принципы работы Message bus? Почему могут возникать дубликаты в очередях?
69. Какие принципы построения идемпотентных сервисов знаете?
70. Расскажите, как работают асинхронные методы? Чем асинхронность отличается от параллелизма?
Платформа .NET
71. Какие исключения нельзя остановить в блоке catch?
72. Какая разница между .NET Standard Class Library и .NET Core Class Library?
73. Объясните разницу между отложенным и немедленным исполнением в LINQ. Приведите примеры.
74. Для чего нужен метод ConfigureServices в Startup.cs?
75. Какая разница между services.AddTransient и services.AddScope в ASP.NET Core?
76. Что такое Kestrel?
77. Опишите ASP.NET MVC request pipeline.
78. Как в ASP.NET WebAPI настроить кэширование ответов на HTTP-запросы?
Управление памятью
79. Что такое куча и стек? Различия, принцип работы.
80. Как работает сборщик мусора?
81. Зачем нам зарезервированное слово using в C#, если в .NET есть автоматическое управление памятью? Как с этим связан disposable-паттерн и зачем такой сложный паттерн для managed и unmanaged ресурсов?
82. Какие особенности работы с Large Object Heap?
Типы данных, коллекции и структуры данных
83. Когда генерируется дженерик-класс конкретного типа - при выполнении программы или во время компиляции?
84. Что такое рефлексия?
85. Расскажите о коллекции LinkedList <T>. Чем она отличается от других коллекций?
86. Что такое индексатор?
87. Что такое immutable object? Какие преимущества дает использование immutable object? Предложите способ реализации его в .NET.
88. Когда использовать StringBuilder, а когда string? Как работает StringBuilder?
89. Что такое балансирование деревьев?
90. Что такое Key-value структуры?
100. Что такое хэш-функция и зачем нужны хэш-таблицы?
101. Какими свойствами должна обладать идеальная хеш-функция?
102. Что такое коллизии и как с ними бороться?
103. В чем заключается сложность CRUD-операций в Dictionary <K, V> в .NET?
104. Где хранятся массивы? Массивы примитивных типов?
105. В чем отличие между массивом (T [ ]) и списком (List <T>)?
106. В чем разница между IList <T> и IEnumerable <T>?
107. Зачем нужны Enumerable, Observable, AsyncEnumerable и какие модели получения данных они реализуют?
108. В чем разница между IEnumerable и IQueryable?
109. Что такое enum flags?
Базы данных
110. Расскажите о нормальных формах в СУБД.
111. Что такое индекс в БД?
112. Когда следует использовать индексы? Преимущества и недостатки.
113. Какие типы индексов существуют? Чем они отличаются?
114. Что такое ACID?
115. Какие вы знаете уровни изоляции транзакций?
116. Что такое план выполнения запроса (execution plan) в MS SQL?
117. Проблема: запрос долго выполняется. Какие есть методы ее диагностики и решения?
118. Как ORM (Entity Framework или Entity Framework Core) транслируют C# код в язык запросов базы данных? Что для этого используется?
Параллелизм
119. Для чего использовать Task.ConfigureAwait?
120. Например, есть веб-сервер, который по HTTP-запросу делает выборку из базы данных. Всего на сервере 16 тредов (threads). Каждый HTTP-request выполняет запрос в базу и ожидает результатов, в этом случае тред блокируется. Можно ли оптимизировать эту работу средствами .NET?
121. Зачем нужен ThreadPool? Опишите механику работы: как поток выделяется и возвращается обратно в ThreadPool.
Вопросы для Senior
Общее
122. Какие ещё практики, кроме ООП, использовали (AOP, FP и т. д.)?
123. Назовите три самые сложные проблемы, которые вам приходилось решать. Как вы это сделали, как пришли к этому решению?
124. Что такое слабосвязанный код? Чем он лучше сильносвязанного кода? Как бы вы достигали более слабой связности кода?
125. Использование статических классов повышает или понижает связность кода?
126. Как можно измерить performance кода? Влияет ли факт замеров на производительность?
127. Для чего используются и как работают multi-stage билды в Docker?
128. Как понять, что какая-то часть кода утилизирует много памяти или долго выполняется? Что может быть ботлнеком в разных случаях? Какие есть способы уменьшения памяти и трафика памяти?
129. Как бы вы реализовали cross-cutting concern (например, логирование, валидация, транзакции)?
130. Расскажите о Rest Maturity Model.
131. Что такое CPU и IO-bound задачи?
132. Что такое маршалинг?
133. Как работает async / await (подробно)? Почему нельзя использовать async void методы?
Платформа .NET
134. Как работает lock? Можно ли использовать структуры внутри выражения lock?
135. Что такое Expression Tree?
136. Как работает сборщик мусора (подробно)? Почему в GC три поколения, а не, скажем, пять, десять или два?
137. Как бы вы организовали трассировки Web API сервисов?
138. Как в .NET Core можно настроить хранение секретов на компьютерах разработчиков и на рабочих средах?
139. Как бы вы организовали процесс CI/CD .NET Core сервисов для их деплоймента в облачную инфраструктуру?
140. Как включить CORS в AspNetCore?
Типы данных, коллекции и структуры данных
141. Как реализованы дженерики?
142. Как создать собственный immutable-тип?
143. Как работает IEnumerable <T> (подробно)?
144. Какой алгоритм использует коллекция STACK?
145. Какие структуры данных вы реализовывали сами для платформы .NET? Расскажите, чем они отличались от стандартных реализаций.
146. Чем отличается интерфейс от абстрактного класса? В каких случаях вы использовали бы и то, и другое?
147. Почему в структуре нет конструктора по умолчанию?
Базы данных
148. Как БД сохраняет данные?
149. Какие типы БД вы знаете?
150. Как и когда БД лучше использовать?
151. Что такое денормализации?
152. Когда и какие уровни изоляции транзакций можно использовать?
153. Как в популярных СУБД реализованы принципы ACID (SQL Server, PostgreSQL и т. д.)?
154. Приходилось ли вам оптимизировать запрос в БД? Если да, то как?
155. Опишите, какие вы знаете потенциальные проблемы, связанные с параллельными запросами к БД.
156. Какую базу данных вы бы использовали для реализации distributed lock механизма? Расскажите детали реализации.
Микросервисы
157. Какую проблему решают микросервисы?
158. Какие есть способы коммуникации микросервисов?
159. Расскажите варианты реализации распределенных транзакций в микросервисах.
160. Что такое circuit breaker?
161. Каким образом вы будете налаживать систему, состоящую из множества микросервисов, если нужно отследить полный путь обработки запроса?
162. Что такое брокеры сообщений? Что такое at-least-once, at-most-once семантика? Есть ли какие-то брокеры, которые гарантируют exactly-once семантику?
163. Как должен работать код клиента брокера в зависимости от выбранной семантики?
164. Какие инструменты для работы с очередями вам известны (как в .NET, так и отдельные продукты), какой инструмент/продукт вы бы выбрали и почему?
MS Azure
165. Какие виды сервисов бывают в Service Fabric?
166. Какие особенности и ограничения Azure Table Storage?
167. Как бороться с проблемой холодного старта в Azure Functions?
168. В чем отличие очередей и топиков в Azure Service Bus?
Практические задания
Junior only
Опишите, как бы вы реализовали калькулятор. Если понадобится добавить поддержку для римской системы счисления, что будете делать?
Напишите программу, чтобы проверить, является ли число простым или нет.
Найдите наименьший элемент в массиве.
Упорядочите структуры папок в файловой системе.
Напишите программу, которая симулирует fizz-buzz.
Расскажите, что делает этот код, и предложите, как его улучшить.
а)
public bool IsArrayEmpty(string[] array)
{
if (array.Length > 0)
return false;
else
return true;
}
б)
protected string GetClass(object url)
{
string result = string.Empty;
if (SiteMap.CurrentNode != null && SiteMap.CurrentNode.Url == url.ToString())
result = "class=\"active\"";
return result;
}
Middle
Напишите программу для тиражирования последовательности Фибоначчи для заданного числа.
Спроектируйте базу данных врачей и пациентов в SQL. Создайте stored procedure или запрос в SQL, который вернет врачей, имеющих больше, чем N пациентов.
Проверьте коллекцию на наличие дубликатов.
Спроектируйте thread-safe класс Singleton в C#.
Надо записать некую сущность в базу данных и отправить событие в брокер сообщений. Как это сделать с минимальным риском потери данных?
Имеются три сервиса. Выполняется HTTP-запрос на первый. Первый должен записать данные во второй, а второй - в третий. Как гарантировать, что данные при такой сложной коммуникации не потеряются? Как предотвратить записи дубликатов данных?
Будет ли работать этот код и почему?
a)
SomeClass myClass = null;
myClass.SomeMethod();
б)
var table = GetTable();
table.Draw();
…
private SomeClass GetTable()
{
using(var table = new SomeClass())
{
table.ID = "www";
table.Width = "95%";
table.Controls.Add(tr);
return table;
}
}
Расскажите, что делает этот код, и предложите, как его улучшить:
а)
Shape shape = GetNextShape();
if(shape is Circle)
Console.WriteLine(((Circle)shape).Radius);
б)
public int Quantity
{
get
{
try
{
return int.Parse(TxtQuantity.Text);
}
catch (Exception)
{
return 0;
}
}
}
Что не так с кодом?
try
{
SomeMethod();
}
catch(Exception e)
{
Log(e.Message);
throw e;
}
Senior
Как бы вы спроектировали FTP-сервер? Web-сервер? Хостинг картинок с разделением прав доступа? Систему, состоящую из front- и back-офисов? Создайте клон любой популярной социальной сети (Instagram, Facebook и т.д.)
Допустим, есть сущность сделки (Bid). И в сделке есть список партнеров, с которыми эта сделка заключается. Сами сделки хранятся в сервисе сделок (bidding service), а партнеры - в своем сервисе (partners service). И когда показывается список сделок, на начальном скрине нужно отразить количество партнеров. Как бы вы спроектировали хранение и изображение этого счетчика?
Задача на знание LINQ: с исходной коллекции данных необходимо получить новую коллекцию по определенным требованиям (например, отсортированную, без дубликатов и т. д.).
Напишите программу, которая проверяет, является ли поле судоку 9×9 правильно заполненным.
Реализуйте свой Select, Where, SelectMany со всеми характеристиками LINQ (отложенное исполнение, одномоментная (eager) проверка входных данных).
С помощью LINQ напишите метод, который вернет такие элементы коллекции, которые делятся на N без остатка, отсортированные от наибольшего значения к наименьшему. Сигнатура метода: List <int> Filter (IEnumerable <int> collection, int n) ;.
Напишите функцию, которая вернет сумму всех четных элементов массива, который передается в функцию (JavaScript).
Выражаем благодарность за подготовку статьи Алексею Краевому, Максиму Шнуренку, Андрею Ткаченку, Владу Медведовскому, Сергею Селецкому, Андрею Губскому, Сергею Мащуренку, Александру Скриннику, Андрею Соболю, Богдану Нановскому, Святославу Аксёнчикову, Ивану Корнелюку, Михаилу Пивоварову, Алексею Дерке, Евгению Гуреву, Михаилу Меркулову, Юрию Воронину.
Полный гайд по AI-инструментам разработки ПО в 2026 году
Автор: Редакция ITVDN
Ещё два года назад мы обсуждали, сможет ли нейросеть написать простой код без ошибок. Сегодня, в апреле 2026 года, вопрос стоит иначе: «Какому из автономных AI-агентов доверить архитектуру микросервисов?». Разработка программного обеспечения окончательно трансформировалась из написания строк кода в управление интеллектуальными потоками.
Аналитика и «Парадокс доверия» 2026
Согласно последнему отчёту Stack Overflow Developer Survey 2025, мы наблюдаем интересный феномен — «парадокс доверия». Более 89% разработчиков интегрировали AI в свой ежедневный workflow, однако уровень полного доверия к сгенерированному коду без проверки составляет всего 24%.
Это не признак деградации инструментов. Напротив, задачи стали сложнее. Разработчики больше не используют нейросети как «продвинутый Google». Они используют их как партнёров в рамках Multiagent Systems (MAS) — систем, где разные AI-агенты (например, Claude Code и Devin) сотрудничают между собой для написания, тестирования и деплоя кода.
Gartner в своём прогнозе на 2026 год отмечает, что компании, внедрившие «агентную разработку», сократили Time-to-Market на 45%, но увеличили расходы на QA-автоматизацию, поскольку объём производимого кода вырос экспоненциально.
ТОП-7 AI-инструментов для разработки (версии апреля 2026)
Сегодня выбор инструмента зависит от вашего фокуса: скорость, полная автономия или глубокий терминальный контроль.
Инструмент
Актуальная версия
Ключевая особенность
Claude Code
v2.1 (Engine: Sonnet 4.6)
Лучший CLI-агент для рефакторинга и сложных логических задач
Cursor
v0.45.5 (Stable)
AI-native IDE с контекстным окном в 2 миллиона токенов
Devin
Enterprise v2.0
Первый полностью автономный AI-инженер для сложных workflow
GitHub Copilot
Workspace 2026 Edition
Бесшовная интеграция от Issue до Pull Request в облаке
Qodo (ex-Codium)
Qodo Gen 2.2
Фокус на Integrity: автоматическое создание тестов и ревью
Windsurf
Next Gen Build
Инновационный «агентный» редактор с глубоким пониманием flow
Tabnine
Pro Private Cloud
Лидер для корпораций, которым нужна 100% приватность кода
Глубокий обзор лидеров рынка
Claude Code (v2.1 / Sonnet 4.6) — Новый король терминала
Выпущенный Anthropic, этот инструмент стал главным открытием последнего года. В отличие от чат-ботов, Claude Code работает непосредственно в вашем терминале.
Почему он особенный: он не просто предлагает код — он действует. Claude Code может самостоятельно индексировать ваш проект, искать баги во всех файлах, запускать npm test, читать ошибки в консоли и исправлять их до тех пор, пока тесты не станут «зелёными».
Функция "Computer Use": благодаря обновлению апреля 2026 года, Claude может «видеть» ваш экран. Если вы разрабатываете фронтенд, он может открыть браузер, проверить верстку и внести правки в CSS в реальном времени.
Точность: благодаря модели Sonnet 4.6, Claude демонстрирует самый высокий уровень reasoning среди доступных моделей, делая на 40% меньше архитектурных ошибок, чем GPT-4o.
Cursor (v0.45.5) — Когнитивное пространство разработчика
Cursor перестал быть просто форком VS Code. Сегодня это среда, где AI знает о вашей кодовой базе всё.
Long Context: вы можете загрузить документацию на 500 страниц и весь монорепозиторий — он найдёт связи между модулями.
Composer Mode: позволяет генерировать целые фичи в нескольких файлах одним промптом.
Devin (Enterprise v2.0) — Ваш цифровой коллега
Devin остаётся самым «самостоятельным». Если Claude Code — это инструмент под рукой, то Devin — это разработчик, которому вы ставите задачу в Jira и идёте пить кофе. Он идеально подходит для рутинных, но объёмных задач: обновление фреймворков, миграции баз данных, написание документации.
Экспертное мнение: что говорят профи?
Андрей Карпаты (Andrej Karpathy), бывший директор AI в Tesla:
«В 2026 году английский язык стал основным языком программирования. Но не надейтесь, что это упростит жизнь. Теперь ваша задача — не писать синтаксис, а проектировать логику. Если вы не понимаете, как работает память или сетевой стек, AI заведёт архитектуру в тупик».
Аналитики Forrester отмечают, что основной сдвиг произошёл в системе контроля качества:
«Мы перешли от unit-тестов к AI-validation loops. Код, написанный Claude, теперь автоматически проверяется другой нейросетью от Qodo ещё до того, как его увидит человек».
Ключевые технологические тренды 2026
1. Local & Small Language Models (SLMs)
Из-за требований безопасности многие компании отказываются отправлять код в облако. Популярность набирают локальные модели (например, Llama 4.1 8B), работающие на рабочих станциях разработчиков.
2. Эра Agent-to-Agent Communication
Claude Code может вызывать другие сервисы. Например: «Сделай аудит безопасности контроллера» — и он сам обращается к Snyk, исправляет уязвимости и выдаёт результат.
3. Огромные контекстные окна
С окнами в 2M+ токенов AI запоминает не только код, но и обсуждения в Slack, документацию и серверные логи.
Как собрать свой AI-стек в 2026: советы профессионалов
Для максимальной эффективности эксперты рекомендуют комбинированный подход:
Для архитектуры и сложного логического проектирования: Используйте Claude 4.6 (Opus/Sonnet) через веб-интерфейс или Claude Code.
Для повседневного написания кода (Coding Flow): Cursor с подключенной моделью Sonnet 4.6.
Для автономных рутинных задач: Devin или GitHub Copilot Workspace.
Для обеспечения качества (QA): Qodo Gen для генерации тестов-сценариев.
Вывод
По состоянию на 2026 год AI не заменил программиста, но кардинально изменил его роль. Вы больше не «кодер», вы — System Architect и Verifier.
Инструменты вроде Claude Code дают сверхвозможности: реализовывать идеи со скоростью мысли. Но чем мощнее инструмент — тем выше ответственность.
Совет: регулярно обновляйте CLI-инструменты — модели обновляются каждые 2–3 месяца и значительно улучшают логику и безопасность.
Не поздно ли начинать обучение после 30 лет?
Автор: Редакция ITVDN
Когда речь заходит о смене профессии или обучении с нуля, многие задают себе вопрос: «А не поздно ли уже? Мне ведь 30, а у кого-то в этом возрасте уже 10 лет опыта».
Этот страх знаком очень многим. Но на самом деле он не имеет под собой серьёзных оснований.
Миф 1. После 30 уже слишком поздно
Как думают:
В 20 лет люди быстрее воспринимают новую информацию, легче адаптируются к изменениям и имеют больше времени «на ошибки». А после 30 будто бы нужно просто «держаться» за стабильность и не рисковать.
На самом деле:
30 — это даже лучший возраст для начала. У вас уже есть:
жизненный опыт и умение делать осознанный выбор;
чёткое понимание своих сильных и слабых сторон;
внутренняя мотивация, которая основана не на чужих ожиданиях, а на личных целях.
Большинство студентов после 30 говорят, что учатся эффективнее, чем в 20. Почему? Потому что они знают, зачем им нужны эти знания: чтобы получить новую работу, повысить зарплату, открыть собственный проект или просто почувствовать развитие.
В университетах часто шутят: в 18 лет студенты приходят «за компанию», а в 30+ — «за результатом». И это действительно работает в их пользу.
Миф 2. Работодатели не берут «новичков» в этом возрасте
Как думают:
Компании ищут молодых и «гибких». Если вам 30–35, вы уже «устарели» для первой работы в новой сфере.
На самом деле:
В современном ИТ-рынке главное — знания и умения. Паспортный возраст никто не спрашивает на собеседовании, а вот портфолио и практические навыки — да.
Более того, взрослые новички часто даже интереснее для работодателей, чем студенты без опыта. Почему? Потому что они приносят с собой бэкграунд:
менеджеры — умеют организовывать процессы и команду;
бухгалтеры — понимают цифры и ответственность;
маркетологи — умеют мыслить клиентоориентированно;
учителя — знают, как учиться и обучать других.
Эти навыки часто становятся мощным конкурентным преимуществом. Во многих командах сегодня работают специалисты, которые пришли в ИТ в 32, 35 и даже в 40+.
Есть даже отдельный термин — career switcher (тот, кто меняет карьеру). Для многих компаний это уже норма, а не исключение.
Миф 3. Учиться после 30 сложнее
Как думают:
Память уже «не та», концентрация падает, времени меньше — значит, учиться будет слишком тяжело.
На самом деле:
Да, во взрослом возрасте обучение выглядит иначе. Но современные форматы делают его максимально доступным:
гибкие графики — вы сами выбираете, когда учиться;
курсы в записи — можно остановить, пересмотреть ещё раз, повторить;
онлайн-занятия с преподавателем — поддержка и объяснения «вживую»;
практика вместо теории — вы видите результат сразу в своём коде или проекте.
Кроме того, взрослые студенты выигрывают благодаря своей дисциплине. Они умеют планировать время, совмещать обучение с работой или семьёй, лучше понимают приоритеты.
И главное: мотивация в 30+ гораздо сильнее. Если вы садитесь учиться после работы или в выходные, значит, вам это действительно нужно. Именно эта мотивация «тянет» дальше даже тогда, когда материал становится сложным.
Почему именно после 30 стоит задуматься о новой профессии?
Осознанный выбор. Вы уже знаете, что вам нравится, а что — нет. Это значит, что новое направление вы выберете осмысленно, а не «потому что так делают все».
Финансовая стабильность. В большинстве случаев у вас уже есть доход, и вы можете инвестировать в своё обучение.
Карьерные перспективы. Даже если вы начинаете с нуля, через 1–2 года вы можете получить первую работу в ИТ. А дальше всё зависит от вашей настойчивости.
Личностное развитие. Учёба держит мозг в тонусе, развивает новые навыки, помогает оставаться гибким в мире, который быстро меняется.
Реальные истории
В нашей практике много примеров студентов, которые начали обучение после 30 и сегодня успешно работают в ИТ.
Елена, 34 года, бухгалтер в прошлом. Прошла курсы FrontEnd и через 7 месяцев получила первую работу в аутсорсинговой компании.
Андрей, 37 лет, бывший учитель. Выучил Python и сегодня работает в стартапе, разрабатывает автоматизацию для образовательных процессов.
Сергей, 41 год, бывший военный. Благодаря курсам QA-тестирования сменил профессию и сейчас работает тестировщиком в международной компании.
Эти истории доказывают: возраст — это всего лишь цифра. Главное — желание и готовность учиться.
Почему стоит выбрать именно наши курсы?
Актуальные программы. Все курсы созданы практикующими специалистами и регулярно обновляются.
Гибкий формат. Вы можете выбирать, когда и где учиться.
Практика с первых уроков. Все студенты выполняют реальные задания и проекты, формирующие портфолио.
Карьерный сервис. Мы помогаем составить резюме, подготовиться к собеседованию и даже предлагаем стажировки.
Вывод
Начинать новый путь после 30 — это не поздно. Наоборот, это часто лучший момент: у вас есть мотивация, опыт и желание изменить жизнь.
Если вы давно думали об ИТ или другой сфере — именно сейчас время попробовать.
👉 Ваши 30, 35 и даже 45 могут стать отправной точкой для новой, успешной карьеры.
ТОП-10 лучших видео по Java от ITVDN
Автор: Влад Сверчков
Здравствуйте, друзья!
Сегодня вас ожидает подборка классных, наполненных полезным контентом видео от ITVDN по направлению Java. Топ насыщен как теоретическими видеоматериалами, которые помогают выстроить эффективное обучение, так и практическими вебинарами, ориентированными на прокачку навыков программирования при помощи джавы и сопутствующих технологий (фреймворк Spring, Elasticsearch). Итак, какие видео вошли в данный рейтинг?
Карта специальности Java разработчик
Автор — Бондаренко Андрей, Android Developer & Trainer, Samsung R&D Institute, Ukraine
Java — это популярный объектно-ориентированный язык программирования, на котором написаны программы для более 3-х миллиардов устройств по всей планете. Сфера его применения практически безгранична, а те, кто хорошо владеют Java, имеют большие возможности и всегда будут обеспечены интересными задачами и высокооплачиваемой работой.
На вебинаре вы получите ответы на все вопросы, связанные с обучением, получением опыта, расстановкой приоритетов в выборе технологий и учебных материалов, а также карьерой программиста Java-направления.
Программа встречи:
Кто такой Java разработчик?
Актуальность специальности и востребованность на IT-рынке.
Как стать Java разработчиком:
предварительные требования;
карта специальности;
обзор обязательных и факультативных технологий.
Где и как изучить язык программирования Java.
Как получить первый практический опыт.
Стажировка и первая работа - возможности и перспективы.
Вопросы и ответы.
Создание базового Spring Boot веб-сервиса на Java
Автор — Вячеслав Аксёнов, Java/Kotlin Software Engineer
Spring Boot — это самый популярный фреймворк для разработки бэкенд веб-приложений на Java. В вебинаре будет рассмотрено, как устроены приложения, созданные с использованием Spring Boot, на примере простейшего stateless веб-сервиса. Также автор рассмотрит http взаимодействия с использованием REST, построение расширяемой архитектуры бизнес-логики, взаимодействие с базами данных через самые популярные и простые приемы.
План вебинара:
Что такое Spring / Spring Boot и Dependency Injection.
Контекст и как его создавать.
@Service / @Component / @Repository / @Controller — что всё это такое и зачем нужно.
Создаем шаблон проекта Spring Boot.
Пишем веб-сервис с нуля.
Рассматриваем простейший и удобный способ работы с базой данных.
Проверяем работоспособность и отвечаем на вопросы.
Как стать Java разработчиком в 2021?
Автор — Максим Федосов, Java Developer
Из данного вебинара вы узнаете, как начать свой путь в качестве Java разработчика - от новичка без опыта в программировании до уровня специалиста, востребованного на рынке.
В вебинаре будут рассмотрены две стороны:
Что учить: автор поделится своим видением того, что нужно учить в первую очередь как базу, что нужно осваивать на этапе поиска первой работы, и что нужно доучивать, когда специалист уже работает (на примере Java Enterprise стека).
Как искать работу: со стороны построения карьеры речь пойдет о том, какие пути можно выбрать для построения карьеры, о рынке с точки зрения работодателя, курсов, соискателей. Какой проект лучше выбрать, как часто менять работу, как развивать свою карьеру.
Весь вебинар будет разделен на 2 части - до первой работы и во время работы. В результате у начинающих специалистов появится конкретный план действий для того, чтобы начать карьеру, а у работающих специалистов — понимание того, как расти дальше.
План вебинара:
Знакомство, немного о себе и своем пути в IT-сфере.
Что нужно учить начинающему Java разработчику.
Наработка практики программирования. Портфолио.
Подготовка к поиску работы и дальнейшая карьера.
Elasticsearch - пишем свой поисковик на Java
Автор — Фёдор Ярёменко, Senior Java Developer
На вебинаре будет рассмотрено, как на Java реализовать полнотекстовый поиск на объёмном массиве документов с минимальными задержками при помощи Elasticsearch.
План вебинара:
О полнотекстовом поиске и индексации
Обзор Elasticsearch
Настройка проекта
Добавление индексов
Поиск по индексу
Поиск по нескольким полям
Поиск в найденном
Агрегация результатов поиска
Поиск запросов с опечатками
Другие полезные опции поиска
Ранжирование результатов
Настройка форматирования результатов
Пагинация
Настройка индексов для русского и украинского языков
Асинхронные вызовы
Масштабирование с помощью кластера
Визуализация данных с помощью Kibana
Заключение
Создание 2D игры Танчики с Денди на Java с нуля
Автор — Бондаренко Андрей, Android Developer & Trainer, Samsung R&D Institute, Ukraine
Данное видео являет собой увлекательный онлайн тренинг по написанию графической игры “Танки”, который поможет легко и быстро познакомиться с практической стороной разработки на Java. Ноль теории — только практика.
Кому это будет полезно:
Новичкам. Отсутствие опыта в программировании не должно вас останавливать. Мы предоставляем вам шанс сделать свою первую программу на Java и получить опыт практического применения данного языка программирования в создании настоящей компьютерной игры.
Начинающим Java разработчикам без опыта. Вы сможете углубить и применить на практике свои знания языка Java под руководством тренера.
Чему вы научитесь:
Писать простые программы и подпрограммы с использованием языка Java
Работать с массивами данных
Использовать типы данных и классы Java
Применять все базовые навыки (переменные, условные конструкции, циклы, методы) на практике
Программа тренинга:
Создание карты поля боя.
Работа над передвижением танка.
Реализация стрельбы.
Обучение танка двигаться в указанный квадрант.
Добавление танка-противника.
Итог: танк проходит всё поле боя и чистит его.
Ответы на вопросы. Куда развиваться дальше?
Spring для начинающих. Обзор возможностей и преимуществ. Начало работы с Spring
Автор — Дзюба Роман, Java Developer
Spring — это один из самых популярных и универсальных фреймворков для создания веб-приложений для бизнеса. Он дает Java-разработчикам большую свободу в проектировании приложений, предоставляя средства решения проблем корпоративного масштаба. Spring имеет обширную документацию и достаточно прост в использовании.
Данное видео является первым видеоуроком из видео курса “Spring”, который знакомит с одноимённым фреймворком.
На самом курсе рассматриваются различные способы использования модулей Spring, написание REST приложений, использование MVC моделей и другие темы.
Прохождение курса по данному фреймворку будет полезно как тем, кто только познакомился с языком Java и ищет, что учить дальше, так и тем, кто уже имеет определенные знания и хочет освежить в памяти навыки использования SpringCore, SpringWeb, SpringSecurity.
Главные темы данного видео:
Ознакомление с базовыми принципами фреймворка.
Преимущества Spring, знакомство с основными принципами ООП и понятием POJO.
Области видимости Java Bean.
Создание игры Морской Бой на Java с нуля. (Часть 1, Часть 2)
Автор — Антон Кашников, Java Developer, тренер-консультант CyberBionic Systematics
Видео в формате онлайн тренинга по написанию консольной игры “Морской бой”. С его помощью вы быстро познакомитесь с Java, сразу же приступив к разработке. Как результат — вы опробуете джаву в деле, ощутите её мощь, а также получите на выходе собственноручно сделанную игру, которая после доработки может стать отличным проектом в вашем будущем резюме Java разработчика.
Программа тренинга:
Часть 1
Знакомство со средством разработки IntelliJ IDEA и языком программирования Java.
Разбивка проекта на подзадачи.
Работа с массивами при создании поля боя.
Создание первых объектов.
Использование объектов с массивами.
Часть 2
Тонкости работы с консолью при отображении игровых объектов.
Продумывание логики игры.
Создание геймплея.
Обработка исключений.
Разбор ошибок.
Подведение итогов.
Что нужно знать Java разработчику? ➤ Как выучить Java?
Автор — Дмитрий Саевский, Java Developer
На этом вебинаре вы узнаете, чем занимается джавист, какие типы разработки на Java наиболее востребованы. Также автор рассмотрит весь путь Java разработчика от момента выбора этой специальности до уровня Senior.
План вебинара:
Типы разработки на Java.
Какими умениями должен обладать Java разработчик.
Особенности Java. История версий Java.
С чего начать обучение и сколько нужно учиться?
Составление плана обучения.
Карьерный путь разработчика.
Рекомендуемые ссылки.
Рекомендуемая литература.
Подготовка к собеседованию на позицию Junior Java Developer
Автор — Виктория Силенко, Java разработчик desktop и web приложений.
Несмотря на дату выпуска данного вебинара, он до сих пор остается актуальным для тех, кто решил связать свою карьеру с Java разработкой и при этом стремится с успехом пройти собеседование на позицию Junior Java Developer.
На этом вебинаре вы узнаете, как правильно составлять резюме, какие популярные вопросы на собеседовании (+ ответы), темы при проверке уровня английского языка, как хорошо зарекомендовать себя в первые месяцы работы.
Создание многопоточного клиент-серверного приложения на Java
Автор — Евгений Волосатов, профессиональный программист, преподаватель языка Java в колледже, автор видео курсов по языкам C#, Java, PHP; имеет более 20 лет опыта в качестве ведущего программиста в различных фирмах, обладает внушительным преподавательским опытом; 6 лет опыта в проведении вебинаров и создания видео курсов
Евгений Волосатов — настоящий мэтр в царине алгоритмов и структур данных на C#, Java, PHP — в данном вебинаре демонстрирует, как необходимо создавать многопоточное клиент-серверное приложение на языке Java.
На этом вебинаре вас ожидает практика, затрагивающая сокеты и потоки. При помощи Java будет написано небольшое клиент-серверное приложение на сокетах. Для этого автор создаст две разные программы, которые запускаются на разных компьютерах, но при этом работают совместно, пересылая друг другу данные.
Для связи программ друг с другом будет создан универсальный класс Phone — он будет использоваться как на сервере, так и на клиенте в JAR файле. В конце вебинара автор добавит многопоточность в серверную часть, чтобы сервер мог обрабатывать несколько клиентов одновременно.
План вебинара:
Простейший сервер - Автоответчик.
Простейший клиент - Уметь читать.
Клиент-серверный диалог.
Универсальный сокет - Телефон.
Серверная многопоточность.
Для успешного усвоения материала необходимы базовые навыки работы с Java в среде IntelliJ IDEA.
Изучайте Java разработку на ITVDN!
100+ питань з Python для Junior, Middle та Senior
Автор: Редакція ITVDN
Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 30 сентября 2020 года. Оригинальная версия на украинском языке доступна по ссылке.
Редакция DOU пообщалась с разработчиками, которые проводят технические собеседования Python-специалистов для различных уровней, и собрала примерный список вопросов к кандидатам. Конечно, он не является исчерпывающим, однако содержит типичные вопросы.
Вопросы для Junior
От джуниоров требуют знать и уметь применять базовые структуры данных и модули, простейшие запросы к базам данных, знать простейшие команды системы контроля версий и тому подобное.
Общее по Computer Science и Web Development:
1. Что такое инженерия и процесс разработки в целом?
2. Какие знаете принципы программирования?
3. Чем отличаются процедурная и объектов-ориентированная парадигмы программирования?
4. Какие основные принципы ООП (наследование, инкапсуляция, полиморфизм)?
5. Что такое множественное наследование?
6. Какие есть шесть этапов разработки продукта в Software Development lifecycle и какая разница между Agile и Kanban?
7. Какие есть методы HTTP-запросов и какая между ними разница?
8. Как выглядят HTTP-request / response?
9. Что такое авторизация и как она работает?
10. Что такое cookies?
11. Что такое веб уязвимость?
12. Какие знаете классические базы данных?
13. Как читать спецификацию в конкретном языке (например, PEP8 в Python)?
14. Как происходит взаимодействие клиента и сервера?
15. Какие есть подходы к проектированию API?
16. Как использовать паттерны программирования?
17. Что такое Acceptance Testing и зачем его используют?
18. Что такое модульные и интеграционные тесты, API-тесты?
19. Как писать unit-тесты?
20. Какие есть best practices в написании автотестов?
21. Какие базовые команды системы контроля версий?
22. Как использовать Git?
23. В чем разница между хешированием и шифрованием?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах Python Базовый, Python Углублённый, Основы работы с Git.
Python:
24. Python - интерпретируемый язык или компилируемый?
25. Какие есть меняющиеся и постоянные типы данных?
26. Что такое область видимости переменных?
27. Что такое introspection?
28. Разница между is и ==?
29. Разница между __init __ () и __new __ ()?
30. В чем разница между потоками и процессами?
31. Какие есть виды импорта?
32. Что такое класс, итератор, генератор?
33. Что такое метакласс, переменная цикла?
34. В чем разница между итераторами и генераторами?
35. В чем разница между staticmethod и classmethod?
36. Как работают декораторы, контекстные менеджеры?
37. Как работают dict comprehension, list comprehension и set comprehension?
38. Можно ли использовать несколько декораторов для одной функции?
39. Можно ли создать декоратор из класса?
40. Какие есть основные популярные пакеты (requests, pytest, etc)?
41. Что такое lambda-функции?
42. Что означает *args, **kwargs и как они используются?
43. Что такое exceptions, <try-except>?
44. Что такое PEP (Python Enhancement Proposal), какие из них знаете (PEP 8, PEP 484)?
45. Напишите hello-world сервис, используя один из фреймворков.
46. Какие есть типы данных и какая разница между list и tuple, зачем они?
47. Как использовать встроенные коллекции (list, set, dictionary)?
48. В чем заключается сложность доступа к элементам dict?
49. Как создается объект в Python, для чего __new__, зачем __init__?
50. Что знаете из модуля collections, какими еще built-in модулями пользовались?
51. Что такое шаблонизатор и как в нем выполнять базовые операции (объединять участки шаблона, выводить дату, выводить данные с серверной стороны)?
52. Как Python работает с HTTP-сервером?
53. Что происходит, когда создается виртуальная среда?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах Python Стартовый (урок 2, урок 4-8), Python Базовый (урок 1, урок 6, урок 7, урок 9), Python Углублённый (урок 1, урок 4).
Базы данных:
54. Какие есть базовые методы работы с SQL- базой данных в Python?
55. Что такое SQL-транзакция?
56. Как сделать выборку из SQL-базы с простой агрегацией?
57. Как выглядит запрос, который выполняет JOIN между таблицами и к самим себе?
58. Как отправлять запросы в SQL-базу данных без ORM?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе SQL Базовый.
Алгоритмы:
59. Что такое алгоритмы (например, Big-O notation)?
60. Какие есть базовые алгоритмы сортировки?
61. Что такое Bubble Sort и как это работает?
62. Что такое линейная сложность сортировки?
Вопросы для Middle
Если джуниору все надо подсказывать и помогать, то мидл может самостоятельно взять что-то новое и быстро его изучить и понять. У него накоплено достаточно знаний и опыта, чтобы быстро овладевать новым. Он может прийти и обсудить с опытным разработчиком, проконсультироваться, но окончательных решений не принимает.
Обычно у мидлов спрашивают:
63. Ориентируетесь ли в *nix, можете ли написать скрипты/автоматизацию для себя и коллег?
64. Что такое многопоточность?
65. Что такое архитектура веб сервисов?
66. Как работает современное нагруженное веб приложение (нарисовать и обсудить примерную архитектуру, например, Twitter или Instagram)?
67. Что нужно для сайта / сервиса среднего размера (redis \ celery \ кэш \ логирование \ метрики)?
68. Как написать, задеплоить и поддерживать (микро) сервис?
69. Как масштабировать API?
70. Як проводить Code review?
71. Что такое абстрактная фабрика, как ее реализовать и зачем ее применяют?
72. Что такое цикломатическая сложность?
Python:
73. Async Python: как работает, зачем, что под капотом?
74. Сравнить асинхронные web-фреймворки.
75. Что такое модель памяти Python?
76. Что такое SQLAlchemy (Core и ORM частей) и какие есть альтернативы?
77. Принципы работы и механизм Garbage collection, reference counting?
78. Как работает thread locals?
79. Что такое _slots_?
80. Как передаются аргументы функций в Python (by value or reference)?
81. Что такое type annotation?
82. Для чего используют нижние подчеркивания в именах классов?
83. Статические анализаторы: Flake8, Pylint, Radon.
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Python Углублённый (урок 3).
Базы данных:
84. Разница между SQL и NoSQL?
85. Как оптимизировать SQL-запросы?
86. Какие есть уровни изоляции транзакций?
87. Какие есть виды индексов?
88. Точечные вопросы по выбору БД, движков БД?
89. Front-end: есть ли опыт работы с «современным» JS (Babel, Webpack, TS, ES)?
90. DevOps: работали ли с Docker-контейнерами, объяснить основные термины K8s (кластер, pod, node, deployment, service), что такое Kibana?
91. Алгоритмы: что такое временная сложность алгоритма (time complexity)?
92. Углубленные знания Linux: как зайти на внешний сервер, работать с пакетами, настроить среду и выполнять операции?
93. Специфично для Data Science: как работать с пакетами для обработки и визуализации данных (NumPy, Pandas и другие)?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе SQL Базовый.
Вопросы для Senior
На собеседованиях с Senior`ами обычно мало говорят о теоретической стороне технологии, больше обсуждают конкретный опыт разработчика. Поэтому формализованных вопросов здесь нет. Однако, примером могут быть:
94. Что такое @property?
95. Каким образом можно запустить код на Python параллельно?
96. Как работать с stdlib?
97. Какие задачи решали с помощью метаклассов?
98. Что такое дескрипторы?
99. Знания других языков, кроме Python (опыт).
100. Какие технологические особенности реализации распределенных систем?
101. Какие есть низкоуровневые особенности языков и фреймворков?
102. Способы и методы управления памятью.
Бонус. Практические задания
1. Спроектировать клон Instagram. Это сервис, который понятен практически любому кандидату, даже если у него нет аккаунта. На высоком уровне он очень прост: картинки, описания, комментарии. Поэтому что-то минимальное сможет описать и джуниор. Если кандидат претендует на высшие позиции, можно бесконечно копать вглубь, касаясь API, тротлинга запросов, защиты от фрода, построения фидов пользователя и тому подобное.
2. Дано рекурсивное определение чисел Фибоначчи, надо написать функцию, которая реализует это определение.
3. Есть база данных из трех таблиц — стандартная many-to-many схема. Нужно написать запрос, который объединяет три таблицы и возвращает определенный результат.
4. Даем ТЗ какого-то полезного микросервиса (сокращалка url-ов, поиск дубликатов картинок, поиск тегов в текстах) или функции (rate limiter). Просим кандидата рассказать, как бы он его реализовал. Это дает возможность узнать, что привык использовать специалист, насколько глубоко он знает и понимает различные технологии.
5. Написать какой-то несложный декоратор (выводит аргументы функции на экран или, например, измеряет сколько времени выполнялась функция).
6. Junior`у можно предложить реализовать задачу FizzBuzz test.
7. Для Middle+ я люблю давать несложные задачки на рекурсию. Например, есть вложенный список чисел и нужно что-то на нем посчитать (скажем, найти максимум). Также, можно предложить написать аналог deepcopy для конкретной структуры данных (tree, graph).
8. Для Senior - игра «спроектировать за 5 минут...». Это может быть Google, FB, Twitter, высоконагруженный интернет-магазин, сервис поиска, продажи и бронирования билетов, сайт новостей и тому подобное. Такая задача помогает понять, как кандидат решает проблемы, ход его мыслей, умеет ли он отделять главное от второстепенного, понять, какого он типа ( «в глубину» или «в ширину»).
9. Игра «у юзера что-то не работает». На примере спроектированной системы собеседователь придумывает ошибку с «дикими симптомами», которую очень сложно понять, воспроизвести. Но нужно быстро решить проблему.
10. Задание, которое демонстрирует знание и понимание list и dict comprehensions.
Looking at the below code, write down the final values of A0, A1, ...An.
A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
A1 = range(10)
A2 = sorted([i for i in A1 if i in A0])
A3 = sorted([A0[s] for s in A0])
A4 = [i for i in A1 if i in A3]
A5 = {i:i*i for i in A1}
A6 = [[i,i*i] for i in A1]
A7 = [i if i%2 else 0 for i in A1 if 2 < i < 8]
','.join(str(j**2) for j in range(10)) – what is this object ?
11. Задача, в которой есть три функции, в них выполняются базовые операции (сортировка, фильтрация, поднесение массива к квадрату). Нужно упорядочить эти три функции в порядке возрастания времени, которое уходит на их выполнение.
Place the following functions below in order of their efficiency. They all take in a list of numbers between 0 and 1. The list can be quite long. An example input list would be [random.random () for i in range (100000)]. How would you prove that your answer is correct? - profiling?
def f1 (lIn):
l1 = sorted (lIn)
l2 = [i for i in l1 if i <0.5]
return [i * i for i in l2]
def f2 (lIn):
l1 = [i for i in lIn if i <0.5]
l2 = sorted (l1)
return [i * i for i in l2]
def f3 (lIn):
l1 = [i * i for i in lIn]
l2 = sorted (l1)
return [i for i in l1 if i <(0.5 * 0.5)]
То есть, на входе все функции имеют одинаковые данные, на выходе выдают одинаковый результат. Но из-за того, что внутри операции выполняются в разном порядке, время выполнения будет отличаться. Здесь нужно разбираться в алгоритмах и понимать, что происходит с твоими данными в процессе. Эту задачу может решить Junior, а может не решить и Middle. Казалось бы, такая мелочь, но когда мы работаем с большим количеством данных, важно, чтобы код был оптимизирован и программа выполнялась максимально быстро.
12. Простые задачи на статистику или логику. Например, определить угол между стрелками часов, которые показывают 8:40.
За подготовку материала редакция DOU выражает благодарность Михаилу Кашкину (Founder в Okumy и курсов по Python), Руслану Скире (Python Developer в CodeIT LLC), Бориславу Ларину (Python Developer в Prom.ua), Владимиру Обризану (Director в Design and Test Lab), Виктору Свирскому (Senior Developer в DataArt), Николаю Зорину (CTO в Jiji, проект Genesis), Владимиру Селюху (Team Lead в Prom.ua), Сергею Галабурде (Software Engineer в N-iX), Алексею Чуприкову (Lead Python Engineer в EPAM), Ивану Лучку (TL Data Science Specialist в Boosta), Олегу Новикову, Владимиру Щербинину, Роману Могилатову (Technical Leader в SoftServe), Вадиму Рудю, Натальи Кушнир, Андрею Лейцюсю, Роману Луцю и другим.
Перевел на русский язык Владислав Сверчков