based on my experience, it's usually better to mention a weakness that's not
directly relevant to the job/company. e.g., If u r interviewing for entry
level engineering, u could say you are weak in management and hope to learn
more from your future team leader and manager (and look eagerly at that guy,
implying that he/she is the one with a lot of mgmt exp you could learn from
). Or, if it's a start-up, then you can say you don't work well in large
enterprise with politics and bureaucracy.
Depending on your language skill, I think an interesting answer is to make
strength and weakness the same thing but still be able to back up with
evidence/stories.