Coding Interviews Tips

LiveRunGrow
6 min readJun 8, 2020

--

Some Chinese luck please XOXO

I fear coding interviews greatly. When i get a question, my mind powers off and i am immediately inundated with a sense of fear. I stumble with my words and feel like an imposter — like i didn’t spend the past three years studying Computer Science.

Starting next academic year, I will be a final year undergraduate. Oh how time flies. And I am determined not to repeat my mistakes. I plan to practice coding and revise regularly so that I will be more confident and be a better thinker. I hope to secure a high paying job and start my journey towards a rewarding career.

Section 1

Below, i will write down the steps i should take when approaching a coding problem.

  1. Listen -> Pay close attention to the question. You might need it all for an optimal algorithm
  2. Example -> Draw an example of the question. Debug your example. Is there any way it is a special case? Does it cover all cases?
  3. Brute Force -> State a naive algorithm and its runtime, then optimise from there. Don’t code yet though.
  4. Optimise -> Walk through your brute force with BUD optimisation (Bottlenecks, Unnecessary work, Duplicated Work) * Look for unused information
  5. Walk through -> With an optimal solution, walk through your approach in detail before coding.
  6. Implement -> Modularise
  7. Test ->
  • Conceptual test
  • Arithmetic and null nodes
  • Special & edge cases

A simplified version

  1. Make sure you understand the entire question first and the inputs and stuff
  2. Write your code in function -> don’t code in the main function
  3. Think of possible edge case
  4. Then ask to code…

Section 2

Here are some questions that could I could ask during an interview.

  1. What technology is the company/ your team currently using?
  2. What is your favourite thing about working for the company?
  3. How has your role changed since joining the company?
  4. What are the most challenging aspects of the job?
  5. What is the current team composition like?
  6. Can you give me an example of someone who’s been in a technical role at your company for a long time, and how their responsibilities and role have changed?
  7. How often do you have meetings? Are there any scheduled/standing meetings? Who talks to customers (if appropriate) and how? How does internal communication work? This one is super important.
  8. Is all the development work handled by the team? Does the company outsource any work?
  9. What’s the onboarding process like?

Section 3: Discuss some projects you have done before

Projects i have done in chronological order : Collabucket, TutorHelper, Stuff Sharing, ML Computer Vision X-Ray Pneumonia project, Database Systems Implementation, Telegram Bot, Events Project

Challenges, Mistakes, Enjoyed, Leadership, Conflicts, What you would do differently

Key Project 1: TutorHelper

Challenges:

When i was working on this project, i faced 2 main challenges. The first would be regarding the entire workflow of a software engineering project. The second would be in terms of contributing my opinions during group discussion. I will first elaborate the first challenge.

(1)

As it was my first Software Engineering Project and I was not familiar with the workflows of a software engineering project. For eg, when i first started out, the idea of git flow was foreign to me. I didn’t know terms like Pull Request, Code review, branches.

At the start, i made a lot of mistakes without realising it. For instance, without making a pull request, i merged the code immediately into the main master branch. I pushed code that was sometimes still work in progress. I didn’t make use of branches to write my code. I didn’t take code reviews practices seriously.

However, throughout the course, as i read up more on git flows and learned from my teacher what was the correct way to work in a team, i was better able to understand the rationale for such practices. I also learned to improve my coding style by code reviews and learning from my group mates. By the end of the project, i improved a lot and could better appreciate the git flow.

Apart from these, I also tried my hand at writing user and developers documentations, drawing sequence diagrams, drawing object class diagrams and architecture of the project, coming up with user stories etc. I also learned more about some software engineering design patterns such as the Model View Controller pattern, Singleton pattern.

It was a huge step for me in understanding how software projects is implemented in the real world.

(2)

The second challenge that i faced was in terms of voicing my opinions during group discussions. Because i was relatively a newcomer to the field of CS I lacked confidence in my own abilities. I worked in a team of 5 and i felt that my opinions were not worthy of mention because i was the “most inexperienced” member in the group. This mindset led to me not being able to contribute as much as i wanted when it came to group discussions, for eg deciding what features should be implemented, how to implement something etc. I found myself mostly just nodding my head and listening to what my teammates had to say without making the effort to think how it can be done better.

On hindsight, if given another chance again, I would definitely have changed my mindset. I would definitely try to have more confidence in myself and convince myself that i am equally capable as my teammates. However, i am thankful for this experience as it has enabled me to realise how much confidence i lack in myself and that this is an area that i should work on.

To date, with my past 2 internships experiences and projects done, I am definitely more confident and can contribute in group works.

Key Project 2: Database Systems Implementation

This project was carried out in a group of four. We expanded on the code base that was given to us by our teacher. The project is creating a simple SPJ (select-project-join) query engine to illustrate how query processing works in a modern relational database management system. It was written in Java.

The part where i was responsible for was in implementing the Distinct feature. For instance SQL queries often have the distinct key words and the query engine has to filter duplicates.

I implemented this feature by using External Sort Merge.

External Sort Merge has 2 phases: (1) Create sorted runs (2) Merge sorted runs -> K-way merge

After every tuple has been sorted, i compared each tuple with it’s previous tuple. If it is the same, i remove the duplicate.

The hardest part of this project was the tight deadline and difficult implementation. We only had around 3–4 weeks to submit our project code and we had to expand upon the code that was given to us. I found out that while it was easy to understand how DB query engines work in theory, it was actually a different story when i came to implementing it in actual. It took me a whole day to understand the code base and coming up with an idea to implement it. However, it was very rewarding to be able to apply what i have learned in school.

Key Project 3: Events Project

I initiated this project upon realising that there is no well-known central platform for users to make comparisons between the different event venues available for rental. Even though there are many existing event venue websites, when disparate, they alone offer limited choices, are not well-known and often fall under the radar of the public. It would be cumbersome for users to have to navigate between the different websites to hunt for the “perfect” venue. Hence, this project aims to bridge this gap by sitting on the shoulders of all these existing websites, and providing users with a central platform where they can have access to a greater variety of event venues by simply accessing our single platform.

In short, it is a meta-search engine project that aims to collate all information from existing Singapore event venues rental websites and present users with a user-friendly interface to compare the different prices and venue options. The business model operates similarly to Trivago where users will be redirected to those 3rd party websites to make the actual booking.

…..

--

--

LiveRunGrow
LiveRunGrow

Written by LiveRunGrow

𓆉︎ 𝙳𝚛𝚎𝚊𝚖𝚎𝚛 🪴𝙲𝚛𝚎𝚊𝚝𝚘𝚛 👩‍💻𝚂𝚘𝚏𝚝𝚠𝚊𝚛𝚎 𝚎𝚗𝚐𝚒𝚗𝚎𝚎𝚛 ☻ I write & reflect about software engineering, my life and books. Ŧ๏ɭɭ๏ฬ ๓є!

No responses yet