zscaler logo

Zscaler Interviews

2 experiences6 reads22 questions100% success rate
Zscaler | Internship + FTE | Software Developer C/C++ | On-Campus | Bangalore [Offer Accepted]
zscaler logo
Zscaler
Software Developer C/C++bangaloreOffer
February 10, 20243 reads

Summary

I, as a fresh graduate, successfully navigated Zscaler's on-campus placement for a Software Developer C/C++ role in Bangalore, securing an offer after a rigorous process involving online assessments and two technical rounds focused on DSA, C/C++ core concepts, OS, and Networking.

Full Experience

As a fresh graduate with a B.Tech in Electronics and Communication Engineering from a Tier 1 college and prior SDE internship experience, I pursued an on-campus placement opportunity at Zscaler for a Software Developer C/C++ role in Bangalore. The entire process concluded with an offer on November 16th, 2023, which I happily accepted.

Online Assessment (Online Coding Round)

The online assessment consisted of three coding questions of medium to hard difficulty, focused on problem-solving and DSA, with a total time of 90 minutes. The topics revolved around BFS (Graphs) + Binary Search, DP on Trees (which I solved using centroid of a tree), and Segment Tree + Binary Search. I successfully solved two out of the three questions (the first and second ones) but ran out of time for the third. Shortlisted students were announced approximately 40-50 days after this round.

Technical Round 1

The interviewer started warmly, asking about my breakfast before quick introductions. I rated myself 9.5 in C++ and 8.5 in C out of 10. The discussion then dived into core concepts of C, Operating Systems, and Computer Networking.

  • We extensively covered different Storage Classes (Auto, Extern, Static, Register), discussing their differences, scope, life, and storage locations (Stack, Data Segment, CPU register). I went an extra step to provide coding applications for each, explaining, for instance, that the compiler treats int foo(int a); as extern int foo(int a); and how static limits a function's access to a single file.
  • We moved on to Dynamic Memory Allocation, covering its types, syntax, differences, and applications, including a discussion on stack and heap memory segments. The interviewer probed deeper, asking about the internal working of realloc – specifically, whether it assigns a new memory address or just changes the segment size at the same base pointer. I wasn't entirely sure but reasoned that assigning a new address and copying data would prevent overlaps and data corruption, which satisfied him.
  • We discussed Structures vs. Unions, their differences, applications, internal working, and padding in structures. I was given two structures to determine their sizes. When asked why padding is used, I explained it in terms of processor architecture (e.g., 32-bit systems reading 4 bytes at a time) to maintain memory layout consistency and increase access efficiency.
  • I also answered questions on pointer arithmetic and concepts like dangling pointers, void pointers, and the volatile keyword.
  • Quick-fire questions on Operating Systems covered race conditions, semaphores, and memory management concepts such as paging and thrashing.
  • We then discussed Computer Networking Concepts, including SSL, Certificates, the 3-way handshake, TCP flags, DNS, and encryption (public and private key).
  • The interviewer appreciated my Competitive Programming profile but wanted to assess my C coding skills, so he gave me a pattern matching string-based question. I first explained the O(N^2) brute-force approach and coded it in C. When asked for optimization, I briefly explained the Rabin-Karp algorithm, which he was satisfied with.

The interview concluded with me asking questions about Zscaler's products and lasted about 80 minutes. I felt confident about my performance, having answered all questions extensively. I successfully cleared this round.

Technical Round 2

This round also started pleasantly with introductions. The interviewer began with basic data structure concepts and gradually increased the complexity, later including Computer Networking and a coding question.

  • I explained the difference between arrays and linked lists based on their use-cases.
  • I was asked about binary search and tasked with proving its time complexity.
  • I provided a mathematical proof for the working of the Hare and Tortoise algorithm (Floyd's cycle-finding algorithm) for cycle detection in a linked list.
  • We discussed the internal working of C++ unordered_maps. I explained hashing keys (using modulo M), collision resolution with an array of linked lists, and rehashing. The interviewer then posed a modification: what if M is very small, rehashing is not used, and insertion/search complexity is limited to O(log N)? This was an indirect hint towards ordered maps (Red-Black Trees). I logically constructed a solution using an array of BSTs, which pleased the interviewer more than a memorized solution.
  • Extensive and in-depth discussions on Computer Networking included Gateways, Routing vs. Switching, MAC address, Network Interface Cards (NICs), and ARP. I explained how a computer determines it must go to a gateway by comparing subnet IDs based on IP addresses, subnet masks. We also covered CIDR-related IP questions and the 4-phase handshaking in an SSL handshake.
  • Finally, a coding question required me to implement a custom malloc and free in C. I later realized it's a standard problem. Despite not having solved it before, with a couple of hints, I successfully provided and coded a robust O(1) time complexity solution, which satisfied the interviewer.

The interview ended positively with me asking about the potential work. This round lasted about 75 minutes. I was selected for the role.

My Thoughts

My key takeaway from this experience is to always make an extra effort to elaborate on concepts, even if not directly asked, ensuring relevance and staying on 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.

Interview Questions (13)

Q1
C Storage Classes and their Applications
Other

Discuss different storage classes in C (Auto, Extern, Static, Register) including their differences, scope, life, and storage location (Stack, Data Segment, CPU register), and practical applications in coding practices. For example, explain why static is used to limit function access to a single file, and that the compiler treats int foo(int a); as extern int foo(int a);.

Q2
Internal Working of `realloc`
Other

Discuss dynamic memory allocation (types, syntax, differences, stack vs. heap). Specifically, explain the internal working of realloc: whether it assigns a new memory address to the base pointer or simply increases/decreases the size of the segment while keeping the base pointer the same. Explain the implications of each scenario, such as potential data corruption if overlapping with other allocated blocks.

Q3
C Structures vs. Unions and Memory Padding
Other

Explain the differences, applications, and internal working of Structures and Unions in C. Given two structures, determine the size of each. Elaborate on why padding is used in structures, relating it to processor architecture (e.g., 32-bit systems reading 4 bytes at a time) and how it maintains memory layout consistency for efficient access.

Q4
C Pointers: Arithmetic, Dangling, Void, Volatile
Other

Discuss pointer arithmetic concepts, along with explanations of dangling pointers, void pointers, and the volatile keyword in C.

Q5
Operating System Concepts: Race Conditions, Semaphores, Memory Management
Other

Explain Operating System concepts such as race conditions, semaphores, and memory management techniques including paging and thrashing.

Q6
Computer Networking Fundamentals
Other

Discuss fundamental Computer Networking concepts including SSL, Certificates, the TCP 3-way handshake, TCP flags, DNS, and encryption (public and private key).

Q7
String Pattern Matching (Rabin-Karp)
Data Structures & AlgorithmsMedium

Implement a string pattern matching algorithm in C. First, describe the brute force approach with O(N^2) time complexity. Then, explain how to optimize it using an algorithm like Rabin-Karp for better performance.

Q8
Array vs. Linked List Use Cases
Data Structures & AlgorithmsEasy

Explain the key differences between arrays and linked lists, focusing on their respective use-cases where each data structure would be more advantageous.

Q9
Binary Search Time Complexity Proof
Data Structures & AlgorithmsEasy

Explain the binary search algorithm and provide a mathematical proof for its time complexity.

Q10
Mathematical Proof of Floyd's Cycle-Finding Algorithm
Data Structures & AlgorithmsMedium

Provide a mathematical proof for the working of the Hare and Tortoise algorithm (Floyd's cycle-finding algorithm) for detecting cycles in a linked list.

Q11
C++ Unordered Maps Internal Working and Ordered Map Simulation
Data Structures & AlgorithmsHard

Explain the internal working of C++ unordered_maps, including key hashing (e.g., modulo M), collision handling (e.g., array of linked lists), and rehashing. Then, consider a modified scenario where a very small M is used without rehashing, and the complexity of insertion and search is limited to O(log N). Explain how to achieve this, implicitly leading to concepts similar to ordered_maps or Red-Black Trees.

Q12
Advanced Computer Networking Concepts
Other

Discuss in-depth computer networking concepts: Gateways, Routing vs. Switching, MAC address, Network Interface Cards (NICs), ARP (Address Resolution Protocol). Explain how a computer determines to route traffic to a gateway (based on IP addresses, subnet masks, and subnet IDs). Address CIDR (Classless Inter-Domain Routing) related IP questions and the 4-phase handshaking in an SSL handshake.

Q13
Implement Custom `malloc` and `free`
Data Structures & AlgorithmsHard

Implement custom versions of malloc and free functions in C. Aim for a robust solution with O(1) time complexity.

ZSCALER | UI DEVELOPER | INTERNSHIP + FTE | SELECTED
zscaler logo
Zscaler
UI Developer (Internship + FTE)Offer
November 19, 20233 reads

Summary

I successfully navigated an on-campus interview process with Zscaler for a UI Developer (Internship + FTE) role. The multi-stage process took approximately 8-10 days, covering coding, technical discussions, and HR, ultimately leading to an offer.

Full Experience

My Zscaler Interview Journey: UI Developer (Internship + FTE)

I participated in an on-campus opportunity for a UI Developer role, which included both an internship and a full-time offer. The entire interview process was quite extensive, unfolding over approximately 8-10 days.

Round 1: Coding Round

This round was about 2 hours long. It started with several MCQs related to HTML, CSS, and JavaScript. Following the MCQs, I faced three coding questions. One specific question involved DOM manipulation, where I needed to pass several test cases. I managed to solve all questions, though one test case in the DOM manipulation problem remained elusive.

After about a week, the results were announced, and I was thrilled to be shortlisted for the subsequent rounds.

Round 2: Technical Round

This round began with my introduction, followed by a detailed discussion about my previous internships and projects. The interviewer then shifted focus to HTML and CSS, and later delved deeply into JavaScript. We discussed how JavaScript works internally, its execution model, and many other intricate details. He asked me to write a JavaScript Promise, and then cross-questioned me extensively about its implementation and asynchronous programming concepts. Towards the end, he posed an easy DSA question: remove duplicate elements in an array. He preferred the solution in JavaScript, but since I wasn't well-versed in DSA using JavaScript, I explained different approaches in C++. He seemed satisfied and then proceeded to explain the JavaScript implementation to me.

Round 3: Technical Round

Right after my introduction, this round quickly turned into a rapid-fire session. The interviewer barraged me with numerous questions on React, CSS, and JavaScript. I recall questions about Error Boundaries in React, Polyfilling in JavaScript, Debouncing, the difference between null and undefined, and local and session storage. Finally, he shared a HackerRank CodePair link containing pre-written React code and asked me to make specific modifications, which I successfully completed.

Round 4: Technical + HR Round

This was the easiest round, led by a manager. He started by explaining the company and the role, followed by my introduction. The discussion then revolved around my internship experience; since I had worked in a backend team, he was keen to understand my motivation for applying to a frontend role. This discussion lasted for a while. He also asked me to elaborate on a project I worked on during my internship. Subsequently, he touched upon the basics of HTML, CSS, ReactJS, and JavaScript. The round concluded in about 40 minutes.

About 4-5 days later, a list of selected students was shared, and I was delighted to find my name on it.

Keep Working Hard!!!

Interview Questions (9)

Q1
DOM Manipulation Coding Challenge
Data Structures & Algorithms

In the first coding round, I was presented with a DOM manipulation question that required passing several test cases. I was able to solve most of it, though one test case failed.

Q2
JavaScript Promise Implementation and Async Programming
Other

The interviewer asked me to write a JavaScript Promise and then extensively cross-questioned me about its implementation and the broader concepts of asynchronous programming in JavaScript.

Q3
Remove Duplicates from Array
Data Structures & AlgorithmsEasy

I was given a DSA question to remove duplicate elements from an array. Although the interviewer wanted the solution in JavaScript, I explained different approaches in C++ and he seemed satisfied. He then explained the JavaScript code to me.

Q4
React Error Boundaries
Other

During a rapid-fire technical round, I was asked about Error Boundaries in React.

Q5
JavaScript Polyfilling
Other

During a rapid-fire technical round, I was asked about Polyfilling in JavaScript.

Q6
Debouncing in JavaScript
Other

During a rapid-fire technical round, I was asked about Debouncing.

Q7
Difference between null and undefined in JavaScript
Other

During a rapid-fire technical round, I was asked about the difference between null and undefined in JavaScript.

Q8
Local Storage vs. Session Storage
Other

During a rapid-fire technical round, I was asked about the differences between local and session storage.

Q9
React Code Modification Challenge
Other

I was given a HackerRank CodePair link with existing React code and tasked with making certain modifications to it, which I successfully completed.

Have a Zscaler Interview Experience to Share?

Help other candidates by sharing your interview experience. Your insights could make the difference for someone preparing for their dream job at Zscaler.