As another week passes by, it is time to recollect on the experiences it has left behind.

Let’s begin with the bulk of the theoretical knowledge acquired this week, as I continued working on the Java Hackerrank challenges. This week I dived into more complex topics of this language, starting with some data structures that I had not had the chance of working with before:

  • Hashset: A data structure similar to the set structure in other languages, in which we store keys in order to keep a record of which keys have been recorded into the set.
  • Hashmap: Equivalent to object or maps in other languages. Works similar to a set, but each key can hold a value, rather than just a flag indicating if it is contained or not.
  • Bitset: An array of bits, which allows us to perform bit operations with it.
  • Comparators: It allows us to define custom rules for sorting lists.
  • Priority queue: Works similar to a normal queue, with the caveat that each entry is assigned a ranking or priority, and items are served out of the queue based on this score.

Moving on, other exercises I did this week related to Exception handling in the languages, as well as the try … catch syntax for handling errors. Some other exercises related to concepts of OOP, such as interfaces, abstract classes, inheritance, polymorphism and overriding. These exercises helped to reinforce these concepts in a more practical manner, for which Java is especially good at demonstrating. Lastly, I learned some extra and miscellaneous topics, such as:

  • Singleton pattern: A single instance of a class is created and accessed, rather than allowing the creation of multiple instances.
  • Factory pattern: A pattern which takes advantage of a common interface in order to delegate the creation of a class to a method, which determines the appropriate class.
  • Varargs arguments in functions: The ... syntax allows us to declare an undetermined number of arguments of the same type in a method, rather than overloading a function with a bunch of different amounts of arguments.
  • Java reflection: A useful tool that allows us to inspect the attributes of a class at runtime.

Jumping into other topics, this week I found a bit of time to continue with the Angular course I’ve been working on. The next section of the course focused on creating a login page managed with Firebase. I’m currently at the middle of this section, but so far, I’ve learned to handle errors and information using ngForm, which seems to provide a pretty comprehensible list of functions and information that allows us to fully take control of our forms.

Lastly, this week I worked on forms in React using Formik. This particular task has been a bit of a challenge, since the form I’ve been working on has several steps before the one I’m working on and some of the fields are dependent on the output of others. It has been confusing and a bit frustrating, but little by little the form is starting to take form and comply with all of the specifications needed. It is good to see some progress, even if it’s only 1% at a time.

That would be all for this week, let’s see what this next one has in store.

Java