Everybody dreads the "weakness" question and with good reason. There is no perfect answer to this question and it's easy to mess it up. However, with some preparation and practice, you can handle it gracefully and improve your odds of getting hired.
1) Don't try to play a strength off as a weakness. Many experts recommend that you claim a bogus weakness like "I care too much" or "I work too hard." Trust me, interviewers see right through this ploy. In fact, a fake weakness can raise concerns that you have something to hide or are so deluded that you think you're perfect.
2) Don't choose a weakness that could limit your ability to do the job well. If the job calls for someone detail-oriented, don't share that your weakness is being disorganized. If it's a management position, don't tell the interviewer that you can't delegate. Pick a weakness that is real, but benign.
"Sometimes I can be a bit too honest when I provide feedback to coworkers. My personality is naturally very straightforward and to the point, and most of my colleagues really value that, but I have learned that there are times on the job when more diplomacy is required. I took a training class on conflict management and it really opened my eyes to the need to communicate differently with different people. So now I am much better at providing constructive feedback, even if it doesn't always come naturally."