Microsoft's Personnel Puzzle 961
theodp writes "CNET reports on Microsoft's reputation for arrogance in its personnel practices, citing the experience of Arthur Sorkin, who responded to an unsolicited invitation to interview with MS back in 2000. But instead of trying to sell him on the company or the job, interviewers challenged him with a technical 'pop quiz.' Sorkin, who holds a PhD in CS, withdrew his application. During the past year, Microsoft called Sorkin to say it had scheduled a phone interview with him for another job, although Sorkin hadn't applied for it and no one had asked if he was interested."
True on many levels (Score:2, Informative)
Microsoft also displays a (surprising in my view) amount of arrogance with it's "Partner" companies. I'm a research engineer at a very large chip company and have been invited many times to internal dog and pony shows where Microsoft presents future plans and projects (such as Avalon and Indigo for Longhorn).
This assumption that everyone wants to work for Microsoft that was mentioned in the article was also very evident to me in this venue. They believe that everyone wants to use Microsoft's approaches and products, just because it is Microsoft who is backing it.
Now that may have been true in the 1995-1999 era, but it certainly isn't today, seems many of the upper management is living in the past or is shielded from reality.
Re:Why is this news? (Score:3, Informative)
Instead, be prepared to talk about past experiences and how you've handled various job situations. Behavioral interviewing. That's where it is now.
Re:Why is this news? (Score:1, Informative)
Re:Here I am... (Score:2, Informative)
I love working here. The people are amazing, the area is beautiful, it's easy to get excited about what you're working on, and the culture can be incredible. (more so in some places than others though - I absolutely LOVE hanging out over with the Xbox guys, cause there's always an atmosphere of fun over there)
And yes, I used to bash MS a few years back. Not anymore though.
I Sing the Body Electronic (Score:1, Informative)
Re:MS vs. Google (Score:1, Informative)
Happened to a guy I know.
Similar(ish) experience at IBM (Score:3, Informative)
A few weeks after telling IBM that they did not want the job, they got letters telling them that their offers had been withdrawn as they had failed to achieve 2:1's (type of British honours degree).
However, both of them had managed to get this grade of degree, just decided IBM wasn't for them. If it had happened once I would have figured it was a mistake, but twice seems to me that their personnel system can't cope with the fact that people may actually turn down a job with them, and a form letter is sent out by their bureaucracy.
Microsoft Interview (Score:5, Informative)
Their phone interview process was a good mix of explaining what it is they were doing and how I could help, and making sure that I was the right mix of skills and cleverness to fit in with the group.
I passed that round, and was invited to Redmond to interview in person. I found the whole on-site interview process to be a lot of fun -- I'd heard that the interview process was gruelling, painful, challenging, etc... but I thought it was fun. And shortly thereafter, they offered me the position.
Fully half the time I've spent talking to Microsoft has been on the topic of what they have to offer me, and it was considerable.
In the end, I decided not to relocate to Redmond, mainly because I wanted to finish up my BS (three semesters to go at the time, now one more), which I'd been working on part time for eight years, while working as a software engineer.
So I guess in the end, if you don't enjoy that kind of interview, maybe you're not really qualified, despite your education. There are plenty of places where all the cleverness in the world is worthless, but the skills required to earn that PhD are essential (I can't imagine working in an evironment like that... but hey, each unto their own).
Personally, I found the whole experience to be very positive, and if after I finish my BS, the PhD doesn't work out, I might be taking that permanent trip to Redmond after all.
-brian
Re: PhD in CS is WAY overrated (Score:4, Informative)
Re:Spam (Score:3, Informative)
I'd be willing to gamble Anders didn't have to take the test. And if so, as nothing more than a formality.
Then, via email, they sent me an ACTUAL test to take, which had only 3 questions on it, the first 2 I got right I am fairly sure:
1.) How to swap two variables (numeric) w/out using the (what I call it) "Father, Son, & Holy Ghost" technique of 3 variable placeholders...
(This was the easiest, & involved math, & easiest)
Generally, engine/algorithm I used was/is:
A=1
B=2
(Goal being A=2, & B=1, w/out using C as temp var)
B=A+B (3)
A=B-A (3-1 = 2, first swap complete)
B=B-A (3-2=1, second swap complete)
You get partial credit for this (in the real world), although most experienced people won't use that technique.
The reason?
What happens in step #1:
B=A+B
Suppose you have two sixteen-bit variables and you have to swap the variables which have the values 26'459 and 12'371?
hint: The sum is 38'830. Think about that compared to 32'767.
It's not just sixteen bits - that's just one example - it'll happen anytime you force an overflow error for the bounds of the variables.
Just out of curiosity, how old are you?
Re:Why is this news? (Score:3, Informative)
Memo to Bill Gates... (Score:3, Informative)
If you insist on importing massive numbers of H1B visa applicants and paying them slave-labor wages to write code, you'll eventually reap the fruits of this policy. If you insist on outsourcing software development to third world countries just to save a few bucks on developer's salaries, you'll eventually get what's coming to you.
The IT industry as a whole has been guilty of this. All of the big players: Microsoft, Cisco, Sun, and IBM have taken part in the outsourcing craze and now they act surprised when college students don't want to study IT for fear of being outsourced.
You cannot have your cake and eat it too. Want cheap labor? Fine, you can have it, but after you've laid off all the highly paid US developers and decimated the IT industry, don't expect to be able to find talented individuals to manage your cutrate 3rd world development teams.
Re:CS 101 Questions (Score:4, Informative)
Why take it as an insult? Perhaps the interviewer is forced to ask the question regardless of the candidate. It could also just be a test of arrogance, sometimes in the real world you're asked to do jobs that you might consider beneath you. Don't think a manager wants an employee that says "PhD's don't fill out TPS reports"
Besides if it's an easy question just answer and move on.
Morons do not get PhD's.
No, but people with no practical knowledge sometimes do. At least in physical sciences you can spend your graduate career focused on theory and similuation, without any actual hands-on experimentation. I'm assuming CS might have something similar where stuff is just described on paper with no actual coding done.
And no hand holding will get you that far.
There are some PhD's who just do what their professor tells them, that's what I mean by hand holding. Doesn't mean the person getting the degree is stupid, they've just never had to think creatively.
Re:Why is this news? (Score:2, Informative)
It's the only interview I've ever had where I didn't hate the whole thing afterwards.
Re:Not that I'd ever side with MS... (Score:3, Informative)
Probably within a month of that, I was contacted by a larger company. I went in for an interview and things went well. Their engineering staff was located in a different city, so I had a phone interview with them and they asked me if I'd be willing to write some code for them. They emailed me the problem and told me it should take me 1-2 hours to finish. It took me 6-8 hours and I stayed up until about 02:00 to do it. When they got my response, they apologized to me as they realized their question was a lot tougher than they'd thought it was, and offered me the job.
I don't have a problem with proving that I know what I'm doing, ONCE the company has shown that they are interested in me and have a baseline of respect for me.
Re:Not that I'd ever side with MS... (Score:2, Informative)
I was mostly coding questions (write a C function that reverses the order of words in a string, for instance) or logic puzzles. I think their interview process is trying to get at 2 things:
1. are you lying on your resume about the fact that you are comfortable writing code
I don't think MS asks you to write code on the board for toy problems to prove that you're a great engineer. They do it to demonstrate that you are comfortable writing code (a CS degree does not guarantee this by any means). This is a basic "can you work with us" test. There are lots of ways to try to pretend you have this on a resume even if you don't.
2. are you "smart" in a problem solving/logical thinking kind of way
From watching the MS hiring process, I'm convinced that their tactic is to concentrate on hiring smart people, regardless of specifics in regards to skillset (this applies only to entry-level ish software developers). They have the resources to train/mentor you and if you're smart enough you'll learn what you need quickly enough. This is what they are trying to get at with the logic puzzles.
Since intervieing with MS I've had the opportunity to interview people myself for jobs and found that it is fairly difficult to gauge engineering ability and intellect in a day of talking to people. It's easier to judge technical knowledge in a specific area, but judging "brains" is hard. The best you can do is be assiduous about references and get an opinion from someone you trust. If that isn't available (as is the case for lots of new graduates) then what are you going to do?
I agree that asking a PhD stupid logic puzzles probably isn't very illuminating, and that being an arrogant ass isn't nice. But if what you want is a general software developer where some very specific skill isn't needed, then what the've got going has its benefits.
Re:PhD in CS is WAY overrated (Score:4, Informative)
u32 vote32(u32 x, u32 y, u32 z) {
return (x & y) | (y & z) | (x & z);
}
Re:MS vs. Google (Score:1, Informative)
I am an engineer at Google, and we interview a lot of people. The company is growing really fast (you can see it most clearly when hunting for parking or a place to sit at lunch).
Almost half of my interviews are phone screens. Your first phone screen sounded like the recruiter asking questions, and not an engineer. Engineers get to make up their own questions, and we try not use just the prefabricated lists (because they get leaked all the time). Before coming here I never formally interviewed anyone, so my interviewing skills were pretty poor to start. With training and seeing how other people did it I've gotten better, so I wouldn't take one engineer's detachment as indicative of how the rest of us do it. Maybe he was just having a bad day? Interviews take about two hours to complete (read the resume, do the interview, and type up feedback), generally in the middle of the day when we're probably busiest.
I'm sorry people consider us arrogant. That perception probably comes from having to weed through people who pad their resumes with illustrious garbage, so a healthy dose of skepticism might come off has arrogance to some. Anyone who has interviewed tech people should know of people that make their resumes sound like they wrote huge systems by themselves, but when pressed it turns out they were just on a team of 16 and helped run TPS reports for management.
If anything, I've become much more humbled since I started here, because I'm definitely no longer one of the smartest geeks in the office. In fact, I'm pretty dumb for posting all this on slashdot. Anyway, good luck with your interview process and hopefully the people you talk to aren't having a bad day.
Re:You Kinda Deserved It (Score:2, Informative)
In other words: You can "reuse" your whole stackframe, given the right circumstances.
And, then there is the whole issue of premature optimization. Get it right first, then optimize it, if it eat cycles.
And, yes, I do write code for a living, that needs to run reasonably fast (tons of transactions), and the reality is, that sometimes a few hundreds of recursive calls dwarfs in comparision to the rest of the task, and optimizing them is simply not worth it.
No, he didn't deserve it. (Score:1, Informative)
So your recursive calls, when they create new stack frames, are really just pushing the return address and the arguments.
What do you need to store in each entry in the FIFO queue? Aside from those same arguments, you will need a struct/class object to hold them. Plus the overhead of managing the queue.
So allocating each entry in the FIFO queue -- what's the cost of there? I'm unfamiliar with the C# internals, but under good o'l Linux/GNU/g++ malloc is NOT a negligible cost. Particularly when you are dealing with numerous small malloc's rather than one large malloc.
What is your memory model? Are there concerns about memory fragmentation? The last thing you want to do is to create swiss cheese. A situation where your software won't play nicely with other code in the same sandbox because there are no large chucks of contiguous memory left. (Perhaps unlikely in this scenario, but always a concern before you start allocating tons of small objects.)
Sure, stack space can be exhausted. But you can also exhaust your heap memory as your queue becomes very large. Believe it or not, under modern operating systems, at least under linux/unix, these two are the same size. Or at least they can be made the same size with ulimit.
Finally there is the issue of future code maintainability. Unless efficiency has been documented as a critical priority, keeping it simple is better.
But hey, don't take my word for it. Compile with gcc/g++ and -S, look at the assembly output, and draw your own conclusions.
"Anonymous. Slacking off at work..."
Re: What a Boring Article (Score:3, Informative)
I'm a former Microsoft manager who has participated in over 200 interviews. I was also interviewed myself on several job moves within the company, and have been grilled by more than 75 interviewers who wanted to know what my skillset was. So I have a great deal of first-hand experience that I thought someone might find useful.
I won't defend the Microsoft interview practices, but I won't condemn them either. There are two huge benefits to this style of interviewing. First and foremost, it weeds out people with great resumes but who have made no real contribution to any kind of project, whether it was a school project or work project. I once had a guy hand me a diskette during an interview and he told me that it was some code that he worked on. I asked him where he had downloaded the code from, because I had no way of knowing if he wrote it himself or if he had just copied someone's work. I can put together a sweet portfolio of code in 15 minutes with Google. Microsoft wants people who can produce, and anyone who starts out every sentence by saying "Theoretically, it's possible..." is screwed.
The other big advantage to the Microsoft style of interviewing is that people who don't come from the "great institutions" of the world like MIT get a fair shot at a job. I went to a small, liberal arts college and my resume wasn't very impressive. But I had a key skill that they needed, I came in as a contractor, and within 6 weeks I had a full-time job with the company. I had a great 7 year run that I probably wouldn't have otherwise gotten.
But the system has it's downsides as well. One problem is that the interview system is applied universally across the company, and there are just some jobs that don't require deep technical thinking. It's inappropriate, for example, to use this technique on people who are primarily going to test software for a living. In fact, you want people who are more like "regular people" than programmers to test the code because then you'll get a better cross-section of the population involved in testing. I never respected a tester who told me that my program was broken because of some technical bug, but I sure listened if there were issues of usability involved.
Another problem with the interview system at Microsoft is that it's applied to internal candidates as well as external candidates, so your work history counts for very little when moving within the company. After a relatively long career in the company and getting sick of the group that I was in, I made one last attempt to change jobs. But I didn't have the heart to go through the long, arduous interview loops, so my heart wasn't in it. I really wanted to leave the company anyway and had a good excuse to do it, but there was nothing pulling me back in. After investing heavily in me as an employee who had gotten postive reviews throughout his career, I left Microsoft without anyone trying to convince me to stay.
One premise of this article is that Microsoft is arrogant. I agree that some individuals in the company are arrogant, and that some people use the interview process to prove that they are better than others, but as a whole I do not believe this to be true. I've personally dismissed people after the first interview because they just weren't going to cut it. Yes, that's judgmental, but it's also a very good business practice. Let's face it, even open source project discriminate based on ability.
I've saved my harshed criticism of Microsoft for last. In "the good old days", the interview bar was held high so that only "the brightest and the best" would be hired. In the late 90's (the dot com boom), the bar was lowered considerably so that we could get in enough bodies to do the work. But as a friend of mine likes to say "A pe
Re:You Kinda Deserved It (Score:2, Informative)
If I understand the problem correctly, we are to list all nodes at a given depth. This is the same as considering the input tree to be cut off after the given depth d, traversing this [virtual] tree, and outputting only the leaves at depth d. Then both methods visit the same total number of nodes, so runtime is asymptotically the same. I don't see why the small difference between a stack PUSH/POP and heap allocation/deallocation (assuming the queue is implemented as a linked list) would affect performance that much and in any case this is highly compiler/architecture/OS dependent.
This _is_ basic algorithms material. Seeing you so completely screw up this simple analysis with such confidence is simply breathtaking.
GPA = grade point average, I assume (nt) (Score:2, Informative)
Simpler answers (Score:2, Informative)
If you have a circular manhole cover, you cannot get it in there. So you never have to send people down to retrieve manhole covers and/or workers with cracked skulls.
Really, people.
Re:Why is this news? (Score:2, Informative)
The interviewee should have fired back all of these questions:
Why does this need to be done?
What exactly do you need this to do?
When does this need to be done?
Who will be working on it?
What boundaries are there on how this should be done?
If you got fixated on coffee and the car, you failed the question.
Tom
Re:Spam (Score:3, Informative)
std::swap(a, b);
Did I pass? :-)