Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Canonical

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

Canonical - Written Interview

I. Engineering experience
1. What kinds of software projects have you worked on before? Which
operating systems, development environments, languages,
databases?

R:

 I began my career as a Telekom Engineer, where I not only fulfilled standard job
requirements but also took on additional responsibilities such as maintaining a
dashboard using HTML/CSS/JS and writing Python scripts for task automation.
Though these tasks weren't complex, they laid the groundwork for my future
growth.
 Subsequently, I delved deeper into software development as a junior freelancer,
collaborating with a friend and mentor who is currently a Principal SE. This
experience exposed me to various aspects of the software development
ecosystem, including IDEs, versioning systems, design patterns, and MVC
architectural patterns. Working primarily with Flask, alongside projects in Django
and one single project in Java (with SpringBoot, Hibernate, and PostgreSQL).
For Flask utilized tools like SQLAlchemy (ORM Tool), SQLite and Posgresql as
DBs and worked with Heroku or Azure for deployment. My workflow involved
Windows, VS Code, and GitHub for version control and project management.
 Transitioning to a support-dev Engineer role, I engaged with clients worldwide,
predominantly comprising technical professionals like Software Engineers and
System Administrators. Collaborating with ex-full-time Software Engineers, we
formed small squads to develop tools aimed at streamlining tasks such as data
collection from user devices, postmortem debugging, memory leak analysis, etc.
Additionally, I independently developed a learning app for newcomers
using .NET C#, designed as a video game with a map and storyline. Tech stack:
Windows, VS Code, .NET, GitHub, Azure.
 Currently, I'm actively involved in a significant freelance project focusing on the
development of a live streaming app designed to accommodate millions of users.
The backend is built using TypeScript with TypeORM following the Controller-
Service-Repository design pattern, alongside PostgreSQL for the database and
Redis for caching. I utilize Postman for testing, Swagger UI for API
documentation, and Twilio for phone authentication. The frontend is developed
using Flutter with Dart. My primary focus is on backend development in this
project.
 Further on, I decided to focus on a single programming language and master it,
as after the described experience I felt like a ‘Jack of all Trades, master of none’,

1
so I decided to go on with Python. Please also check the Python experience
question for more information.

2. Describe your experience building large systems with many services


- web front ends, REST APIs, data stores, event processing and other
kinds of integration between components. What are the key things to
think about in regard to architecture, maintainability, and reliability in
these large systems?

R: I have built and worked in teams that built several applications using MVC or MVT
(for python frameworks) architectural model. Regardless the framework, or the
programming language, the process is always the same:

 Build a backend responsible for the application's functionality, defining endpoints


that act as HTTPS controllers (following the controller design pattern).
 Each endpoint is associated with at least one function handling the logic
(following the controller-service design pattern), typically querying a database
using an ORM tool.
 Services handle operations ranging from basic CRUD operations to custom
queries, using the repository design pattern.
 Expose APIs in a controlled manner to the frontend, testing them in Postman with
collections for each service and documenting them with Swagger UI.
 Utilize caching for speed and performance improvement, employing NoSQL
databases such as MongoDB or Redis.
 Develop the frontend using React, Angular, or pure HTML/CSS/JS( the Python
MVT pattern).
 Implement an API gateway between the frontend and backend for a ‘single point
of contact’, ensuring redundancy and scalability.
 Utilize the API gateway as a proxy, for logging requests, and as a load balancer
to distribute traffic evenly.
 Conduct integration tests once both frontend and backend meet minimum viable
product specifications.

3. Describe your experience with Go. Outline the applications that you
have worked on in Go and your takeaways from that experience.

R: While I haven't had the opportunity to work with Go in a professional setting, I'm
enthusiastic about the language and eager to learn. My background primarily involves
Python. However, I've been proactive in expanding my skill set and staying updated on
emerging technologies and programming languages. Despite not having direct
experience with Go, I've conducted research and self-study to familiarize myself with its
syntax, features, and best practices. I've completed online tutorials, worked on small
projects, and explored its applications in various domains. While I may not have
practical experience to share, I'm confident in my ability to quickly grasp new languages
and frameworks.

2
4. Describe your experience with Python. Outline the applications that
you have worked on in Python and your takeaways from that
experience.

R:

 Developed REST APIs for a library serving millions of clients, constructing


requests with JSON (using mainly OOP) and XML (using the Builder-Director
Design pattern):
o The calls are being build from scratch with requests library.
o I build the payload by mapping the carrier’s fields to our own app’s
schema.
o Proper parsing is then applied for checking the response for errors/
needed data.
o Data is then extracted from the response and further processed.
o I also build the regression tests for each individual call with a mock
module.
o Postman is being used for testing.
o OS: Windows 10.
o CI/CD: Gitlab.
o Cloud services : AWS.
 I design and implement a full-stack internal application using Django, following
Model View Template architectural design pattern. The app includes a backed
that is connected to an SQL DB (Postgres). An ORM tool is used to query the
DB. The routes are then exposed to the front-end through the template part of
the model, template build with html and CSS. JS and jQuery are used for front
end functionality. Also, jinja2 syntax is being used for specific purposes.
 I also developed multiple smaller apps using Flask as framework, by applying the
same MVP design pattern. All these apps had the same pattern: routes with
associated view functions, that are being used to connect to an SQL DB (mostly
used SQLite or Postgres) through an ORM tool (I used mostly SQLAlechemy).
Then the routes are exposed through front end by using the templates that have
a static part (HTMS and CSS/bootstrap) and a functional part (JS). I generally
use Postman for API testing.

5. Describe your experience with Salesforce. Outline the solutions that


you have worked on, the business domains, and your takeaways
from that experience.

R: Although I haven't worked on solutions using Salesforce, I've conducted research


and self-study to understand its functionalities, architecture, and applications across
various business domains. I've completed online courses and familiarized myself with
Salesforce's features, including its CRM tools, workflow automation, and analytics
capabilities. The real challenge is not to apply what I have already mastered, but to
learn new tools to work with. For this reason, I am happy this job utilizes technologies
that I have not mastered yet.
3
6. How comprehensive would you say your knowledge of Linux
distribution is? How have you gained this knowledge?

R: While my knowledge of Linux distributions is primarily centered around Ubuntu, I


would describe my understanding as solid within that context. I've gained this
knowledge partly through personal exploration and experimentation with Ubuntu on my
own systems, and partly by using it for professional purposes. My experience with
Ubuntu has provided me with a strong foundation in Linux fundamentals, including
package management, file system navigation, and basic command-line operations. I'm
eager to continue expanding my knowledge and exploring other Linux distributions as
opportunities arise.

7. What is your proudest success as an engineer?

R: My proudest success as an engineer lies in my seamless transitions across roles


from Telekom Engineer to Dev-Support Engineer, then Software Engineer, showcasing
my adaptability and versatility. I've built impactful applications, including a learning app
for Microsoft newcomers and a carrier library for nShift, serving millions of clients. As a
freelancer, I've developed diverse projects, from e-commerce platforms to custom
business applications, demonstrating my technical expertise and commitment to
delivering tailored solutions. These experiences have sharpened my skills and
reinforced my passion for making a meaningful impact through technology.

8. Would you describe yourself as a strong engineer? Why?

R: I consider myself a strong engineer due to my multifaceted perspective and diverse


knowledge across various IT domains. My experience spans across networking,
understanding very well the TCP/IP stack, and delving into browser functionality. One of
my key strengths lies in my deep understanding of SQL databases and I have extensive
experience building RESTful APIs to facilitate communication between client-side
applications and backend systems.

Moreover, my proficiency in Python allows me to automate tasks and develop robust


solutions swiftly. While my expertise primarily lies in Python, I also have worked in
projects that used as primary languages C#, Java, and TypeScript. Although my
knowledge in these languages may be more limited, I've demonstrated the ability to
quickly grasp new concepts and apply them effectively. Overall, my diverse skill set
enables me to approach problems from multiple angles, allowing for innovative solutions
and efficient problem-solving.

II. Education
1. How did you rank in your high school, in your final year in math and
hard sciences? Which was your strongest?

4
R: In my final year of high school, I consistently ranked among the top 3-5 students in
my class. Math and hard sciences were areas where I excelled the most. I consistently
demonstrated strong analytical skills and problem-solving abilities in these subjects.

2. How did you rank in your high school, in your final year in languages
and the arts? Which was your strongest?

R: As I attended a high school focused on IT/informatics and math, I didn't have the
opportunity to study arts. However, in languages, I performed well and consistently
scored above average. While it wasn't my strongest area, I dedicated myself to
achieving proficiency and understanding in languages alongside my primary focus on
math and sciences.

3. Please state your high school graduation results or university


entrance results, along with the system used, and how to understand
those. For example, in the US, you might give your SAT or ACT
scores. In Germany, you might give your scores 1-5.

R: High school graduation results/ university entrance results: 9.03 out of 10.

4. What sort of high school student were you? Outside of class, what
were your interests and hobbies? What would your high school
peers remember you for, if we asked them?

R:

 What sort of high school student were you? r: Mathematics Computer Science
Program Profile.
 Outside of class, what were your interests and hobbies? r: sports (long-jump and
marathon), PC games. Also, I read and studied from multiple domains starting
with philosophy, religion, psychology, with a focus on enhancing cognitive
abilities, trying to develop speed learning, speed reading, speed memory,
ambidexterity.
 What would your high school peers remember you for, if we asked them? r: I was
lucky enough to develop strong and authentic friendships that lasted until today,
so I had the chance several times to receive feedback from my High School
friends. One word that they may use when describing me, would probably be
‘balanced’. I work hard when needed, but I also do not forget to have fun and
enjoy this adventure called life.

5. Which university and degree did you choose? What other


universities did you consider, and why did you select that one?

R: Politehnica University of Bucharest – Chemical Engineering (I was an Olympic at


chemistry in high school). Politehnica had no competitors in Romania when it comes to
Chemical Engineering.

5
6. At university, did you do particularly well at any area of your degree?

R: I consistently ranked among the top 3-5 students in my class.

7. Overall, what was your degree result and how did that reflect on your
ability?

R: I finished my studies with a grade of 9.75 out of 10.

8. In high school and university, what did you achieve that was
exceptional?

R: In both high school and university, I achieved several exceptional milestones.


Notably, I participated in County Level Olympiads where I competed among top
students and received prizes for my performance. Additionally, I had the opportunity to
attend international conferences and present my research performed as an
extracurricular activity.

9. What leadership roles did you take on during your education?

R: I used to mentor class mates on any subject related to mainly hard sciences.

III. Context
1. Outline your thoughts on the mission of Canonical. What is it about
the company's purpose and goals which is most appealing to you?
What do you see as risky or unappealing?

R: The commitment to open source resonates with my values of accessibility, inclusivity,


and community-driven innovation. The goal of delivering open-source solutions faster
and more securely indicates a dedication to staying at the forefront of technological
advancements and addressing emerging challenges proactively. The emphasis on cost-
effectiveness underscores a pragmatic approach to providing value to customers while
maintaining competitiveness in the market. One potential risk could be the challenge of
balancing the speed of delivery with the quality and reliability of open-source solutions.
Rapid deployment may increase the likelihood of errors or security vulnerabilities if
proper testing and validation processes are not in place.

2. Who are Canonical's key competitors, and how should Canonical set
about winning?

R: First and foremost, never underestimate the impact of effective marketing and
publicity. It's crucial to ensure that your company and the quality of your
products/services are widely recognized and appreciated.

6
Canonical’s key competitors may be Docker, Red Hat, Citrix, Oracle, Microsoft
and many more. Applying some simple tactics from 'The art of War' (Sun Tzu),
Canonical should ally with the strongest competitors, to develop profitable
partnerships, and buy/incorporate the less developed competitors to expand. Also,
being as aware as possible of the business niche direction, adapting constantly and
offering the best service/product/ solutions, Canonical will always have the edge with
respect to the equal size competitors. However, this is just an example from the pool
of tactics that the company could apply to set itself on a ‘winning’ direction.

3. Why do you most want to work for Canonical?

R: After reading and finding out more about Canonical, I realized this is a place of
‘growth and excellence’, where I can bring my knowledge to the table and more
important (for me), I can learn and develop my skills and myself as a person. I also
really like the ‘remote international company’ status that you have.

4. What would you most want to change about Canonical?

R: Even though I may have some thoughts regarding this aspect, I strongly consider
that at this moment my opinion will not be pertinent enough, as I know Canonical only
as an outsider. I can provide useful feedback in this direction after at least 6-12 months
of direct collaboration with Canonical.

5. What gets you most excited about this role?

R: I'm excited about this role, because of the endless learning opportunities, the chance
to build impactful solutions and the potential to make a difference. Plus, collaborating
with top talent would be both enriching and rewarding.

You might also like