» » Тесты на знание Python, PHP, Golang и DevOps: разбор викторины AvitoQuiz на Highload

 

Тесты на знание Python, PHP, Golang и DevOps: разбор викторины AvitoQuiz на Highload

Автор: admin от 12-01-2018, 13:30, посмотрело: 23

Конференция Highload++ 2017 отгремела, и это было круто — как всегда. Мы пересматриваем доклады, вовсю пользуемся опытом, которым с нами поделились коллеги, и с удовольствием вспоминаем разные активности, которые проводились вне зоны докладов.



На нашем стенде, например, можно было пройти тест на знание одного из языков программирования (Python, Go, PHP) или тест для DevOps и получить красочную тематическую футболку. Сегодня хотим предложить вам ещё раз окунуться в атмосферу конференции и разобрать ответы на самые Highload-задачи из нашего теста. А может, вы сможете решить их, не заглядывая под спойлер?



Enjoy!



Тесты на знание Python, PHP, Golang и DevOps: разбор викторины AvitoQuiz на Highload

Топ-3 вопросов по тематикам



Python



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



cls.get_bases()


cls.__mro__ 


cls.__bro__


Это невозможно




2. Как импортировать объект obj из модуля my_module, если он не указан в my_module.__all__ последовательности?



Это невозможно


from my_module import *


import my_module; obj = my_module.obj


from my_module import obj




3. Python 2, что вернёт z[x == y]?



x = x[0] = [0]
y = y[0] = [1]
z = {(2-1, ): 'equal', (1-1, ): 'not equal'}


equal


not equal


RuntimeError


KeyError




Golang



1. Выберите верное утверждение для программы, запущенной с GOMAXPROCS=5:




  1. Программа не может создать более пяти потоков ОС.

  2. Количество горутин на поток не может превышать пяти.

  3. Программа не может одновременно выполняться более чем в пяти потоках ОС.

  4. Программа резервирует пять потоков ОС для эксклюзивного выполнения.





2. Как в Go получить прямой доступ к ячейке памяти?




  1. Указатели в Go всегда разыменовываются при использовании, прямой доступ к памяти невозможен.

  2. Воспользоваться пакетом unsafe.

  3. Использовать встроенную функцию readMemory().

  4. Доступ возможен только в специальной системной горутине.





3. Какая команда пригодится для поиска узких мест в программе?



go tool pprof


go vet


go tool objdump


go profile






PHP



1. Какой алгоритм используется в PHP для сборки мусора?




  • Алгоритм Бейкера.

  • Naive mark-and-sweep.

  • Balanced binary trees.

  • Reference counting, tri-color marking.





  • 2. Что исчезло из PHP в седьмой версии?




  • Внутренние указатели массива.

  • Поддержка переменных в переменных внутри global.

  • Исключения класса ParseError.

  • Функция list().





  • 3. Кто спасёт, если нужно записать HTTP-заголовок после первого вызова echo в коде?




  • Output Buffering.

  • ACL.

  • SPL.

  • Opcode Cache.





  • DevOps



    1. У директории права доступа rwxrwS--t, владелец alice, группа users. ACL не используются. Выберите верное утверждение.




  • Усли пользователь root создаст в этой директории файл, то у этого файла владелец и группа будет root.

  • Пользователь bob, не входящий в группу users, не может просмотреть содержимое файлов в этой директории, но может просмотреть содержимое самой директории.

  • Пользователь alice может удалить из этой директории файл, принадлежащий пользователю root.

  • Пользователь charlie, входящий в группу users, может создать в этой директории новый файл, но не может удалить из неё файл, созданный пользователем alice.





  • 2. Для чего используются физические адреса в протоколе Ethernet?




  • Для того, чтобы обмениваться данными с устройствами в других сетях.

  • Для того, чтобы различать кадры (2 сетевой уровень) и пакеты (3 сетевой уровень).

  • Для определения порядка передачи данных в домене коллизий.

  • Для того, чтобы устройства в одной сети могли обмениваться данными.





  • 3. Что нужно сделать для того, чтобы nginx повторно резолвил имя backend-сервера в IP с помощью DNS?




  • Указать DNS-сервера в директиве resolvers, вынести имя backend-сервера в переменную.

  • Указать DNS-сервера в директиве resolvers, вынести имя backend-сервера в upstream.

  • Вынести имя backend-сервера в upstream, добавить в upstream директиву resolve_dynamic.

  • Указать DNS-сервера в директиве resolvers, после этого nginx автоматически будет повторно резолвить имена backend-серверов.





  • Топ участников



    Итоги были такие. Тест начали проходить 273 человека. Некоторые не закончили его (нельзя сказать, что им не дало закончить — интересный доклад, сомнение в своих силах или слабая связь). Максимальное количество баллов, которые можно было набрать по всем четырём направлениям — 60.



    Тесты на знание Python, PHP, Golang и DevOps: разбор викторины AvitoQuiz на Highload

    Ну а вот топ-5 реальных героев. Ребята, знайте — вы круче всех.




  • Святослав Думченко — 39 баллов

  • Вячеслав Злодеев — 37 баллов

  • Владимир Протасов — 24 балла

  • Светлана Шагалина — 24 балла

  • Илья Лебедев — 22 балла



  • Вот футболки, которые получили 50 лучших по каждому направлению:



    Тесты на знание Python, PHP, Golang и DevOps: разбор викторины AvitoQuiz на Highload

    А вам удалось решить задачи, не глядя под спойлер? Пишите в комментариях.

    И, конечно, до следующих встреч!



    Источник: Хабрахабр

    Категория: Программирование

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

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
    Введите два слова, показанных на изображении: *