Ciena | India | Intern | On Campus | Rejected

ciena logo
ciena
InternIndiaRejected
November 26, 20242 reads

Summary

I interviewed for an Intern position at Ciena in India in November '24. The process involved an online assessment followed by two face-to-face technical rounds. Despite performing well in the second round, I was ultimately rejected from the program.

Full Experience

I interviewed for an Intern position at Ciena during their campus placements in November '24. The internship was for 6 months, from January to June 2025, with a stipend of 35k for B.Tech students and 40k for Masters students.

First Round: Online Assessment

This round had three sections:
  1. Coding Round: 25 Minutes
    • Q1. I was asked to check if a number's binary representation is a palindrome. This question was exclusively in C, with no other language options.
    • Q2. The second question involved an arrangement of students with given heights. I needed to print the indexes of students who were not standing in increasing height order. This question allowed C++.
  2. Programming Languages Round: 30 Minutes This was an MCQ round focused on syntax. Many confusing pointer-based questions were asked, covering references, pointer arithmetic, and function pointers—basically, deep questions about C language pointer syntax.
  3. Aptitude Round: This section consisted of 5 basic aptitude questions that high school students could solve.

Face to Face Interviews

Round 1:

I started with a self-introduction. The first technical question was to write the syntax of a void function pointer that takes two integers as input and then assign this function pointer to a real function.
Other questions included:
  1. A malloc syntax-related question, asking what malloc returns.
  2. What are static variables, and the difference between static and global variables.
  3. If a struct stores 2 integers and 1 char, how much memory does it occupy? Follow-up: Where is that padding stored internally?
  4. How to find the middle of a Linked List? Follow-up: If there's an even number of nodes, what would the code return, and how can we configure it?
  5. How to avoid deadlock, specifically mentioning the 4 conditions.
  6. The difference between struct and union.
  7. To reverse the words in a sentence, and I had to write the code on paper.
  8. I was asked to explain one of my projects in detail.
  9. The difference between semaphores and mutexes.
  10. The difference between declaration, initialization, and definition for a variable.
I really struggled with many pointer syntax questions, especially regarding the placement of & and *, and felt nervous. At one point, the interviewer asked what topic I was confident in, and I mentioned data structures and algorithms. He then asked for the difference between struct and union, which I couldn't answer, and he commented, 'but these are data structures ;('.

Round 2: (20 out of 35 students shortlisted)

This round also started with a basic introduction.
  1. What would happen if malloc(0) is used?
  2. Write the syntax to declare an array of size 10 that stores pointers to integers, and then declare a pointer to an array of size 10 that stores integers.
  3. Given a syntax snippet:
    int x = 10;
    int *ptr = x;
    ++(*ptr);
    
    I was asked what *ptr would return.
  4. To find a duplicate element in an array containing numbers 1 to n, where exactly one element has a duplicate. I initially started writing C++ code but was asked to switch to C. I then wrote the standard slow pointer and fast pointer code for this problem. I had to explain in detail how the code works, including when the cycle is detected and then when the duplicate element would be detected. I was also asked if the code would run in O(n) time. I initially said yes, but the interviewer questioned if I was sure, suggesting that pointers might be pointing to indexes randomly, which led me to change my answer, admitting the loop might run more than n times.
  5. Puzzle: If there are 4 jars with infinite 10g balls and 1 jar with infinite 9g balls, how would I detect the defective jar if I could only weigh once?
  6. Why do we use mutexes?
  7. Discuss static variables. Have I ever heard of the volatile keyword, why do we use it, and how exactly does the compiler 'optimize' a variable if we don't use volatile?
  8. There was a discussion on whether I had studied compiler design or written assembly code. I talked about my knowledge of the 8086 processor.
I answered most of the questions and puzzles in this round, although I got stuck several times and confidently gave wrong answers to some pointer-based questions. I felt the second interview went much better than the first.

Result: 10 out of 20 students were selected, but I was rejected. Overall, the experience was good, and the interviewers were polite and friendly.

Interview Questions (19)

Q1
Binary Representation Palindrome
Data Structures & Algorithms

Check if a number's binary representation is a palindrome.

Q2
Students Incorrect Height Order
Data Structures & Algorithms

Given students' heights and their current arrangement, identify and print the indexes of students who are not standing in increasing height order.

Q3
C Function Pointer Syntax
Other

Write the C syntax for a void function pointer that accepts two integer inputs and demonstrate how to assign it to a real function.

Q4
C Malloc Function Details
Other

Explain the malloc syntax and describe what type of value malloc returns.

Q5
Static vs Global Variables
Other

Define static variables and explain the differences between static and global variables in C.

Q6
C Struct Memory Layout and Padding
Other

If a C struct contains two integers and one character, calculate the memory it occupies. Follow-up: Where is the memory padding stored internally?

Q7
Find Middle of Linked List
Data Structures & Algorithms

Implement a method to find the middle of a linked list. Follow-up: If the linked list has an even number of nodes, what would the current code return, and how can it be configured to handle this?

Q8
Deadlock Avoidance Conditions
System Design

Explain how to avoid deadlocks by describing the four necessary conditions for deadlock.

Q9
C Struct vs Union
Other

Explain the differences between struct and union in C.

Q10
Reverse Words in a Sentence
Data Structures & Algorithms

Write code to reverse the order of words in a given sentence.

Q11
Semaphores vs Mutex
System Design

Explain the difference between semaphores and mutexes.

Q12
Declaration, Initialization, Definition
Other

Explain the differences between declaration, initialization, and definition for a variable.

Q13
Malloc(0) Behavior
Other

Describe what happens if malloc(0) is called.

Q14
C Pointer Array Declarations
Other

Write the C syntax to declare an array of size 10 that stores pointers to integers, and then declare a pointer to an array of size 10 that stores integers.

Q15
C Pointer Dereference & Increment
Other

Given the C code snippet: int x = 10; int *ptr = x; ++(*ptr); , what would *ptr return?

Q16
Find Duplicate in 1 to N Array
Data Structures & Algorithms

Given an array of n+1 integers where each integer is between 1 and n (inclusive) and there is exactly one duplicate element, find the duplicate. Discuss the time complexity and explain the slow and fast pointer approach (Floyd's Tortoise and Hare).

Q17
Defective Jar Puzzle (One Weighing)
Other

You have 5 jars, four containing infinite 10g balls and one containing infinite 9g balls. With only one weighing, how do you identify the jar with the 9g balls?

Q18
Purpose of Mutex
System Design

Explain the purpose and use cases of mutexes.

Q19
Volatile Keyword and Compiler Optimization
Other

Discuss static variables. Explain the volatile keyword, its purpose, and how a compiler might optimize a variable if the volatile keyword is not used.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!