Technical Fraternity : hazing in technical interviews

skimread

Honorary Master
Joined
Oct 18, 2010
Messages
12,419
My 2cents

Like everything in life people prepare for those interviews knowing what will be asked will do well as opposed to someone who doesn't prepare the questions might sound unbelievable difficult.
I seems people forget that all those interviews at the big tech companies i.e. Google, Apple,Microsoft,Amazon,Palantir get leaked online. There is even a well known book called "Cracking the Coding interview" written by a former Google interviewer, which is regularly updated and most people use to prepare for interviews.

With todays internet, if you know the basis of CS then instant memory recall is no longer in advantage. As long as you know what you don't know you at least can search for it as soon as you see there is a need to use it in a project. The recent startup bubble has changed how we approach creating things. It's not that much about the idea or the knowledge but how you execute and if you have ongoing passion and positive attitude. Sure when scaling becomes an issue you can set time aside to check you've used the most optimized algorithms but to require a candidate to have an instant memory of the most advanced algorithms I don't think its necessary. When you don't apply for C or C++ or machine learning positions I also don't see the need to test it in interviews. For me being aware of algorithms is enough. That means I can refresh my memory if needs be when I need to use it in a project.

I feel older coders who've been successful or those who've worked in Silicon Valley have a bias that if you follow XYZ path they followed, you will be successful. Fact is times have changed. You have shorter programming boot camps due to technology changing so rapidly,burnout at top silicon valley companies is common, any tom dick and harry can publish an app for free, contributing to opensource projects is commonplace, if you don't keep up with latest trends you fall behind, money is being thrown around at startup competitions, cloud services are commonplace, your work location no longer matters( heck work remotely from Thailand if you want) and it is super super easy to find numerous sources on anything you have a shortcoming in on the internet, instantly.

In the current IT industry to have an illusory superiority based off past achievement and instant recall of fancy sounding algorithms is in my view rather illogical.
To turn this into a intellectual dick size competition throwing algortihmic buzz words around makes you sound rather stupid, considering in SA that you will battle to find a half decent programmer in the basics.
 

[)roi(]

Executive Member
Joined
Apr 15, 2005
Messages
6,282
Yeah... Totally...

Here's a simple example:
When someone first encountered the quicksort algorithm, they probably didn't off the bat understand it.
Yet with an acquired knowledge of functional HOF filtering, it becomes far more simple to appreciate how quicksort works, even to the point of knowing how to quickly recreate it:
Code:
func quicksort(var array: [Int]) -> [Int] {
  if array.isEmpty { return [] }
  let pivot = array.removeAtIndex(0)
  let lesser = array.filter { $0 < pivot }
  let greater = array.filter { $0 >= pivot } 
  return quicksort(lesser) + [pivot] + quicksort(greater)
}
Whilst we're not going to win any performance or optimization awards with that code; you should at least agree that the precepts are significantly simplified; dare we say made it possible for mere mortals to comprehend. This is only one example where progressive emparting of knowledge will ultimately lead to an overall betterment of comprehension.

Nobody was genetically embodied with theory, like everything we are the sum of the knowledge we've acquired.
 
Last edited:

[)roi(]

Executive Member
Joined
Apr 15, 2005
Messages
6,282
I don't see how this is relevant. There are plenty of jobs out there that either:
- don't require any CS specific skills at all
- or require CS skills, but don't require the paper (BTW, Apple Pay explicitly says BS or preferably MS, or "equivalent experience").

It is up to the employer to decide if they need CS skills and/or at what level, not the candidate. As above, not requiring a CS degree doesn't mean you don't need the skill set.
not everything is justification. This was simply a tweet sent out during the tweet storm.
 

[)roi(]

Executive Member
Joined
Apr 15, 2005
Messages
6,282
I feel older coders who've been successful or those who've worked in Silicon Valley have a bias that if you follow XYZ path they followed, you will be successful. Fact is times have changed. You have shorter programming boot camps due to technology changing so rapidly,burnout at top silicon valley companies is common, any tom dick and harry can publish an app for free, contributing to opensource projects is commonplace, if you don't keep up with latest trends you fall behind, money is being thrown around at startup competitions, cloud services are commonplace, your work location no longer matters( heck work remotely from Thailand if you want) and it is super super easy to find numerous sources on anything you have a shortcoming in on the internet, instantly.

In the current IT industry to have an illusory superiority based off past achievement and instant recall of fancy sounding algorithms is in my view rather illogical.
To turn this into a intellectual dick size competition throwing algortihmic buzz words around makes you sound rather stupid, considering in SA that you will battle to find a half decent programmer in the basics.
Agreed re accessibility changing the dynamics; problem is that quite a few corps are set in their ways -- I don't like or support that

The point on category theory I was trying to make in jest re cguy's post(probably should have picked a shorter buzz word) is that we can easily overcomplicate things; new paradigms have evolved to a point where many old concepts are no longer relevant, and complexity can easily be understood once you understand the buildng blocks. I used a Functional programming example, because it is very much a style of building complexity from simple and repeatable constructs.
 

cguy

Executive Member
Joined
Jan 2, 2013
Messages
8,527
[)roi(];18505652 said:
Here's a simple example:
When someone first encountered the quicksort algorithm, they probably didn't off the bat understand it.
Yet with an acquired knowledge of functional HOF filtering, it becomes far more simple to appreciate how quicksort works, even to the point of knowing how to quickly recreate it:
Code:
func quicksort(var array: [Int]) -> [Int] {
  if array.isEmpty { return [] }
  let pivot = array.removeAtIndex(0)
  let lesser = array.filter { $0 < pivot }
  let greater = array.filter { $0 >= pivot } 
  return quicksort(lesser) + [pivot] + quicksort(greater)
}
Whilst we're not going to win any performance or optimization awards with that code; you should at least agree that the precepts are significantly simplified; dare we say made it possible for mere mortals to comprehend. This is only one example where progressive emparting of knowledge will ultimately lead to an overall betterment of comprehension.

Nobody was genetically embodied with theory, like everything we are the sum of the knowledge we've acquired.

Yes, it is possible to express a simple algorithm simply...

Genetically embodied? :wtf: Anyone can learn anything - I never said they couldn't. This doesn't mean that they necessarily have the will or drive to do it though. The reason for testing this in an interview is to find those who already have shown such initiative, rather than betting the farm on potential - employers just don't have to do this.
 

cguy

Executive Member
Joined
Jan 2, 2013
Messages
8,527
My 2cents

Like everything in life people prepare for those interviews knowing what will be asked will do well as opposed to someone who doesn't prepare the questions might sound unbelievable difficult.
I seems people forget that all those interviews at the big tech companies i.e. Google, Apple,Microsoft,Amazon,Palantir get leaked online. There is even a well known book called "Cracking the Coding interview" written by a former Google interviewer, which is regularly updated and most people use to prepare for interviews.

Google alone has 57000 employees, and they each have leeway to create their own questions, and most do. Reading books about sample interview questions can certainly help by exercising the right areas of the brain, but the odds of getting something you've seen before are minimal, and given the quantity and diversity of interview questions during the interview process, and the general interactivity of it, rote learning isn't likely to help much.

It's not that much about the idea or the knowledge but how you execute and if you have ongoing passion and positive attitude.

No, it really is about all of the above. Surely, having all of the above is better than some of the above?

I feel older coders who've been successful or those who've worked in Silicon Valley have a bias that if you follow XYZ path they followed, you will be successful. Fact is times have changed.
You have shorter programming boot camps due to technology changing so rapidly,burnout at top silicon valley companies is common, any tom dick and harry can publish an app for free, contributing to opensource projects is commonplace, if you don't keep up with latest trends you fall behind, money is being thrown around at startup competitions, cloud services are commonplace, your work location no longer matters( heck work remotely from Thailand if you want) and it is super super easy to find numerous sources on anything you have a shortcoming in on the internet, instantly.

In the current IT industry to have an illusory superiority based off past achievement and instant recall of fancy sounding algorithms is in my view rather illogical.

Ageist crap. Being on the ground floor, seeing companies rise and/or fall, and colleagues prosper and/or fail, and having a front row seat to the changes, and active senior role in the development of current cutting edge technology is no disadvantage when giving career advice, and certainly doesn't imply a mental dependence on heyday success.

Algorithms aren't some sort of relic of the past that used to be beneficial. Much of the time skill in this area (being able do develop them, not memorize them) separates the innovators from the code monkeys. That's unlikely to change any time soon.

To turn this into a intellectual dick size competition throwing algortihmic buzz words around makes you sound rather stupid, considering in SA that you will battle to find a half decent programmer in the basics.

What "algorithmic buzzwords"? Something I said, or "zgyohistomorphic prepromorphisms"? ;)
 
Last edited:

skimread

Honorary Master
Joined
Oct 18, 2010
Messages
12,419
cguy said:
Google alone has 57000 employees, and they each have leeway to create their own questions, and most do. Reading books about sample interview questions can certainly help by exercising the right areas of the brain, but the odds of getting something you've seen before are minimal, and given the quantity and diversity of interview questions during the interview process, and the general interactivity of it, rote learning isn't likely to help much.p
I don't think the author of Cracking the Coding interview would agree with you. She was a Google interviewer herself and wrote a book using the opposite that you've said as motivation.
She is active on Quora so one can get a pretty good idea of her views on the matter.


cguy said:
No, it really is about all of the above. Surely, having all of the above is better than some of the above?
Hence the reason I said you should know what you don't know and you know where to find it.

cguy said:
Ageist crap. Being on the ground floor, seeing companies rise and/or fall, and colleagues prosper and/or fail, and having a front row seat to the changes, and active senior role in the development of current cutting edge technology is no disadvantage when giving career advice, and certainly doesn't imply a mental dependence on heyday success.
Illusory superiority is a cognitive bias. There is a reason it falls under the science of psychology and not computer science.

What "algorithmic buzzwords"? Something I said, or "zgyohistomorphic prepromorphisms"? ;)

The following is human speak? :D
cguy said:
Or the question could be:
- how do I efficiently compute a distributed covariance matrix from a multi-petabyte design matrix on heterogenous hardware?

Or:
- how do I efficiently sort the transparent fragments of 3D model during render in order to get correct transparency?

Or:
- how do I quickly determine if one 3D model is roughly a translation, scale and/or rotation of another (or any combination thereof)

Or:
- how do I compute the 3D mesh resulting from the intersection of two meshes? What if it's a tetrahedral volume mesh?

There is a Dilbert cartoon for what you do in your posts but I'm too lazy to look it up.
 

cguy

Executive Member
Joined
Jan 2, 2013
Messages
8,527
The following is human speak? :D

There is a Dilbert cartoon for what you do in your posts but I'm too lazy to look it up.

There are literally no jargon or buzz words (as in "popular or fashionable words") there - those are just examples of technical problems that involve algorithms, that I have looked into in the past. I will go into a bit more detail so you can see that these are just practical problems.

Covariance matrix (basic stats) - a matrix that represents how all pairs of N sampled numbers relate to each other (basically, which go up together and which move down together). The design matrix is just the K sampled values of those N numbers used for input. The design matrix can be very large (market data, image database, etc.), and it is an O(K*N*N) run time algorithm, so one generally wants an algorithm that can distribute it over multiple machines.

When rendering transparent objects, the pixels fragments have to be blended in reverse depth (farthest first, nearest last) order otherwise the transparency is off. There are many different algorithms to solve this with varying trade-offs.

A 3D model consists of a bunch of vertices (just a list of 3-tuples of number), and a structure indexing into these to define the triangular surface. In some situations (such as computer vision, object recognition or figuring out where the camera is from a reconstructed(3D implied from images) model), it is useful to figure out if some model is a rotated, scaled or moved (translated) version of another (two reconstructions from two different angles from some image can be used to figure out where the cameras are, or can be used to join one partially reconstructed object with another, or even to figure out if an object is an apple, a cat, a dog, whatever..

When doing 3D modelling, it is often useful to create a new object as the intersection of another - most CAD applications do this - it's called constructive solid geometry. Some apps just do surfaces, and some extend the idea of a triangle into 3D and represent a volume as a bunch of tetrahedrons joined together - this is often used when models are going to be used for some sort of physical simulation.

Anyway, to reiterate, the point is that these are real-world technical examples of algorithms, there are no buzz words, and I at least had no intention to use anything fancy or pretentious. Many people think of algorithms as "oh, like sorting", and think of quicksort or AVL trees as canonical examples, but really these are just the basic building blocks for the many types of work that many, many people do every day.
 
Last edited:

cguy

Executive Member
Joined
Jan 2, 2013
Messages
8,527
I don't think the author of Cracking the Coding interview would agree with you. She was a Google interviewer herself and wrote a book using the opposite that you've said as motivation.
She is active on Quora so one can get a pretty good idea of her views on the matter.

There are roughly 57000 Google interviewers :), almost all of them far more senior and likely interview totally different groups and classes of engineers (Google isn't going to ask fresh grads to interview senior engineers or cross team). Think for a moment - if that was even remotely true, Google would literally be unable to hire any real talent, and in the 8 or so years since that book was first published they would have been totally unable to separate the good from the bad.

Imagine Google - brought down by a junior engineer who only worked there for less than 3 years as her very first (and only) job in software engineering. She is in the founder and CEO of a company called CareerCup - following the money, what do you think she would want you to believe, and what do you think actually makes sense?

Edit: looking through her book it's actually very unlikely that anything there will be asked for an intermediate-to-senior position. It's all really elementary, but I do think it is a good book if one wants to brush up - I am sure it can improve one's chances a bit. If someone reads this and considers it mostly new and/or unfamiliar material, I seriously doubt the book would make a big enough difference for them to pass anyway.

Illusory superiority is a cognitive bias. There is a reason it falls under the science of psychology and not computer science.

How is that relevant? Have you considered the crazy notion that those who have actually achieved and continue to achieve success, may actually just know what they're talking about?
 
Last edited:

skimread

Honorary Master
Joined
Oct 18, 2010
Messages
12,419
cguy said:
Covariance matrix (basic stats) - a matrix that represents how all pairs of N sampled numbers relate to each other (basically, which go up together and which move down together). The design matrix is just the K sampled values of those N numbers used for input. The design matrix can be very large (market data, image database, etc.), and it is an O(K*N*N) run time algorithm, so one generally wants an algorithm that can distribute it over multiple machines.

When rendering transparent objects, the pixels fragments have to be blended in order otherwise the transparency is off. There are many different algorithms to solve this with varying trade-offs.

A 3D model consists of a bunch of vertices (just a list of 3-tuples of number), and a structure indexing into these to define the triangular surface. In some situations (such as computer vision, object recognition or figuring out where the camera is from a reconstructed model), it is useful to figure out if some model is a rotated, scaled or moved (translated) version of another (two reconstructions from two different angles from some image can be used to figure out where the cameras are, or can be used to join one partially reconstructed object with another, or even to figure out if an object is an apple, a cat, a dog, whatever..

When doing 3D modelling, it is often useful to create a new object as the intersection of another - most CAD applications do this - it's called constructive solid geometry. Some apps just do surfaces, and some extend the idea of a triangle into 3D and represent a volume as a bunch of tetrahedrons joined together - this is often used when models are going to be used for some sort of physical simulation.

Anyway, point being that these are real-world technical examples of algorithms, there are no buzz words, and I at least had no intention to use anything fancy or pretentious. Many people think of algorithms as "oh, like sorting", and think of quicksort or AVL trees as canonical examples, but really these are just the basic building blocks for the many types of work that many, many people do every day.
In SA many programmers might use it everyday indirectly by using a library or tool or cloud service, but I would say very few people code that low level stuff themselves because in SA you rarely have the opportunity to have such a specialized job where you code those specific algorithms you mentioned above daily.
I seriously doubt you get many local candidates that know that stuff offhand when interviewing , unless they just recent graduated or know you are going to ask them it.

All those things you mentioned I learnt in Mathematics, Statistics, Computer Science and Artificial Intelligence at university.
Have I used it since? No.
Do I use it daily tasks? No.
If I get a problem where I can make use of it as I can vaguely remember it so I can look it up to refresh my memory? Yes.
If get asked about it in a interview without preparing for it specifically will I go blank? Yes
Does it mean I am a bad programmer for not knowing it offhand? I don't care. I enjoy reading about programming and I bookmark stuff where I can find it when I need to.
Apart from that I am just an average programmer, definitively not in the top 1% and know my own memory limitations and my challenge is try to avoid burnout while still staying relevant and have a passion for what I do.
Is my intelligence penis size smaller than yours. Yes.
Do I care it isn't? No I don't care.
Will they turn me away for being too small at the Playboy Mansion of Silicon Valley. Yes
Do I care? No. It works and gives me enjoyment and can give others enjoyment. I don't have to use medication to get it up either. I also don't have any in STD (BS) in me so have that at least going for me.

cguy said:
How is that relevant? Have you considered the crazy notion that those who have actually achieved and continue to achieve success, may actually just know what they're talking about?
The point I'm trying to make was not to belittle your achievement, was trying to show it makes your inflexible in your views. In my view to exclude a candidate for a position in a country like SA because he doesn't have instant memory recall is rather illogical.

I have to admit too I found the posting by you and [)roi(] rather humorous and ironic considering the title of the thread. (Hence the Dilbert reference) :)
 

[)roi(]

Executive Member
Joined
Apr 15, 2005
Messages
6,282
Yes, it is possible to express a simple algorithm simply...

Genetically embodied? :wtf: Anyone can learn anything - I never said they couldn't. This doesn't mean that they necessarily have the will or drive to do it though. The reason for testing this in an interview is to find those who already have shown such initiative, rather than betting the farm on potential - employers just don't have to do this.
On that we agree.
 

[)roi(]

Executive Member
Joined
Apr 15, 2005
Messages
6,282
There are literally no jargon or buzz words (as in "popular or fashionable words") there - those are just examples of technical problems that involve algorithms, that I have looked into in the past. I will go into a bit more detail so you can see that these are just practical problems.

Covariance matrix (basic stats) - a matrix that represents how all pairs of N sampled numbers relate to each other (basically, which go up together and which move down together). The design matrix is just the K sampled values of those N numbers used for input. The design matrix can be very large (market data, image database, etc.), and it is an O(K*N*N) run time algorithm, so one generally wants an algorithm that can distribute it over multiple machines.

When rendering transparent objects, the pixels fragments have to be blended in reverse depth (farthest first, nearest last) order otherwise the transparency is off. There are many different algorithms to solve this with varying trade-offs.

A 3D model consists of a bunch of vertices (just a list of 3-tuples of number), and a structure indexing into these to define the triangular surface. In some situations (such as computer vision, object recognition or figuring out where the camera is from a reconstructed(3D implied from images) model), it is useful to figure out if some model is a rotated, scaled or moved (translated) version of another (two reconstructions from two different angles from some image can be used to figure out where the cameras are, or can be used to join one partially reconstructed object with another, or even to figure out if an object is an apple, a cat, a dog, whatever..

When doing 3D modelling, it is often useful to create a new object as the intersection of another - most CAD applications do this - it's called constructive solid geometry. Some apps just do surfaces, and some extend the idea of a triangle into 3D and represent a volume as a bunch of tetrahedrons joined together - this is often used when models are going to be used for some sort of physical simulation.

Anyway, to reiterate, the point is that these are real-world technical examples of algorithms, there are no buzz words, and I at least had no intention to use anything fancy or pretentious. Many people think of algorithms as "oh, like sorting", and think of quicksort or AVL trees as canonical examples, but really these are just the basic building blocks for the many types of work that many, many people do every day.
As you've said not everyone is inclined to want to learn this, hence I guess you've narrowed your interviews around that. Yet I believe the floor on complexity is being lowered, because we can express things far more simply than we previously did, even very complex parts of a codebase.

Side question: do you employ any functional aspects, or are you using any of the strictly functional languages like Haskell, Clojure, Scala, ...
 
Last edited:

[)roi(]

Executive Member
Joined
Apr 15, 2005
Messages
6,282
In SA many programmers might use it everyday indirectly by using a library or tool or cloud service, but I would say very few people code that low level stuff themselves because in SA you rarely have the opportunity to have such a specialized job where you code those specific algorithms you mentioned above daily.
I seriously doubt you get many local candidates that know that stuff offhand when interviewing , unless they just recent graduated or know you are going to ask them it.

All those things you mentioned I learnt in Mathematics, Statistics, Computer Science and Artificial Intelligence at university.
Have I used it since? No.
Do I use it daily tasks? No.
If I get a problem where I can make use of it as I can vaguely remember it so I can look it up to refresh my memory? Yes.
If get asked about it in a interview without preparing for it specifically will I go blank? Yes
Does it mean I am a bad programmer for not knowing it offhand? I don't care. I enjoy reading about programming and I bookmark stuff where I can find it when I need to.
Apart from that I am just an average programmer, definitively not in the top 1% and know my own memory limitations and my challenge is try to avoid burnout while still staying relevant and have a passion for what I do.
Is my intelligence penis size smaller than yours. Yes.
Do I care it isn't? No I don't care.
Will they turn me away for being too small at the Playboy Mansion of Silicon Valley. Yes
Do I care? No. It works and gives me enjoyment and can give others enjoyment. I don't have to use medication to get it up either. I also don't have any in STD (BS) in me so have that at least going for me.

The point I'm trying to make was not to belittle your achievement, was trying to show it makes your inflexible in your views. In my view to exclude a candidate for a position in a country like SA because he doesn't have instant memory recall is rather illogical.

I have to admit too I found the posting by you and [)roi(] rather humorous and ironic considering the title of the thread. (Hence the Dilbert reference) :)
Hahaha, nice one..:D
 

[)roi(]

Executive Member
Joined
Apr 15, 2005
Messages
6,282
Algorithms aren't some sort of relic of the past that used to be beneficial. Much of the time skill in this area (being able do develop them, not memorize them) separates the innovators from the code monkeys. That's unlikely to change any time soon.

What "algorithmic buzzwords"? Something I said, or "zgyohistomorphic prepromorphisms"? ;)
Agreed not everyone is going to want to learn this stuff, but as you'v implied that certainly doesn't take away from its importance; much of "ease of use" in systems and applications today is thanks to the many ingenious ways that this complexity has been encapsulated. Yet no matter how much we make things easier; there will always be those who need to understand the complexity.

Yip I think it was the zgyohistomorphic prepromorphisms, sorry guys :D
 

tridev

Well-Known Member
Joined
Mar 11, 2012
Messages
326
if that was even remotely true, Google would literally be unable to hire any real talent, and in the 8 or so years since that book was first published they would have been totally unable to separate the good from the bad.

Imagine Google - brought down by a junior engineer who only worked there for less than 3 years as her very first (and only) job in software engineering. She is in the founder and CEO of a company called CareerCup - following the money, what do you think she would want you to believe, and what do you think actually makes sense?

Edit: looking through her book it's actually very unlikely that anything there will be asked for an intermediate-to-senior position. It's all really elementary, but I do think it is a good book if one wants to brush up - I am sure it can improve one's chances a bit. If someone reads this and considers it mostly new and/or unfamiliar material, I seriously doubt the book would make a big enough difference for them to pass anyway.
You do know that book is no 1 top seller in computer programming on Amazon and is in its 6th edition?
Reading the reviews its almost all 5 star.
 
Top