Dig deep into yourself and figure out what your true weaknesses are at work. Write them down on a sheet of paper, and figure out which ones you can use in an interview. If you state a weakness you've struggled with, your answer will sound more honest. Some things that will help you come up with true weaknesses is to look at some of the challenges you have faced in your previous jobs or think about constructive criticism you've received from a manager.
Although we mention that you should be honest, it's also good to remember that there is such a thing as being too honest. You need to avoid weaknesses that will hurt your chances of getting the job. For example, say if you're applying for an HR position and you say that you're not good with people, or if you're trying for a sales job and you say you are bad at negotiating. This doesn't mean that you have to make up a weakness, but it's just preferable for you to pick another weakness that isn't a deal breaker.
Always talk about the steps you have taken to overcome your weakness. This is your chance to show the interviewer that although you have your flaws, you are proactive and resourceful enough to overcome them. In a way, your effort to conquer your weaknesses will be looked at as a strength.
Please don't give tired answers like, "My greatest weakness is that I'm too much of a perfectionist/workaholic." Perhaps it is true for you, but unfortunately, it may bring false to the interviewer who is used to hearing these generic answers that come off as a way to dodge the question.