If you put a skill on your resume - you better be prepared to answer some questions about it. Do YOU really know XML?
I have worked on computers for more than 30 years now, and after a while you get to learn a bit of Pattern Recognition . I have seen data come off punch cards, reel to reel tapes, CSV files, AS/400 mainframes, serial ports, flat files, DBFs, Oracle clusters, SQL Server farms, SOAP, REST, and JSON, oh my! No matter what new programming language I have to learn this year - the problem stays the same - how do I make sense of of my data?
This is the magic of XML - the underlying foundation has not changed for ten years. It is text based so it can be used by any system, it is hierarchical so you can define elements by their context, and it is Open - you can use it however you want. OK - the original specification might not have considered internationalization as much as it should have, but you get the idea - the power is in it’s simplicity.
Because of my depth of experience, I have climbed up the food chain all the way to Director. Don’t get me wrong - even though most of my work day consists of project management, Q/A, process documentation, and business planning - I am still a hardcore geek and take pride in that I can still code with the best of them. And if you want a job at my company, you have to get through ME.
Most of the people I interview tell me I gave the most difficult questions they have ever heard. And that is only from the people who I hired - I do not know what the other people might have said as I could not understand through the swearing. I do not think I am hard - just fair. If you put something on your resume, you better know what you are talking about. Some people have created a few simple text files with angle brackets and think they ‘KNOW’ XML. If you want to really know XML, you better know the answer to these questions:
1. What is the declaration?
2. What is the difference between well formed and valid?
3. What is the common way to shortcut an empty element?
4. If a node name is “element” - can you substitute “Element” or “ELEMENT”?
5. What characters are illegal? How would you represent data from a foreign language?
6. How would you choose to put data in an attribute, element or text node?
7. How do you put in notes in XML? (Comments)
8. When you have two elements with the same name from different data sets or hierarchies how do you differentiate their use?
9. What is the default namespace? What problems do you have using it?
10. How would you change a namespace? (Override)
11. How would you declare the domain of you data elements in XML? (Schema / DTD)
12. How many native data types are built in? Name some
13. What is the air-speed velocity of an unladen swallow?
14. How would you declare your own type in a schema? How would you allow any type?
15. How would you require a specific order for elements? How would you allow any order?
16. How would you limit a list of values?
17. How would you limit a number to a certain range?
18. How do you deal with tabs, carriage returns, and space characters?
19. How do you reference a schema? How do you reference multiple schemas?
20. What is the difference between include and import?
For bonus, tell me the difference between XML, SQL, JSON, and classes. (Document centric, relational theory, object serialization, object oriented programming)
IF you can answer these, then I go onto XSL, xQuery, SAX, and even the DOM API.
Can you answer all of the questions? (Honestly? Without Google? Wow! Send me your resume!)
What tough question have you gotten in an interview?