I applied in Walmart Labs through employee referral, next day got call from HR and asked me to brief about my work and how much I am interested in relocating Bangalore. He informed they will schedule interview (Telephonic) next week.Whole interview process took one week to complete - 2 Telephonic followed by 5 F2F discussion.
1st Webex/Telephonic discussion (DS Questions)
2nd F2F discussion (DS/Resume scanning)
2 Telephonic Technical Discussion
1st Webex/Telephonic discussion (DS Questions)
- Find one triplet such that indexes are in increasing order so as values at index.
http://www.geeksforgeeks.org/find-a-sorted-subsequence-of-size-3-in-linear-time/
Follow up question to Optimize using one array since we have to find only one triplet not all. - Find all nodes at distance k from a target node.
http://www.geeksforgeeks.org/print-nodes-distance-k-given-node-binary-tree/
2nd Webex/Telephonic discussion (DS and Design Questions)
- Design a stack such that it provides push(), pop() and min( ) is in O(1). Use only Stack not any other Data structure.http://www.geeksforgeeks.org/design-and-implement-special-stack-data-structure/
- Design a app for "Restaurant table booking" :
- Database Design (Various tables involved) and how they are related (UML/ER Diagram)-
- What are APIs need to be exposed at high level
- Flow of application
- More stress on booking efficiently and
- Handling various scenarios like how to maintain empty & vacant seats for multi-storage building of Hotels with tables.
Received feedback by next day and was asked to come for F2F discussion.They provided flight tickets. It was one day event. Started early morning 6:00 AM from Hyderabad and came back Hyderabad by 11:30 PM. I had 5 F2F technical discussions at Walmart Labs office in Bangalore.
5 F2F Technical Discussion
1st F2F discussion (Java/DS/Projects) :
- Project detailed discussion - In depth discussion of project I was working and my contribution.
- Why this and that ?
- Some other way to do ? - Java Wrapper Class related question. What is importance of Wrapper class in Java ?
- Immutable class in Java and what is its significant in java ?
- Singleton class discussion and sample code.
- Lazy and Early Initialization of Singleton
- Double Checked locking sample code.
- Holder pattern to create Singleton instance - Files with multiple lines - two words passed as input. Find min distance between them
- Binary tree horizontal distance based question- print all nodes in sorted order of hd. i.e: Nodes at Horizontal distance: -3 -2 -1 0 1 2 3 (Used TreeHashmap instead of HashMap)
http://www.geeksforgeeks.org/print-binary-tree-vertical-order-set-2/
- Write sample code to generate all permutation of a given string.
- Idea was to do iteration of all recursion and makes sure no mugged up.
http://www.geeksforgeeks.org/write-a-c-program-to-print-all-permutations-of-a-given-string/ - Find Longest palindrome in a string - Brute force solution to DP solution.
http://www.geeksforgeeks.org/longest-palindrome-substring-set-1/ - Resume scanning understand where I have used which technologies
- Brief overview of project I am working on and some questions related to it. I mentioned, I have written parser for SQL Server using javacc and it uses Tree DS for iteration of nodes. Next question from DS.
- Find max sum at given level in given binary tree. (Level order traversal)
- Find sum of all nodes at given Horizontal distance. Display in descending order(HD: 4 3 2 1 0 -1 -2 ...)
- Regex implementation - match test or te*t or t?*t
http://www.geeksforgeeks.org/wildcard-pattern-matching/ - Java memory model changes in Java 8 - metaspace concept. What's its benefit ?
https://stackoverflow.com/questions/27131165/what-is-the-difference-between-permgen-and-metaspace - What is Weak Reference - I was not good with answer for this question.
https://docs.oracle.com/javase/7/docs/api/java/lang/ref/WeakReference.html - What are other technology I have worked and where.
- Spring AOP - Duck for me. Not worked with Spring - Design pattern I have used and where. Also what are DP I know.
- Project which have done with good effort or some situation like this.
- Java provides some security mechanism to prevent attack via reflection- I could not answer properly. He was referring my blog, since I have written how to break singleton using Reflection.
- Project discussion and my contribution to it.
- Design a inventory system.
- High level system design considering scalability and performance.
- Discussion of distributed cache and how it's used.
- Significance of Load balancer and its usages.
- Database design,
- How to achieve database abstraction (Today Relational DB, tomorrow may be NOSQL). - How to handle large volume traffic request ?
- Some questions related to thread dump and profiling.
- A problem to solve - one XML is given with order nodes. Display sorted nodes based on id followed by order name.- I gave brute force solution.
Restriction imposed : Not to use collection API for sort and No comprator.
- Project where you have worked makes you feel proud and follow up question regarding effort and code lines.
- Design a multi-threaded system which handles failure request, failure requests are updated in database.
- My solution was to find hashcode of time-stamp of record and distribute failed record to multiple threads, a thread pool is maintained for specified number of thread. - Next question what about if multiple servers are in picture - how to send request to handle by multiple server thread pool .
-I suggested to use a load balancer and does pull request - read record from db and send to multiple server so not same record sent to two server. - What is Implicit and explicit locking. How manual works for threads? Interfaces and Class used for implementing explicit locking.
- Design of distributed locking.
- I suggested file based locking mechanism, jvm to jvm communication.
- He asked what about db based locking. Could not explain properly. - How to design a system such that - one type(kind/somePK) of data is always updated in sequence no dirty update.
- I suggested map-reduce approach.
- Time-stamp based approach.