I have been programming for a very
long time and I have in depth
knowledge of several technologies.
Whenever someone tells me that they have "in-depth" knowledge of several technologies, especially unrelated technologies, I begin to ask questions. In-depth knowledge is something that not only takes a lot of time (many years), but dedication and participation. You don't say what kind of education or work experience you have, and that would make a difference. At face value, your words are simply fluff.
I only have 2 1/2 years or work
experience in the industry. However, I
have been programming since I was in
school.
This is one of your comments. There's absolutely no way that you can be an expert on that many technologies in that short of time. I started programming in C++ and Java in 2004, just graduated from university in May 2011, have 2 years of experience as a software engineer, and spent most of my combined time (with the exception of about 6 months) as a Java-focused developer. I would only rate myself as intermediate in Java (SE) development and a beginner in JEE development.
Given this, I think you should rethink what you consider to be an expert-level or in-depth knowledge of a language.
One reason which I think is that the
employer might be thinking that how
one person can be an expert in all the
technologies. Once in another
interview I was told by the HR manager
that it is unbelievable that you know
ASP, JSP and PHP all in depth as we
have different programmers for each of
the technology.
I would question that too. I highly doubt that one person can truly be a master of so many disparate technologies. I'm sure that there are people out there capable of it, but they are few and far between. In my experiences, HR is the first one to look at your resume. If the HR personnel don't think your resume is legit, you have no hope of getting to a hiring manager or team lead for review.
Recently I applied for a web
development job and in my resume I had
listed all the skills - HTML, CSS,
JavaScript, jQuery, AJAX, PHP, ASP,
JSP, C/C++, ARM. Except for C/C++ and
ARM I had shown the skill level for
all technologies as expert.
I don't list skills on my resume outside of job descriptions, and there are very good reasons for that.
The skills that I have are clearly show by my job history and academic transcripts. In addition, the mention of skills within some kind of context allow the person reading my resume to see how exactly I applied these technologies, and then it comes to a discussion point during an interview. A laundry list of skills doesn't provide any kind of context - did you use them at work, in academic projects, or did you read a stack of books?
I also don't list any skill levels on my resume. Skill levels are very subjective. What one person considers to be an expert knowledge, someone else can consider to be intermediate knowledge. Again, providing a number and duration of projects, jobs, and coursework in various tools and technologies provides a context that can be used to compare candidates on a much more reasonable level.
If you feel the need to provide extra emphasis on your previous experiences and skill set, that's what a cover letter is for. Emphasize the jobs and projects that use the specific skills and conditions that the job posting is discussing.
Another point to consider when thinking about discussing skills on a resume is that during the application process, many companies have all applicants fill out a standardized form. In every place I've ever applied, this form had a section for "skills" and "experience" where I could enumerate various tools and languages that I have used and how much experience I have with each one.
I do not understand why I have been
rejected when I had all the required
skills and all those who did not have
any of the skills have been selected.
There are also many reasons for rejection, and not all of them are technical. If you have spoken to someone from the company (either HR or a hiring manager or a team member), they might have found you to not be a suitable fit for the project or team, as an example. Software development is about a lot more than tools and technologies.
Every time that I have been rejected, I've always asked the company why. Sometimes, it's just that the team didn't think I would be a good fit. Other times, it was that they just found someone with more experience. It can be touchy, and some companies have policies not to discuss interview results other than a yes/no answer. If the company can discuss reasons for not hiring you, then you should take advantage of that and learn from it.
Such incidents make me very unhappy as
in spite of being highly capable of
the position I am rejected. Should I
not list all my skills in the resume
to avoid such situations?
I'm not sure what position you are currently in, but I would start by reviewing my resume and getting it in order. Given the wording of your question, it sounds like you were passed over even before an interview. That means your resume didn't get past HR and/or the project manager responsible for hiring. There are other questions here about resume design and how to present them - I would start there, and use other resources available to you. Examples include your friends and perhaps your university (even if you already graduated, services might still be available to alumni) career services office.