Zscaler | Internship + FTE | Software Developer C/C++ | On-Campus | Bangalore [Offer Accepted]
Anonymous User
8657

Status: Fresh Graduate, B.Tech (Electronics and Communication Engineering), Tier 1 College
Past Experience: SDE Intern at a Startup
Position offered: Software Developer C/C++ (6 months Internship + Full Time)
Location: Bangalore, India (Work from Office)
Date of Offer: 16th November, 2023
Opportunity: On-Campus Placement

Online Assessment (Online Coding Round):
3 coding questions of medium to hard difficulty based on problem solving and DSA. Total time 90 minutes. Questions revolved around the following topics:

  1. BFS (Graphs) + Binary Search
  2. DP on Trees (I used centroid of a tree to solve it)
  3. Segment Tree + Binary Search

I was successfully able to solve 2 out of 3 questions (1st and 2nd). Ran out of time for the third question.
The shortlisted students were announced approximately after 40-50 days from the date of the coding round.

Technical Round 1:

The interviewer greeted me warmly and initiated our conversation by asking, "What was your breakfast today?"
We then proceeded with quick introductions of ourselves.
The interviewer then asked me to rate myself in C++ and C to which I answered 9.5 and 8.5 respectively out of 10.

The interviewer then dived into the core concepts of C, Operating systems, Computer Networking where we had an extensive discussion on topics like:

  1. Different Storage Classes (We almost covered everything related)

    • Auto, Extern, Static, Register - Differences, Scope, Life, Storage Location (Stack, Data Segment, CPU register), etc
    • I took an extra step and gave applications for each in terms of coding practices
      Eg: Compiler treats
      int foo(int a); as extern int foo(int a);
      So we use static if we want to limit the access of a function to a single file.
      Gave similar examples for others
  2. Dynamic memory allocation (Types, Syntax, differences, applications, etc).
    Also discussed stack and heap memory segment here.
    The interviewer dived further deep into and asked about the internal working of realloc - Does realloc assigns a new memory address to the base pointer or just increases/decreases the size of the segment and the base pointer remains same. I wasn't sure about the answer and reflected my thoughts upon it -> if it would increase the size of segment then this allocated segment might overlap with another already allocated memory block which would lead to data corruption. Thus a new base pointer is assigned and the previous data is populated in the newly assigned segment.

  3. Structures vs Unions (Differences, Applications, Internal working, padding in structures - gave me 2 structures and asked me what would be the size of each, etc). Dived in deeper and asked why padding is used in structures. I answered in terms of architecture of the processor (32 bit systems -> 4 byte | Processor reads 4 bytes at a time, thus padding maintains a consistency in the memory layout which increases the efficiency of memory access).

  4. Some pointer arithmetic questions and concepts of dangling pointer, void pointer and volatile keyword.

  5. Some quick fire questions on Operating Systems which included race condition, semaphores, and memory management concepts like paging, thrashing, etc.

  6. Followed with discussions on Computer Networking Concepts. Discussed about SSL, Certificates, 3 way handshake, TCP flags, DNS, encryption (public and private key)

  7. The interviewer appreciated my Competitive Programming Profile and told "this certifies your problem solving skills but I would like to see if you could code in the C language as well." Thus gave me a pattern matching string based question. I explained the brute force of time complexity O(n^2). He asked me to code it down in C language. Lastly, he asked me if I could optimize it. I explained him the Rabin-Karp algorithm in brief to which he was satisfied.

The interview ended with me asking him some questions related to one of the Zscaler's Product. The interview lasted around 80 minutes (45-50 minutes for core concepts, 15-20 minutes for the coding question and rest for candidate questions)
I was happy with the interview as I had answered all the questions extensively and with confidence. I successfully cleared this round.

Technical Round 2:

The interviewer was again really pleasant like the previous round and used first 1-2 minutes to ensure I was comfortable.
Each of us gave a quick introduction of ourselves.

The interviewer started with some basic data structures concepts and slowly increased the level. Later discussions included Computer Networking and a Coding Question:

  1. Difference between array and LinkedList based on use-cases.

  2. Asked about binary search and prove the time complexity

  3. Proof (Mathematical) of working of the Hare and Tortoise algo (aka Floyd's cycle-finding algo) for cycle detection in a linked list.

  4. Asked about the internal working of C++ unordered maps to which I answered hashing of keys (considering modulo with some M) and using array of LinkedList to handle collision (hashed keys as array indices) and using the concept of re-hash as the LinkedList size within an array index grows larger. Then the interviewer proceeded with a modification and asked me about the scenario of taking a very small M and not use re-hash and complexity of insert and search limited to O(logn) (the previous approach would lead to a O(n) insertion and search in the worst case. The interviewer was indirectly asking about ordered maps which I hadn't prepared before - the red black tree concept). I step wise constructed the answer of using an array of BSTs (the interviewer was pleased to have a logically constructed concept rather than a mugged up solution)

  5. Extensive and in-depth concepts of computer networking included:

    • Gateways
    • Routing vs Switching
    • MAC address and Network Interface Cards (NICs)
    • ARP (address resolution protocol)
    • How does a computer/node know while routing that it must go to the gateway. As an answer I explained him about IP addresses, subnet masks & subnet ID. If subnet IDs of destination and current node are different, the destination is present in another network and thus at this point the gateway must be used.
    • CIDR (classless inter-domain routing) related IP questions.
    • 4 phase handshaking in SSL handshake
  6. One coding question at the end to be implemented in the C language - implement a custom malloc and free. After the interview I realized it was a standard question. The interviewer also enquired if I had solved this problem before but I hadn't. With a hint or two, I successfully gave him a robust O(1) time complexity solution and coded it down and the interviewer was satisfied.

The interview ended on a happy note with me asking about the work that I would be doing if given an offer.

This round lasted for around 75 minutes (45-50 minutes CS core, 20 minutes for the coding question and rest for candidate questions)

Verdict: Selected (Offer Accepted)

My Thoughts:

  • Always make an extra effort and explain a thing or two more around the concept even if not asked directly. Make sure not to get irrelevant and go off topic.

Compensation offered:

  • Stipend during 6 months internship: INR 50,000 per month + Wifi Reimbursement
  • CTC for full time: INR 28.5 Lacs (14Lacs base + 2 Lacs joining bonus and 15k USD worth ESOPS)
  • Other benefits (apart from CTC) include Relocation, Medical Insurance, Wifi Reimbursement, Free Meals (3x a day and unlimited snacks), Employee Wellness, etc.

Comments (14)