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.
There was only one written round after ppt presentation. It was pure technical based paper consisting of C, java, Data structures, networking and operating system.
There were around 60 questions to be done in one hour. All questions were easy but conceptual and little bit tricky.
1. In C : Most of the questions were based on bits manipulation and string and union.
2. In Data structure : Questions on tree , heap, red black tree and balanced tree and complexity.
3. In Operating System : It was really conceptual. Most of the questions were on virtual memory concept and scheduling and semaphore.
4. Networking : Questions on layers and their protocols. Numerical that needed transmission ,propagation and bandwidth formula. Some general conceptual question including switch, hub and gateway.
I attempted every section since sectional cutoff was there. I didn’t attempt any question that I was not sure for, since there was negative marking. I also didn’t attempt any numerical. So, attempt each section such that you can clear cut off. No need to attempt all questions of each section.
After written test , only 4 from Mca and 4 from Mtech were selected for next round.
It was also pure technical round. Interview started just after result was declared. Since there was only two panels, It was taking time.
If you are given an array {1, 1, 0, 0, 1} then you will have to return the count of maximum one’s you can obtain by flipping anyone chosen sub-array at most once, so here you will clearly choose sub-array from the index 2 to 3 and then flip it's bits. So, the final array comes out to be {1, 1, 1, 1, 1} which contains five ones and so you will return 5.
Property of XOR can be used to solve this problem. 1^0 = 1 and 1^1 = 0
First, we calculate the number of digits in the given number using log.
Next, generate a number with digits equal to the digits in the given number and all bits set to 1.
The last step is to take the xor of the given number with the generated number.
The time complexity of this solution is O(log n).
Do not print anything, just return the number of set bits in the binary representation of all integers between 1 and ‘N’.
The direct approach would be to loop through all bits in an integer, check if a bit is set and if it is, then increment the set bit count.
Time Complexity: Θ(logn) (Theta of logn)
Auxiliary Space: O(1)
Brian Kernighan’s Algorithm can also be used here.
This algorithm is based on the idea that subtracting 1 from a decimal number flips all the bits after the rightmost set bit(which is 1) including the rightmost set bit.
For example :
10 in binary is 00001010
9 in binary is 00001001
8 in binary is 00001000
So if we subtract a number by 1 and do it bitwise & with itself (n & (n-1)), we unset the rightmost set bit. If we do n & (n-1) in a loop and count the number of times the loop executes, we get the set bit count.
The number of times it loops is equal to the number of set bits in a given integer.
Algorithm :
1 Initialize count: = 0
2 If integer n is not zero
(a) Do bitwise & with (n-1) and assign the value back to n
n: = n&(n-1)
(b) Increment count by 1
(c) go to step 2
3 Else return count
What is NAT and what are its functions?
NAT stands for network address translation. It’s a way to map multiple local private addresses to a public one before transferring the information. Organizations that want multiple devices to employ a single IP address use NAT, as do most home routers.
The functions of NAT are −
Address translation for data transfer
The border router is configured for NAT. The border router has two parts
Local interface
Global interface.
When the packets are transmitted from local host to another host in another network, then the packets are moved from local network to global network. Then, the NAT process of the border router converts the local IP address of the transmitted packet to a global IP address. When that packet moves from global network to local network, then again the global IP is converted to local IP and the packet reaches the local host of that network.
Security in IP addresses
NAT provides privacy of the device IP addresses by keeping them hidden when traffic flows through the network. Using the IP masquerading process NAT hides the device IP addresses.
Eliminates address renumbering
It eliminates the address renumbering, when a network evolves.
Firewall security
It has important applications in firewall security, by conserving the number of public addresses within an organization along with strict control over accessing resources at both sides of the firewall.
What is VLAN?
VLAN is a custom network which is created from one or more local area networks. It enables a group of devices available in multiple networks to be combined into one logical network. The result becomes a virtual LAN that is administered like a physical LAN. The full form of VLAN is defined as Virtual Local Area Network.
What is socket buffer?
Socket buffers are the short queues of packets the kernel holds on behalf of your app, as it's shuffling data between the NIC and your app's memory space.
What is the function of a bridge?
The Bridges connect two or more different LANs that have similar protocols and provide communications between the devices.
Bridges are connected between two LANs in which some devices are connected in LAN A and LAN B.
Bridges have the capability to take the Mac address of the devices which are connected in both the LANs.
If any device sends data to the other device then it first goes to the bridge later it reads the Mac address of that device that wants to send data.
It also recognizes where the data has to be sent and to which device, then the bridges read the Mac address of that particular device for further process.
In some cases, the device sends a message that goes to the bridge, and if it does not match with any of the Mac addresses stored in the bridges the data transfer is stopped or discarded.
Technical interview round with questions based on DSA/OS etc.
If the given string is: STR = "abcde". You have to print the string "edcba".
Try to solve the problem in O(1) space complexity.
This can be done by iterative swapping using two pointers. The first pointer points to the beginning of the string, whereas the second pointer points to the end. Both pointers keep swapping their elements and go towards each other. Essentially, the algorithm simulates the rotation of a string with respect to its midpoint.
Time Complexity : O(n)
This problem can be solved using recursion. In this approach, we will start form last element of both the strings. If elements at the last matches then we will decrement length of both the string else we will decrement the length of either of the string.
lcs(s1, s2, n, m):
if n == 0 or m == 0:
return 0
if s1[n-1] == s2[m - 1]:
return 1 + lcs(s1, s2, n-1, m-1)
else:
return max(lcs(s1, s2, n-1, m), lcs(s1, s2, n, m-1))
But this approach would result in TLE for longer test cases. It can be optimized using dynamic programming.
In the top down approach, we make a table of size [m+1][n+1] where m and n are the length of the strings. The intermediate row and column of the table indicates what will be the value of the longest common subsequence if its called for the smaller inputs.
if s1[i - 1] == s2[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
else:
dp[i][j] = max(dp[i][j - 1], dp[i - 1][j])
Difference between Zombie, Orphan and Daemon Processes
1. A Zombie is a process that has completed its task but still, it shows an entry in a process table. A child process that remains running even after its parent process is terminated or completed without waiting for the child process execution is called an orphan. A daemon process is a system-related process always running in the background.
2. Zombie process states always indicated by Z . The orphan process was created unknowingly due to a system crash. Daemon process state indicated by ? in the field of tty column in the output
3. The zombie process has controlling terminals Orphan The zombie process has controlling terminals. The daemon process does not have controlling terminals.
4. The zombie process treated as dead they are not used for system processing An orphan process is a computer process even after their parent terminates init is become a parent and continue the remaining task. A program that runs for a long time makes them as a daemon process and runs it in the background.
What is little endian and big endian?
Little and big endian are two ways of storing multibyte data-types ( int, float, etc). In little endian machines, last byte of binary representation of the multibyte data-type is stored first. On the other hand, in big endian machines, first byte of binary representation of the multibyte data-type is stored first.
What is linking?
Linking is the process of collecting and combining various pieces of code and data into a single file that can be loaded (copied) into memory and executed. Linking can be performed at compile time, when the source code is translated into machine code, at load time, when the program is loaded into memory and executed by the loader, and even at run time, by application programs. On early computer systems, linking was performed manually. On modern systems, linking is performed automatically by programs called linkers. Linkers play a crucial role in software development because they enable separate compilation. Instead of organizing a large application as one monolithic source file, we can decompose it into smaller, more manageable modules that can be modified and compiled separately.
Explain the memory layout of a C program.
1. Text Segment:
A text segment, also known as a code segment or simply as text, is one of the sections of a program in an object file or in memory, which contains executable instructions.
As a memory region, a text segment may be placed below the heap or stack in order to prevent heaps and stack overflows from overwriting it.
2. Initialized Data Segment:
Initialized data segment, usually called simply the Data Segment. A data segment is a portion of the virtual address space of a program, which contains the global variables and static variables that are initialized by the programmer.
Note that, the data segment is not read-only, since the values of the variables can be altered at run time.
This segment can be further classified into the initialized read-only area and the initialized read-write area.
3. Uninitialized Data Segment:
Uninitialized data segment often called the “bss” segment, named after an ancient assembler operator that stood for “block started by symbol.” Data in this segment is initialized by the kernel to arithmetic 0 before the program starts executing
uninitialized data starts at the end of the data segment and contains all global variables and static variables that are initialized to zero or do not have explicit initialization in source code.
4. Stack:
The stack area traditionally adjoined the heap area and grew in the opposite direction; when the stack pointer met the heap pointer, free memory was exhausted.
The stack area contains the program stack, a LIFO structure, typically located in the higher parts of memory. On the standard PC x86 computer architecture, it grows toward address zero; on some other architectures, it grows in the opposite direction. A “stack pointer” register tracks the top of the stack; it is adjusted each time a value is “pushed” onto the stack. The set of values pushed for one function call is termed a “stack frame”; A stack frame consists at minimum of a return address.
5. Heap:
Heap is the segment where dynamic memory allocation usually takes place.
The heap area begins at the end of the BSS segment and grows to larger addresses from there. The Heap area is managed by malloc, realloc, and free, which may use the brk and sbrk system calls to adjust its size . The Heap area is shared by all shared libraries and dynamically loaded modules in a process.
What is symbol table?
Symbol Table is an important data structure created and maintained by the compiler in order to keep track of semantics of variables i.e. it stores information about the scope and binding information about names, information about instances of various entities such as variable and function names, classes, objects, etc.
It is built-in lexical and syntax analysis phases.
The information is collected by the analysis phases of the compiler and is used by the synthesis phases of the compiler to generate code.
It is used by the compiler to achieve compile-time efficiency.
Here's your problem of the day
Solving this problem will increase your chance to get selected in this company
Which SQL keyword removes duplicate records from a result set?