Какие требования для джуна на с++?

Всем привет!
На данный момент я самостоятельно изучаю С++ и сейчас изучаю ООП (сейчас учу классы). Также решила параллельно изучать Python (первые уроки показались мне просто сказкой после С++). Так вот, напишите, пожалуйста, какие минимальные знания необходимы для устройства на работу?
Помимо С++ и ООП изучила суть Git (теория, в нем я не работала), так как понимаю, что он необходим при работе с проектами.
З.Ы. Спрашиваю для того, чтоб знать, когда можно начинать раскидывать резюме)
З.З.Ы. Каких-то реальных проектов/решений у меня нет, практика ограничивается лишь решением задач с интернета и самостоятельно придуманный код по типу калькуляторов и подобного.

Буду рада вашим ответам ;)
  • Вопрос задан
  • 3905 просмотров
Решения вопроса 1
sim3x
@sim3x
Загляните на сайты с вакансиями

ПС: полноценный калькулятор - с парсингом синтаксиса требует теоретических и практических навыков хорошего уровня
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
Заходите на сайты с вакансиями, например hh.ru и смотрите по требованиям. Можете ещё хабр почитать, там есть статьи, которые описывают опыт трудоустройства именно джунов на C++.

Стоит отметить, что начинающий программист -- это не новичок. Это специалист с опытом работы от года и/или релевантным опытом в разработке ПО, полученном, допустим в разработке своих проектов или проектов с открытым исходным кодом.

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

А так, можете написать что-то уровня fizzbuzz или binary search, понимаете O(n), знаете, что такое size и capacity у std::vector и зачем это надо, слышали про cache line краем уха, понимаете чем отличаются map и unordered_map, у вас есть парочка своих проектов на гитхабе и вы немного использовали ООП (кстати, ООП -- это не только про классы)... Смело можете пробовать. По крайней мере, я бы с большой вероятностью принял бы на работу такого джуна.
Ответ написан
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Зависит от компании. От джуна адекватные компании не ждут ничего конкретного. Нужно иметь минимальную базу и как-то продемонстрировать то что вы готовы учиться.
С C++ нужно понимать основные механники:
1. ООП. На 90% собеседований вас спросят что такое полиморфизм. Погоняют по виртуальным и не виртуальным функциям. Нужно хорошо разобраться зачем нужны конструкторы и деструкторы. Когда они вызываются. Как передаются параметры в функции. Почему что-то пишут в .h а что-то в .cpp. STL, смарт пойнтеры Итд.
Хороший список книг:
https://tproger.ru/books/cpp-books-middle/
Не ожидается что в прочитаете все, но открытый на средине Майерс не должен вызывать изумления от синтаксиса в большинстве случаев.
2. Алгоритмы. Что такое сложность в big O нотации (не обязательно дословно). Устройство и сложность основных операций для vector, list, set, map, unordered_set, unordered_map. Уметь отвечать на вопрос "Что быстрее vector или list"
"Hacking the code interview" содержит очень краткое описание для этой части (есть перевод). Вся книга скорее на middle уровень, но почитать полезно.
3. Иметь репозиторий даже с учебными задачами очень полезно. Я всегда смотрел код, если он был.
4. Дальше уже специфика компании. Могут спрашивать математику, сети, Qt, ML... Тут уже смотрите что вам интереснее.
Ответ написан
@ksenobyte
Хм, ну вот примерно список вопросов который мне задавали, когда я шел на ++ джуна.

//функция, использует класс для кодирования строки. Спустя
//какое-то время программа падает. Почему?
Result encode(const char *string)
{
  Encoder * coder = new Encoder();
  Result res = coder->encodeString(string);
  return res;
}


//Где-то в функции ниже ошибка. Найдите
void printArray(int * mas)
{
  for (int i = 0; i < sizeof(mas); i++)
  std::cout << mas[i] << " ";
}


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

struct A {
  virtual std::ostream &put(std::ostream &o) const {
  return o << 'A';
  }
};
struct B : A {
  virtual std::ostream &put(std::ostream &o) const {
  return o << 'B';
  }
};
std::ostream &operator<<(std::ostream &o, const A a)
{
  return a.put(o);
}
int main() {
  B b;
  std::cout << b;
}


Напишите программу для поиска простых чисел.
Что такое умный указатель, какие бывают?
Что такое виртуальные функции, что такое pure виртуальные функции.
Тебе надо поработать с в двоичным числом, как ты это сделаешь?В чем будешь хранить?
Классический вопрос про ООП что это, как работает, зачем? Как, три принципа и т.д.
Больше честно говоря ничего такого не вспомню.
Ответ написан
Комментировать
inoise
@inoise Куратор тега Карьера в IT
Solution Architect, AWS Certified, Serverless
С таким подходом дальше трейни вы не уедете. Джунами берут тех кто готов делать, а это значит что вам надо обязательно практиковаться и делать живые проекты (и хранить в том же git)

По навыкам - откройте hh.ru и смотрите навыки в вакансиях вашего региона, составьте список и изучайте
Ответ написан
@taktik
Sr. QA automation | SDET
Я плотно взаимодействую с программистами на плюсах и вижу сложность их работы и уровень знаний необходимых для нее.
Могу сказать, что плюсы - не тот язык который имеет смысл изучать самостоятельно. В основном он используется в тех предметных областях, где нужен высокий бэкграунд в computer science. Без хорошей академической подготовки на соответствующих факультетах, вы вряд ли пройдете собесы в хорошие компании.

Не тратьте время, есть более дружелюбные для вайтишников направления - автоматизация тестирования, фронтенд
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы