This one is weird. According to Samuel, David throws a stone at Goliath, killing him. He then takes Goliath's sword, and uses it to kill Goliath again. This is 1 Samuel 17:49-51:
This is bizarre, and seems to indicate a conflation of two different accounts. I don't find the answers linked below convincing. Tektonics says the contradiction is intentional. If it is, the author of 1 Samuel is incompetent. There's no straightforward reading of the above passages that doesn't result in absurdity.
I'm more likely to be convinced that our English translations are wrong. A reader informs me that the Hebrew has different words for "killed" in the passage, and that in the second instance it's in the past tense. If that's correct, the translation in the second case should say something like "he had [already] killed him" which would resolve the difficulty.
I still wonder why literal translations like the ESV and especially the NASB (a very literal translation) don't translate it this way. This is one of those irritating issues that you can't decide without being an expert in the ancient languages.