I applied late at night a few weeks ago, and was woken up next morning by a very enthusiastic recruiter. I told her to call me back in 30 minutes as she had just woken me up, and I needed to think straight. She called me back promptly, and we spoke for about an hour. She explained the process and said that she'd be submitting my resume to some panel and one of the teams might select my resume to move ahead. Next day comes around, and the AML (Anti Money Laundering) team has selected my resume. We decide on availability and a date and time is set. 3 PM EST. And I'm in CA, so it's noon for me. Noon comes and goes and no call. I email them to find out that the Software Engineer got pulled into a meeting and would call me at 4 PM PST. I already had a bad feeling, but could do nothing, because I was going on vacation and wouldn't be back till next week. The risk of a 4 PM interview was obvious. It's the time when work is winding down and people wanna go home. Rather than postpone, since I was all prepped and ready, I said 4 PM is fine. An Indian guy calls, and without really asking about my resume, dives into the first (and only) technical question: If I have a table with columns a, b and c, how can I get the following counts: count of all a's where a is null, b's where b is null and so on for c, a and b, b and c, a and c and a, b and c, in a single scan of a table. I immediately think of the CASE statement. I mess it up a bit by not quite remembering that we can do a COUNT(CASE(... )), but I get there, and he's like, "No". I'm trying to think aloud and give him answers, but he said it wouldn't work, and just kept quiet. In fact, after telling him my solution, he was quiet for so long that I thought the line had gotten disconnected. He then asked me stuff about my resume, and what I'd done. But that question kept gnawing at me because I knew I was at least half-right, if not more, and I knew I was losing him, and so I said, "Can we go back to the question?". He said okay, and then I told him that we could do a COUNT(CASE()) and get his results. He still said nothing more than, "It won't work". Then he said, "Okay, what if there were many columns, and they kept changing. You wouldn't change your query right? How would you do this programmatically?". So I said, I would query the metadata to get the basic row count information, and the number of columns. Once you have the number of columns, you can form your query for each column and run that to get your counts. Silence. I said, "Uhm.. Hello?". He said, "It's okay. Do you have any questions for me?". By this time, I'd lost all interest in the interview myself, but asked him, "Sure! What does you team do?" Typically, this would involve telling the candidate what the team does at a high level and then drill down in the technicalities, if need be. He said, "We perform aggregations on Hive and we use Java and Python, but mostly Java." Not quite what I was expecting, but I was like, "Whatever". The call ended and so did my misery.
I had very serious thoughts of emailing the recruiter and withdrawing from consideration. I wouldn't have wanted this kind of team/team mate. However, since I was going on vacation, I just waited instead for the rejection email to come. It duly arrived on Monday, and yesterday, the very friendly recruiter called me to give more feedback and after she was done, I unloaded on her and told her pretty much whatever I've typed here, and said that I don't think I'd want to apply to Capital One again given this experience. Once bitten, twice shy and all. She apologized for the negative experience and thanked me to bring it to her attention. Not sure if she'll actually tell the team, but I couldn't care less. I'm done with this company.