|
Welp. I had a Microsoft interview to intern as a software developer.
It was weird. There was quite a bit of misinformation flying at me, and I was left with a rather disturbing feeling. First off I was interviewed by a project manager instead of a software engineer, which seemed weird right off the bat. I mean sure PMs are really cool people, but they don't code day to day in their job. I'm a programmer, and didn't expect this.
So here's how it went summarized (capitol I is the interviewer): I: What year are you graduating? Me: 2015. Me in my head: What..? Does it matter? I'm interviewing as an intern. Am I disqualified now that you know I won't be able to be hired in a year?
I: What is something you've worked on lately that was difficult yet interesting? Me: Custom reflection in C++. Blah blah C++ doesn't have native reflection, so I blah blah wrote a lot of cool stuff. I: Wait what? You used C++ introspection? Me in my head: Does he not realize that C++ has no built-in (functioning) RTTI? Did I mention the RTTI native to C++ doesn't work? Did he just mis-hear me? Me: C++ doesn't have native introspection, so I did it myself. I: Why? Me: Well it has these benefits... (pretty much I wrote some code that writes a lot of code for me, which is helpful for time budgets!).
I: Write a function that takes two numbers and returns which is larger. Each number is a string of characters with each character as a digit. Me: <clears up ambiguities like what language this must be in, the format of each number, error handling etc. His responses seemed like he was just plain tired. I was his last interview after a marathon of many interviews for two days straight, and he seemed to be annoyed I was asking questions.> Me: Write's the following function: + Show Spoiler +// Returns -1 if lhs is larger, 0 if equavilant, and 1 if rhs is larger // Assumes lhs and rhs are both strings with only decimal digits, e.g. "123" or "12005" // Also assumes there are no preceding zeros like so: "0052" int IntegerAsStringCompare( const char *lhs, const char *rhs ) { int lhs_len = strlen( lhs ); int rhs_len = strlen( rhs ); // Early out with string lengths if(lhs_len > rhs_len) return -1; else if(rhs_len > lhs_len) return 1;
// Strings are equal length, compare each digit one by one else { // lhs and rhs are equal length, so no need for comparison // to have lhs && rhs while(lhs) { if(*lhs > *rhs) return -1; else if(*rhs > *lhs) return 1; ++lhs; ++rhs; } // Our numbers are equivalent return 0; } } I talked all about how to support additional number formats such as floats, hex, octal, etc. I talked about error handling as well. I only had a 25 minute interview, so I had to get something on paper and demonstrate I knew how to add onto it to make the entire thing robust in a short amount of time. I mean sure I could improve this function in a few ways, but I wrote it in hardly any time at all and specifically pointed out a lot of ways to improve it, if I had the time to.
I: So next question. You have an array of 17 integers, and each slot's value is it's indexed position. However one index is a duplicate. How do you find what the duplicate is? Me: N^2 search with a boolean. A faster way would be to add each index's value up and subtract from the expected sum. I: Okay good. What would you do if the array was very large and overflow would occur? Me: Integer overflow? I: Yes. Me: Can I use an external data structure? I: Sure. Me: I could use an external data structure to handle insertions and respond when a duplicate entry is found, such as a modified version of a hash table. Me: Another solution would be to use multiple integers to emulate a larger data range. In CS 100 we had to add two 16 bit integers with 8 bit values, and I could do the same thing here. I: We're out of time!
Interview session ends. I believe I answered the questions fairly well, and I answered them nearly identically to some other interviewees that I know (and that I know are very competent programmers).
Now I was told before the interview that everyone being interviewed in the two days could move on and be hired. The person that told me this said they had very specific instructions that everyone could be hired. I was also told before the interview that I could receive the feedback the interviewer wrote down on notes during the interview.
I requested this feedback and was denied, and the denial said that me seeing that information was a break of company policy.
I was also denied an internship for this summer. The reason was that internship positions are very limited. I was also told (through an indirect source) that the main reason people were declined was due to a lack of technical capability. Technical capability? We write game engines from scratch. Is this an easy thing to do? Man students in other schools must be doing really cool things if what I'm doing is technically unadvanced. However I read articles and talk to other professor and am lead to believe that the programmers from my school are quite excellent. Am I just on the lower end of "quite excellent"? This just doesn't all add up.
Honestly I feel like I was declined because I'm a Sophomore. On top of this the interviewer actually seemed annoyed when I would ask initial questions to clear up ambiguity during one of the interview questions. The interviewer also didn't seem to know that C++ didn't have built in introspection (that is usable), unlike other languages such as C#. My interviewer was a Project Manager, and said he didn't hardly code in his day to day job.
I'm just plain confused and am left with a really awkward feeling about all this. Every single Sophomore was declined a position, and I _know_ a lot of these Sophomores are very good programmers. A couple Juniors were admitted. Some very strong Juniors were denied. What is going on here? In the words of my friend (who was just expressing frustration and confusion): "I should write a PRNG to admit or decline applicants... It would at least do a better job than what's currently going on."
Apparently everyone dislikes Microsoft's hiring process and it's in a very poor state of quality currently. I don't have a direct opinion about Microsoft's hiring process that I want to share, but I do know that the feeling I was left with wasn't one that I enjoyed. I've had other interviews before, but this one felt different in a bad way.
Pretty much how I felt a little while later: + Show Spoiler [HowIFelt] +
Even though I bring bad news, there is good news yet! I have some other leads to follow. Even though I had a bad experience things turned out quite well overall. I was actually working on solving something a company sent me as a pre-interview test just earlier today!
|
cool read. best of luck on your endeavors sir
|
Sorry you didn't get an offer, but don't give up, there are plenty of other great companies out there. I remember when I went to interview, one of the interns that got hired was a PhD student, so as a sophomore, you really have the short end of the stick. What else did you do while you were in Seattle?
|
On March 13 2013 15:30 Chairman Ray wrote: Sorry you didn't get an offer, but don't give up, there are plenty of other great companies out there. I remember when I went to interview, one of the interns that got hired was a PhD student, so as a sophomore, you really have the short end of the stick. What else did you do while you were in Seattle? I live in Redmond! Hehe. Thanks for the kind words, I do appreciate it. So after the interview while in Seattle we all actually went to a nice place called Samurai Noodle in the International District. Love that place. I actually went last night as well! Ooooh I want to go again
|
On March 13 2013 15:32 CecilSunkure wrote:Show nested quote +On March 13 2013 15:30 Chairman Ray wrote: Sorry you didn't get an offer, but don't give up, there are plenty of other great companies out there. I remember when I went to interview, one of the interns that got hired was a PhD student, so as a sophomore, you really have the short end of the stick. What else did you do while you were in Seattle? I live in Redmond! Hehe. Thanks for the kind words, I do appreciate it. So after the interview while in Seattle we all actually went to a nice place called Samurai Noodle in the International District. Love that place. I actually went last night as well! Ooooh I want to go again
samurai noodles, tetsu max is soooo goood.
That picture is how i was after my logic finals. I was 2 for 3 today. Did hella good in bio and o-chem and totally tanked my logic class.
UGGGGGG
GL Cecil, I'm sure it will all work out.
Does your internship have to be in redmond or would seattle work as well?
|
On March 13 2013 15:32 CecilSunkure wrote:Show nested quote +On March 13 2013 15:30 Chairman Ray wrote: Sorry you didn't get an offer, but don't give up, there are plenty of other great companies out there. I remember when I went to interview, one of the interns that got hired was a PhD student, so as a sophomore, you really have the short end of the stick. What else did you do while you were in Seattle? I live in Redmond! Hehe. Thanks for the kind words, I do appreciate it. So after the interview while in Seattle we all actually went to a nice place called Samurai Noodle in the International District. Love that place. I actually went last night as well! Ooooh I want to go again
You live in Redmond? Sweet! I'm house-hunting there right now and will move down in May. I'll see you there!
|
On March 13 2013 15:38 Chairman Ray wrote:Show nested quote +On March 13 2013 15:32 CecilSunkure wrote:On March 13 2013 15:30 Chairman Ray wrote: Sorry you didn't get an offer, but don't give up, there are plenty of other great companies out there. I remember when I went to interview, one of the interns that got hired was a PhD student, so as a sophomore, you really have the short end of the stick. What else did you do while you were in Seattle? I live in Redmond! Hehe. Thanks for the kind words, I do appreciate it. So after the interview while in Seattle we all actually went to a nice place called Samurai Noodle in the International District. Love that place. I actually went last night as well! Ooooh I want to go again You live in Redmond? Sweet! I'm house-hunting there right now and will move down in May. I'll see you there! Cool we can go out for lunch sometime
On March 13 2013 15:38 MysteryMeat1 wrote: GL Cecil, I'm sure it will all work out.
Does your internship have to be in redmond or would seattle work as well? Oh I'm okay with working somewhere else in the US. The Seattle area is ideal of course, since it's cheaper than moving (I'd have to pay two monthly rents if I moved). Like right now I'm working on a written test for a place in California! Don't want to say specifically where just yet though
|
On March 13 2013 15:39 CecilSunkure wrote:Show nested quote +On March 13 2013 15:38 Chairman Ray wrote:On March 13 2013 15:32 CecilSunkure wrote:On March 13 2013 15:30 Chairman Ray wrote: Sorry you didn't get an offer, but don't give up, there are plenty of other great companies out there. I remember when I went to interview, one of the interns that got hired was a PhD student, so as a sophomore, you really have the short end of the stick. What else did you do while you were in Seattle? I live in Redmond! Hehe. Thanks for the kind words, I do appreciate it. So after the interview while in Seattle we all actually went to a nice place called Samurai Noodle in the International District. Love that place. I actually went last night as well! Ooooh I want to go again You live in Redmond? Sweet! I'm house-hunting there right now and will move down in May. I'll see you there! Cool we can go out for lunch sometime Show nested quote +On March 13 2013 15:38 MysteryMeat1 wrote: GL Cecil, I'm sure it will all work out.
Does your internship have to be in redmond or would seattle work as well? Oh I'm okay with working somewhere else in the US. The Seattle area is ideal of course, since it's cheaper than moving (I'd have to pay two monthly rents if I moved). Like right now I'm working on a written test for a place in California! Don't want to say specifically where just yet though
I was just wondering, because my dad's best friend works at UW hospital as a programmer for coding and stuff. He says theres usually quite a few internships. I'll see him on Friday if you want me to ask about specifications and requirements for getting an internship.
|
On March 13 2013 15:42 MysteryMeat1 wrote:Show nested quote +On March 13 2013 15:39 CecilSunkure wrote:On March 13 2013 15:38 Chairman Ray wrote:On March 13 2013 15:32 CecilSunkure wrote:On March 13 2013 15:30 Chairman Ray wrote: Sorry you didn't get an offer, but don't give up, there are plenty of other great companies out there. I remember when I went to interview, one of the interns that got hired was a PhD student, so as a sophomore, you really have the short end of the stick. What else did you do while you were in Seattle? I live in Redmond! Hehe. Thanks for the kind words, I do appreciate it. So after the interview while in Seattle we all actually went to a nice place called Samurai Noodle in the International District. Love that place. I actually went last night as well! Ooooh I want to go again You live in Redmond? Sweet! I'm house-hunting there right now and will move down in May. I'll see you there! Cool we can go out for lunch sometime On March 13 2013 15:38 MysteryMeat1 wrote: GL Cecil, I'm sure it will all work out.
Does your internship have to be in redmond or would seattle work as well? Oh I'm okay with working somewhere else in the US. The Seattle area is ideal of course, since it's cheaper than moving (I'd have to pay two monthly rents if I moved). Like right now I'm working on a written test for a place in California! Don't want to say specifically where just yet though I was just wondering, because my dad's best friend works at UW hospital as a programmer for coding and stuff. He says theres usually quite a few internships. I'll see him on Friday if you want me to ask about specifications and requirements for getting an internship. Oh yeah totally! It can't hurt so sure why not. Thanks a lot!
|
On March 13 2013 15:45 CecilSunkure wrote:Show nested quote +On March 13 2013 15:42 MysteryMeat1 wrote:On March 13 2013 15:39 CecilSunkure wrote:On March 13 2013 15:38 Chairman Ray wrote:On March 13 2013 15:32 CecilSunkure wrote:On March 13 2013 15:30 Chairman Ray wrote: Sorry you didn't get an offer, but don't give up, there are plenty of other great companies out there. I remember when I went to interview, one of the interns that got hired was a PhD student, so as a sophomore, you really have the short end of the stick. What else did you do while you were in Seattle? I live in Redmond! Hehe. Thanks for the kind words, I do appreciate it. So after the interview while in Seattle we all actually went to a nice place called Samurai Noodle in the International District. Love that place. I actually went last night as well! Ooooh I want to go again You live in Redmond? Sweet! I'm house-hunting there right now and will move down in May. I'll see you there! Cool we can go out for lunch sometime On March 13 2013 15:38 MysteryMeat1 wrote: GL Cecil, I'm sure it will all work out.
Does your internship have to be in redmond or would seattle work as well? Oh I'm okay with working somewhere else in the US. The Seattle area is ideal of course, since it's cheaper than moving (I'd have to pay two monthly rents if I moved). Like right now I'm working on a written test for a place in California! Don't want to say specifically where just yet though I was just wondering, because my dad's best friend works at UW hospital as a programmer for coding and stuff. He says theres usually quite a few internships. I'll see him on Friday if you want me to ask about specifications and requirements for getting an internship. Oh yeah totally! It can't hurt so sure why not. Thanks a lot!
before I talk to him, what languages can you program?
|
sounds pretty terrible, where are you at school cecil?
|
bad interview experience, but sounds like you yourself did not perform poorly in the interview
just view it as a new experience and think of how you might have approached/responded to a question differently
you're going to have interviewers that stay pretty neutral in their demeanor, ones that will respond to how in-depth/interested you can answer questions, and ones that don't really want to interview because they'd rather focus their time elsewhere but must because it's part of their job responsibility
did you have only 1 interview that lasted 30 minutes? that seems pretty lacking.
|
I couldn't help but feel you were looking down on your interviewer just because he's a PM. Just because he didn't know a specific thing in C++ (see *), it does not mean he's not technical. Even if he wasn't technical, he didn't need to be, as he could be evaluating your soft skills like your abilities to communicate clearly.
The fact that they are willing to interview you means they are willing to hire you. When he asked, 'when are you graduating', it was probably just a simple comment meant to break the ice, but instead, you took it as a reason to not hire you.
I think you need to change your attitude. Try finding faults in yourself rather than the company or the interviewers.
I know plenty of people who have received internship and full time offers from MSFT, myself included, and the process is definitely, by and large, fair.
(*) I don't know what you mean by
Me in my head: Does he not realize that C++ has no built-in (functioning) RTTI? Did I mention the RTTI native to C++ doesn't work? Did he just mis-hear me?
Me: C++ doesn't have native introspection, so I did it myself.
How does RTTI native to C++ not work? The term 'RTTI' was coined by the C++ Standards. It doesn't go very far in implementing reflection, but it does what it is supposed to do: Run-Time Type Information.
C++ does have native introspection, it's called type introspection.
Going from your interviewer's train of thought, it would probably leverage RTTI, which will provide the basis for you to build your reflection framework. You would probably derive all your classes from a base class like Object in Java, and that class would provide methods like 'GetProperty', 'GetMethod', 'GetBaseClass', etc.
|
On March 13 2013 16:27 Cambium wrote:I couldn't help but feel you were looking down on your interviewer just because he's a PM. Just because he didn't know a specific thing in C++ (see *), it does not mean he's not technical. Even if he wasn't technical, he didn't need to be, as he could be evaluating your soft skills like your abilities to communicate clearly. The fact that they are willing to interview you means they are willing to hire you. When he asked, 'when are you graduating', it was probably just a simple comment meant to break the ice, but instead, you took it as a reason to not hire you. I think you need to change your attitude. Try finding faults in yourself rather than the company or the interviewers. I know plenty of people who have received internship and full time offers from MSFT, myself included, and the process is definitely, by and large, fair. (*) I don't know what you mean by Show nested quote + Me in my head: Does he not realize that C++ has no built-in (functioning) RTTI? Did I mention the RTTI native to C++ doesn't work? Did he just mis-hear me?
Me: C++ doesn't have native introspection, so I did it myself.
How does RTTI native to C++ not work? The term 'RTTI' was coined by the C++ Standards. It doesn't go very far in implementing reflection, but it does what it is supposed to do: Run-Time Type Information. C++ does have native introspection, it's called type introspection. Going from your interviewer's train of thought, it would probably leverage RTTI, which will provide the basis for you to build your reflection framework. You would probably derive all your classes from a base class like Object in Java, and that class would provide methods like 'GetProperty', 'GetMethod', 'GetBaseClass', etc. Well, I understand I sound pretty negative. Thanks a lot for the words, I appreciate hearing what others think. I'll do some more reflecting on what I myself could do to improve for my next interview.
I definitely did not think anything negative of the company right after the interview. I just felt like something was off. After reflecting and talking with my superiors I realized a lot more about the interview. It's especially strange because I've heard of some previous interviews earlier in the year from friends of mine, and they did very well (hired). There's a lot of mixed information flying around, and it's especially disheartening when the information company employees directly gave me was contradicting in multiple different instances.
The native type introspection doesn't really work, and is very compiler dependent. Some output is just plain broken. An attempt was made for C++ RTTI, but honestly everyone I know of just disables C++ RTTI in their builds and uses a custom system for type reflection.
On March 13 2013 16:23 udgnim wrote: did you have only 1 interview that lasted 30 minutes? that seems pretty lacking. It was 25 minutes
|
On March 13 2013 16:37 CecilSunkure wrote:Show nested quote +On March 13 2013 16:27 Cambium wrote:I couldn't help but feel you were looking down on your interviewer just because he's a PM. Just because he didn't know a specific thing in C++ (see *), it does not mean he's not technical. Even if he wasn't technical, he didn't need to be, as he could be evaluating your soft skills like your abilities to communicate clearly. The fact that they are willing to interview you means they are willing to hire you. When he asked, 'when are you graduating', it was probably just a simple comment meant to break the ice, but instead, you took it as a reason to not hire you. I think you need to change your attitude. Try finding faults in yourself rather than the company or the interviewers. I know plenty of people who have received internship and full time offers from MSFT, myself included, and the process is definitely, by and large, fair. (*) I don't know what you mean by Me in my head: Does he not realize that C++ has no built-in (functioning) RTTI? Did I mention the RTTI native to C++ doesn't work? Did he just mis-hear me?
Me: C++ doesn't have native introspection, so I did it myself.
How does RTTI native to C++ not work? The term 'RTTI' was coined by the C++ Standards. It doesn't go very far in implementing reflection, but it does what it is supposed to do: Run-Time Type Information. C++ does have native introspection, it's called type introspection. Going from your interviewer's train of thought, it would probably leverage RTTI, which will provide the basis for you to build your reflection framework. You would probably derive all your classes from a base class like Object in Java, and that class would provide methods like 'GetProperty', 'GetMethod', 'GetBaseClass', etc. Well, I understand I sound pretty negative. Thanks a lot for the words, I appreciate hearing what others think. I'll do some more reflecting on what I myself could do to improve for my next interview. I definitely did not think anything negative of the company right after the interview. I just felt like something was off. After reflecting and talking with my superiors I realized a lot more about the interview. It's especially strange because I've heard of some previous interviews earlier in the year from friends of mine, and they did very well (hired). There's a lot of mixed information flying around, and it's especially disheartening when the information company employees directly gave me was contradicting in multiple different instances. The native type introspection doesn't really work, and is very compiler dependent. Some output is just plain broken. An attempt was made for C++ RTTI, but honestly everyone I know of just disables C++ RTTI in their builds and uses a custom system for type reflection.
On a change of subject
How did you implement your reflection? Doing it through RTTI is definitely not ideal, did you do it via templates?
|
Yeah! You can actually see most of what I have currently here. I use template metaprogramming for basically everything. There are some missing features I'll be adding this summer in my spare time: + Show Spoiler [FeatureList] +-Lua reference and value type (only have reference) -Serialization versioning -Inheritance meta -Manual force linking for all meta objects -Auto pointer meta reg -Not require default constructor -MetaData bitfield support -Archetype compression for level files -Refactor meta with properties -Meta type conversion cleanup -Property gettor/settor with Reflection -Run-time editting of enumerations -Enumeration values linked to other enumeration tables -VariantFunction currently does: jump call jump call, can be optimized to push call with template magic. Minimizes VariantFunction memory footprint too.
|
Whoa, I've read some of your past blogs and awww it's a shame they didn't decide to take you on. I don't code myself, but you REALLY look like you know what you're doing lol, I'm sure that in the long run you'll be snapped up. Pretty interesting story and whoa, all that technical information is daunting yet looks pretty cool
|
Sorry to hear it didn't work out for you. For what it's worth, you're probably right that you didn't get hired because you were a sophomore. I talked to a Microsoft recruiter at my university's CS career fair maybe 6 weeks ago and he said that essentially they had already filled most of the slots for their internship program for sophomores and were really only looking for juniors and really, truly exceptional sophomores. Not that that doesn't make getting turned down feel any less shitty, but...
|
I've heard bad things about working for microsoft. They expect many hours, weekend work, etc. It depends on the group though. Everyone is competitively ranked with their peers. So there's this situation were you've got a lot of really smart people trying to figure out how to make themselves look good and others look bad.
Just what I've heard.
|
All the nontrivial stuff in C++ is done using template metaprogramming, how is that even a question?
Without having looked deeply into your documentation, it sounds like you have to register metadata about all your classes manually. So it won't work with classes that you didn't develop yourself, and obviously also has the issue of having to maintain 2 pieces of code when you want to modify a class? Doesn't seem like it would be easily avoidable, but still it's not exactly most convenient. I guess the only option to avoid redundant information would be to think of a method to have the reflection system produce the class itself while at the same time reading the metadata from a class metaspecification... or something like that. That's a lot of meta though.
In any case; the world doesn't always make sense. In fact it rarely does. Just try again.
|
|
|
|