# What is it all about?

I had the idea for a long time to write something like a preparation manual for those who are preparing for interview. Since I have no fresh training experience (but there are many other useful experience!) I did this: I imagined that I needed to prepare for the interview, and I tried somehow systematize the plan that I would make for myself. I do not guarantee that this is the most a good plan, but at least it will give you the basis for your own plan.

I have identified several main categories that are encountered in interviews:

* Algorithms and Coding ( P0 )
* Concurrency and Design ( P1 )
* Programming Language and Fundementals ( P2 )
* Best Practices and Experience ( P3 )

I have prioritized the categories as follows:

**P0 > P1 > P2 > P3**

This means that if you have very little time to prepare, then you need to focus on **P0** , and touch on other topics on a superficial level. Even in this case, to take a **P1** More time than **P2** , while the **P2** is greater than **the P3** .

The second prism through which you can look at these categories is your experience. If you just graduated from the university, then you are well enough to know **P0** , moderate **the P1** , and everything else - we'll see how it goes. No one expects you to be able to think deeply about what is real software engineer, and how the wizard differs from the non-wizard.

But if you are already an experienced professional (at least in terms of resume), then you should show a certain depth of understanding, and even their own professional philosophy. You need understand well your strengths and weaknesses, and have a certain professional charisma. The ideal option is to develop it while working with a coach, mentor and a therapist. But this is not done in a couple of months, long-term work is assumed here. Plus, not everyone has the opportunity, time or desire for deeper work on themselves for many levels. In this case, you can just read good books.

Well, the most important point is that each next level is built on top of the previous one. If you not know how to write good code, then no one will care that you are a design guru and you have very deep professional values.

{% content-ref url="/pages/-MQfCjlMYUfsfVWEg94u" %}
[Algorithms and Coding](/notebook/preparation-manual/algorithms-and-coding.md)
{% endcontent-ref %}

{% content-ref url="/pages/-MQfVwRdF-aOL91AzEbJ" %}
[Concurrency and Multithreading](/notebook/preparation-manual/concurrency-and-multithreading.md)
{% endcontent-ref %}

{% content-ref url="/pages/-MQfdESRzTMI250vF6h1" %}
[Programming Language and Fundementals](/notebook/preparation-manual/programming-language-and-fundementals.md)
{% endcontent-ref %}

{% content-ref url="/pages/-MQfl4Ge7sVuUcSdx2tT" %}
[Best Practices and Experience](/notebook/preparation-manual/best-practices-and-experience.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.sunilgudivada.dev/notebook/preparation-manual/what-is-it-all-about.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
