Your story reminds me my ~7th (?) interview with Google where for LRU caching I mentioned Java's LinkedHashMap; which resulted in he explaining me "what a ridiculous, memory-wasting data structure would that be!" - and going on for a good 5 more minutes bashing my lack of knowledge and me trying coming up with ad-hoc data structures.
Needless to say, I continuously refused all their recruiters since then.
(For the interested: https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHa..., "This kind of map is well-suited to building LRU caches." - part of Java for more than a decade.)
I made it into Amazon, but honestly, after sitting in on a bunch of interviews, I now appreciate the amount of pure dumb luck involved (i.e. I got a loop of people who liked me and had questions I understood) rather than any skill (which is, well, pretty limited in reality).
Also you are wrong about standard IQ tests not being able to measure relevant skills for tech companies. They not perfect but I bet even those would do a better job than the current process. The psychometric research is clear that they are useful for predicting results across a wide variety of domains.
I am basing this on what the HR department for the company that I work for tells me. They have been administering them for years and they have never been a reliable indicator of company performance. That doesn't mean they're not used - management loves them.
> The psychometric research is clear
Do you have some sourcing for me? Perhaps I can read up and improve my own professional experience with new colleagues.
It’s more important that you have a professional attitude and can contribute to the culture and values. That’s much harder yo learn. And a wrong character with even all the hard skills can ruin everyone.
https://www.reddit.com/r/cscareerquestions/comments/1ilh7o/w...
I even asked him what he would need to see to believe it was O(n) and he had no answer.
Nothing worked!
> I continuously refused all their recruiters since then.
Even the almighty Google has people who don't know what they're talking about. Unless they're all like that, I'd write it off as a fluke. It's an embarrassing fluke for the interviewer--this is their problem, they should know it forwards and backwards and all the common solutions. If you get a lot of interviewers like that, then you should run.
Just because, they are Googlers.
Disclaimer: I'm not generalizing, and do have friends working for Google. Also this wasn't in the US.
I'm going to be in trouble when it comes time to interview again someday. I am not nearly as accepting of muscle flexing (anti-social behavior) as I was 10 years ago.
Here's to future self-employment!
Not the smoothest, but it was just time for me to leave.
Oracle as an enterprise/legal behemoth is very different from the cloud transformation business unit.
The silver lining is that I don't get jobs where the interviewers make me uncomfortable, so I don't have to deal with them more than once.
I think it's a real mistake when you don't let candidates write actual code and run it during interviews.
It has made me absolutely loathe non-interactive sessions. Not being able to run the actual code is ridiculous. Some of the best analysts and programmers I know of are "architecture guys/gals" who can create complex systems but may not knock out the actual code so quickly, or, as I like to call it "error message programmers".
Creating an interview test to weed out otherwise-intelligent "error message programmers" is, in my book, poor interview construction.
Okay, I need to iterate through a collection. Which is it again?
foreach (int element in elements), no that's C#.
for (int element : elements) .. nope that's java
for (var element in elements) .. There we go.
Probably wouldn't exactly go like this, I know js isn't typed when I sit down to write it. (except for when it is!) ;)
Regardless, I call this my "tooling up" period. Each day i'm faster, and it takes about a week to get to 100%. but then I'm golden until the project is done and I inevitably have to switch techs again. I probably need to flex more than specialists in interviews because of this. Whenever pseudo code is on the menu I breath a sigh of relief.
It makes me sad to think how hard it would be to remove bad interviewers like above. But as long as they perform reasonably well they won't get fired, and I don't think there is any interview QC system to feed back into the org. And thus we slowly slide from A to B and C territory...
Any optimization should happen after a basic algorithm that works and might go along the lines of (telemetry suggests our platform has a bottleneck here) how would you speed things up if there's an issue in this section?
So I indulged them. I spoke to a manager who said that he'd reviewed my coding project, and been happy with it ("so we can skip that"), so we talked (largely about K8s, as I am looking for an SRE management role - I'd told them I was happy where I was but was curious, and after all they'd reached out to me).
I talked about my experiences architecting K8s from a green field mostly by myself, and he was excited.
I spoke to someone else and he was excited. Okay, I thought, this has potential.
Email from HR: "We have a tech screen lined up for you. Please nominate some languages." I went with Python. Bear in mind I haven't written substantial code in _any_ language (except YAML, hah), for years. And was looking for a _management_ role in SRE.
So I had two rapid fire coding exercises (15 mins each ostensibly). Python lists and comprehensions, and some tokenization stuff. I struggled. Google was my friend but there was a good bit of "error message programming". I walked through the processes and my thoughts. I hesitated a bit at what Big O notation some of my code was, but I recognized routes to loop optimization and could see what was happening, even if I didn't know what the name was.
"Sorry, we are unable to continue following your tech screen".
Oh well. If your SRE PMs and group managers are required to write Python list comprehensions, maybe your idea of "manager" and mine... differ.
Without the group by, you will be returning every row from the table, which isn't what the task calls for. You'd then have to do an additional row_number() or distinct or something to just get the unique rows per month per country.
And as you mentioned, you can also distinct on the window function. This is not an inefficient operation in Redshift.
Also I fundamentally disagree with your premise. One result set is equivalent to another, and as long as you aren't using unnecessary nested loop joins or such, there are a dozen ways to solve a query.
In another interview at a similarly-competitive company to AWS , I was asked to do some work on orders and orderdetail tables to find all customers where the aggregate total of their orders from 2005 were greater than that of their orders from 2007. I did it using a couple of `sum(case when extract(year from datecol) = 200x then order_amount end)` statements.
The interviewer told me the question was intended to test whether the applicant was able to do a self-join but they were impressed with my alternative solution. That is the proper way to test SQL, not to say someone "did the query the wrong way"
If they consume similar resources I'd almost always opt for the simplest one to understand.
In cases where the simpler one is less efficient, I might still use it if the task didn't require absolute optimization.
That's not a good reason to reject a candidate, even if there might be other good reasons in this case.
However, the interviewer didn't simply insist the query does not do what was asked (when it did indeed return the correct results).
Instead, the interviewer actually insisted it was an invalid query which would not run at all.
I'm not saying this is a good process or that it's fair, but it is the reality right now. You still get OK results and it's far faster and cheaper.
If you are interviewing someone and they solve the problem you ask, and then you don't give them some sort of guidance or constraints to meet your "correct" guidelines, then you aren't doing a good and fair interview.
For your information, this was the later stage of questions. The very first question did involve a simple summation group by, so I'd already demonstrated my understanding there. I showed no frustration or annoyance during the interview in case you are attempting to imply that was the case.
wait, what about the GIL?!? did they fix that?
It's really a great way to get insight into how people approach problems and how fluent they are in a subject. And if they get something wrong, but they thought it through, that's a problem that will fix itself pretty readily. The person who doesn't think stuff through likely won't start.
But the naive approach to whiteboarding is to do it as a test, can the person perform task X on the fly. The trouble is it's invariably an ad hoc test that generates ludicrously biased data. The really bad interviewers want to stroke their ego by stumping you with all the cool minutiae they know.
That’s the proper way to whiteboard.
Ideally you only hire people with good soft skills, but if you couldn’t, at least you should make sure they don’t do the interviews.
When asked to write a query to get the total GDP by month per country, I wrote a query along the lines of:
select date_trunc('month',datecolumn) as month, country, sum(GDP) over (partition by date_trunc('month', datecolumn), country) FROM the_table order by 1
The interviewer asked me if I was missing something. I said no. "Don't you need an additional clause if you're doing a sum?"
"No," I responded, "in AWS Redshift (and postgres and mysql 8.0+ and...) if you do a Sum Window Function a group by is not necessary"
The interviewer made a noise and demeanor changed as if I knew not what I was talking about. While I can't be 100% sure, I'm almost positive I was failed for "missing" the group by.
I went home later that day and wrote exactly the same query, which ran successfully. The AWS BI Intelligence Engineering manager didn't even know how to use a sum window function. I was a bit frustrated at being failed because the interviewer didn't know of a (well-known, well-used) feature, but perhaps I dodged a bullet.