This was *the* worst interview experience I have ever had, and I would have interviewed with about 30-40 companies in my professional career.
I applied online, and the recruiter got in touch soon to schedule a phone interview. The hiring lead/manager did the phone interview and explained their product in fair amount of detail and answered my questions patiently. He asked me a programming exercise, which was challenging but doable. The recruiter soon got in touch with me to schedule an onsite interview.
I interviewed with 4 people onsite, and 3 of them asked general Computer Science questions which were average difficulty, and I had fun solving them. However, one of the interviewers insisted on asking C++11/14 syntax related questions. He kept asking me syntaxes of how you would do something in C++. I don't use these syntaxes on a daily basis and hence, don't remember off the top of my head. He called them principles and fundamentals of C++, which is incorrect. STL is not a C++ fundamental, it is a library built on top of C++ fundamentals. For a particular question (erasing an iterator) he asked how would I do it. I wrote the code, and he said it wouldn't work. I told him this is the way we always write it, and it's been there in production code for about 6 years. He then accused me of making things up. I checked online again, and the code I wrote actually is functionally correct.
I let them know that I believe if the position requires someone to memorize all the nitty-gritties of STL or other libraries, then I am sorry to say I am not the right fit for this position. Or if I will be accused of making things up without fact-checking (even if I am wrong), I don't think it is a healthy environment for me to work at. The hiring lead called me and apologized on behalf of the interviewer, that the case was a on-off and assured me there would not be any issues if I were to join the company. He assured me if I can keep the issue aside, they would like to send out an offer to me. After some deliberation, I rejected the case as a one-off based on the assurances given and was looking forward to working at Foghorn.
They scheduled another call with the CTO, and he gave me more details about the company which got me very excited about working at Foghorn. Next day, I get an email from the recruiter saying they won't be moving forward because of the CTO talked to the interviewer and he wants there to be a "camaraderie" within them team. If that was the case, why did you apologize, give me false assurances and ask me to reconsider my position in the first place? You could have left it at that point and moved on and everyone would be happy with no more time wasted on either side. You did not need to raise hopes, get a person excited about an offer, and then dismiss it.
There seems to be no proper communication within the company. There seems to be a disconnect between the recruiter, the hiring leads and the CTO. For example, the recruiter told me that the concerned interviewer does not usually do interviews, whereas, the hiring lead told me that he does lot of interviews and this was just a one-off, and one of the other interviewers told me he knows that the concerned interviewer usually puts a lot of weight on syntax memorization.
Do not apply here unless you love to be a part of soap-operas, and have memorized all the obscure C++/STL syntaxes and tricks.