Задачи и тесты по программированию | proghub
2.41K subscribers
655 photos
16 videos
23 files
915 links
Публикуем задачи и вопросы для подготовки к собесу.

Сотрудничество: @cyberJohnny
Download Telegram
Лагающий proghub.ru, отчет об инциденте

Вчера, 3 декабря, примерно в 3 часа дня по МСК наш сайт начал сильно лагать у пользователей. Глянули логи, увидели резкий скачек графика cpu и за ним такое же резкое падение - обычный симптом краша приложения (благодаря pm2 наш сайт остался на плаву). Наших стандартных метрик от digitalocean оказалось совершенно недостаточно чтобы разобраться в причине. Тут возник вопрос:

Почти все хостинги/облака дают свои метрики с коробки, обычно это процессор, память, сеть. Много кому и этого хватает, но иногда возникают ситуации вроде нашей. Вопрос к знатокам, вы пользуетесь своим мониторингом или вам дефолтного хватает? Какими сервисами/стеками/утилитами пользуетесь?
Задачи и тесты по программированию | proghub
Список serverless технологий от разных провайдеров. Выбираем для своего проекта, это модно, стильно, молодежно 😉 #devops
Если вам интересно как развернуть свой проект в облаке то вот актуальный гайд по AWS и Google Cloud: https://gruntwork.io/guides

Каждое руководство описывает:
— ключевые концепции инфраструктуры;
— процесс развёртывания, настройки и управления инфраструктурой для использования в продакшене;

В будущем там же планируют добавить руководства по Azure.

#devops
Что будет выведено на экран в результате выполнения данного кода:

proghub.ru/q/7facf8

#proghub_tests
#proghub_csharp
Что будет выведено на экран в результате выполнения данного кода:
Anonymous Poll
10%
Ничего не будет выведено
25%
Something else
27%
MaxValue
11%
MinValue
27%
Будет сгенерировано OverflowExeption
This media is not supported in your browser
VIEW IN TELEGRAM
Анализатор топологии сети и протоколов в режиме реального времени:

https://github.com/skydive-project/skydive

#system
Вам нужно написать быстро мобильное приложение чтобы проверить идею, что выберете - нативные технологии (swift, java...) или кроссплатформенные (react-native...)?
This media is not supported in your browser
VIEW IN TELEGRAM
Lazydocker — пользовательский интерфейс для управления докером.

Просмотр состояния, логов, метрик; перезапуск, удаление, восстановление контейнеров и сервисов.

Репозиторий: https://github.com/jesseduffield/lazydocker

#devops #docker
Задачи и тесты по программированию | proghub
Вам нужно написать быстро мобильное приложение чтобы проверить идею, что выберете - нативные технологии (swift, java...) или кроссплатформенные (react-native...)?
Воспользовались гуглом, собрали инфу и сделали выводы: если у вас приложение чуть сложнее чем калькулятор или очередной подсчет расходов/доходов то нативный подход рулит.

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

Пробежимся по основным моментам для сравнения:

1. Производительность. Тут однозначный победитель нативные приложения, вообще производительность это один из самых больших минусов кроссплатформенности.
2. Новые фичи и доступ к ним. Самые новые фичи, прямой доступ к api платформы - это натив, кросс в этом плане ненамного, но отстает.
3. Стоимость разработки. Если у вам нужно несколько платформ поддерживать, то дешевле и проще нанять одно разработчика react-native чем по одному на каждую.
4. Скорость разработки. Понятно что где больше опыта там и скорость и качество быстрее. Представим что опыта у вас ноль, а приложение пилить надо. Натив будет не лучшим вариантом.

В заключении получается что если вам нужно на вчера - то кроссплатформенное решение ваш вариант, если время есть а деньги позволяют то натив. Интересный факт: приложение airbnb создано с помощью react-native, но после нескольких лет использования они отказались от него (https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a).
Скомпилируется ли данный фрагмент кода успешно?

proghub.ru/q/f44fe6 - верный ответ и объяснение тут

#proghub_tests
#proghub_csharp
Скомпилируется ли данный фрагмент кода успешно?
Anonymous Poll
60%
Да
40%
Нет
Тем временем в стим выходит игра-симулятор I Am Jesus Christ («Я Иисус Христос»). Надо будет путешествовать с апостолами, превращать воду в вино и бороться с Сатаной:

https://www.youtube.com/watch?v=N3XY1R7ydTA
This media is not supported in your browser
VIEW IN TELEGRAM
Если ваш сайт чуть сложнее чем лендинг, то этап прототипирования при разработке пропускать не стоит. Он необходим для определения главных и второстепенных элементов будущего сайта, а также задач, которые сайт или сервис будет решать.

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

https://habr.com/ru/post/467625

#web
Дан следующий фрагмент псевдокода.
Каким будет значение N в результате его выполнения?

proghub.ru/q/5aef7c - верный ответ и объяснение


#proghub_tests
#proghub_basics
Каким будет значение N в результате его выполнения?
Anonymous Poll
12%
0
66%
1
14%
10
7%
9
​​Статистика и ответы по трем последним вопросам:

Вопрос по С++ - 32% верных ответов из 783 голосов.

Правильный ответ: 9876543210
Обьяснение: Цикл будет продолжаться до тех пор пока n != 0.
Ссылка: https://proghub.ru/q/5bf414

Вопрос по С# - 25% верных ответов из 345 голосов.

Правильный ответ: будет сгенерировано OverflowExeption
Обьяснение: Тип Decimal не является примитивным для CLR, и для всех операций над данным типом нету готовых IL инструкций. Decimal содержит статические методы Add, Subtract, Multiply, Divide, а также перегруженные операторы +, -, *, /v и т.д., а как известно оператор checked/unchecked не указывает поведение методу вызваному внутри его блока.
Ссылка: https://proghub.ru/q/7facf8

Вопрос по С# - 25% верных ответов из 401 голоса.

Правильный ответ: нет
Обьяснение: Казалось бы все варианты учтены, но нужно чтобы был либо безусловный return в конце метода, либо во вложенном if ветка else. В прведенном коде получается, что не все ветки учтены (хотя они и учтены логически).
Ссылка: https://proghub.ru/q/f44fe6
Трело

Супер крутой инструмент для работы с тасками - это Trello. Только карточки, колонки и доски и больше ничего. Идеально для небольших комманд. Ничего лишнего. Удобно, просто и элегантно. Если вы ещё не пользуетесь трело то попробуйте. У меня все.