Домен arhivach.hk временно не функционирует! Используйте адрес
ARHIVACH.SITE.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна.
Подробности случившегося. Мы призываем всех неравнодушных
помочь нам с восстановлением утраченного контента!
Ниже - список тем, которыми я обычно интересуюсь на интервью. Я не жду, чтобы джуниор знал всё это, но сеньор обязан как минимум уметь поддержать разговор практически обо всём.
В порядке уменьшения важности:
• Классы и объекты. Инкапсуляция. RAII и почему оно важно. Наследование и полиморфизм, где и зачем. Хотя бы поверхностное знание, как работают виртуальные функции. Почему виртуальные деструкторы - хорошая идея. Копирование и перемещение.
• Как работает стек и чем он отличается от кучи. Управление памятью в целом и буферами в частности. Переполнение буфера.
• Исключения и что происходит при их выбрасывании. Как работает раскрутка стека. Взаимодействие исключений с деструкторами.
• Опыт с STL и базовыми структурами данных. Опыт с другими популярными библиотеками (например, Boost). Опыт с API ОС (Win32 и т.д.). Кросс-плаформенное программирование.
• Когда использовать несколько потоков. Потокобезопасность при нескольких операциях чтения и записи. Блокировки. Взаимные блокировки и как их избежать. Пулы потоков. Futures и promises.
• Разница (преимущества and и недостатки) между C++ и языками со сборкой мусора (C# или Java). Как эта разница влияет на построение программ.
• Фреймворки для тестов. Знакомство с основными IDE и платформами. Контроль версий, branching и merging. Гибкая методология разработки, опыт с ней, её преимущества и недостатки.
• Сетевое программирование. Разница между блокирующим и неблокирующим вводом-выводом. Messaging. Как TCP разбивает сообщения (подсказка: он этого не делает). ASIO-style асинхронный ввод-вывод с callback'ами. HTTP. REST. OpenSSL.
• Файловые системы. Строки и кодировки.
• SQL и базы данных, XML, Json парсеры.
Итак, анон, если ты не знаешь хотя бы чего-нибудь из списка - ты не программист, а ничтожество. И да, ты обязан знать всё это, даже если ты не пишешь на C++. Это элементарные и основные знания.