In this week I have been preparing myself for taking interviews with further clients, to be ready with answers about myself, and also be prepared for coding challenges.
Before the interview
Since week 10, I had participated in open-source projects, this was because it can add a lot to my CV, and helps to show genuine interest in the programming world.
I think that, unlike other disciplines, we have an advantage, we can acquire experience ourselves as programmers, participating in these kinds of projects or making something on our own.
The point of the interviews
There are several skills that are valued in an interview.
Analytical skills, coding, technical knowledge, experience, and cultural fit to mention some.
They can be particular questions to know those skills, but also, they can be demonstrated in an indirect way, like answering a technical question you can demonstrate arrogance or sympathy.
Definitely, this is a crucial point and personally, I need to work and pay more attention to the way that I answer those kinds of questions and how my interlocutor can feel with those answers.
An essential part of the interviews are the behavioral questions to detect red flags or genuine interest in the project.
Personally, I always don’t care about these questions and just answer in an improvised way.
I don’t say that I need an exact script to repeat every time, what I’m trying to say is that I need to work on knowing myself.
Which are my main hobbies? Which are my real weaknesses?
Also, every position and project are a world, before any interview I’ll take more time to investigate the company and the projects related to them, what I am excited to work with? After answering that question, I can make interesting questions for the recruiter and demonstrate that I care about the position I’m applying for.
Approach to algorithm problems
There is no formula for solving algorithm problems, each problem can test different knowing and can vary in difficulty.
From the book “Cracking the Code interview”, there is a list of steps to follow to approach the problems that are:
- Brute Force
- Walk Through
From those steps, the more important for me is step 3 (brutal force) because, like said before in this post, the interviewers are not here for your capacity of solving algorithmic problems, but how you deal with problems and your logic.
Big O is a mathematical notation that describes the time complexity of a function.
This was one of the more complex and also important topics that I covered this week.
This topic is important because it describes the optimal solution for an algorithm problem, and certain things in code, like 2 nested for-loops, are represented with the notation O(n^2).
There are more complex notation and a problem can have a particular notation, but the most common are:
- O(n) – It takes n times to complete.
- O(1) – It takes the same time to run and there are no external factors to that.
- O(n^2) – Usually when the code has 2 nested for-loops.
- O(2^n) – Usually when the function has 2 recursive calls.
I don’t feel totally comfortable with my knowledge of Big O, and I think that is better to continue investigating this topic.