Taro Logo

Software Engineer Interview Experience - Ottawa, Canada

May 1, 2016
Positive ExperienceNo Offer

Process

I applied to Cisco via their University Relations website. The interview process took approximately two weeks, with about one month before the original interview was scheduled. There were two interviews: a technical phone screen (approximately 1 to 1.5 hours) and a more in-depth, typical technical interview. I was applying for their Ottawa, ON office. All coding questions were done in C, with a massive emphasis on C knowledge.

The phone screen was fairly straightforward. I spoke with a veteran employee (15+ years) at Cisco, who started off by asking me about my resume and my ability to code in different languages. Then, they asked me some general knowledge questions about operating systems (e.g., mutex vs. semaphore, process vs. thread, if a thread crashes, do all other threads crash too, where would you use a mutex over a semaphore?). They then proceeded to move on to two coding questions:

  1. Given a function prototype that takes in head and node, code the function to insert the element into a linked list.
  2. A very basic question involving selecting only the prime or even numbers from an array, formatted with proper output to test your ability to logic and reason.

All coding here was done in Notepad.

The second stage consisted of two back-to-back, approximately 1 to 1.5 hour long interviews. The interviewers were in pairs, and in my case, were done over WebEx as I was not able to attend onsite in Ottawa, ON. One set of interviewers were slightly younger with the company (1-2 years), and the second set were also veterans (~10-15+ years). For this part, I was given the choice to code in an IDE of my choice (I ultimately chose a text editor).

The first set of interviews tested my knowledge more on the internet and data structures side of things. Lots of questions related to data structure knowledge, usage, as well as runtime complexities (e.g., why use a linked list over a tree? What is a BST, hash table, or linked list? What is the worst-case/best-case runtime? Provide a scenario where you would implement a hash table over any other data structure? Explain the difference between TCP/UDP?). This was followed by a typical "please tell me what's wrong with this function" question (there were three errors), and then a single programming question: write a function that prints or returns the largest or smallest integers in an array.

The second interview focused more on parallel programming knowledge (e.g., problems with parallel programming, mutexes/semaphores, deadlocks, race conditions; a whole lot of OS knowledge is really good to have here, as well as related experience). This interview went similarly to the first: a question regarding "point out the errors in this function" (there were multiple errors), followed by a two-part programming question:

  1. Write a struct for a DB record called phone_rec that contains: a. Employee's last name b. Their phone number

  2. If there is a pool of phone numbers and you are given the size of the pool, search and return the phone number based on 'name.' Otherwise, allocate an unused phone number and save the entry in an array. Return the phone number.

Overall, the interviewers were friendly and happy to provide hints should you ask for them. Be sure to point out limitations/edge cases in your code and address them as soon as time permits in the interview. Make sure you're comfortable coding on a whiteboard or notepad.

Questions

Write a C function that prints or returns the largest/smallest integers in an array.

  1. Write a struct for a DB record called 'phone_rec' that contains: a. Employee last name b. Their phone #
  2. If there is a pool of phone numbers and you are given the size of the pool, search and return the phone number based on 'name'. Otherwise, allocate an unused phone # and save the entry in the array. Return the phone #.

General OS Knowledge:

  • Difference between mutex and semaphore.
  • Process vs. thread.
  • Explain differences between process and thread.
  • Do all threads in a process crash if other threads crash?

General Data Structures Knowledge:

  • Linked list, binary trees, hash tables.
  • Provide a scenario where you would use a linked list over a binary tree.
  • Provide a scenario where you would use a hash table over a linked list.
  • Provide the run-time complexities of these structures (best/worst/average case).
  • Have you implemented them? If so, explain how you did it, your approach, and the scenario.

Given a function prototype that takes in head and *node, write a function that inserts the given node into a specific location in a sorted linked list.

Was this helpful?

Interview Statistics

The following metrics were computed from 23 interview experiences for the Cisco Software Engineer role in Ottawa, Ontario.

Success Rate

26%
Pass Rate

Cisco's interview process for their Software Engineer roles in Ottawa, Ontario is very selective, failing most engineers who go through it.

Experience Rating

Positive48%
Neutral43%
Negative9%

Candidates reported having very good feelings for Cisco's Software Engineer interview process in Ottawa, Ontario.

Cisco Work Experiences