# :alien: Pre-Junior C++

## :question: Who is it?

It is someone who is familiar with the syntax of the language and can write a simple program without the use of third-party libraries. The program performs simple procedures such as:
- arithmetic operations
- file manipulation: either reading or writing
- wait for the keyboard input
- display the result or other data in the console
- etc.

## :computer: What coding abilities are expected?

- Create and build a small working C++ project using one of the IDEs such as Visual Studio or Qt Creator.
- Use the debugger through the IDE.
- Understand the compilation and linking process of a C++ program.
- Write an application that makes use of arithmetic and logical operations, conditionals, and loops.
- Write an application that uses the standard input/output streams.
- Manipulate pointers and references.
- Know the types of memory used in an application.
- Understand basic OOP in the context of C++, including inheritance, polymorphism, and encapsulation.

## :bust_in_silhouette: What general skills are expected?

- A desire to learn and acquire new knowledge
- A desire to solve encountered problems
- The ability to formulate a query to find a solution to a problem using a search engine or relevant literature.

## :eyes: Tips and recommendations

### :arrow_forward: Studying

- There is no single solution to help you learn C++ in a day, week, or month. Be prepared for a long and self-guided process of learning various materials before you are ready to pass an interview and secure your first job offer.
- If you find that you don't understand a certain topic, seek out alternative resources.
- Practicing and only practicing will enable you to master C++! You'll forget most of what you read or hear without regular coding.
- Don't try to write perfect code. Your primary goal is to write code that works and does what is required. You need to learn how to communicate with the computer. This is similar to learning a foreign language. At first, you'll talk sloppily, but as you refine your skills, you'll have a better understanding of grammar, expand your vocabulary, and so on.
- Don't tackle a massive problem right away, such as creating your own game. In the beginning, you probably lack the knowledge and experience to handle the task on your own. This approach is likely to quickly become frustrating and lead to disappointment in yourself and your abilities, causing you to abandon your education. It's better to progress from simple to complex, gradually challenging yourself with more and more difficult tasks.
- Don't focus on Leetcode, Codewars, or other similar resources at first. These portals are designed to improve your ability to apply classic algorithms and data structures. However, in the beginning, these exercises may not greatly benefit you as they abstract away the details of the programming language. It's better to focus on the language itself and its capabilities.

### :arrow_forward: English language

- It's easier to find solutions in English, but don't push yourself too hard if your English proficiency is not strong enough. This can quickly lead to discouragement. Most of the problems you may encounter in the beginning can be found in your native language.
- If you feel that your English is not sufficient, start improving it through more enjoyable means: watching series, playing video games, reading fiction, or reading news outlets or articles that interest you. In a few months, you should be able to improve your English comprehension skills.

---

[**Go back**](Overview.md) | [**To main page**](../../README.md)
