Wednesday, August 31, 2011

Interviewing @ eBay Part II - Software Engineering Interview


I am writing this hoping that candidate interviewing with eBay find this BEFORE their interview (if you did please let me or your interviewer know), but if you are not interviewing with eBay you may still find it useful.

Be prepared for the following category of questions:
-        
Explain a project or a problem you worked on
Be prepared to talk in some detail about an interesting, or challenging, important and otherwise mentionable project in your career. Even if you are fresh out of school, there must have been some special class or final project. You should clearly talk about the problem, and describe how you arrived at the solution, your implementation and result …what you learned, where/if you failed, how you fixed it etc. The way you communicate, what you choose to communicate is almost as important as what the project actually was. So be direct, clear and to the point. Be prepared to defend your choices. Do not play it “safe” by saying “..well this was not my decision”, or “Oh..I didn’t like this approach, my boss asked me to do this” etc.

-        Data Structure and Algorithm
Brush up on basic computer science, know data structure. You will be asked a few questions about graphs, hash maps, trees and complexity. Familiarize yourself with how graphs are represented in memory and in persistent storage, how maps and hash maps are implemented, how to traverse trees – basic stuff. Please DO NOT trivialize the questions by saying “oh, there is APIs for this in Java, I never need this in real life”. This, in addition to demonstrating bad judgment and wrong situation assessment, does not get you off the hook!  You should demonstrate that you are an engineer not a technician.  

-        Programming Language
Well, you are applying for a software engineering position, so you must know one or more modern programming languages very well (at least much better than I do) – eBay is a Java shop, so knowing Java really helps.  You should be proficient in basics (variables storage classes, access modifiers, memory management, basic object orientation) as well as advanced features such as multi-threading and concurrency, generics, network programming etc.
You will be asked to write code or code snippets on the white board. I am amazed how many people are surprised when they are asked, for example, to write a simple singleton class on the board. It shows how comfortable you are with coding, syntax does not matter at all, so don’t be shy.

-        Basic Modeling  
You are expected to know how to model basic stuff for example a simple book store, or an email client. You should be able to break it up to basic entities and their relationships. Sometimes I ask candidates to model “eBay Marketplace”, do not be overwhelmed, you are not expected to model entire eBay, do as much as you can and do “out loud” thinking. You approach is as important as final design.

-        Problem Solving
We are engineers, we solve problems. So you have to be able to frame and analyze problems, recognize tradeoffs in different solution and pick one. So prepared for questions such as “Estimate eBay marketplaces revenue” or “What happens if minimum wage is raised to $100/hr” or “Is hybrid cars more economical or full electric cars?”, “how do you prevent a corrupt DBA from stealing eBay data”, it goes without saying that the actual answer is not really as important as how you think thru the problem.

-        Soft Stuff” - General attitude, fit, personal qualities
These may or may not be actual questions, but I’d like to see evidence of several personal qualities for example that you have passion, you care about the stuff that you are tenacious and don't give up easily, that you recognize your mistake you learn from it, that you know what a reasonable compromise is and are willing to reach one, that you can deal with conflict in a constructive way – and for more senior candidate - that you can influence people around you especially on why and what and not simply on how. Also I ask our candidates to tell me what they think a few major trends in technology are and why

-        And finally, please know the company
Last but not least, please familiarize yourself with eBay if you are not familiar with it, nothing gets your rejected faster than saying “eBay? Who uses eBay? I am really not familiar with it” – OK, this is an extreme case but hey it is real. It is  
Of course if you are being interviewed for a particular area, e.g. security, Hadoop or Eclipse tools development, you should expect a few questions in addition to the above in each particular areas, for example in security, you should be very comfortable with authentication protocols and practices (zero proof, Diffie-Hellman algorithm, Kerberos etc.) authorization techniques, RBAC, ABAC, XACML , basic cryptography etc.
You may ask, how about other stuff, such as JavaScript, CSS, SQL, Unit Test etc. etc. Yes there are a lot of technologies and techniques used in building large internet apps, but my beleife is that if you know the basics and possess the basic qualities, even if you don’t know the rest, you will be a successful productive engineer.


4 comments:

Saurabh Patil said...

Hi Farhang,
I may give the ebay interview in near future for a java developer position. Thank you so much for this post!!

Regards,
Saurabh

Gurneet Kaur said...
This comment has been removed by the author.
Gurneet Kaur said...

Ah, thankyou for this. I am hoping to give an interview for eBay soon and I am really looking forward to it. Specially because I have been interested in working with your company for quite some time now and finally it's here. :)

Mdept said...

Good opportunity for those who are strong in java programming. Grab this opportunity tightly to link your life.
--------------
Zobay

Post a Comment