I never considered doing one of the exams Microsoft offers. I consider my knowledge of C#, the Visual Studio, the CLR, and whatever I am working with, quite solid - so taking an exam would be a waste of time. Nevertheless the opportunity of having a look at an exam was there: Microsoft offered a free participation in an exam with the number 070-480. This exam certifies a deep knowledge and understanding of Programming HTML5 with JavaScript and CSS3.
Due to my busy schedule I skipped preparing for the exam. Microsoft recommends 1 week up to 3 months for preparation. This is certainly exaggerated. However, having a look at some comments one day before the exam, people (obviously with some experience) say, that this is one of the hardest exams. You really should know your way around CSS3, JavaScript and of course HTML5.
I finished the exam after 15 minutes (I think the maximum time for the exam is like 140 minutes). Sure I misread here and there, or even checked the wrong one, but in the end the result was pretty much as I thought: If you have some experience and know the specification, then there is no way you are going down in this.
However, I felt like some questions are either unfair (they are not according to the specifications, but to some drafts from Microsoft) or not well specified. There was one question that really kept me thinking (it was about jQuery's ajax() method). In the end the solution was to realize that the code has been formatted weird and the only way to achieve the desired outcome was to let the jQuery method run synchronously. However, this had nothing to do with the impression I had from the task - finding the method call that tells jQuery to not cache the request (which adds a certain (arbitrary) parameter with a random value).
Another funny question was related to web workers. I found this already on another blog. In this blog the guy wrote that web workers can only receive content in form of strings, JSON and JavaScript types. Well, the last one is wrong for sure. If one calls the last one "certain JavaScript types", then it would be correct again - since a string is a certain JavaScript type. Nevertheless, JSON is also kind of funny, since JSON is a kind of string. Therefore XML, C, C#, CSV, ... would have been great answers as well.
Now this question appeared in my test. There the correct answers (most probably) have been "JSON" (again we had that), "String" (Ok, this is obvious) and "JavaScript" (JavaScript is also given in text form). I do not see the point in those answers. What is tested here? Basically ANY text can be transported to and from a webworker. But the problem is: Just text. We can not transport JavaScript objects. In order to transport such objects, we need to serialize them to e.g. JSON or some other format, transport them, and deserialize them.
To conclude: No one who has worked (at least a bit) in the area of HTML5 should fail in this test. It might not be easy (according to some sources), but it is certainly not hard. If you see incomplete questions or funny answers, don't hesitate to pick the obvious. Also one last remark. According to test the following is a good way to check if some textfield has ANY value:
var txt = $('#myfield').val();
if(txt != null && txt != "") {
}
I would consider using the following:
var txt = $('#myfield').val();
if(txt) {
}
This does both in one statement (and the JavaScript performance scales with the numbr of statements). Why? First if txt is null or undefined this is false. Perfect! Second... A string will be converted to false if the length is 0, otherwise true. This is also what we want. But it seems like the guys, who wrote the questions for test have never seen this.