Thursday, March 5, 2015

Goldman Sachs Java Interview Questions

1. There is a String array String[] words = {"hello", "world", "HELLO", WORLD"}; How will you print output like hello-2, world-2 i.e. word followed by its count ignoring the case of the words in the input Array ?
2. There is a array of words String[] words = {"abc","bca", "cab", "cba", "def", ...} etc. So if given an input "cab", your program should print all the words that contains 'c', 'a' and 'b' i.e. "bca", "abc", "cba", etc. How will you achieve that ? Anagrams example ?
3. How will you implement your own hashmap in Java ? How will you handle collision of keys ? Basically interviewer wants to know internals of a hashing data structure.
4. How will you implement multiplication for very big numbers without using Java inbuilt classes ?
5. Given an input string, write a function that returns the Run Length Encoded string for the input string. For example, if the input string is “yyyybbbbdexxxxxxx”, then the function should return “y4b4dex7″.
6. Given a string check if the string is palindrome or not ?
7. What are the main interfaces in Java Collections framework ? What is difference between Set and List ?
8. Let's say I gave you a long String and I wanted you to tell me the most common word in that String. How would you do that?
follow-up: OK, how would you estimate the size and time complexity of this solution? How would you estimate the ACTUAL size usage? (Hint: how many words are in the English language? Would having a dictionary in front of you help?)
follow-up #2: OK, how about if I gave you the entire works of Alexandre Dumas, one of the most prolific authors in history. How would your solution work? How could you change it to solve this more specific problem?
follow-up #3: Now, what if we wanted to find the most common PHRASE in his writings. (Upon clarification, the interviewer wouldn't give a specific length, so I clarified to finding as long as a common 10 word phrase, because anything longer is unlikely.)
Hint - Find Top X occurring words in a very big file using Min-Heap and Hashtable.

9. why strings are immutable ? how many objects will be created in String temp = "A" + "B" + "C" ; explain your answer in detail.
Hint- Role of Immutable Objects in writing thread safe scalable applications.

10. You have 5 data sources. There is a program which calls these data sources and returns a count value. You need to speedup this program. How do you do that? This is a sample code
int count = getCount(ds1);
if(count < 100 )
count = count + getCount(ds2);
if(count < 100)
count = count + getCount(ds3);
if(count < 100)
count = count + getCount(ds4);
if(count < 100)
count = count + getCount(ds5);
Hint - Interviewer must be looking for multi-threading. Fetch count from all sources in parallel. Bonus points: If machine has less than 5 cores (for 5 data sources), say 4 cores, prioritize so that first 4 cores get the highest priority. Not sure how to do this in code.

11. How would one design a multi format converter that supports reading data from multiple data sources(web service, local disk, etc.). The data from the sources can be in multiple formats. The reader for each format may be different and how does one serialize this abstract data to multiple formats like image, xml etc. New readers, writers and data sources can be added later during implementation.
Hint- Design Patterns problem, look for* classes for example Reader, InputStream, etc. Decorator Design pattern. There are two variables here - 1. Multiple Datasources with common interface 2. Multiple formats with common interface. 9implementation can be provided later on. our APi should be coded over interface rather than implementation.

12. How will you reverse a linked list in Java ?
13. How will you find common ancestor of two given nodes A and B in a binary Tree ?
14. How reverse key index helps in faster data reading and what is use case for this? Complexity of B tree index?

No comments:

Post a Comment

Your comment will be published after review from moderator