I applied to Cisco via their University Relations website. The interview process took ~2 weeks, with about 1 month before they scheduled the original interview. There were 2 interviews, a technical phone screen (~1-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. Massive emphasis on C knowledge.
The phone screen was fairly straight forward. I spoke with a veteran employee (15+ years) at Cisco, who started off by asking me about my resume, my ability to code in different languages. Then he asked me some general knowledge about OS (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 semaphore). He then proceeded to move on to 2 coding questions; 1. given a function prototype that takes in **head, *node, code the function to insert the element into a linked list. 2. a very basic question involving selecting only the prime/even numbers from an array, formatted with output properly to test your ability to logic and reason. All coding here was done in Notepad.
The second stage consisted of 2 back to back, ~1-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), 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 interview were testing 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 tree? what is a BST/hashtable/linked list/etc.? what is the worst case/best case run time? provide a scenario where you would implement a hashtable 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" questions (there were 3 errors), and then a single programming question: write a function that prints/returns the largest/smallest integers in an array.
The second interview focused more on parallel programming knowledge (e.g. problems with parallel programming, mutex/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 2 part programming question: 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 of phone numbers, search and return the phone number based on 'name', otherwise allocate an unused phone # and save the entry in array. return the phone #.
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 whiteboard/notepad.