i
Akamai
Technologies
Filter interviews by
Find the lexicographically lowest substring with k 1s in a given string.
Iterate through the string and maintain a sliding window of size k.
Keep track of the count of 1s in the window and update the result if a valid substring is found.
Return the lexicographically lowest substring with k 1s.
Understanding SQL joins and group by clauses is crucial for data aggregation and relational database queries.
Joins combine rows from two or more tables based on a related column. Example: SELECT * FROM table1 JOIN table2 ON table1.id = table2.id.
INNER JOIN returns records with matching values in both tables. Example: SELECT * FROM employees INNER JOIN departments ON employees.dept_id = departments.id.
LEFT JOIN ret...
Implementing all linked list operations from scratch and reversing it.
Start by creating a Node class with data and next pointer
Implement insert, delete, search, and traverse operations
To reverse the linked list, use three pointers to reverse the direction of the links
Make sure to handle edge cases such as empty list and single node list
SQL query to find third highest salary.
Use ORDER BY and LIMIT to get the third highest salary.
Use subquery to avoid duplicates in case of multiple employees having same salary.
Example: SELECT salary FROM employees ORDER BY salary DESC LIMIT 2,1;
Design a scalable microservices architecture for a Twitter-like app with features like tweeting, following, and notifications.
Use microservices architecture to separate concerns: user service, tweet service, notification service.
Implement a database for storing user profiles and tweets, e.g., PostgreSQL for relational data.
Utilize caching (e.g., Redis) for frequently accessed data like user timelines to improve pe...
Program to reverse a singly linked list both recursively and iteratively
Iteratively: Use three pointers to reverse the links between nodes
Recursively: Use a recursive function to reverse the links between nodes
In both approaches, update the head and tail pointers accordingly
Program to find length of longest substring without repeating characters in a string.
Use a sliding window approach to traverse the string
Use a hash set to keep track of unique characters in the current substring
Update the length of longest substring without repeating characters as you traverse the string
Program to reverse the ordering of words in a sentence
Split the sentence into an array of words
Reverse the array
Join the array into a sentence
Swap kth and kth to last element of a singly linked list in one pass without knowing the length of the list.
Traverse the linked list using two pointers, one starting from the head and the other starting from kth node.
When the second pointer reaches the end of the list, the first pointer will be pointing to the kth to last node.
Swap the values of kth and kth to last node.
Handle edge cases such as k being out of bou...
Hashmap has constant time complexity for insertion, deletion, and retrieval, but requires additional space.
Hashmap provides constant time complexity O(1) for insertion, deletion, and retrieval operations on average.
The space complexity of a hashmap is proportional to the number of elements stored in it.
Hashmap uses a hash function to map keys to indices in an underlying array, which allows for efficient lookup.
In ...
I applied via Campus Placement and was interviewed in Jun 2023. There were 4 interview rounds.
2 Coding questions, 1 SQL and a few MCQs.
Find the lexicographically lowest substring with k 1s in a given string.
Iterate through the string and maintain a sliding window of size k.
Keep track of the count of 1s in the window and update the result if a valid substring is found.
Return the lexicographically lowest substring with k 1s.
I applied via Campus Placement and was interviewed in Oct 2022. There were 4 interview rounds.
The coding round had 2 coding+ 1 SQL + 8 mcqs bon OS and networking. I was able to solve all.
To find unique and duplicate elements in an array.
Create two empty arrays, one for unique elements and one for duplicates.
Loop through the array and check if the element is already in the unique array.
If it is, add it to the duplicates array. If not, add it to the unique array.
Return both arrays.
Implementing all linked list operations from scratch and reversing it.
Start by creating a Node class with data and next pointer
Implement insert, delete, search, and traverse operations
To reverse the linked list, use three pointers to reverse the direction of the links
Make sure to handle edge cases such as empty list and single node list
SQL query to find third highest salary.
Use ORDER BY and LIMIT to get the third highest salary.
Use subquery to avoid duplicates in case of multiple employees having same salary.
Example: SELECT salary FROM employees ORDER BY salary DESC LIMIT 2,1;
Inter process communication (IPC) allows processes to communicate with each other and share resources.
Shared memory
Pipes
Sockets
Message queues
Signals
Design a scalable microservices architecture for a Twitter-like app with features like tweeting, following, and notifications.
Use microservices architecture to separate concerns: user service, tweet service, notification service.
Implement a database for storing user profiles and tweets, e.g., PostgreSQL for relational data.
Utilize caching (e.g., Redis) for frequently accessed data like user timelines to improve perform...
I am a passionate software engineer with a strong background in developing scalable and efficient applications.
Proficient in multiple programming languages such as Java, Python, and C++
Experienced in developing web applications using frameworks like Spring and Django
Familiar with database management systems like MySQL and MongoDB
Strong problem-solving and analytical skills
Excellent communication and teamwork abilities
I tend to be overly critical of my own work.
I have a tendency to be too self-critical and strive for perfection.
I often spend more time than necessary on a task to ensure it meets my high standards.
I sometimes struggle with accepting constructive criticism and can take it personally.
I am actively working on improving my ability to recognize and appreciate my own accomplishments.
I would introduce myself to the team by sharing my background, skills, and enthusiasm for software engineering.
Start by sharing your name and a brief overview of your professional background.
Highlight your technical skills and experience in software engineering.
Express your enthusiasm for the field and your eagerness to contribute to the team.
Mention any relevant projects or achievements that demonstrate your abilities...
I applied via Campus Placement and was interviewed before Feb 2023. There were 3 interview rounds.
60 minutes. Questions related to OS, DBMS MCQs.
I applied via Referral
Swap kth and kth to last element of a singly linked list in one pass without knowing the length of the list.
Traverse the linked list using two pointers, one starting from the head and the other starting from kth node.
When the second pointer reaches the end of the list, the first pointer will be pointing to the kth to last node.
Swap the values of kth and kth to last node.
Handle edge cases such as k being out of bounds o...
Program to reverse the ordering of words in a sentence
Split the sentence into an array of words
Reverse the array
Join the array into a sentence
Program to find intersection point of two singly linked lists in O(n)
Traverse both lists and find their lengths
Move the head of the longer list by the difference in lengths
Traverse both lists in parallel until intersection point is found
Return the intersection point
Program to reverse a singly linked list both recursively and iteratively
Iteratively: Use three pointers to reverse the links between nodes
Recursively: Use a recursive function to reverse the links between nodes
In both approaches, update the head and tail pointers accordingly
Find odd weight ball among 12 identical balls using a balance in minimum weighings.
Divide balls into 3 groups of 4 each
Weigh any 2 groups against each other
If both groups weigh the same, the odd ball is in the third group
If one group is heavier, weigh any 2 balls from that group against each other
If they weigh the same, the odd ball is the remaining one
If one ball is heavier, it is the odd ball
Repeat the process with t...
A program to reverse a singly linked list in groups of k using recursion.
Create a recursive function that takes the head of the linked list and the group size as parameters.
If the remaining list has less than k nodes, return the head as it is.
Reverse the first k nodes by recursively calling the function for the next group.
Connect the reversed group to the remaining list.
Return the new head of the reversed list.
Program to find length of longest substring without repeating characters in a string.
Use a sliding window approach to traverse the string
Use a hash set to keep track of unique characters in the current substring
Update the length of longest substring without repeating characters as you traverse the string
Representing date of a month using two cubes with numbers 0-9 on each face
Assign numbers 0-9 on each face of both cubes
Use one cube to represent tens digit and other for ones digit
Rotate cubes to display desired date
Example: Cube 1 - 0, 1, 2, 3, 4, 5; Cube 2 - 0, 1, 2, 6, 7, 8; To represent 23, Cube 1 shows 2 and Cube 2 shows 3
Find the character repeated most number of times in an array of strings.
Create a dictionary to store character count
Iterate through each string and character
Return the character with highest count
Answering a question on tracing output of C/C++ code snippet with pointers and references
Understand the code and identify all pointers and references
Trace the values of each pointer and reference at each step
Follow the flow of the code to determine the final output
Segmentation fault is a type of error that occurs when a program tries to access a memory location that it is not allowed to access.
Segmentation fault is also known as a segfault.
It is a common error in C and C++ programming languages.
It occurs when a program tries to read or write to a memory location that it does not have permission to access.
This can happen when a program tries to access an uninitialized pointer or ...
BFS and DFS are graph traversal algorithms used to search for nodes in a graph.
BFS stands for Breadth First Search and explores all the nodes at the current depth before moving to the next level.
DFS stands for Depth First Search and explores as far as possible along each branch before backtracking.
BFS uses a queue data structure while DFS uses a stack or recursion.
BFS is useful for finding the shortest path in an unwei...
I would prefer Depth First Search (DFS) traversal for finding a cycle in a graph.
DFS is better suited for finding cycles in a graph as it explores deeper into the graph before backtracking.
DFS can detect a cycle in a graph in O(V+E) time complexity.
DFS can be implemented using recursion or a stack.
Breadth First Search (BFS) can also be used to find cycles but it is less efficient than DFS.
In DFS, we can keep track of v...
Hashmap has constant time complexity for insertion, deletion, and retrieval, but requires additional space.
Hashmap provides constant time complexity O(1) for insertion, deletion, and retrieval operations on average.
The space complexity of a hashmap is proportional to the number of elements stored in it.
Hashmap uses a hash function to map keys to indices in an underlying array, which allows for efficient lookup.
In case ...
The data structure behind a login page should store user credentials securely.
Use a database to store user information
Hash and salt passwords for security
Include fields for username, email, password, and possibly additional information
Consider implementing two-factor authentication
Top trending discussions
I am a software engineer with experience in developing web applications and mobile apps.
Proficient in programming languages such as Java, Python, and JavaScript
Experience in developing RESTful APIs and integrating third-party APIs
Familiarity with front-end frameworks such as React and Angular
Strong understanding of database management systems such as MySQL and MongoDB
Passionate about learning new technologies and keepi...
Software industry offers endless opportunities for innovation and growth.
Software industry is constantly evolving and offers opportunities to work on cutting-edge technologies.
It provides a platform to solve complex problems and create innovative solutions.
The demand for software engineers is high and the industry offers competitive salaries.
Core industries may have limited scope for growth and innovation compared to s...
Program to print a given string in reverse
Create a character array of the given string
Loop through the array from end to start and print each character
Mux is a device that selects one of several input signals and forwards the selected input into a single output line.
Mux stands for Multiplexer.
It is used in digital circuits to select one of several input signals and forward the selected input into a single output line.
It is used in communication systems to combine multiple signals into a single channel for transmission.
It is used in video and audio systems to switch b...
DeMux is short for Demultiplexer. It is a digital circuit that takes one input and directs it to multiple outputs.
DeMux is used in digital communication systems to separate signals that have been combined for transmission.
It is also used in computer memory systems to select a specific memory location.
DeMux is used in video and audio systems to separate different channels of information.
It is used in automation systems ...
Decoder converts encoded data into a readable format while Demux separates a single input into multiple outputs.
Decoder is used to decode encoded data such as binary data into a readable format.
Demux is used to separate a single input into multiple outputs based on the control signals.
Decoder is a combinational circuit while Demux is a sequential circuit.
Decoder is used in applications such as remote controls, computer...
Amadeus Labs is a leading technology company in the travel industry.
Amadeus Labs provides opportunities to work on cutting-edge technologies.
The company has a strong focus on innovation and research.
Amadeus Labs has a global presence and offers a diverse and inclusive work environment.
Working at Amadeus Labs provides the opportunity to make a real impact on the travel industry.
The company values work-life balance and o...
Yes, I am comfortable working for Testing.
I have experience in testing and understand its importance in software development.
I am willing to learn new testing techniques and tools.
I am comfortable working with testing teams and collaborating with them to ensure quality software.
I understand the importance of testing in ensuring customer satisfaction and reducing costs.
Examples: I have experience in manual and automated...
I have the necessary skills and experience to excel in the developer role.
I have a degree in computer science and have completed multiple coding projects.
I am proficient in programming languages such as Java, Python, and C++.
I have experience working with databases and web development frameworks.
I am a quick learner and enjoy solving complex problems.
I am a team player and have collaborated with other developers on var...
A generic swap function swaps two values of any data type.
The function should take two parameters of any data type.
Use a temporary variable to store the value of one parameter.
Assign the value of the second parameter to the first parameter.
Assign the value of the temporary variable to the second parameter.
Search for an element in a rotated sorted linked list.
Find the pivot point where the list is rotated.
Divide the list into two sublists based on the pivot point.
Perform binary search on the appropriate sublist.
Handle edge cases such as empty list and list with only one element.
Search an element in a rotated sorted array
Find the pivot point where the array is rotated
Divide the array into two sub-arrays based on pivot point
Perform binary search on the appropriate sub-array
Repeat until element is found or sub-array size is 1
Given a Sudoku board, find possible numbers for an empty cell.
Iterate through empty cells and check possible numbers using row, column, and box constraints.
Use a set to keep track of possible numbers for each empty cell.
Return the set of possible numbers for the given empty cell.
Find integer average of 4 unsigned integers without typecasting
Add all the integers and divide by 4
Use bit shifting to divide by 4
Handle overflow by using long long data type
Use unsigned int data type for input
Code to identify 32 bit or 64 bit architecture of a processor
Check if the operating system is 32 bit or 64 bit
If OS is 32 bit, processor is 32 bit
If OS is 64 bit, check if processor supports 64 bit architecture
Use CPUID instruction to check if processor supports 64 bit architecture
Convert binary number to base 64 integer
Divide the binary number into groups of 6 bits
Convert each group of 6 bits to decimal
Map the decimal value to the corresponding base 64 character
Concatenate the base 64 characters to form the final integer
Creating test cases for random scenarios ensures software reliability and robustness through diverse input validation.
Identify edge cases: Test with minimum and maximum input values, e.g., an empty array vs. a large array.
Use random data: Generate random inputs to simulate real-world usage, e.g., random user names or passwords.
Test invalid inputs: Ensure the system handles unexpected inputs gracefully, e.g., negative n...
I appeared for an interview before Mar 2021.
Round duration - 60 minutes
Round difficulty - Easy
Technical interview round with questions based on DSA and OOPS.
Use double pointer to dynamically allocate memory for array of strings in C.
Declare a double pointer to hold the 2D array of strings.
Allocate memory for the rows first using malloc.
Then allocate memory for each string in the row using malloc.
Assign values to the strings in the array.
Example: char **array = malloc(rows * sizeof(char *));
Example: array[i] = malloc(strlen(str) + 1); strcpy(array[i], str);
Virtual functions in C++ are functions that can be overridden in derived classes, allowing for polymorphic behavior.
Virtual functions are declared using the 'virtual' keyword in the base class.
They are used to achieve runtime polymorphism in C++.
Derived classes can override the virtual functions defined in the base class.
Example: class Base { public: virtual void display() { cout << 'Base class dis...
Virtual base classes are classes that are inherited virtually to avoid multiple instances of the same base class in a derived class hierarchy.
Virtual base classes are used in multiple inheritance to prevent the Diamond Problem.
They are declared with the 'virtual' keyword in the base class.
When a class inherits a virtual base class, the most derived class is responsible for initializing the virtual base class.
Example: c...
Round duration - 60 minutes
Round difficulty - Easy
Technical interview round with questions based on OS/Networking etc.
The system call that creates a separate connection is fork()
fork() is a system call in Unix-like operating systems that creates a new process by duplicating the existing process
The new process created by fork() is called the child process, while the original process is called the parent process
fork() is commonly used in network programming to create separate connections for handling multiple clients
epoll_wait() system call waits for events on an epoll instance
Used in Linux for I/O event notification
Blocks until one or more file descriptors become ready
Returns the number of file descriptors ready for I/O operations
Different protocols used in the transport layer include TCP, UDP, SCTP, and DCCP.
TCP (Transmission Control Protocol) - reliable, connection-oriented protocol used for most internet communication
UDP (User Datagram Protocol) - connectionless protocol used for applications where speed is more important than reliability
SCTP (Stream Control Transmission Protocol) - supports multiple streams of data, used for telecommunicati...
TCP is a connection-oriented protocol that ensures reliable data delivery, while UDP is a connectionless protocol that focuses on speed.
TCP is reliable and ensures data delivery by establishing a connection before sending data.
UDP is faster but less reliable as it does not establish a connection before sending data.
TCP is used for applications that require high reliability and error correction, such as web browsing and...
Round duration - 60 minutes
Round difficulty - Easy
Technical interview round with questions based on Networking etc.
ICMP is a protocol used for error reporting, diagnostics, and network management in IP networks.
ICMP is used to report errors in packet delivery
It is used for network diagnostics and troubleshooting
ICMP messages are encapsulated within IP packets
Examples include ping (echo request/reply) and traceroute
TCP supports four types of connection release: active close, passive close, simultaneous close, and abortive close.
Active close: Client initiates the connection release process by sending a FIN packet.
Passive close: Server initiates the connection release process by sending a FIN packet.
Simultaneous close: Both client and server send FIN packets to each other simultaneously.
Abortive close: Connection is terminated abru...
The MAC layer uses protocols like CSMA/CA, CSMA/CD, and TDMA to manage access to the network.
CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) is used in wireless networks to avoid collisions.
CSMA/CD (Carrier Sense Multiple Access with Collision Detection) is used in wired networks to detect and handle collisions.
TDMA (Time Division Multiple Access) is used in networks where devices are assigned specific...
ARP (Address Resolution Protocol) is a protocol used to map an IP address to a MAC address in a local network.
ARP is used to resolve IP addresses to MAC addresses in a local network.
It operates at the data link layer of the OSI model.
ARP requests are broadcasted to all devices on the network.
Example: When a device wants to communicate with another device on the same network, it uses ARP to find the MAC address correspo...
Tip 1 : Must do Previously asked Interview as well as Online Test Questions.
Tip 2 : Go through all the previous interview experiences from Codestudio and Leetcode.
Tip 3 : Do at-least 2 good projects and you must know every bit of them.
Tip 1 : Have at-least 2 good projects explained in short with all important points covered.
Tip 2 : Every skill must be mentioned.
Tip 3 : Focus on skills, projects and experiences more.
AVL tree balance checking ensures that the tree maintains its height-balanced property after insertions and deletions.
An AVL tree is a self-balancing binary search tree.
The balance factor (BF) of a node is defined as the height of the left subtree minus the height of the right subtree.
A node is considered balanced if its BF is -1, 0, or +1.
To check balance, recursively calculate the height of left and right subtrees fo...
Find median of 2 sorted arrays in O(log N) time complexity and O(1) space complexity
Use binary search to find the partition point in both arrays
Calculate the median based on the partition point and array sizes
Adjust the partition points based on the median value
Repeat until the partition points are at the median
Handle edge cases such as empty arrays and uneven array sizes
Anagram of strings in O(1) space complexity
Use a fixed size array of integers to store the frequency of characters in the first string
Iterate through the second string and decrement the frequency of each character in the array
If all the frequencies are zero, then the strings are anagrams
Return true or false accordingly
Level order traversal of a tree using Queue
Create a queue and add the root node to it
While the queue is not empty, remove the front node and print its value
Add the left and right child nodes of the removed node to the queue
Repeat until the queue is empty
Reverse level order traversal of a tree using Queue
Create a queue and push the root node into it
While the queue is not empty, pop the front node and push its children into the queue
Add the popped node to a stack
Once the queue is empty, pop elements from the stack and print them
BFS and DFS are graph traversal algorithms. BFS explores nodes level by level while DFS explores nodes depth by depth.
BFS uses a queue while DFS uses a stack or recursion.
BFS is optimal for finding shortest path while DFS is optimal for finding a path between two nodes.
BFS requires more memory as it stores all the nodes at each level while DFS requires less memory.
BFS can be used to find connected components while DFS ...
Check if parentheses in a string are balanced using a stack-based approach.
Use a stack to track opening parentheses: '(', '{', '['.
For each closing parenthesis: check if it matches the top of the stack.
If the stack is empty at the end, parentheses are balanced.
Example: '((){})' is balanced, but '((())' is not.
Find product of each element of an array except that element in O(N) time complexity without using / operation
Use prefix and suffix products
Multiply prefix and suffix products for each element to get the final product
Handle edge cases where array has 0 or 1 element separately
Recursively delete a linked list
Create a recursive function that takes the head of the linked list as input
Base case: if the head is null, return
Recursively call the function with the next node as input
Delete the current node
Recursively delete a linked list from the end.
Start from the head and recursively traverse to the end of the list.
Delete the last node and set the second last node's next pointer to null.
Repeat until the entire list is deleted.
Use a recursive function to implement the deletion process.
Recursively delete a tree by deleting all its child nodes and then the parent node.
Start from the leaf nodes and delete them first.
Then move up to the parent nodes and delete them.
Repeat until the root node is deleted.
Use post-order traversal to ensure child nodes are deleted before parent nodes.
Recursively delete elements from the end of an array.
Create a recursive function that removes the last element of the array.
Call the function recursively until the desired number of elements are removed.
Handle edge cases such as empty arrays and removing more elements than the array contains.
Floyd Warshall finds shortest path between all pairs of vertices while Djikstra finds shortest path from a single source.
Floyd Warshall is used for dense graphs while Djikstra is used for sparse graphs.
Floyd Warshall has a time complexity of O(n^3) while Djikstra has a time complexity of O((n+m)logn).
Floyd Warshall can handle negative edge weights while Djikstra cannot.
Floyd Warshall can detect negative cycles while Dj...
There is no known algorithm to find shortest path in 2-D space in O(log N) time.
The best known algorithm for finding shortest path in 2-D space is Dijkstra's algorithm which has a time complexity of O(N^2).
Other algorithms like A* and Bellman-Ford have better time complexity but still not O(log N).
If the points are on a grid, Lee algorithm can be used which has a time complexity of O(N).
Design a system for putting newspapers using classes and functions
Create a Newspaper class with attributes like title, date, and content
Create a Publisher class with methods to publish and distribute newspapers
Create a Subscriber class with methods to subscribe and receive newspapers
Use inheritance to create different types of newspapers like daily, weekly, etc.
Implement a database to store newspaper information and ha...
I believe practical experience is more valuable than higher studies.
I have gained valuable experience through internships and projects.
I prefer hands-on learning and problem-solving over theoretical knowledge.
I am constantly learning and improving my skills through online courses and workshops.
Some of the top questions asked at the Akamai Technologies Software Engineer interview -
based on 2 interview experiences
Difficulty level
Duration
based on 21 reviews
Rating in categories
Cloud Support Engineer
135
salaries
| ₹14.7 L/yr - ₹25.9 L/yr |
Senior Software Engineer
134
salaries
| ₹29.6 L/yr - ₹45 L/yr |
Software Engineer2
101
salaries
| ₹13.4 L/yr - ₹26 L/yr |
Software Engineer
95
salaries
| ₹12.5 L/yr - ₹22.5 L/yr |
Platform Operations Engineer
72
salaries
| ₹5.5 L/yr - ₹14.1 L/yr |
24/7 Customer
Thomson Reuters
Oracle Cerner
Adobe