Sunday, 20 October 2019

REST and SOAP APIs


REST APIs
  • Is an Architectural style that follows six constraints defined by Roy Fielding in 2000. Those constraints are – Uniform Interface, Client-Server, Stateless, Cacheable, Layered System, Code on Demand.
  • Follows HTTP methods and media type is a chosen by the client/server. Most used media type is JSON.
  • Uses annotations like @Path, @RestController, @Mapping etc
  • REST can use SOAP protocol but SOAP cannot use REST.

SOAP APIs
  • Is a protocol that follows a strict standard to allow communication between the client and the server
  • SOAP uses only XML for exchanging information in its message format.
  • Not only tied to HTTP transport but can also be usable by SMTP.
  • Uses @WebService on interface level.
  • SOAP has SSL( Secure Socket Layer) and WS-security.
That technology for Server APIs is extremely depends on usecase. Many developers found SOAP cumbersome and hard to use. For example, working with SOAP in JavaScript means writing a ton of code to perform extremely simple tasks because you must create the required XML structure absolutely every time.

References:
  • https://smartbear.com/blog/test-and-monitor/understanding-soap-and-rest-basics/

Friday, 11 October 2019

Observer Pattern in java

Observer pattern is also refered as Publisher/Subscriber pattern.
Examples:
  • JMS in Java
  • Event listeners like onClick

Applications:
  • When you subscribe to any website
  • Follow feature on Quora/Facebook/Instagram
  • Whatsapp Group

// Subject interface
package example.java.designpatterns;

public interface Subject {
 public void register(Observer observer);
 public void unregister(Observer observer);
 public void notifyObservers();
 public Object getUpdate(Observer observer);
}



// Observer interface

package example.java.designpatterns;

public interface Observer {
 public void update();
 public void setSubject(Subject s);
}




// Class implementing Subject interface
package example.java.designpatterns;

import java.util.ArrayList;
import java.util.List;

public class MyTopic implements Subject {
 private String message;

 private List listeners;

 public MyTopic() {
  listeners = new ArrayList<>();
 }

 public void register(Observer observer) {
  listeners.add(observer);
 }

 public void unregister(Observer observer) {
  listeners.remove(observer);
 }

 public void notifyObservers() {
  for (Observer observer : listeners) {
   observer.update();
  }
 }

 public void pushMessage(String s) {
  System.out.println("MyTopic: Adding message: " + s);
  this.message = s;
  notifyObservers();
 }

 public Object getUpdate(Observer observer) {
  return this.message;
 }
}




// Class implementing Observer interface

package example.java.designpatterns;

public class MyTopicSubscriber implements Observer {
 private Subject topic;
 
 private String name;
 
 public MyTopicSubscriber(String name) {
  this.name = name;
 }
 
 public void update() {
  String message = (String) topic.getUpdate(this);
  System.out.println("MyTopicSubscriber: " + name + " Recieved: " + message);
 }
 public void setSubject(Subject subject) {
  this.topic = subject;
 }
}

Sunday, 29 September 2019

Interview at Reliance Jio

Round 1:
  • Print 1000 random numbers of single digit each. Number should be between 0 to 9.
  • Store the above elements in a array and move all the 0s into one end without changing the order of non-zero elements.
  • Find out the top 50 elements in a stream of 1000 elements. Assume that numbers are streaming and you don't know the size ahead. and if you want to know the frequency of the top 50 elements also, how would you do? Hint: Heap
  • Assume that you can only send 160 characters in one message. If you have a paragraph to send, how do you determine that and send it over network, every page should send which part the message it is, like [1/2]. Hint: Travese entire message first to determine whether there are multiple messages possible.

Round 2:
  • Given array of integers, find out the first non-repeating element.
  • Given M*N matrix of Integers, find out the area covered between 2 cells.
  • Convert a doubly linked list into binary tree.

Round 3:
  • Diff between SOAP and REST APIs.
  • Given a src and dest vertex in a graph, write a method to return true if dest can reachable all possible paths from the src vertex. There can any number of intermediate vertices.
  • [Puzzle] 4 persons of diff speeds need to cross a bridge with one torch where only two can travel at a time from the bridge, what is the minimum time that they take to reach all on the other side. How can you solve this generically.

Wednesday, 11 September 2019

[System Design] Scaling methodologies

Wikipedia says, Scalability is the property of a system to handle a growing amount of work by adding resources to the system. With increase in customer demand, Servers hit the scale problems. There are 2 standard ways of handling the Scalability.
1. Horizon Scaling: Add more servers/Machines when there is a increase in load.
  • Demands load balancing to balance client requests.
  • Results in distributed systems and possible data inconsistency.
2. Vertical Scaling: Add more resources to the same server.
  • Single server holds all the data and hence there will be no data consistency issues.
  • Will result in better IPC as things are local to single server.
  • Can result in Single Point of failure.
  • Cannot go beyond certain hardware limits.

In practical, it is better to use a combination of both to achieve better results. Perform the Vertical scaling and move to Horizontal scaling after some peek limits.

Saturday, 31 August 2019

[Java] Print all the files under a given directory

Print all the files under a given directory. If there are subdirectories traverse them recursively and figure out all the files inside it.

package test.test;

import java.io.File;

public class Test {
   public static void main(String[] args) {
      filePrintUtil("/Users/poddepally/Downloads");
   }

   private static void filePrintUtil(String pathName) {
      File file = new File(pathName);
      File[] listFiles = file.listFiles();
      for (File currentFile : listFiles) {
          if (currentFile.isFile()) {
              System.out.println(currentFile.getName()
                  + ", length(bytes) =" + currentFile.length()
                  + ", parent = " + currentFile.getParentFile().getName());
   } else {
       filePrintUtil(currentFile.getAbsolutePath());
   }
      }
   }
}

Friday, 16 August 2019

Class Loaders in Java

Class loaders in the JVM is responsible for looking out for the requested class and load it on demand. Unless set otherwise, class loaders look at the default class path locations of java installation such as {JRE_HOME}/lib/rt.jar and {JRE_HOME/ext}. rt.jar file holds the java core class files such as String, integer, etc.
You can set the class path of the application by -cp flag while compilation/execution.
Java contains following type of class loaders by default:
  • Bootstrap class loader: Looks for class files such as java.lang.* in rt.jar
  • Extension class loader: Looks for class file in /ext location.
  • Application class loader: Looks for class file in the location set by the application.

Class loaders follows delegation model while looking for class file. That is, class loader will delegate the load process to parent class loader, if not found, takes the responsibility to load the requested class.

Saturday, 3 August 2019

HTTP Status Codes

HTTP status codes are categorised into 5 buckets. These are very helpful during API development such as REST APIs.
Status Code Meaning
1xx informational
2xx Success
3xx Redirection
4xx Client error
5xx Server error

Saturday, 27 July 2019

Design patterns in java

Design Pattern is a reusable and named solution to a recurring problem in a context. There are 3 categories of patterns when classified by the purpose:
  • Structural Design Patterns
    • Strategy Pattern: Defines a family of algorithms, encapsulates them and makes them interchangeable thus Strategy lets algorithm vary independently from the clients that use it. Example: Collections Java, List
  • Creational Design Patterns: Allows creational of the objects
    • Abstract Design factory pattern
  • Behavioural Design Patterns
Reference Books for Design patterns:
  • The Gang of Four: The Definitive Design Patterns Book
  • Head first Design patterns

Thursday, 25 July 2019

Object Oriented Programming

Building blocks of OOP:
  • Abstraction:
    • Showing the essential details by hiding the complexity.
    • In Java, achieved by Interfaces, Abstract classes.
  • Encapsulation:
    • Hiding the information. Can be field level or behavioural level.
    • In Java, achieved by access specifiers.
  • Inheritance:
    • Inhering properties, methods of another class to avoid code duplication.
    • In Java, achieved Extending a class or implementing any interface.
  • Polymorphism:
    • Allows the actual object to be decided at runtime, basically a subclass/interface can stand in for super class.
    • In Java, achieved Extending a class or implementing any interface.
SOLID Principles
  • Single Responsibility Priniciple
    • One class should own a single responsibilty.
  • Open-Closed Priniciple
    • classes should be open for extension, closed for modification.
    • Can be achieved by inheritance.
  • Liskov Substitution Principle
    • When you inherit a class, you should be able to substitute super class methods on sub class methods without any hussle.
  • Interface segregation Principle
    • Seggregate the interfaces in a way client can use.
  • Dependency injection Principle
    • High level module should not depend on low level module.
Other OOP principles:
  • Favor composition over inheritence.
  • Program to an interface not implementation.
  • DRY: Donot repeat yourself

Saturday, 29 December 2018

Best tutorials online

Following are some of best free tutorials that I come across online. These are super cool to follow.

Java tutorials:

Java Brains:

Official website: https://javabrains.io
Youtube channel: https://www.youtube.com/channel/UCYt1sfh5464XaDBH0oH_o7Q

jenkov tutorials:

Official website: http://tutorials.jenkov.com/

Design Patterns:

Youtube channel(Christopher Okhravi): https://www.youtube.com/channel/UCbF-4yQQAWw-UnuCd2Azfzg


System Design:

Tech Dummies channel on youtube: 

Educative Course on System design:

Gaurav Sen's channel on youtube:


Object Oriented Design:

Educative course:

Sunday, 5 February 2017

SecureString in PowerShell


If you want to read secure string from a prompt, do the following:

$mySecureString = Read-Host 'Enter the string' -AsSecureString


To convert the SecureString to string, do the following:

$string= [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($mySecureStrring))

Sunday, 3 July 2016

Android Run Time(ART) - Comparison with Dalvik Virtual Machine

   ART is the application run time environment for the Android mobile operating system. It has been introduced experimentally along side of Dalvik Virtual Machine(Process virtual machine used in Android before Kitkat version) in Android 4.4 (Kitkat) but later replaced Dalvik Virtual Machine(DVM) to become only run time environment in Android 4.5 (Lollipop). Some of major changes introduced in ART compared to its predecessor DVM is Ahead of Time(AOT) compilation, improvements in garbage collection, development and debugging improvements and certain profiling improvements.

   All Android applications are available in APK(.apk) format. The byte code that Android environment uses is DEX(.dex called dalvik executable code). To maintain backward compatibility, ART uses the same input bytecode as DVM, supplied through standard DEX files, as part of APK files, while the .odex(Optimised DEX) files are replaced with Executable and Linkable Format (ELF) executables. Once an application is compiled by using ART’s on-device dex2oat utility, it run solely from the compiled ELF executable. Following Image shows the life of an APK file in Android environment(with ART) before it is getting installed. When you try to install an Android application on the device the .apk is first depackaged to the DEX files, resources(XMLfiles) and native code. The DEX files are fed to the dex2oat tool where it will compile from DEX to ELF(.elf). Then ELF files is fed to the ART along with the resources and native code which translates the code to the native instructions.

Image: Life of Android Application file(APK) in Android environment during installation time. (Image courtesy:http://anandtech.com/show/8231/a-closer-look-at-android-runtime-art-in-android-l)

   Major improvement in ART in relative to Dalvik Virtual Machine(DVM) is the introduction of Ahead Of Time(AOT) compilation. With Dalvik’s JIT(Just-In-Time) compilation, each time when an application will run, it dynamically translates a part of dalvik code in to machine code. As the execution progress more byte code is compiled and cached. That is, whenever an app is relaunched with DVM you have to compile the entire code again in order to run the application. The involvement of CPU in each time compilation will increase the app launch time and decreases the battery life time. So to increase the performance and battery time ART comes with Ahead of Time(AOT) Compilation. With AOT compilation in ART, during the app installation phase, it statically translates the DEX code into machine code and stores it on the device storage. Thus, launching of application requires only to bring the binary code to memory with out the need of recompilation. Thus, ART increases the performance and battery life. Though AOT compilation increases the performance and battery life, it increases the installation time of application and demands the more storage on system.

Android Architecture - High level components

      I have worked on a project as part of my Masters thesis work that requires decent level of study on Android Operating System. As part this, I did a detailed study on Android OS internals. This post talks about the high level architecture of Android OS.

   Android is an open source operating system for mobile devices, originally developed by Android Inc., currently under development by Google Inc. along with Open Handset Alliance. Android is intended to be a complete software stack that includes every thing from the operating system through middleware layer and finally the applications. Android uses the Linux kernel at the lowest level though its not the standard Linux kernel.

Software layers of Android
Android architecture can be described as five layers
1. Androidized Linux kernel
2. Native Libraries
3. Android run time(ART)
4. Application framework
5. Applications

1. Androidized Linux kernel
   The lowest layer that performs all the basic system functionality like process management, memory management and device management is the Linux kernel. Android is based on Linux kernel but the Linux kernel used here is not the standard one. The Linux kernel in Android contain several hundred patches over the standard kernel, often to provide certain device-specific functionality, fixes, and enhancements to above layers. Thus some people call it as androidized Linux kernel. There is no glibc, instead it uses its own C library called Bionic libc. It does not support windowing system, bash shell and busy box. Significant enhancements in this context includes wavelock mechanism(a memory management mechanism that is more aggressive in preserving memory), low memory killer, binder IPC mechanism(an IPC mechanism that allows the processes to communicate with one another), ashmem(anonymous shared memory), logger. Most of these enhancements are extended through drivers. The security model of android will heavily depends on the security model followed at this kernel level.










Image: Android architecture - The purple colored layer is written in Java and green colored layer is written C and C++.

2. Native libraries and daemons
   The next layer above the kernel is the Android native libraries, daemons and services. This layer enables the device to handle different types of data. These libraries are written in C or C++ language and are specific for a particular hardware. It provides different abstractions to the layer above it. To provide uniform interface for all the devices, Android system expects the device vendors to implement certain hardware abstractions over the device drivers that collectively form the hardware abstraction layer. This layer includes many of the open source project libraries such as Bionic libc, OpenGL, webkit browser, SQLite Database mechanism, native servers like surface flinger, audio flinger and LLVM tools etc.

3. Run Time Environment
   It is the application run time environment where the compilation and execution of applications happens. It contains all compilation and optimization tools such as java compiler, dex tool, dex2opt tool and java libraries. I will present more detailed explanation about the android run time(ART) in my next blog.

4. Application Framework
   This acts as an API to the Android application developers so that applications can interact directly with the API. This framework will take care of the launching and shutting down the applications. The framework contains the managers and libraries that are high level abstractions above the native library. These programs manage the basic functions like resource management, voice call management etc. Important blocks of this framework includes content manager, activity manager, resource manager and location manager.

5. Applications
   The highest layer of the Android stack is Android applications. Android applications are available in APK(.apk) files. APK is a package of DEX files, XML files and some AIDL fies. Here, DEX is the byte code that ART will interpret and execute, XML files like Manifest.xml describe the starting point of the application and provides the permission details needed to interact with the other applications, and AIDL is the interface description language through which developer can define the programming interface so that both the client and service agree upon the communication between the two using IPC. The programming language used for android application development is the java language. These java source files are given to the java compiler to generate the .class files and these .class files will be merged and translated to DEX code by dex tool of run time. And finally these DEX files along with some application resources will be bundled to form an Android Application Package(APK) file.

Saturday, 2 July 2016

Thinking about Masters

“You can’t connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something — your gut, destiny, life, karma, whatever. This approach has never let me down, and it has made all the difference in my life.”                    - Steve Jobs

   It was 2011 when I was first thinking of GATE as an option to getting into IIT's. As like many other engineers in our country, I did come from a tier-3 engineering college where getting a job means getting into TCS/Infosys/Wipro.

   I had  never tried for IIT during my 12th standard, but based on the reputation of IIT's I always had a dream of stepping into IIT's, not to study, but atleast to see how to study. For me, it looks like IIT's are in a different world where every student tries to work hard and tries their best, if not, tries to be of themselves.   

   It was my brother who encouraged me to go for Masters.When I started thinking about the Masters first, I had three options in my mind.

1.  Crack CAT exam and get into IIM or any other well known management school.
2.  Crack GRE and go for MS in USA.
3.  Crack GATE exam and get into IIT/NIT's.

   I did a lot of survey from my fellow mates and seniors who had gone through this phase before making up my mind. Cracking the CAT exam needs alot of verbal communication skills. Being a Telugu medium student till my Xth standard, never had confidence of cracking exams that requires good english communication skills. So, I eliminated the option of preparing for CAT from my list since I thought it never suits me :P

   Cracking GRE requires less effort than CAT exam. But, it also needs some sort of verbal communication skills which am badly lacking at the moment. Basically, I'm from a poor family.  So, my family cannot afford the expenses to go for MS in foreign university. So, there was no reason for me to think about MS ;)

   Finally, I had left with the option of cracking GATE exam. GATE needs basic computer science fundamentals along with bit of logical reasoning. From the initial days, I was very strong in my CS fundamentals and I had a gut feeling that I can be better if I can work on something I was good at. And at the time, I was also thinking that GATE is the only short cut way of getting a better product based company job. Considering all the ways, I have choosen GATE as my future, career and started my steps towards it from my second year of under-graduation.

   I'm aware of the fact that there will be alot of competition for GATE. But, competition will come into the picture only when you are bad at it or feel it ;) I know I have to be a little bit smart to get good rank/score in GATE. When you choose something that you are left with, you have to give your 100%, if not, more than that ;)

Saturday, 23 January 2016

VMware Interview Experience


I attended VMware interview process as part of campus selection @ +IIT Madras. The process went for five rounds. One written, two technical, one managerial and one HR rounds. Interviews was conducted on Dec 2.


Written Round 
  • VMware has full objective paper as part of written test. It was an online test.

Technical Round 1
  1. What is dining philosophers problem? How can you solve it?
  2. What is deadlock? How can you solve above problem with deadlock prevention and deadlock avoidance?
  3. What are ACID properties? What is need of these?
  4. Given two binary trees, determine whether they are equal or not? 
  5. How hashmap is implemented in java? (Since I'm not comfortable in java, explained the C++ implementation)
  6. How hashtable is implemented? What are different collisions possible?

Technical Round 2

This round was taken by Chandan (He is my colleague now :P).
  1. Write a recursive function to reverse to a given linkedlist.
  2. How can you build a string tokenizer : Given a string s=”ab,bc,db,gn”: Write a function, that takes string and delimiter as arguments, that returns “ab” when called first time and then “bc” in second call etc.
  3. Is your program in the above thread-safe? If not, how will you make it thread-safe?

Round 3

This round was taken by Dharmesh Gadiwala (He is my manager now :P).
  1. Explain yourself?
  2. What is the complex problem that you have ever solved? and how you solved it? (I asked the interviewer, what is his definition of complex problem ;) Since it will changes based on perception :P)
  3. How did you proceed in your Concurrent Programming course project?(Our CP project was 4 member team project. basically he is asking about team handling)
  4. If one of your teammate don't want to learn or help in your team project. what you will do?
  5. Explain about your current project(Maser's project)?

HR Round
  1. Explain Yourself?
  2. Why you want to join VMware?
  3. What are your Career goals, interests?
  4. Where do you think you will be in 5 years from now?
  5. What in the your definition of innovation?
  6. Interviewer explained me in detail about the company and its location(Bangalore).
          Results got announced on the same day, late in the night. I got wait listed first, meanwhile I got offers from NetApp and Citrix in the very next day. But, finally upgraded in the waitlist to get offer from VMware. So, accepted the VMware offer on Dec 4th 2014. :) Currently, I'm working in VMware as Member of Technical Staff. It feels good to work with the those guys who interviewed me.;)

Tips
  • Having strong skills on system side courses will help alot. So strongly prepare all the system side courses such as OS, CN etc. 
  • Like any other company, it demands Algorithmic basics too ;) 



Good Luck ;)

Friday, 11 September 2015

NetApp Interview Experience


I attended NetApp interview process as part of campus selection @ +IIT Madras. The process went for five rounds. One written, two technical, one managerial and one HR rounds. All interview rounds were conducted on Dec 3, 2014.


Written Round 
  • NetApp has full objective paper as part of written test. It was an online test. It has negative marking as well; +1 for positive and -1 for negative answer.
  • There was 4 sections and 10 questions in each section. The four sections in the written includes Quantitave aptitude, Data Structures and Algorithms, Operating System and Programming.

Technical Round 1
  1.  Describe multi-threading and multi-processing?
  2.  Given a shared variable, create a multi thread program that print the numbers 1, 2, 3, 4, 5,.. in the following scenarios. For Simplicity you can assume two threads.
    • When there is no particular order of printing between the threads.
    • When there is an order of printing between the threads(Threads has to take alternate turns for printing)
  3. Given a dictionary of words and an input string, find the longest prefix of the string which is also a word in dictionary. (Discussed solution based on tries and suffix trees) http://www.geeksforgeeks.org/longest-prefix-matching-a-trie-based-solution-in-java/

Technical Round 2
  1. What is the use of cache levels(L1, L2, L3 caches) and their sizes.
  2. What will be stored in caches?
  3. What you will do if you have to find a way to organise the cache block allocation in such a way that locality of reference can be maximized?
  4. What happens when computer gets powered off? What is the content that needs to be stored on disk before it shut down completely? Is there any charge that CPU uses after power supply turned off and before it gets shut down completely?
  5. What is an interrupt and its types?
  6. Is there Any non-maskable interrupts? Any good example?
  7. Sony says that their products are unbreakable even if you fell them from certain height. What do you think that how Sony engineers are detects and turn off all the activity and make it consitent before it touches ground. (It uses the device accelaration to detect and signals nonmaskable interrupt to CPU along the estimated time so that CPU completes the Disk block I/O to make it consistent.) 

Round 3
  1. Interviewer asked me to describe each and every project on my resume?
  2. What is the complex problem that you have ever solved?
  3. What are your responsibilties as TA?

HR Round
  1. Explain Yourself?
  2. Why Should I hire you?
  3. What are your strengths and area of improvements?
  4. Any Other offers in hand? Any other HR rounds?
  5. Any plans on further studies?
  6. If you get both Citrix and NetApp, which one you will choose and why?
  7. Discussion on compensation break downs.
As expected after HR round, I got offer from NetApp on the same day. But, I'm not accepted this offer as I had other offers from the companies VMware, Citrix.

Tips

  • Having strong skills on system side courses will help alot. So strongly prepare all the system side courses such as OS, CN etc. 
  • Like any other company, it demands Algorithmic basics too ;) 




All the Best :)


Good Luck ;)


Sunday, 16 August 2015

Citrix Interview Experience


I had attended Citrix interview process as part of campus selection @ +IIT Madras. The process went for four rounds. One written, two technical and one HR rounds.


Written Round 
  • Citrix had both objective and coding tests as part of written. Both were online tests and hosting platform is Hacker Earth.
  • The Objective paper consists of 50 Questions in 60 mins. There were no separate sections in the paper but it includes concepts from Operating Systems, Aptitude, Computer Networks, Algorithms and Programming.
  • The Coding paper consists of two questions on Hacker earth platform. We were given one hour to solve this. All the questions were moderate and can be solvable. All the people in test got the same questions to solve.
  • One question was http://www.geeksforgeeks.org/find-number-of-islands/

Technical Round 1
  1. Assume that your kernel has no capability to do memory management. In this case, how do you implement/organize the memory in case of both new and delete operators?
    • Basically the interviewer was expecting me to discuss about the underlying kernel mechanisms for memory. So I started my answer with the free list management followed by variable partitioning approach and then heap management. In the above discussion I was talking about the pros and cons of the each method and our discussion went for 25 minutes long ;)
  2. Add two numbers represented as linked lists and store the result in another list?? what are base cases?? http://www.geeksforgeeks.org/sum-of-two-linked-lists/
  3. What if there is a cycle in above linked lists. How did you find it?? how did you break that loop?    http://www.geeksforgeeks.org/write-a-c-function-to-detect-loop-in-a-linked-list/

Technical Round 2
  1. How did you find whether the given tree is a binary search tree or not?  
  2. I had a Concurrent Programming course project in my resume. It was about the implementation of concurrent BST based on logical ordering. After seeing this project, the interviewer was asking the following questions.
    • Why Logical Ordering? what is the necessity?
    • Why two orderings?(about implementation)
    • Is there any other way of solving the same problem?
    • What are its applications?
  3. Given a database having cricketer's statistics. How will you design this database to make the search easier? Simple query is: given a cricketer name you should retrieve his statistics in the least possible time.
  4. How do you modify your design to make the search more efficient for most popular 'K' cricketers in the world?

HR Round
  1. Explain Yourself?
  2. What do you know about Citrix?
  3. Innovation in your life?? (I was talking about Citrix innovation in the above and hence this question ;) )
  4. What is success for you? What is your definition?
  5. What are your strengths and weakness? 
  6. Which website you are following for learning verbal communication?(I mentioned the weakness as proper communication skills and hence this question :P )
  7. Explain about your family background?
  8. Describe the situations where you learned from your Senior and Junior?
  9. HR explained about the Salary breakdown and company policies? also asked for location preference??
  10. Asked for any other interviews in parallel? I had NetApp in parallel. So she was asking like, what you will do if you have both in-hand and why?



Tips

  • Having strong skills on system side courses will help alot. So strongly prepare all the system side courses such as OS, CN etc. 
  • Like any other company, it demands Algorithmic basics too ;) 
  • Having a system related project will help in many ways(as much of interview will be centered around it).




All the Best :)


Good Luck ;)



Friday, 3 July 2015

My Placement Material @IIT-M Placement Drive

Programming Languages:
  1. C :

    The C Programming Language by Brain W. Karnighan, Dennis M. Ritchie

    Test your C skills by Yashavanth kanethkar

    C concepts from geeksforgeeks (Highly Recommended)


  2. C++ :

    Thinking of C++(volume 1, 2 ) by Bruce Eckel

    C++ concepts of geeksforgeeks (Recommended)

    Test your C++ skills by Yashavanth kanethkar




Data Structures:



Algorithms:



Operating Systems:



Computer Networks:



Aptitude:



Puzzles:



MCQ's practice:



Important Sites:



Important Book for Coding Interview:



Important blogs:


Programming Platforms: