I applied online. The HR contacted in 3 days. After a 45 mins phone interview, I went to on-site interview. I have some research background on Cloud resource management, which the interviewers are interested. I spent about 15 mins to explain my work. However, the coding interview part was terrible.
One interviewer asked me to implement a sort function. I answered that I would like to implement Quick sort, and he agreed. After I wrote the partition function on the whiteboard, the interviewer had no idea about what I was doing. WHAT??? I explained extra one time using concept, and two times using an example. Finally, he got it. OMG!!!! I felt so awkward since I said it was the most common used sort algorithm.
Then comes another interviewer. He asked ridiculous "technical" questions. He asked me how to ensure a Java class is trade-safe. I answered something about multi-thread, globial variables, abstract methods, but he said these were not he wanted. That's fine, please tell me the correct answer. He said that we have to make sure all variables are assigned with values in the constructor method and make sure they cannot be modified by instances. WHAT????????? This exploded my brain! I felt realy sorry for Spring and other Dependency Injection framework.
Then he asked me: what is the largest improvement of Java 8. I didn't know. He told me the answer is Lambda. That's fine.
At last, he asked a coding question. He printed the requirements, which was nice. BUT, the requirement is two pages long. WHAT am I reading? I spent 5 mins to read it up and 5 mins to understand it using some examples. I got a rough idea and tried to explain it to the interviewer. After listening to my idea, the interviewer said that OK, I don't want you to write the code, but just try to come up with some other methods. It didn't surprise me at all! I re-engined my mind and come up with some other possible methods and discuss them with the interviewer. From his reaction, I even thought that he didn't know the solution at all. He just kept saying ok, can you come up with other methods?