The whole team talked about algorithm recently, since we found some leaked written exam questions on Internet so that online test became meaningless soon. On one hand we're thinking about how to contribute to the question bank, on the other hand it caused debating on algorithm significance and form.
Here is a real example from Amazon online test. You can find it easily on Internet:
Given an array with positive integers and another integer for example {7 2 4} and 9, you are required to generate an equation, by inserting operator add ("+") and minus ("-") among the array. The left side of equation are consist of the array and the right side of equation is the integer. Here the result is 7-2+4=9.
I don't want to talk about the solution of this question. Suppose you're the candidate and please think about the situation you're facing. Yes… It does test your algorithm (with a little basic coding skills), so what?
I really like these algorithm desserts but I think algorithm is only one part of the whole interview. I don't know why it has been the *only* part in online test. I'm not quite sure how important it is that to be a good innocent algorithm issue resolver. AFAIK, Microsoft engineers will ask the candidate a lot of algorithm questions in interview, which takes over 80% of total… Is it a kind of *sick worship* to algorithm?
On the contrary, in my opinion a good algorithm question should be hidden in a specified and realistic issue, according to which OO design, system design, testing, engineering (e.g. code organization) and even communication should be involved together.
Furthermore, I believe a good question must be obscure (may be not fit for online test tho), and the candidate should complete the whole scenario by investigating a little and getting enough information from the interviewer. I have never looked down upon the effection of math on software, but I can't emphasis how important the skill is to abstract a realistic issue to be a math question (a kind of mathematical modeling skill?), and that's the real difference between a mathematician and an engineer. Think about Google father, why it's Larry Page, a classical engineer, rather than a mathimaticine?
Do we really need some brutal questions to torture the candidates? Many interviewers feel it's necessary since we want the best engineers, and we have top hiring bar there. This is from good original intention while it may cause unexpected result. Failure may affect the candidate negatively resulting in inaccurate evaluation.
A good question should be easily resolved for the first step, with its two or even three further and harder sub questions still waiting there. Good candidate can resolve them one by one and finnally dive into deep with a little prompting. Don't be afraid of giving the hints, b/c only the top ACMers can answer all these algorithm questions (I mean the algorithm part of the whole big question) without any prompt, and we've found that the best one on algorithm may still write terrible code. In addition, sometimes the pursuit of performance leads obscure code, too.
Finally, I want to put an ad here. :) Amazon is hiring, and our team is hiring. We're looking for the best engineers, and well-rounded problem resolver. There're different kinds of culture from different teams, I won't reveal too much here but I do believe we are doing one of the coolest work at least in Amazon Beijing.
文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》
×Scan to share with WeChat