The amount of bullshit questions you are asked in the interview is directly proportionate to the bullshit in the job. Places with interesting puzzles to solve can and will rely on your intrinsic motivation to put up with their dysfunctional and toxic environments.
I wish I had the balls to leave an interview if they asked a bogus question. I stumbled in an interview trying to figure out how many x there were in city y, some estimating silliness. I got the job offer but chose a different company that wasn't so ridiculous.
Pretty cool stuff, but it's annoying that they ask these kind of questions in interviews, as it's basically just trivia. Either you know about Fermi Estimation or you don't. Totally irrelevant to how good you are at programming.
I've heard interviews can't predict employee performance at all. I've been a top performer at most of my jobs but am terrible at interviews. As an example I just had an interview with a company and screwed up on the first question (brain fart mode) and knew from there it was over for me. The job I work now I wasn't even interviewed. They said based on my CV I have enough experience and I started straight away. The job I have now pays more and has better hours etc than the tough interview job. When they pull that draconian interview shit on you they are just trying to give the impression that you should be submissive to them and feel honoured for being selected for a crappy job. When the interview is relaxed and they feel you out from your CV etc instead of asking contrived questions the whole work environment will usually be much better.
I've been a top performer at most of my jobs but am terrible at interviews.
I am in the exact same situation.
When you look at my CV then you can immediately see that you can throw anything at me, and I guarantee a successful outcome even incredibly complex projects. I am passionate driven to develop quality code. However from HR point of view I fail the bingo keywords test and they can't catalog me so they pretend that I do not exist.
One time I went on an interview. That HR woman pushed me in front of some Microsoft .NET test and pressed enter. I noticed a clock ticking that gave me 2 hours. So I took my time. I think about 20 minutes later she came in stopped the test and looked at the results. Then she concluded that I am no good. The interesting thing is that 1 week later reality set in when I started with a competing company. She tried everything to convince me to come to her company. Of course I rejected her.
Yeah those contrived interviews are a surefire way to knowing the job will be shit. The question I fucked up on was "name a time you gave extra special favour to a client and went beyond your role". Only problem was is that I worked a government job and had to stick to a certain procedure or else I would be fired. There was no way to answer that question since if I did anything like give my own opinion or checked out anything outside our remit it would lead to disciplinary action. Anyways. I wasn't selected for that shit job but found something else that pays better and is more relaxed. Any harsh corporate textbook interviews you know the company will be shit. There are companies still out there that will reward you for what you're worth rather than being able to answer tacky contrived interview questions that are ultimately meaningless. Best jobs are ones where you interview in person and speak honestly rather than answering some computer generated questions. Also any job that does group interviews will also be shit. If you fail in that sort of atmosphere just know that those jobs are ultimately shit and there are better out there.
When I perform "technical" interviews, I'll pose an architectural problem as if they were a team member, and then collaborate with them to a workable solution. I'll see if they are able to see the up-sides and down-sides of the solution. If we jive, and they have great input, then they are a go in my book. I don't care if they know how many dildos there are in the world. Or if they have every nook and cranny of a particular language memorized.
When I perform "technical" interviews, I'll pose an architectural problem as if they were a team member, and then collaborate with them to a workable solution.
That is actually the best way, you see their creativity, quality and passion for the job.
What HR tends to do is using bingo words and get the exact same clone developer as they already have. But most good teams do not have 10 equal clones but have different people compensating for the lack of skills of the other team members.
Yes yes, I've given these interviews before, but the idea is that you help the person along a little if they don't get the obvious traps. My current really obvious one is to find the largest number in a 5 terabyte file, single column csv.
1 'column' doesn't have any commas.
also, sorting 5 tb would take a very very long time, if it was sorted then it would be at the end or the beginning, which would indeed be trivial.
Then reverse search on the "\n\r" from the end of the file (if it was sorted).
If it is not sorted and not distributed across several disks or networks then you can only do it from start to end. However good developers cheat, if speed is required then I reboot with a bootstrapped that bypassed the complete OS and controls directly the disk IO so I am the only one that accesses the hard disk and read the sectors sequentially, and restructure them in RAM if they are out of sequence on the hard disk. The less your head moves the faster you can transfer data.
You then gain speed by writing optimized function to not move the loaded data in RAM and you only do the search between 2 sector reads so you overlap finding the biggest number when the hard disk is finding the next sector.
so what's the answer? unless i'm mistaken, there's no way of doing it in sub-linear time if it's unsorted, unless your "trap" is to somehow store the max number you find when the file is loaded.
Well, there are a lot of things you could do, but usually the wrong answer is when people say just sort it and stop. It's really a cue to get the developer to show how clever they are, so If we go for a simple linear answer you could just save the highest number you come across. You could use threading, multiprocessing or even a gpu because the problem is parallelizable. You could also make use of a memory map or directly access the device unmounted
amazon asked me a similar question only in a different context having to do with stars and the center of the universe. I answered his question and also told him there were 2 answers and walked out of the interview. You're part of the reason why tech hiring is broken. You might as well ask him what 1+1 is.
In a previous career I managed a 1200 person business unit for a technology company. When the company was sold the new owners instituted 'behavioral interviewing.' The theory was that, under the existing interview process, interviewers were questioning interviewees for ten minutes, and then basing a hiring recommendation on who they liked. So in comes 'behavioral interviewing.' A million dollars spent on software and training, with exactly the outcome I predicted - interviewers would follow the new format, questioning an interviewee for an hour, and then basing a hiring recommendation on who they liked.
Anecdote #2
Many years ago, during my very first job interview, I was asked what kind of a tree I would be, if I was a tree. I looked the interviewer straight in the eyes and said "a tree with a fucking job." He offered me the job.
Newer programmers these days sound more like children than people who you can trust to do their job proficiently (maybe it's a side effect from all the cutting and pasting they did..or still doing.. while somehow managing to get their degree). I've worked with programmers from all walks of life from your newly minted college grad to your nuclear safety system veterans, what I can tell you is you can always get a bad programmer up to speed so they can meaningfully contribute to the project. However, you mostly likely will not reform a whiney || entitled programmer (like the author of the article) -- he would likely quit/get axed before you get a chance to make any head way. Chalk it up to people making "Apps" compared to people making software -- I guess.
On the topic of the interview (been on both sides numerous times, more the technical gauge these days). The questions are there to see how you think and how you act under pressure, because in the real world we have scheduling requirements to meet and that directly translates to someone's college fund, their mortgage, etc. So you can't blame the team for wanting someone who is a good fit for their project that they might have been working on for the past several years or more.
We have moved away from asking your general run of the mill questions in our interviews -- but always ask at least one data structure question (you can see a sample problem here from my post history #1). The link list question is a decent question and here's why:
It involves a pointer. (Can you tell me why we need pointers in the first place?)
It involves some type of data (can be template).
It involves some mechanism to transverse the elements.
If you solved it recursively, can you do it without recursion?
If you solved it iteratively, can you do it with recursion?
And really the LL can be taken as the basic building block of other data strutures like a stacks, queues, maps, trees, etc. So when the author says somethign like this:
I have only ever used linked lists for two things: a) computer science exams, and b) interviews by people who passed the former.
I know I can't take person very seriously. Really, what can you possiblely being doing that you can avoid such basic structures as those? Wonder if Apps makers every asked how their ListView control actually works under the hood? Or better yet how a x86 processor works? Because you know, there's a thing call a SP register(s).. that makes everything possible.
I know I can't take person very seriously. Really, what can you possiblely being doing that you can avoid such basic structures as those?
I also never have used linked lists except in school. Of course the software libraries probably use it internally.
And I have millions of code written myself in probably every domain possible.
What I have learned so far in developing good code is:
You have to understand the problem you want to solve. Deciding that you will use linked list is meaning less if you don't know what you are building.
You cannot understand the problem unless you have built big parts of the code the first time. Don't waste your time on design patterns, until you understand the problem.
Build with fault tolerance in mind. Sooner or later some Noob will make a fault and give your program corrupted data. You don't want to cripple the functionality of a stupid double entry enters your IDictionary.
Build with easy testing in mind. The code that is easy to test by testers is also easy to develop yourself. I have seen code with more loggings that real functional code. That code became unreadable because the log lines hid it.
Build with change in mind. Design your code in such a way that if management or the client changes their mind then it can be easily altered. That type of code is also more readable and easier to build.
29 comments
8 u/roznak [OP] 02 Oct 2015 20:07
7 u/brother_tempus 02 Oct 2015 20:10
The problem with the article is that it is based on a flawed premise.
It is flawed because the author provides no evidence, it is merely their opinion
1 u/roznak [OP] 02 Oct 2015 20:16
Are you one of these HR guys?
That article is spot on.
3 u/brother_tempus 02 Oct 2015 20:22
No and if i were it would be irrelevant since my argument is based on logic not job experience
-4 u/roznak [OP] 02 Oct 2015 20:27
Software is not logical. It is build on piles and piles of bad coding and bugs to a point that logic does not apply anymore.
2 u/brother_tempus 02 Oct 2015 20:37
That's like saying anything built by man is not logical ....
-6 u/roznak [OP] 02 Oct 2015 20:49
Every software that is built in logical way ends up into the garbage can because they fail in the none-perfect world.
When you look behind the scenes of every equipment then it is full of design flaws patched together with tape.
6 u/TheCompanionCube 02 Oct 2015 20:41
I wish I had the balls to leave an interview if they asked a bogus question. I stumbled in an interview trying to figure out how many x there were in city y, some estimating silliness. I got the job offer but chose a different company that wasn't so ridiculous.
5 u/Fyrix 02 Oct 2015 23:57
https://en.wikipedia.org/wiki/Fermi_problem
Pretty cool stuff, but it's annoying that they ask these kind of questions in interviews, as it's basically just trivia. Either you know about Fermi Estimation or you don't. Totally irrelevant to how good you are at programming.
3 u/Scotcheggs 02 Oct 2015 21:01
I've heard interviews can't predict employee performance at all. I've been a top performer at most of my jobs but am terrible at interviews. As an example I just had an interview with a company and screwed up on the first question (brain fart mode) and knew from there it was over for me. The job I work now I wasn't even interviewed. They said based on my CV I have enough experience and I started straight away. The job I have now pays more and has better hours etc than the tough interview job. When they pull that draconian interview shit on you they are just trying to give the impression that you should be submissive to them and feel honoured for being selected for a crappy job. When the interview is relaxed and they feel you out from your CV etc instead of asking contrived questions the whole work environment will usually be much better.
-2 u/roznak [OP] 02 Oct 2015 21:37
I am in the exact same situation.
When you look at my CV then you can immediately see that you can throw anything at me, and I guarantee a successful outcome even incredibly complex projects. I am passionate driven to develop quality code. However from HR point of view I fail the bingo keywords test and they can't catalog me so they pretend that I do not exist.
One time I went on an interview. That HR woman pushed me in front of some Microsoft .NET test and pressed enter. I noticed a clock ticking that gave me 2 hours. So I took my time. I think about 20 minutes later she came in stopped the test and looked at the results. Then she concluded that I am no good. The interesting thing is that 1 week later reality set in when I started with a competing company. She tried everything to convince me to come to her company. Of course I rejected her.
1 u/Scotcheggs 02 Oct 2015 23:10
Yeah those contrived interviews are a surefire way to knowing the job will be shit. The question I fucked up on was "name a time you gave extra special favour to a client and went beyond your role". Only problem was is that I worked a government job and had to stick to a certain procedure or else I would be fired. There was no way to answer that question since if I did anything like give my own opinion or checked out anything outside our remit it would lead to disciplinary action. Anyways. I wasn't selected for that shit job but found something else that pays better and is more relaxed. Any harsh corporate textbook interviews you know the company will be shit. There are companies still out there that will reward you for what you're worth rather than being able to answer tacky contrived interview questions that are ultimately meaningless. Best jobs are ones where you interview in person and speak honestly rather than answering some computer generated questions. Also any job that does group interviews will also be shit. If you fail in that sort of atmosphere just know that those jobs are ultimately shit and there are better out there.
2 u/xaric 03 Oct 2015 04:02
When I perform "technical" interviews, I'll pose an architectural problem as if they were a team member, and then collaborate with them to a workable solution. I'll see if they are able to see the up-sides and down-sides of the solution. If we jive, and they have great input, then they are a go in my book. I don't care if they know how many dildos there are in the world. Or if they have every nook and cranny of a particular language memorized.
0 u/roznak [OP] 03 Oct 2015 13:34
That is actually the best way, you see their creativity, quality and passion for the job.
What HR tends to do is using bingo words and get the exact same clone developer as they already have. But most good teams do not have 10 equal clones but have different people compensating for the lack of skills of the other team members.
1 u/0x7a69 03 Oct 2015 00:24
Yes yes, I've given these interviews before, but the idea is that you help the person along a little if they don't get the obvious traps. My current really obvious one is to find the largest number in a 5 terabyte file, single column csv.
-2 u/roznak [OP] 03 Oct 2015 03:12
If that 5 TB is sorted then move to the end first and go backwards until you find the ","
0 u/0x7a69 03 Oct 2015 03:33
1 'column' doesn't have any commas. also, sorting 5 tb would take a very very long time, if it was sorted then it would be at the end or the beginning, which would indeed be trivial.
-2 u/roznak [OP] 03 Oct 2015 03:50
Then reverse search on the "\n\r" from the end of the file (if it was sorted).
If it is not sorted and not distributed across several disks or networks then you can only do it from start to end. However good developers cheat, if speed is required then I reboot with a bootstrapped that bypassed the complete OS and controls directly the disk IO so I am the only one that accesses the hard disk and read the sectors sequentially, and restructure them in RAM if they are out of sequence on the hard disk. The less your head moves the faster you can transfer data.
You then gain speed by writing optimized function to not move the loaded data in RAM and you only do the search between 2 sector reads so you overlap finding the biggest number when the hard disk is finding the next sector.
0 u/synergy 05 Oct 2015 22:38
so what's the answer? unless i'm mistaken, there's no way of doing it in sub-linear time if it's unsorted, unless your "trap" is to somehow store the max number you find when the file is loaded.
0 u/0x7a69 07 Oct 2015 22:56
Well, there are a lot of things you could do, but usually the wrong answer is when people say just sort it and stop. It's really a cue to get the developer to show how clever they are, so If we go for a simple linear answer you could just save the highest number you come across. You could use threading, multiprocessing or even a gpu because the problem is parallelizable. You could also make use of a memory map or directly access the device unmounted
0 u/synergy 15 Oct 2015 01:43
amazon asked me a similar question only in a different context having to do with stars and the center of the universe. I answered his question and also told him there were 2 answers and walked out of the interview. You're part of the reason why tech hiring is broken. You might as well ask him what 1+1 is.
0 u/0x7a69 15 Oct 2015 16:05
You would be surprised just how many people with 8 years experience and a masters are incapable of giving an answer other than "just sort it"
1 u/fuck_communism 03 Oct 2015 05:31
Anecdote #1
In a previous career I managed a 1200 person business unit for a technology company. When the company was sold the new owners instituted 'behavioral interviewing.' The theory was that, under the existing interview process, interviewers were questioning interviewees for ten minutes, and then basing a hiring recommendation on who they liked. So in comes 'behavioral interviewing.' A million dollars spent on software and training, with exactly the outcome I predicted - interviewers would follow the new format, questioning an interviewee for an hour, and then basing a hiring recommendation on who they liked.
Anecdote #2
Many years ago, during my very first job interview, I was asked what kind of a tree I would be, if I was a tree. I looked the interviewer straight in the eyes and said "a tree with a fucking job." He offered me the job.
0 u/roznak [OP] 03 Oct 2015 03:14
I actually have a good boss now, last time he told me, my job is to get you past HR, then it is your turn when he puts me at another client.
0 u/duannguyen 04 Oct 2015 04:50
Newer programmers these days sound more like children than people who you can trust to do their job proficiently (maybe it's a side effect from all the cutting and pasting they did..or still doing.. while somehow managing to get their degree). I've worked with programmers from all walks of life from your newly minted college grad to your nuclear safety system veterans, what I can tell you is you can always get a bad programmer up to speed so they can meaningfully contribute to the project. However, you mostly likely will not reform a whiney
||entitled programmer (like the author of the article) -- he would likely quit/get axed before you get a chance to make any head way. Chalk it up to people making "Apps" compared to people making software -- I guess.On the topic of the interview (been on both sides numerous times, more the technical gauge these days). The questions are there to see how you think and how you act under pressure, because in the real world we have scheduling requirements to meet and that directly translates to someone's college fund, their mortgage, etc. So you can't blame the team for wanting someone who is a good fit for their project that they might have been working on for the past several years or more.
We have moved away from asking your general run of the mill questions in our interviews -- but always ask at least one data structure question (you can see a sample problem here from my post history #1). The link list question is a decent question and here's why:
If you solved it recursively, can you do it without recursion?
If you solved it iteratively, can you do it with recursion?
And really the LL can be taken as the basic building block of other data strutures like a stacks, queues, maps, trees, etc. So when the author says somethign like this:
I know I can't take person very seriously. Really, what can you possiblely being doing that you can avoid such basic structures as those? Wonder if Apps makers every asked how their
ListViewcontrol actually works under the hood? Or better yet how a x86 processor works? Because you know, there's a thing call a SP register(s).. that makes everything possible.1 u/roznak [OP] 04 Oct 2015 13:51
I also never have used linked lists except in school. Of course the software libraries probably use it internally. And I have millions of code written myself in probably every domain possible.
What I have learned so far in developing good code is: