As the third week of this phase closes, once again it’s time to reflect on what happened, what I’ve learned during this week. Continuing with the Interviewmania dynamic for the month, the next round will see our roles reversed, meaning that for next week I’ll take the role of the interviewer. However, the interview itself will not revolve around theory, behavioral questions or technical knowledge, but rather in problem solving and coding abilities. The second round of this exercise will see us engaging in a coding exercise interview, in which I will prepare the problem to be solved and my fellow apprentice shall solve it. As I was given the chance to choose a framework, this same gesture was extended to my partner, and as such he decided to have the interview based upon the React framework. This will be interesting, as both of us have experience using this framework, but neither of us consider ourselves experts in its use. As of the writing of this essay, I’m still undecided of what exactly I shall ask, although some ideas are floating around in my head.

In order to prepare for the interview, I decided that I needed to grasp all of the recommended topics listed in the Hackerrank Interview Preparation Kit, and with that thought in mind, I decided I was going to finish up the exercises this week, focusing completely on them… good idea, bad execution. While at the time of writing I have less than 15 problems left and I’ve solved problems in each category, what I failed to consider was the difficulty of some of these problems, since some of them I haven’t been able to grasp any kind of solution even after a couple of days. With that in mind, I’ll refocus, cut my losses, and give up on finishing the kit until I’ve prepared the interview I shall perform. While a failure in my original goal, what wasn’t a failure was the amount of data structures and concepts I was able to both study, use and practice during the week, such as : recursion, graph theory, trees, backtracking, bit operations, disjoint sets and dynamic programming.

Aside from studying algorithms, I was able to take some time to review some of the lectures assigned for these weeks. During the week I was able to review the 4-7-8 breathing technique and the Navy seal tips for motivation. The former reviews a technique for relaxation following a series of steps, in which one counts to 4 while inhaling through the nose, holds that breath for 7, and the audibly exhales though the mouth while counting to 8, repeating this cycle 4 times. While It may seem strange, a lot of meditation techniques tend to focus on paying special attention to something in particular, and the breath, being something we cannot evade, is usually the prime something to focus on. Overall, I liked the technique, and I hope to use it in the future in order to put my nerves under control. The latter lecture focused on several points to keep motivation going as given by a former Navy SEAL. As most motivational speeches go, the points given might seem fairly obvious or straightforward in hindsight, but what matters the most is to put them into action on our daily lives and to reflect how and in which ways we might be failing to implements these teachings in our routines and habits.

Finally, I’d like to make a brief note regarding the You don’t know JS book. During this week I learned about indirection, which refers to instances in which we might assume this points to a given object, but since only a reference to said object is given, the default value is given. Another interesting concept was that of soft binding, which allows us to use explicit and implicit bind this while giving a custom fallback value other than the default one. Lastly regarding this, I learned a bit more about the way the arrow function assigns its value, pretty much being a lexical scope to the keyword. Jumping from this I started reading about the way JavaScript implements its objects. A fun discovery from this was the fact that while JS supports several primitive types, we also have subtypes, which are built-in objects with properties and methods to interact more easily with any given type. The reason we usually don’t notice this is because, even if we declare, for example, a variable with a string primitive, JS will coerce its value into this subtype whenever we use operations that belong to the object rather than the primitive, such as length.

This next week will bring several new challenges, as well as some extra pressure from the task of creating a good interview to match the one I was given last week. I look forward to his challenge!

Coding_interview

Sketch_note_1