I feel that that is a downfall of being a polyglot. I have no qualms about keeping documentation at the ready. Especially for myself, as I regularly switch between javascript(5 and 6, and various frameworks),xml,html,python,bash,c in my day to day. I feel its much more important to have general knowledge/skills than specific details. The fact that I have to look it up to know if I need to use .toUpperCase() on a string, or just .toUpper(), or if it is an instance method, or a global function, should be of no consequence. If I am regularly having to look up how to USE 'if' statements (as opposed to just syntax: [does this language use && or 'and]) that should be concerning. I think a better test would be "Here's a method from our codebase, but I broke it. How do I fix it" Just be sure to break the logic of the code, instead of the syntax. I may or may not find the syntax error, but I damn better be able to identify a non terminating while loop.
I've been writing Java since I was 14 (for 11 years now). I write Java on a daily basis for work, and I can't remember the last time I had to consult a reference on syntax. I would consider that "fluent", to use an analog from spoken/written languages, and I'd obviously put any languages in which I'm "fluent" on my resume.
I've written a lot of Python in my personal time over the years, and have a good understanding of what "idiomatic" Python looks like (comprehensions over iterators/higher-order-functions, "is"/"in" over "=="/"indexOf", etc). I would consider this "conversational", and would put it on my resume too.
Then there are languages that I have not written any projects in, aside from tutorial-type-things while learning them. These are more on a case-by-case basis; ones that I'm more comfortable with (like Elixir or Haskell) I might put on my resume with a note that I'm at a "beginner" level of familiarity; I understand many of the language concepts, but would need to consult reference material frequently, and my code is not likely to be idiomatic. With these languages, I'd ask myself the question of how comfortable would I be accepting a job where I did nothing but write code in that language. And obviously, I'd need to explain in an interview or phone screen that my knowledge is still basic.
If someone asked me what is some pros and cons about Objective-C I really don't know what to answer.
I am not really fuzzed about language details, if someone gives me python - I will use it, perl - sure, bash? why not, c++ - sounds like fun and so on. I just don't care, if the language can solve the problem, then I can figure out how to use it for the problem at hand.
Sure some languages can obviously do tasks faster/better because of language details - for example I used Python recently because it was easier to write a script to handle some files, usually I'd use bash scripting.
I've been programming for years and years and I can solve most problems that are thrown at me, no complaints from co-workers or anything like that.
How should I deal with this "interview" question? Just read books? I never got these arguments online where people feel so strongly about whatever language X or Y.
I put a section on my resume under education with relevant coursework. I noted there that I had taken a database course as part of my CS cousework and put "Databases (primarily MySQL with interfaces in PHP and JS)," as about 90% of the project-related courework involved using MySQL databases with web-based interfaces.
In the inital phone interview, I had a nice chat and talked about some of my former projects, familiarity with other languages, where I made it known I was fairly comfortable in JavaScript and Python and some other language, and most of my professional/educational experience was in .NET and Java. He asked about the databases course and I explained what the curriculum went over and the final project. I explained all I had used PHP for was a few database calls and that I wasn't very experienced with it.
Then, at the first technical interview, it was entirely in PHP. The interviewer mentioned it at the start, and I explained my level of familiarity (very little). It was asking about how specific data types behave in PHP, global variables, differences in PHP 4 and 5, and was entirely about PHP. I did my best, assuming wrongly about things like global variables, and so on. I never got a call back.
I removed PHP and have since only listed the technologies in any way that I am ready to interview in.
I think it is a good indicator of how comfortable you are in your chosen language.
Then, for each job, list the languages used in the order of how much you use them (or know them).
For example: If I see Ruby on your list, but it's after Java and C++, and then I look down the list of jobs and see that your current job is in Java, and the one from 3 years ago was in ruby -- I know what to expect.
If you still want a job with ruby (and the above matches your situation), then bring it up in the cover-letter -- explain why you would be a good choice (and probably you should practice ruby before any interview)
I've see people do "Proficient in" and "Familiar with" lists -- but really -- all I want to know is: will you be productive on day one with this technology, or do you need a refresher (and then I can decide based on my needs)
ie:
Python[Expert] Scala[Intermediate] C++[Beginner]
I suppose you could do something like that just to make everyone who reads your resume aware of your specific skill set - instead of generalizing.
Although [Beginner] is pretty different from [Expert] no matter what, the expectation of a beginner or expert may vary widely from person to person.